; LLVM IR from unitreerobotics/kinect_teleoperate :: src/extern/glfw/src/tests (glfwinfo)

; 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.option = type { ptr, i32, ptr, i32 }
%struct.VkApplicationInfo = type { i32, ptr, ptr, i32, ptr, i32, i32 }
%struct.VkInstanceCreateInfo = type { i32, ptr, i32, ptr, i32, ptr, i32, ptr }
%struct.VkPhysicalDeviceProperties = type { i32, i32, i32, i32, i32, [256 x i8], [16 x i8], %struct.VkPhysicalDeviceLimits, %struct.VkPhysicalDeviceSparseProperties }
%struct.VkPhysicalDeviceLimits = type { i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i64, i64, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, [3 x i32], i32, [3 x i32], i32, i32, i32, i32, i32, float, float, i32, [2 x i32], [2 x float], i32, i64, i64, i64, i64, i32, i32, i32, i32, float, float, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, float, i32, i32, i32, i32, [2 x float], [2 x float], float, float, i32, i32, i64, i64, i64 }
%struct.VkPhysicalDeviceSparseProperties = type { i32, i32, i32, i32, i32 }
%struct.VkExtensionProperties = type { [256 x i8], i32 }

@GLAD_GL_ARB_multisample = external dso_local global i32, align 4
@GLAD_GL_ARB_robustness = external dso_local global i32, align 4
@glad_glGetError = external dso_local global ptr, align 8
@glad_glGetFramebufferAttachmentParameteriv = external dso_local global ptr, align 8
@glad_glGetIntegerv = external dso_local global ptr, align 8
@glad_glGetString = external dso_local global ptr, align 8
@glad_vkCreateInstance = external dso_local global ptr, align 8
@glad_vkDestroyInstance = external dso_local global ptr, align 8
@glad_vkDestroySurfaceKHR = external dso_local global ptr, align 8
@glad_vkEnumerateDeviceExtensionProperties = external dso_local global ptr, align 8
@glad_vkEnumerateInstanceExtensionProperties = external dso_local global ptr, align 8
@glad_vkEnumerateInstanceVersion = external dso_local global ptr, align 8
@glad_vkEnumeratePhysicalDevices = external dso_local global ptr, align 8
@glad_vkGetPhysicalDeviceProperties = external dso_local global ptr, align 8
@glad_vkGetPhysicalDeviceQueueFamilyProperties = external dso_local global ptr, align 8
@__const.main.options = external hidden unnamed_addr constant [34 x %struct.option], align 16
@.str.35 = external hidden unnamed_addr constant [20 x i8], align 1
@optarg = external global ptr, align 8
@.str.36 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.37 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.38 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.39 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.40 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.41 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.42 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.43 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.44 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.45 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.46 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.47 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.48 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.49 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.50 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.51 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.52 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.53 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.54 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.55 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.56 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.57 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.58 = external hidden unnamed_addr constant [49 x i8], align 1
@.str.59 = external hidden unnamed_addr constant [33 x i8], align 1
@.str.60 = external hidden unnamed_addr constant [45 x i8], align 1
@.str.61 = external hidden unnamed_addr constant [27 x i8], align 1
@.str.62 = external hidden unnamed_addr constant [20 x i8], align 1
@.str.63 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.64 = external hidden unnamed_addr constant [12 x i8], align 1
@.str.65 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.66 = external hidden unnamed_addr constant [33 x i8], align 1
@.str.67 = external hidden unnamed_addr constant [30 x i8], align 1
@.str.68 = external hidden unnamed_addr constant [36 x i8], align 1
@.str.69 = external hidden unnamed_addr constant [37 x i8], align 1
@.str.70 = external hidden unnamed_addr constant [43 x i8], align 1
@.str.71 = external hidden unnamed_addr constant [34 x i8], align 1
@.str.72 = external hidden unnamed_addr constant [32 x i8], align 1
@.str.73 = external hidden unnamed_addr constant [43 x i8], align 1
@.str.74 = external hidden unnamed_addr constant [17 x i8], align 1
@.str.75 = external hidden unnamed_addr constant [61 x i8], align 1
@.str.76 = external hidden unnamed_addr constant [33 x i8], align 1
@.str.77 = external hidden unnamed_addr constant [79 x i8], align 1
@.str.78 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.79 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.80 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.81 = external hidden unnamed_addr constant [34 x i8], align 1
@.str.82 = external hidden unnamed_addr constant [53 x i8], align 1
@.str.83 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.84 = external hidden unnamed_addr constant [42 x i8], align 1
@.str.85 = external hidden unnamed_addr constant [29 x i8], align 1
@.str.86 = external hidden unnamed_addr constant [23 x i8], align 1
@.str.87 = external hidden unnamed_addr constant [31 x i8], align 1
@.str.88 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.89 = external hidden unnamed_addr constant [44 x i8], align 1
@.str.90 = external hidden unnamed_addr constant [40 x i8], align 1
@.str.91 = external hidden unnamed_addr constant [26 x i8], align 1
@.str.92 = external hidden unnamed_addr constant [47 x i8], align 1
@.str.93 = external hidden unnamed_addr constant [11 x i8], align 1
@.str.94 = external hidden unnamed_addr constant [15 x i8], align 1
@.str.95 = external hidden unnamed_addr constant [44 x i8], align 1
@.str.96 = external hidden unnamed_addr constant [50 x i8], align 1
@.str.97 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.98 = external hidden unnamed_addr constant [11 x i8], align 1
@.str.99 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.100 = external hidden unnamed_addr constant [27 x i8], align 1

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

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

; Function Attrs: nounwind uwtable
declare dso_local i32 @gladLoadGL(ptr noundef) #1

; Function Attrs: nounwind uwtable
declare dso_local i32 @gladLoadVulkanUserPtr(ptr noundef, ptr noundef, ptr noundef) #1

; Function Attrs: nounwind uwtable
define dso_local i32 @main(i32 noundef %0, ptr noundef %1) #1 {
  %3 = alloca i32, align 4
  %4 = alloca i32, align 4
  %5 = alloca ptr, align 8
  %6 = alloca i32, align 4
  %7 = alloca i8, align 1
  %8 = alloca i8, align 1
  %9 = alloca i32, align 4
  %10 = alloca i32, align 4
  %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 i8, align 1
  %17 = alloca i8, align 1
  %18 = alloca i8, align 1
  %19 = alloca i32, align 4
  %20 = alloca i32, align 4
  %21 = alloca i32, align 4
  %22 = alloca i32, align 4
  %23 = alloca i32, align 4
  %24 = alloca i32, align 4
  %25 = alloca i32, align 4
  %26 = alloca i32, align 4
  %27 = alloca i32, align 4
  %28 = alloca i32, align 4
  %29 = alloca i32, align 4
  %30 = alloca i32, align 4
  %31 = alloca i32, align 4
  %32 = alloca i8, align 1
  %33 = alloca i8, align 1
  %34 = alloca i8, align 1
  %35 = alloca i32, align 4
  %36 = alloca i8, align 1
  %37 = alloca i8, align 1
  %38 = alloca [34 x %struct.option], align 16
  %39 = alloca ptr, align 8
  %40 = alloca i32, align 4
  %41 = alloca i32, align 4
  %42 = alloca i32, align 4
  %43 = alloca i32, align 4
  %44 = alloca i32, align 4
  %45 = alloca i32, align 4
  %46 = alloca i32, align 4
  %47 = alloca i32, align 4
  %48 = alloca i32, align 4
  %49 = alloca i32, align 4
  %50 = alloca i32, align 4
  %51 = alloca i32, align 4
  %52 = alloca i32, align 4
  %53 = alloca i32, align 4
  %54 = alloca i32, align 4
  %55 = alloca i32, align 4
  %56 = alloca i32, align 4
  %57 = alloca i32, align 4
  %58 = alloca i32, align 4
  %59 = alloca i32, align 4
  %60 = alloca i32, align 4
  %61 = alloca i32, align 4
  %62 = alloca i32, align 4
  %63 = alloca i32, align 4
  %64 = alloca i32, align 4
  %65 = alloca i32, align 4
  %66 = alloca ptr, align 8
  %67 = alloca i32, align 4
  %68 = alloca ptr, align 8
  %69 = alloca i32, align 4
  %70 = alloca i32, align 4
  %71 = alloca ptr, align 8
  %72 = alloca i32, align 4
  %73 = alloca i8, align 1
  %74 = alloca i32, align 4
  %75 = alloca %struct.VkApplicationInfo, align 8
  %76 = alloca %struct.VkInstanceCreateInfo, align 8
  %77 = alloca ptr, align 8
  %78 = alloca ptr, align 8
  %79 = alloca i32, align 4
  %80 = alloca ptr, align 8
  %81 = alloca i32, align 4
  %82 = alloca i32, align 4
  %83 = alloca %struct.VkPhysicalDeviceProperties, align 8
  %84 = alloca i32, align 4
  %85 = alloca i32, align 4
  %86 = alloca ptr, align 8
  %87 = alloca i8, align 1
  %88 = alloca i32, align 4
  %89 = alloca i32, align 4
  %90 = alloca i32, align 4
  store i32 0, ptr %3, align 4
  store i32 %0, ptr %4, align 4, !tbaa !5
  store ptr %1, ptr %5, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %6) #12
  call void @llvm.lifetime.start.p0(i64 1, ptr %7) #12
  store i8 0, ptr %7, align 1, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 1, ptr %8) #12
  store i8 0, ptr %8, align 1, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 4, ptr %9) #12
  store i32 393216, ptr %9, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %10) #12
  store i32 196609, ptr %10, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %11) #12
  store i32 1, ptr %11, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %12) #12
  store i32 0, ptr %12, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %13) #12
  store i32 0, ptr %13, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %14) #12
  store i32 221185, ptr %14, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %15) #12
  store i32 0, ptr %15, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 1, ptr %16) #12
  store i8 0, ptr %16, align 1, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 1, ptr %17) #12
  store i8 0, ptr %17, align 1, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 1, ptr %18) #12
  store i8 0, ptr %18, align 1, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 4, ptr %19) #12
  store i32 0, ptr %19, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %20) #12
  store i32 8, ptr %20, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %21) #12
  store i32 8, ptr %21, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %22) #12
  store i32 8, ptr %22, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %23) #12
  store i32 8, ptr %23, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %24) #12
  store i32 24, ptr %24, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %25) #12
  store i32 8, ptr %25, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %26) #12
  store i32 0, ptr %26, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %27) #12
  store i32 0, ptr %27, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %28) #12
  store i32 0, ptr %28, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %29) #12
  store i32 0, ptr %29, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %30) #12
  store i32 0, ptr %30, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %31) #12
  store i32 0, ptr %31, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 1, ptr %32) #12
  store i8 0, ptr %32, align 1, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 1, ptr %33) #12
  store i8 0, ptr %33, align 1, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 1, ptr %34) #12
  store i8 1, ptr %34, align 1, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 4, ptr %35) #12
  store i32 225281, ptr %35, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 1, ptr %36) #12
  store i8 0, ptr %36, align 1, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 1, ptr %37) #12
  store i8 0, ptr %37, align 1, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 1088, ptr %38) #12
  call void @llvm.memcpy.p0.p0.i64(ptr align 16 %38, ptr align 16 @__const.main.options, i64 1088, i1 false)
  br label %91

91:                                               ; preds = %371, %2
  %92 = load i32, ptr %4, align 4, !tbaa !5
  %93 = load ptr, ptr %5, align 8, !tbaa !9
  %94 = getelementptr inbounds [34 x %struct.option], ptr %38, i64 0, i64 0
  %95 = call i32 @getopt_long(i32 noundef %92, ptr noundef %93, ptr noundef @.str.35, ptr noundef %94, ptr noundef null)
  store i32 %95, ptr %6, align 4, !tbaa !5
  %96 = icmp ne i32 %95, -1
  br i1 %96, label %97, label %372

97:                                               ; preds = %91
  %98 = load i32, ptr %6, align 4, !tbaa !5
  switch i32 %98, label %370 [
    i32 0, label %99
    i32 97, label %136
    i32 1, label %136
    i32 98, label %149
    i32 3, label %149
    i32 99, label %162
    i32 2, label %162
    i32 100, label %181
    i32 4, label %181
    i32 102, label %182
    i32 5, label %182
    i32 104, label %183
    i32 6, label %183
    i32 108, label %184
    i32 7, label %184
    i32 8, label %185
    i32 109, label %186
    i32 9, label %186
    i32 110, label %189
    i32 10, label %189
    i32 112, label %192
    i32 11, label %192
    i32 115, label %205
    i32 12, label %205
    i32 118, label %218
    i32 13, label %218
    i32 14, label %219
    i32 15, label %228
    i32 16, label %237
    i32 17, label %246
    i32 18, label %255
    i32 19, label %264
    i32 20, label %273
    i32 21, label %282
    i32 22, label %291
    i32 23, label %300
    i32 24, label %309
    i32 25, label %318
    i32 26, label %327
    i32 27, label %328
    i32 28, label %329
    i32 29, label %330
    i32 30, label %331
    i32 31, label %368
    i32 32, label %369
  ]

99:                                               ; preds = %97
  %100 = load ptr, ptr @optarg, align 8, !tbaa !9
  %101 = call i32 @strcasecmp(ptr noundef %100, ptr noundef @.str.36) #13
  %102 = icmp eq i32 %101, 0
  br i1 %102, label %103, label %104

103:                                              ; preds = %99
  store i32 393216, ptr %9, align 4, !tbaa !5
  br label %135

104:                                              ; preds = %99
  %105 = load ptr, ptr @optarg, align 8, !tbaa !9
  %106 = call i32 @strcasecmp(ptr noundef %105, ptr noundef @.str.37) #13
  %107 = icmp eq i32 %106, 0
  br i1 %107, label %108, label %109

108:                                              ; preds = %104
  store i32 393217, ptr %9, align 4, !tbaa !5
  br label %134

109:                                              ; preds = %104
  %110 = load ptr, ptr @optarg, align 8, !tbaa !9
  %111 = call i32 @strcasecmp(ptr noundef %110, ptr noundef @.str.38) #13
  %112 = icmp eq i32 %111, 0
  br i1 %112, label %113, label %114

113:                                              ; preds = %109
  store i32 393218, ptr %9, align 4, !tbaa !5
  br label %133

114:                                              ; preds = %109
  %115 = load ptr, ptr @optarg, align 8, !tbaa !9
  %116 = call i32 @strcasecmp(ptr noundef %115, ptr noundef @.str.39) #13
  %117 = icmp eq i32 %116, 0
  br i1 %117, label %118, label %119

118:                                              ; preds = %114
  store i32 393219, ptr %9, align 4, !tbaa !5
  br label %132

119:                                              ; preds = %114
  %120 = load ptr, ptr @optarg, align 8, !tbaa !9
  %121 = call i32 @strcasecmp(ptr noundef %120, ptr noundef @.str.40) #13
  %122 = icmp eq i32 %121, 0
  br i1 %122, label %123, label %124

123:                                              ; preds = %119
  store i32 393220, ptr %9, align 4, !tbaa !5
  br label %131

124:                                              ; preds = %119
  %125 = load ptr, ptr @optarg, align 8, !tbaa !9
  %126 = call i32 @strcasecmp(ptr noundef %125, ptr noundef @.str.41) #13
  %127 = icmp eq i32 %126, 0
  br i1 %127, label %128, label %129

128:                                              ; preds = %124
  store i32 393221, ptr %9, align 4, !tbaa !5
  br label %130

129:                                              ; preds = %124
  call void @usage()
  call void @exit(i32 noundef 1) #14
  unreachable

130:                                              ; preds = %128
  br label %131

131:                                              ; preds = %130, %123
  br label %132

132:                                              ; preds = %131, %118
  br label %133

133:                                              ; preds = %132, %113
  br label %134

134:                                              ; preds = %133, %108
  br label %135

135:                                              ; preds = %134, %103
  br label %371

136:                                              ; preds = %97, %97
  %137 = load ptr, ptr @optarg, align 8, !tbaa !9
  %138 = call i32 @strcasecmp(ptr noundef %137, ptr noundef @.str.42) #13
  %139 = icmp eq i32 %138, 0
  br i1 %139, label %140, label %141

140:                                              ; preds = %136
  store i32 196609, ptr %10, align 4, !tbaa !5
  br label %148

141:                                              ; preds = %136
  %142 = load ptr, ptr @optarg, align 8, !tbaa !9
  %143 = call i32 @strcasecmp(ptr noundef %142, ptr noundef @.str.43) #13
  %144 = icmp eq i32 %143, 0
  br i1 %144, label %145, label %146

145:                                              ; preds = %141
  store i32 196610, ptr %10, align 4, !tbaa !5
  br label %147

146:                                              ; preds = %141
  call void @usage()
  call void @exit(i32 noundef 1) #14
  unreachable

147:                                              ; preds = %145
  br label %148

148:                                              ; preds = %147, %140
  br label %371

149:                                              ; preds = %97, %97
  %150 = load ptr, ptr @optarg, align 8, !tbaa !9
  %151 = call i32 @strcasecmp(ptr noundef %150, ptr noundef @.str.44) #13
  %152 = icmp eq i32 %151, 0
  br i1 %152, label %153, label %154

153:                                              ; preds = %149
  store i32 217090, ptr %13, align 4, !tbaa !5
  br label %161

154:                                              ; preds = %149
  %155 = load ptr, ptr @optarg, align 8, !tbaa !9
  %156 = call i32 @strcasecmp(ptr noundef %155, ptr noundef @.str.45) #13
  %157 = icmp eq i32 %156, 0
  br i1 %157, label %158, label %159

158:                                              ; preds = %154
  store i32 217089, ptr %13, align 4, !tbaa !5
  br label %160

159:                                              ; preds = %154
  call void @usage()
  call void @exit(i32 noundef 1) #14
  unreachable

160:                                              ; preds = %158
  br label %161

161:                                              ; preds = %160, %153
  br label %371

162:                                              ; preds = %97, %97
  %163 = load ptr, ptr @optarg, align 8, !tbaa !9
  %164 = call i32 @strcasecmp(ptr noundef %163, ptr noundef @.str.46) #13
  %165 = icmp eq i32 %164, 0
  br i1 %165, label %166, label %167

166:                                              ; preds = %162
  store i32 221185, ptr %14, align 4, !tbaa !5
  br label %180

167:                                              ; preds = %162
  %168 = load ptr, ptr @optarg, align 8, !tbaa !9
  %169 = call i32 @strcasecmp(ptr noundef %168, ptr noundef @.str.47) #13
  %170 = icmp eq i32 %169, 0
  br i1 %170, label %171, label %172

171:                                              ; preds = %167
  store i32 221186, ptr %14, align 4, !tbaa !5
  br label %179

172:                                              ; preds = %167
  %173 = load ptr, ptr @optarg, align 8, !tbaa !9
  %174 = call i32 @strcasecmp(ptr noundef %173, ptr noundef @.str.48) #13
  %175 = icmp eq i32 %174, 0
  br i1 %175, label %176, label %177

176:                                              ; preds = %172
  store i32 221187, ptr %14, align 4, !tbaa !5
  br label %178

177:                                              ; preds = %172
  call void @usage()
  call void @exit(i32 noundef 1) #14
  unreachable

178:                                              ; preds = %176
  br label %179

179:                                              ; preds = %178, %171
  br label %180

180:                                              ; preds = %179, %166
  br label %371

181:                                              ; preds = %97, %97
  store i8 1, ptr %16, align 1, !tbaa !11
  br label %371

182:                                              ; preds = %97, %97
  store i8 1, ptr %18, align 1, !tbaa !11
  br label %371

183:                                              ; preds = %97, %97
  call void @usage()
  call void @exit(i32 noundef 0) #14
  unreachable

184:                                              ; preds = %97, %97
  store i8 1, ptr %7, align 1, !tbaa !11
  br label %371

185:                                              ; preds = %97
  store i8 1, ptr %8, align 1, !tbaa !11
  br label %371

186:                                              ; preds = %97, %97
  %187 = load ptr, ptr @optarg, align 8, !tbaa !9
  %188 = call i32 @atoi(ptr noundef %187) #13
  store i32 %188, ptr %11, align 4, !tbaa !5
  br label %371

189:                                              ; preds = %97, %97
  %190 = load ptr, ptr @optarg, align 8, !tbaa !9
  %191 = call i32 @atoi(ptr noundef %190) #13
  store i32 %191, ptr %12, align 4, !tbaa !5
  br label %371

192:                                              ; preds = %97, %97
  %193 = load ptr, ptr @optarg, align 8, !tbaa !9
  %194 = call i32 @strcasecmp(ptr noundef %193, ptr noundef @.str.49) #13
  %195 = icmp eq i32 %194, 0
  br i1 %195, label %196, label %197

196:                                              ; preds = %192
  store i32 204801, ptr %19, align 4, !tbaa !5
  br label %204

197:                                              ; preds = %192
  %198 = load ptr, ptr @optarg, align 8, !tbaa !9
  %199 = call i32 @strcasecmp(ptr noundef %198, ptr noundef @.str.50) #13
  %200 = icmp eq i32 %199, 0
  br i1 %200, label %201, label %202

201:                                              ; preds = %197
  store i32 204802, ptr %19, align 4, !tbaa !5
  br label %203

202:                                              ; preds = %197
  call void @usage()
  call void @exit(i32 noundef 1) #14
  unreachable

203:                                              ; preds = %201
  br label %204

204:                                              ; preds = %203, %196
  br label %371

205:                                              ; preds = %97, %97
  %206 = load ptr, ptr @optarg, align 8, !tbaa !9
  %207 = call i32 @strcasecmp(ptr noundef %206, ptr noundef @.str.44) #13
  %208 = icmp eq i32 %207, 0
  br i1 %208, label %209, label %210

209:                                              ; preds = %205
  store i32 200705, ptr %15, align 4, !tbaa !5
  br label %217

210:                                              ; preds = %205
  %211 = load ptr, ptr @optarg, align 8, !tbaa !9
  %212 = call i32 @strcasecmp(ptr noundef %211, ptr noundef @.str.51) #13
  %213 = icmp eq i32 %212, 0
  br i1 %213, label %214, label %215

214:                                              ; preds = %210
  store i32 200706, ptr %15, align 4, !tbaa !5
  br label %216

215:                                              ; preds = %210
  call void @usage()
  call void @exit(i32 noundef 1) #14
  unreachable

216:                                              ; preds = %214
  br label %217

217:                                              ; preds = %216, %209
  br label %371

218:                                              ; preds = %97, %97
  call void @print_version()
  call void @exit(i32 noundef 0) #14
  unreachable

219:                                              ; preds = %97
  %220 = load ptr, ptr @optarg, align 8, !tbaa !9
  %221 = call i32 @strcmp(ptr noundef %220, ptr noundef @.str.52) #13
  %222 = icmp eq i32 %221, 0
  br i1 %222, label %223, label %224

223:                                              ; preds = %219
  store i32 -1, ptr %20, align 4, !tbaa !5
  br label %227

224:                                              ; preds = %219
  %225 = load ptr, ptr @optarg, align 8, !tbaa !9
  %226 = call i32 @atoi(ptr noundef %225) #13
  store i32 %226, ptr %20, align 4, !tbaa !5
  br label %227

227:                                              ; preds = %224, %223
  br label %371

228:                                              ; preds = %97
  %229 = load ptr, ptr @optarg, align 8, !tbaa !9
  %230 = call i32 @strcmp(ptr noundef %229, ptr noundef @.str.52) #13
  %231 = icmp eq i32 %230, 0
  br i1 %231, label %232, label %233

232:                                              ; preds = %228
  store i32 -1, ptr %21, align 4, !tbaa !5
  br label %236

233:                                              ; preds = %228
  %234 = load ptr, ptr @optarg, align 8, !tbaa !9
  %235 = call i32 @atoi(ptr noundef %234) #13
  store i32 %235, ptr %21, align 4, !tbaa !5
  br label %236

236:                                              ; preds = %233, %232
  br label %371

237:                                              ; preds = %97
  %238 = load ptr, ptr @optarg, align 8, !tbaa !9
  %239 = call i32 @strcmp(ptr noundef %238, ptr noundef @.str.52) #13
  %240 = icmp eq i32 %239, 0
  br i1 %240, label %241, label %242

241:                                              ; preds = %237
  store i32 -1, ptr %22, align 4, !tbaa !5
  br label %245

242:                                              ; preds = %237
  %243 = load ptr, ptr @optarg, align 8, !tbaa !9
  %244 = call i32 @atoi(ptr noundef %243) #13
  store i32 %244, ptr %22, align 4, !tbaa !5
  br label %245

245:                                              ; preds = %242, %241
  br label %371

246:                                              ; preds = %97
  %247 = load ptr, ptr @optarg, align 8, !tbaa !9
  %248 = call i32 @strcmp(ptr noundef %247, ptr noundef @.str.52) #13
  %249 = icmp eq i32 %248, 0
  br i1 %249, label %250, label %251

250:                                              ; preds = %246
  store i32 -1, ptr %23, align 4, !tbaa !5
  br label %254

251:                                              ; preds = %246
  %252 = load ptr, ptr @optarg, align 8, !tbaa !9
  %253 = call i32 @atoi(ptr noundef %252) #13
  store i32 %253, ptr %23, align 4, !tbaa !5
  br label %254

254:                                              ; preds = %251, %250
  br label %371

255:                                              ; preds = %97
  %256 = load ptr, ptr @optarg, align 8, !tbaa !9
  %257 = call i32 @strcmp(ptr noundef %256, ptr noundef @.str.52) #13
  %258 = icmp eq i32 %257, 0
  br i1 %258, label %259, label %260

259:                                              ; preds = %255
  store i32 -1, ptr %24, align 4, !tbaa !5
  br label %263

260:                                              ; preds = %255
  %261 = load ptr, ptr @optarg, align 8, !tbaa !9
  %262 = call i32 @atoi(ptr noundef %261) #13
  store i32 %262, ptr %24, align 4, !tbaa !5
  br label %263

263:                                              ; preds = %260, %259
  br label %371

264:                                              ; preds = %97
  %265 = load ptr, ptr @optarg, align 8, !tbaa !9
  %266 = call i32 @strcmp(ptr noundef %265, ptr noundef @.str.52) #13
  %267 = icmp eq i32 %266, 0
  br i1 %267, label %268, label %269

268:                                              ; preds = %264
  store i32 -1, ptr %25, align 4, !tbaa !5
  br label %272

269:                                              ; preds = %264
  %270 = load ptr, ptr @optarg, align 8, !tbaa !9
  %271 = call i32 @atoi(ptr noundef %270) #13
  store i32 %271, ptr %25, align 4, !tbaa !5
  br label %272

272:                                              ; preds = %269, %268
  br label %371

273:                                              ; preds = %97
  %274 = load ptr, ptr @optarg, align 8, !tbaa !9
  %275 = call i32 @strcmp(ptr noundef %274, ptr noundef @.str.52) #13
  %276 = icmp eq i32 %275, 0
  br i1 %276, label %277, label %278

277:                                              ; preds = %273
  store i32 -1, ptr %26, align 4, !tbaa !5
  br label %281

278:                                              ; preds = %273
  %279 = load ptr, ptr @optarg, align 8, !tbaa !9
  %280 = call i32 @atoi(ptr noundef %279) #13
  store i32 %280, ptr %26, align 4, !tbaa !5
  br label %281

281:                                              ; preds = %278, %277
  br label %371

282:                                              ; preds = %97
  %283 = load ptr, ptr @optarg, align 8, !tbaa !9
  %284 = call i32 @strcmp(ptr noundef %283, ptr noundef @.str.52) #13
  %285 = icmp eq i32 %284, 0
  br i1 %285, label %286, label %287

286:                                              ; preds = %282
  store i32 -1, ptr %27, align 4, !tbaa !5
  br label %290

287:                                              ; preds = %282
  %288 = load ptr, ptr @optarg, align 8, !tbaa !9
  %289 = call i32 @atoi(ptr noundef %288) #13
  store i32 %289, ptr %27, align 4, !tbaa !5
  br label %290

290:                                              ; preds = %287, %286
  br label %371

291:                                              ; preds = %97
  %292 = load ptr, ptr @optarg, align 8, !tbaa !9
  %293 = call i32 @strcmp(ptr noundef %292, ptr noundef @.str.52) #13
  %294 = icmp eq i32 %293, 0
  br i1 %294, label %295, label %296

295:                                              ; preds = %291
  store i32 -1, ptr %28, align 4, !tbaa !5
  br label %299

296:                                              ; preds = %291
  %297 = load ptr, ptr @optarg, align 8, !tbaa !9
  %298 = call i32 @atoi(ptr noundef %297) #13
  store i32 %298, ptr %28, align 4, !tbaa !5
  br label %299

299:                                              ; preds = %296, %295
  br label %371

300:                                              ; preds = %97
  %301 = load ptr, ptr @optarg, align 8, !tbaa !9
  %302 = call i32 @strcmp(ptr noundef %301, ptr noundef @.str.52) #13
  %303 = icmp eq i32 %302, 0
  br i1 %303, label %304, label %305

304:                                              ; preds = %300
  store i32 -1, ptr %29, align 4, !tbaa !5
  br label %308

305:                                              ; preds = %300
  %306 = load ptr, ptr @optarg, align 8, !tbaa !9
  %307 = call i32 @atoi(ptr noundef %306) #13
  store i32 %307, ptr %29, align 4, !tbaa !5
  br label %308

308:                                              ; preds = %305, %304
  br label %371

309:                                              ; preds = %97
  %310 = load ptr, ptr @optarg, align 8, !tbaa !9
  %311 = call i32 @strcmp(ptr noundef %310, ptr noundef @.str.52) #13
  %312 = icmp eq i32 %311, 0
  br i1 %312, label %313, label %314

313:                                              ; preds = %309
  store i32 -1, ptr %30, align 4, !tbaa !5
  br label %317

314:                                              ; preds = %309
  %315 = load ptr, ptr @optarg, align 8, !tbaa !9
  %316 = call i32 @atoi(ptr noundef %315) #13
  store i32 %316, ptr %30, align 4, !tbaa !5
  br label %317

317:                                              ; preds = %314, %313
  br label %371

318:                                              ; preds = %97
  %319 = load ptr, ptr @optarg, align 8, !tbaa !9
  %320 = call i32 @strcmp(ptr noundef %319, ptr noundef @.str.52) #13
  %321 = icmp eq i32 %320, 0
  br i1 %321, label %322, label %323

322:                                              ; preds = %318
  store i32 -1, ptr %31, align 4, !tbaa !5
  br label %326

323:                                              ; preds = %318
  %324 = load ptr, ptr @optarg, align 8, !tbaa !9
  %325 = call i32 @atoi(ptr noundef %324) #13
  store i32 %325, ptr %31, align 4, !tbaa !5
  br label %326

326:                                              ; preds = %323, %322
  br label %371

327:                                              ; preds = %97
  store i8 1, ptr %32, align 1, !tbaa !11
  br label %371

328:                                              ; preds = %97
  store i8 1, ptr %33, align 1, !tbaa !11
  br label %371

329:                                              ; preds = %97
  store i8 0, ptr %34, align 1, !tbaa !11
  br label %371

330:                                              ; preds = %97
  store i8 1, ptr %17, align 1, !tbaa !11
  br label %371

331:                                              ; preds = %97
  %332 = load ptr, ptr @optarg, align 8, !tbaa !9
  %333 = call i32 @strcmp(ptr noundef %332, ptr noundef @.str.42) #13
  %334 = icmp eq i32 %333, 0
  br i1 %334, label %335, label %336

335:                                              ; preds = %331
  store i32 225282, ptr %35, align 4, !tbaa !5
  br label %367

336:                                              ; preds = %331
  %337 = load ptr, ptr @optarg, align 8, !tbaa !9
  %338 = call i32 @strcmp(ptr noundef %337, ptr noundef @.str.43) #13
  %339 = icmp eq i32 %338, 0
  br i1 %339, label %340, label %341

340:                                              ; preds = %336
  store i32 225283, ptr %35, align 4, !tbaa !5
  br label %366

341:                                              ; preds = %336
  %342 = load ptr, ptr @optarg, align 8, !tbaa !9
  %343 = call i32 @strcmp(ptr noundef %342, ptr noundef @.str.53) #13
  %344 = icmp eq i32 %343, 0
  br i1 %344, label %345, label %346

345:                                              ; preds = %341
  store i32 225284, ptr %35, align 4, !tbaa !5
  br label %365

346:                                              ; preds = %341
  %347 = load ptr, ptr @optarg, align 8, !tbaa !9
  %348 = call i32 @strcmp(ptr noundef %347, ptr noundef @.str.54) #13
  %349 = icmp eq i32 %348, 0
  br i1 %349, label %350, label %351

350:                                              ; preds = %346
  store i32 225285, ptr %35, align 4, !tbaa !5
  br label %364

351:                                              ; preds = %346
  %352 = load ptr, ptr @optarg, align 8, !tbaa !9
  %353 = call i32 @strcmp(ptr noundef %352, ptr noundef @.str.55) #13
  %354 = icmp eq i32 %353, 0
  br i1 %354, label %355, label %356

355:                                              ; preds = %351
  store i32 225287, ptr %35, align 4, !tbaa !5
  br label %363

356:                                              ; preds = %351
  %357 = load ptr, ptr @optarg, align 8, !tbaa !9
  %358 = call i32 @strcmp(ptr noundef %357, ptr noundef @.str.56) #13
  %359 = icmp eq i32 %358, 0
  br i1 %359, label %360, label %361

360:                                              ; preds = %356
  store i32 225288, ptr %35, align 4, !tbaa !5
  br label %362

361:                                              ; preds = %356
  call void @usage()
  call void @exit(i32 noundef 1) #14
  unreachable

362:                                              ; preds = %360
  br label %363

363:                                              ; preds = %362, %355
  br label %364

364:                                              ; preds = %363, %350
  br label %365

365:                                              ; preds = %364, %345
  br label %366

366:                                              ; preds = %365, %340
  br label %367

367:                                              ; preds = %366, %335
  br label %371

368:                                              ; preds = %97
  store i8 1, ptr %36, align 1, !tbaa !11
  br label %371

369:                                              ; preds = %97
  store i8 1, ptr %37, align 1, !tbaa !11
  br label %371

370:                                              ; preds = %97
  call void @usage()
  call void @exit(i32 noundef 1) #14
  unreachable

371:                                              ; preds = %369, %368, %367, %330, %329, %328, %327, %326, %317, %308, %299, %290, %281, %272, %263, %254, %245, %236, %227, %217, %204, %189, %186, %185, %184, %182, %181, %180, %161, %148, %135
  br label %91, !llvm.loop !13

372:                                              ; preds = %91
  %373 = call zeroext i1 @valid_version()
  br i1 %373, label %375, label %374

374:                                              ; preds = %372
  call void @exit(i32 noundef 1) #14
  unreachable

375:                                              ; preds = %372
  %376 = call ptr @glfwSetErrorCallback(ptr noundef @error_callback)
  %377 = load i32, ptr %9, align 4, !tbaa !5
  call void @glfwInitHint(i32 noundef 327683, i32 noundef %377)
  call void @glfwInitHint(i32 noundef 331778, i32 noundef 0)
  %378 = load i32, ptr %35, align 4, !tbaa !5
  call void @glfwInitHint(i32 noundef 327682, i32 noundef %378)
  %379 = load i8, ptr %37, align 1, !tbaa !11, !range !15, !noundef !16
  %380 = trunc i8 %379 to i1
  %381 = xor i1 %380, true
  %382 = zext i1 %381 to i32
  call void @glfwInitHint(i32 noundef 335873, i32 noundef %382)
  %383 = call i32 @glfwInit()
  %384 = icmp ne i32 %383, 0
  br i1 %384, label %386, label %385

385:                                              ; preds = %375
  call void @exit(i32 noundef 1) #14
  unreachable

386:                                              ; preds = %375
  call void @print_version()
  call void @print_platform()
  call void @glfwWindowHint(i32 noundef 131076, i32 noundef 0)
  %387 = load i32, ptr %10, align 4, !tbaa !5
  call void @glfwWindowHint(i32 noundef 139265, i32 noundef %387)
  %388 = load i32, ptr %11, align 4, !tbaa !5
  call void @glfwWindowHint(i32 noundef 139266, i32 noundef %388)
  %389 = load i32, ptr %12, align 4, !tbaa !5
  call void @glfwWindowHint(i32 noundef 139267, i32 noundef %389)
  %390 = load i32, ptr %13, align 4, !tbaa !5
  call void @glfwWindowHint(i32 noundef 139273, i32 noundef %390)
  %391 = load i32, ptr %14, align 4, !tbaa !5
  call void @glfwWindowHint(i32 noundef 139275, i32 noundef %391)
  %392 = load i32, ptr %15, align 4, !tbaa !5
  call void @glfwWindowHint(i32 noundef 139269, i32 noundef %392)
  %393 = load i8, ptr %16, align 1, !tbaa !11, !range !15, !noundef !16
  %394 = trunc i8 %393 to i1
  %395 = zext i1 %394 to i32
  call void @glfwWindowHint(i32 noundef 139271, i32 noundef %395)
  %396 = load i8, ptr %17, align 1, !tbaa !11, !range !15, !noundef !16
  %397 = trunc i8 %396 to i1
  %398 = zext i1 %397 to i32
  call void @glfwWindowHint(i32 noundef 139274, i32 noundef %398)
  %399 = load i8, ptr %18, align 1, !tbaa !11, !range !15, !noundef !16
  %400 = trunc i8 %399 to i1
  %401 = zext i1 %400 to i32
  call void @glfwWindowHint(i32 noundef 139270, i32 noundef %401)
  %402 = load i32, ptr %19, align 4, !tbaa !5
  call void @glfwWindowHint(i32 noundef 139272, i32 noundef %402)
  %403 = load i32, ptr %20, align 4, !tbaa !5
  call void @glfwWindowHint(i32 noundef 135169, i32 noundef %403)
  %404 = load i32, ptr %22, align 4, !tbaa !5
  call void @glfwWindowHint(i32 noundef 135171, i32 noundef %404)
  %405 = load i32, ptr %21, align 4, !tbaa !5
  call void @glfwWindowHint(i32 noundef 135170, i32 noundef %405)
  %406 = load i32, ptr %23, align 4, !tbaa !5
  call void @glfwWindowHint(i32 noundef 135172, i32 noundef %406)
  %407 = load i32, ptr %24, align 4, !tbaa !5
  call void @glfwWindowHint(i32 noundef 135173, i32 noundef %407)
  %408 = load i32, ptr %25, align 4, !tbaa !5
  call void @glfwWindowHint(i32 noundef 135174, i32 noundef %408)
  %409 = load i32, ptr %26, align 4, !tbaa !5
  call void @glfwWindowHint(i32 noundef 135175, i32 noundef %409)
  %410 = load i32, ptr %27, align 4, !tbaa !5
  call void @glfwWindowHint(i32 noundef 135176, i32 noundef %410)
  %411 = load i32, ptr %28, align 4, !tbaa !5
  call void @glfwWindowHint(i32 noundef 135177, i32 noundef %411)
  %412 = load i32, ptr %29, align 4, !tbaa !5
  call void @glfwWindowHint(i32 noundef 135178, i32 noundef %412)
  %413 = load i32, ptr %30, align 4, !tbaa !5
  call void @glfwWindowHint(i32 noundef 135179, i32 noundef %413)
  %414 = load i32, ptr %31, align 4, !tbaa !5
  call void @glfwWindowHint(i32 noundef 135181, i32 noundef %414)
  %415 = load i8, ptr %32, align 1, !tbaa !11, !range !15, !noundef !16
  %416 = trunc i8 %415 to i1
  %417 = zext i1 %416 to i32
  call void @glfwWindowHint(i32 noundef 135180, i32 noundef %417)
  %418 = load i8, ptr %33, align 1, !tbaa !11, !range !15, !noundef !16
  %419 = trunc i8 %418 to i1
  %420 = zext i1 %419 to i32
  call void @glfwWindowHint(i32 noundef 135182, i32 noundef %420)
  %421 = load i8, ptr %34, align 1, !tbaa !11, !range !15, !noundef !16
  %422 = trunc i8 %421 to i1
  %423 = zext i1 %422 to i32
  call void @glfwWindowHint(i32 noundef 135184, i32 noundef %423)
  %424 = load i8, ptr %36, align 1, !tbaa !11, !range !15, !noundef !16
  %425 = trunc i8 %424 to i1
  %426 = zext i1 %425 to i32
  call void @glfwWindowHint(i32 noundef 143363, i32 noundef %426)
  call void @llvm.lifetime.start.p0(i64 8, ptr %39) #12
  %427 = call ptr @glfwCreateWindow(i32 noundef 200, i32 noundef 200, ptr noundef @.str.57, ptr noundef null, ptr noundef null)
  store ptr %427, ptr %39, align 8, !tbaa !9
  %428 = load ptr, ptr %39, align 8, !tbaa !9
  %429 = icmp ne ptr %428, null
  br i1 %429, label %430, label %661

430:                                              ; preds = %386
  %431 = load ptr, ptr %39, align 8, !tbaa !9
  call void @glfwMakeContextCurrent(ptr noundef %431)
  %432 = call i32 @gladLoadGL(ptr noundef @glfwGetProcAddress)
  call void @llvm.lifetime.start.p0(i64 4, ptr %40) #12
  %433 = load ptr, ptr @glad_glGetError, align 8, !tbaa !9
  %434 = call i32 %433()
  store i32 %434, ptr %40, align 4, !tbaa !5
  %435 = load i32, ptr %40, align 4, !tbaa !5
  %436 = icmp ne i32 %435, 0
  br i1 %436, label %437, label %440

437:                                              ; preds = %430
  %438 = load i32, ptr %40, align 4, !tbaa !5
  %439 = call i32 (ptr, ...) @printf(ptr noundef @.str.58, i32 noundef %438)
  br label %440

440:                                              ; preds = %437, %430
  call void @llvm.lifetime.start.p0(i64 4, ptr %41) #12
  %441 = load ptr, ptr %39, align 8, !tbaa !9
  %442 = call i32 @glfwGetWindowAttrib(ptr noundef %441, i32 noundef 139265)
  store i32 %442, ptr %41, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %42) #12
  %443 = load ptr, ptr %39, align 8, !tbaa !9
  %444 = call i32 @glfwGetWindowAttrib(ptr noundef %443, i32 noundef 139266)
  store i32 %444, ptr %42, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %43) #12
  %445 = load ptr, ptr %39, align 8, !tbaa !9
  %446 = call i32 @glfwGetWindowAttrib(ptr noundef %445, i32 noundef 139267)
  store i32 %446, ptr %43, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %44) #12
  %447 = load ptr, ptr %39, align 8, !tbaa !9
  %448 = call i32 @glfwGetWindowAttrib(ptr noundef %447, i32 noundef 139268)
  store i32 %448, ptr %44, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %45) #12
  %449 = load ptr, ptr %39, align 8, !tbaa !9
  %450 = call i32 @glfwGetWindowAttrib(ptr noundef %449, i32 noundef 139272)
  store i32 %450, ptr %45, align 4, !tbaa !5
  %451 = load i32, ptr %41, align 4, !tbaa !5
  %452 = call ptr @get_api_name(i32 noundef %451)
  %453 = load ptr, ptr @glad_glGetString, align 8, !tbaa !9
  %454 = call ptr %453(i32 noundef 7938)
  %455 = call i32 (ptr, ...) @printf(ptr noundef @.str.59, ptr noundef %452, ptr noundef %454)
  %456 = load i32, ptr %41, align 4, !tbaa !5
  %457 = call ptr @get_api_name(i32 noundef %456)
  %458 = load i32, ptr %42, align 4, !tbaa !5
  %459 = load i32, ptr %43, align 4, !tbaa !5
  %460 = load i32, ptr %44, align 4, !tbaa !5
  %461 = call i32 (ptr, ...) @printf(ptr noundef @.str.60, ptr noundef %457, i32 noundef %458, i32 noundef %459, i32 noundef %460)
  %462 = load i32, ptr %41, align 4, !tbaa !5
  %463 = icmp eq i32 %462, 196609
  br i1 %463, label %464, label %567

464:                                              ; preds = %440
  %465 = load i32, ptr %42, align 4, !tbaa !5
  %466 = icmp sge i32 %465, 3
  br i1 %466, label %467, label %526

467:                                              ; preds = %464
  call void @llvm.lifetime.start.p0(i64 4, ptr %46) #12
  %468 = load ptr, ptr @glad_glGetIntegerv, align 8, !tbaa !9
  call void %468(i32 noundef 33310, ptr noundef %46)
  %469 = load i32, ptr %41, align 4, !tbaa !5
  %470 = call ptr @get_api_name(i32 noundef %469)
  %471 = load i32, ptr %46, align 4, !tbaa !5
  %472 = call i32 (ptr, ...) @printf(ptr noundef @.str.61, ptr noundef %470, i32 noundef %471)
  %473 = load i32, ptr %46, align 4, !tbaa !5
  %474 = and i32 %473, 1
  %475 = icmp ne i32 %474, 0
  br i1 %475, label %476, label %478

476:                                              ; preds = %467
  %477 = call i32 (ptr, ...) @printf(ptr noundef @.str.62)
  br label %478

478:                                              ; preds = %476, %467
  %479 = load i32, ptr %46, align 4, !tbaa !5
  %480 = and i32 %479, 2
  %481 = icmp ne i32 %480, 0
  br i1 %481, label %482, label %484

482:                                              ; preds = %478
  %483 = call i32 (ptr, ...) @printf(ptr noundef @.str.63)
  br label %484

484:                                              ; preds = %482, %478
  %485 = load i32, ptr %46, align 4, !tbaa !5
  %486 = and i32 %485, 4
  %487 = icmp ne i32 %486, 0
  br i1 %487, label %488, label %490

488:                                              ; preds = %484
  %489 = call i32 (ptr, ...) @printf(ptr noundef @.str.64)
  br label %490

490:                                              ; preds = %488, %484
  %491 = load i32, ptr %46, align 4, !tbaa !5
  %492 = and i32 %491, 8
  %493 = icmp ne i32 %492, 0
  br i1 %493, label %494, label %496

494:                                              ; preds = %490
  %495 = call i32 (ptr, ...) @printf(ptr noundef @.str.65)
  br label %496

496:                                              ; preds = %494, %490
  %497 = call i32 @putchar(i32 noundef 10)
  %498 = load i32, ptr %41, align 4, !tbaa !5
  %499 = call ptr @get_api_name(i32 noundef %498)
  %500 = call i32 (ptr, ...) @printf(ptr noundef @.str.66, ptr noundef %499)
  %501 = load ptr, ptr %39, align 8, !tbaa !9
  %502 = call i32 @glfwGetWindowAttrib(ptr noundef %501, i32 noundef 139270)
  %503 = icmp ne i32 %502, 0
  br i1 %503, label %504, label %506

504:                                              ; preds = %496
  %505 = call i32 (ptr, ...) @printf(ptr noundef @.str.62)
  br label %506

506:                                              ; preds = %504, %496
  %507 = load ptr, ptr %39, align 8, !tbaa !9
  %508 = call i32 @glfwGetWindowAttrib(ptr noundef %507, i32 noundef 139271)
  %509 = icmp ne i32 %508, 0
  br i1 %509, label %510, label %512

510:                                              ; preds = %506
  %511 = call i32 (ptr, ...) @printf(ptr noundef @.str.63)
  br label %512

512:                                              ; preds = %510, %506
  %513 = load ptr, ptr %39, align 8, !tbaa !9
  %514 = call i32 @glfwGetWindowAttrib(ptr noundef %513, i32 noundef 139269)
  %515 = icmp eq i32 %514, 200706
  br i1 %515, label %516, label %518

516:                                              ; preds = %512
  %517 = call i32 (ptr, ...) @printf(ptr noundef @.str.64)
  br label %518

518:                                              ; preds = %516, %512
  %519 = load ptr, ptr %39, align 8, !tbaa !9
  %520 = call i32 @glfwGetWindowAttrib(ptr noundef %519, i32 noundef 139274)
  %521 = icmp ne i32 %520, 0
  br i1 %521, label %522, label %524

522:                                              ; preds = %518
  %523 = call i32 (ptr, ...) @printf(ptr noundef @.str.65)
  br label %524

524:                                              ; preds = %522, %518
  %525 = call i32 @putchar(i32 noundef 10)
  call void @llvm.lifetime.end.p0(i64 4, ptr %46) #12
  br label %526

526:                                              ; preds = %524, %464
  %527 = load i32, ptr %42, align 4, !tbaa !5
  %528 = icmp sge i32 %527, 4
  br i1 %528, label %535, label %529

529:                                              ; preds = %526
  %530 = load i32, ptr %42, align 4, !tbaa !5
  %531 = icmp eq i32 %530, 3
  br i1 %531, label %532, label %548

532:                                              ; preds = %529
  %533 = load i32, ptr %43, align 4, !tbaa !5
  %534 = icmp sge i32 %533, 2
  br i1 %534, label %535, label %548

535:                                              ; preds = %532, %526
  call void @llvm.lifetime.start.p0(i64 4, ptr %47) #12
  %536 = load ptr, ptr @glad_glGetIntegerv, align 8, !tbaa !9
  call void %536(i32 noundef 37158, ptr noundef %47)
  %537 = load i32, ptr %41, align 4, !tbaa !5
  %538 = call ptr @get_api_name(i32 noundef %537)
  %539 = load i32, ptr %47, align 4, !tbaa !5
  %540 = load i32, ptr %47, align 4, !tbaa !5
  %541 = call ptr @get_profile_name_gl(i32 noundef %540)
  %542 = call i32 (ptr, ...) @printf(ptr noundef @.str.67, ptr noundef %538, i32 noundef %539, ptr noundef %541)
  %543 = load i32, ptr %41, align 4, !tbaa !5
  %544 = call ptr @get_api_name(i32 noundef %543)
  %545 = load i32, ptr %45, align 4, !tbaa !5
  %546 = call ptr @get_profile_name_glfw(i32 noundef %545)
  %547 = call i32 (ptr, ...) @printf(ptr noundef @.str.68, ptr noundef %544, ptr noundef %546)
  call void @llvm.lifetime.end.p0(i64 4, ptr %47) #12
  br label %548

548:                                              ; preds = %535, %532, %529
  %549 = load i32, ptr @GLAD_GL_ARB_robustness, align 4, !tbaa !5
  %550 = icmp ne i32 %549, 0
  br i1 %550, label %551, label %566

551:                                              ; preds = %548
  call void @llvm.lifetime.start.p0(i64 4, ptr %48) #12
  %552 = load ptr, ptr %39, align 8, !tbaa !9
  %553 = call i32 @glfwGetWindowAttrib(ptr noundef %552, i32 noundef 139269)
  store i32 %553, ptr %48, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %49) #12
  %554 = load ptr, ptr @glad_glGetIntegerv, align 8, !tbaa !9
  call void %554(i32 noundef 33366, ptr noundef %49)
  %555 = load i32, ptr %41, align 4, !tbaa !5
  %556 = call ptr @get_api_name(i32 noundef %555)
  %557 = load i32, ptr %49, align 4, !tbaa !5
  %558 = load i32, ptr %49, align 4, !tbaa !5
  %559 = call ptr @get_strategy_name_gl(i32 noundef %558)
  %560 = call i32 (ptr, ...) @printf(ptr noundef @.str.69, ptr noundef %556, i32 noundef %557, ptr noundef %559)
  %561 = load i32, ptr %41, align 4, !tbaa !5
  %562 = call ptr @get_api_name(i32 noundef %561)
  %563 = load i32, ptr %48, align 4, !tbaa !5
  %564 = call ptr @get_strategy_name_glfw(i32 noundef %563)
  %565 = call i32 (ptr, ...) @printf(ptr noundef @.str.70, ptr noundef %562, ptr noundef %564)
  call void @llvm.lifetime.end.p0(i64 4, ptr %49) #12
  call void @llvm.lifetime.end.p0(i64 4, ptr %48) #12
  br label %566

566:                                              ; preds = %551, %548
  br label %567

567:                                              ; preds = %566, %440
  %568 = load i32, ptr %41, align 4, !tbaa !5
  %569 = call ptr @get_api_name(i32 noundef %568)
  %570 = load ptr, ptr @glad_glGetString, align 8, !tbaa !9
  %571 = call ptr %570(i32 noundef 7937)
  %572 = call i32 (ptr, ...) @printf(ptr noundef @.str.71, ptr noundef %569, ptr noundef %571)
  %573 = load i32, ptr %41, align 4, !tbaa !5
  %574 = call ptr @get_api_name(i32 noundef %573)
  %575 = load ptr, ptr @glad_glGetString, align 8, !tbaa !9
  %576 = call ptr %575(i32 noundef 7936)
  %577 = call i32 (ptr, ...) @printf(ptr noundef @.str.72, ptr noundef %574, ptr noundef %576)
  %578 = load i32, ptr %42, align 4, !tbaa !5
  %579 = icmp sge i32 %578, 2
  br i1 %579, label %580, label %586

580:                                              ; preds = %567
  %581 = load i32, ptr %41, align 4, !tbaa !5
  %582 = call ptr @get_api_name(i32 noundef %581)
  %583 = load ptr, ptr @glad_glGetString, align 8, !tbaa !9
  %584 = call ptr %583(i32 noundef 35724)
  %585 = call i32 (ptr, ...) @printf(ptr noundef @.str.73, ptr noundef %582, ptr noundef %584)
  br label %586

586:                                              ; preds = %580, %567
  %587 = load i32, ptr %41, align 4, !tbaa !5
  %588 = call ptr @get_api_name(i32 noundef %587)
  %589 = call i32 (ptr, ...) @printf(ptr noundef @.str.74, ptr noundef %588)
  call void @llvm.lifetime.start.p0(i64 4, ptr %50) #12
  call void @llvm.lifetime.start.p0(i64 4, ptr %51) #12
  call void @llvm.lifetime.start.p0(i64 4, ptr %52) #12
  call void @llvm.lifetime.start.p0(i64 4, ptr %53) #12
  call void @llvm.lifetime.start.p0(i64 4, ptr %54) #12
  call void @llvm.lifetime.start.p0(i64 4, ptr %55) #12
  %590 = load i32, ptr %41, align 4, !tbaa !5
  %591 = icmp eq i32 %590, 196609
  br i1 %591, label %592, label %602

592:                                              ; preds = %586
  %593 = load i32, ptr %45, align 4, !tbaa !5
  %594 = icmp eq i32 %593, 204801
  br i1 %594, label %595, label %602

595:                                              ; preds = %592
  %596 = load ptr, ptr @glad_glGetFramebufferAttachmentParameteriv, align 8, !tbaa !9
  call void %596(i32 noundef 36160, i32 noundef 1026, i32 noundef 33298, ptr noundef %50)
  %597 = load ptr, ptr @glad_glGetFramebufferAttachmentParameteriv, align 8, !tbaa !9
  call void %597(i32 noundef 36160, i32 noundef 1026, i32 noundef 33299, ptr noundef %51)
  %598 = load ptr, ptr @glad_glGetFramebufferAttachmentParameteriv, align 8, !tbaa !9
  call void %598(i32 noundef 36160, i32 noundef 1026, i32 noundef 33300, ptr noundef %52)
  %599 = load ptr, ptr @glad_glGetFramebufferAttachmentParameteriv, align 8, !tbaa !9
  call void %599(i32 noundef 36160, i32 noundef 1026, i32 noundef 33301, ptr noundef %53)
  %600 = load ptr, ptr @glad_glGetFramebufferAttachmentParameteriv, align 8, !tbaa !9
  call void %600(i32 noundef 36160, i32 noundef 6145, i32 noundef 33302, ptr noundef %54)
  %601 = load ptr, ptr @glad_glGetFramebufferAttachmentParameteriv, align 8, !tbaa !9
  call void %601(i32 noundef 36160, i32 noundef 6146, i32 noundef 33303, ptr noundef %55)
  br label %609

602:                                              ; preds = %592, %586
  %603 = load ptr, ptr @glad_glGetIntegerv, align 8, !tbaa !9
  call void %603(i32 noundef 3410, ptr noundef %50)
  %604 = load ptr, ptr @glad_glGetIntegerv, align 8, !tbaa !9
  call void %604(i32 noundef 3411, ptr noundef %51)
  %605 = load ptr, ptr @glad_glGetIntegerv, align 8, !tbaa !9
  call void %605(i32 noundef 3412, ptr noundef %52)
  %606 = load ptr, ptr @glad_glGetIntegerv, align 8, !tbaa !9
  call void %606(i32 noundef 3413, ptr noundef %53)
  %607 = load ptr, ptr @glad_glGetIntegerv, align 8, !tbaa !9
  call void %607(i32 noundef 3414, ptr noundef %54)
  %608 = load ptr, ptr @glad_glGetIntegerv, align 8, !tbaa !9
  call void %608(i32 noundef 3415, ptr noundef %55)
  br label %609

609:                                              ; preds = %602, %595
  %610 = load i32, ptr %50, align 4, !tbaa !5
  %611 = load i32, ptr %51, align 4, !tbaa !5
  %612 = load i32, ptr %52, align 4, !tbaa !5
  %613 = load i32, ptr %53, align 4, !tbaa !5
  %614 = load i32, ptr %54, align 4, !tbaa !5
  %615 = load i32, ptr %55, align 4, !tbaa !5
  %616 = call i32 (ptr, ...) @printf(ptr noundef @.str.75, i32 noundef %610, i32 noundef %611, i32 noundef %612, i32 noundef %613, i32 noundef %614, i32 noundef %615)
  %617 = load i32, ptr %41, align 4, !tbaa !5
  %618 = icmp eq i32 %617, 196610
  br i1 %618, label %628, label %619

619:                                              ; preds = %609
  %620 = load i32, ptr @GLAD_GL_ARB_multisample, align 4, !tbaa !5
  %621 = icmp ne i32 %620, 0
  br i1 %621, label %628, label %622

622:                                              ; preds = %619
  %623 = load i32, ptr %42, align 4, !tbaa !5
  %624 = icmp sgt i32 %623, 1
  br i1 %624, label %628, label %625

625:                                              ; preds = %622
  %626 = load i32, ptr %43, align 4, !tbaa !5
  %627 = icmp sge i32 %626, 3
  br i1 %627, label %628, label %634

628:                                              ; preds = %625, %622, %619, %609
  call void @llvm.lifetime.start.p0(i64 4, ptr %56) #12
  call void @llvm.lifetime.start.p0(i64 4, ptr %57) #12
  %629 = load ptr, ptr @glad_glGetIntegerv, align 8, !tbaa !9
  call void %629(i32 noundef 32937, ptr noundef %56)
  %630 = load ptr, ptr @glad_glGetIntegerv, align 8, !tbaa !9
  call void %630(i32 noundef 32936, ptr noundef %57)
  %631 = load i32, ptr %56, align 4, !tbaa !5
  %632 = load i32, ptr %57, align 4, !tbaa !5
  %633 = call i32 (ptr, ...) @printf(ptr noundef @.str.76, i32 noundef %631, i32 noundef %632)
  call void @llvm.lifetime.end.p0(i64 4, ptr %57) #12
  call void @llvm.lifetime.end.p0(i64 4, ptr %56) #12
  br label %634

634:                                              ; preds = %628, %625
  %635 = load i32, ptr %41, align 4, !tbaa !5
  %636 = icmp eq i32 %635, 196609
  br i1 %636, label %637, label %652

637:                                              ; preds = %634
  %638 = load i32, ptr %45, align 4, !tbaa !5
  %639 = icmp ne i32 %638, 204801
  br i1 %639, label %640, label %652

640:                                              ; preds = %637
  call void @llvm.lifetime.start.p0(i64 4, ptr %58) #12
  call void @llvm.lifetime.start.p0(i64 4, ptr %59) #12
  call void @llvm.lifetime.start.p0(i64 4, ptr %60) #12
  call void @llvm.lifetime.start.p0(i64 4, ptr %61) #12
  call void @llvm.lifetime.start.p0(i64 4, ptr %62) #12
  %641 = load ptr, ptr @glad_glGetIntegerv, align 8, !tbaa !9
  call void %641(i32 noundef 3416, ptr noundef %58)
  %642 = load ptr, ptr @glad_glGetIntegerv, align 8, !tbaa !9
  call void %642(i32 noundef 3417, ptr noundef %59)
  %643 = load ptr, ptr @glad_glGetIntegerv, align 8, !tbaa !9
  call void %643(i32 noundef 3418, ptr noundef %60)
  %644 = load ptr, ptr @glad_glGetIntegerv, align 8, !tbaa !9
  call void %644(i32 noundef 3419, ptr noundef %61)
  %645 = load ptr, ptr @glad_glGetIntegerv, align 8, !tbaa !9
  call void %645(i32 noundef 3072, ptr noundef %62)
  %646 = load i32, ptr %58, align 4, !tbaa !5
  %647 = load i32, ptr %59, align 4, !tbaa !5
  %648 = load i32, ptr %60, align 4, !tbaa !5
  %649 = load i32, ptr %61, align 4, !tbaa !5
  %650 = load i32, ptr %62, align 4, !tbaa !5
  %651 = call i32 (ptr, ...) @printf(ptr noundef @.str.77, i32 noundef %646, i32 noundef %647, i32 noundef %648, i32 noundef %649, i32 noundef %650)
  call void @llvm.lifetime.end.p0(i64 4, ptr %62) #12
  call void @llvm.lifetime.end.p0(i64 4, ptr %61) #12
  call void @llvm.lifetime.end.p0(i64 4, ptr %60) #12
  call void @llvm.lifetime.end.p0(i64 4, ptr %59) #12
  call void @llvm.lifetime.end.p0(i64 4, ptr %58) #12
  br label %652

652:                                              ; preds = %640, %637, %634
  %653 = load i8, ptr %7, align 1, !tbaa !11, !range !15, !noundef !16
  %654 = trunc i8 %653 to i1
  br i1 %654, label %655, label %659

655:                                              ; preds = %652
  %656 = load i32, ptr %41, align 4, !tbaa !5
  %657 = load i32, ptr %42, align 4, !tbaa !5
  %658 = load i32, ptr %43, align 4, !tbaa !5
  call void @list_context_extensions(i32 noundef %656, i32 noundef %657, i32 noundef %658)
  br label %659

659:                                              ; preds = %655, %652
  %660 = load ptr, ptr %39, align 8, !tbaa !9
  call void @glfwDestroyWindow(ptr noundef %660)
  call void @llvm.lifetime.end.p0(i64 4, ptr %55) #12
  call void @llvm.lifetime.end.p0(i64 4, ptr %54) #12
  call void @llvm.lifetime.end.p0(i64 4, ptr %53) #12
  call void @llvm.lifetime.end.p0(i64 4, ptr %52) #12
  call void @llvm.lifetime.end.p0(i64 4, ptr %51) #12
  call void @llvm.lifetime.end.p0(i64 4, ptr %50) #12
  call void @llvm.lifetime.end.p0(i64 4, ptr %45) #12
  call void @llvm.lifetime.end.p0(i64 4, ptr %44) #12
  call void @llvm.lifetime.end.p0(i64 4, ptr %43) #12
  call void @llvm.lifetime.end.p0(i64 4, ptr %42) #12
  call void @llvm.lifetime.end.p0(i64 4, ptr %41) #12
  call void @llvm.lifetime.end.p0(i64 4, ptr %40) #12
  br label %661

661:                                              ; preds = %659, %386
  call void @glfwWindowHint(i32 noundef 139265, i32 noundef 0)
  %662 = call ptr @glfwCreateWindow(i32 noundef 200, i32 noundef 200, ptr noundef @.str.57, ptr noundef null, ptr noundef null)
  store ptr %662, ptr %39, align 8, !tbaa !9
  %663 = load ptr, ptr %39, align 8, !tbaa !9
  %664 = icmp ne ptr %663, null
  br i1 %664, label %666, label %665

665:                                              ; preds = %661
  call void @glfwTerminate()
  call void @exit(i32 noundef 1) #14
  unreachable

666:                                              ; preds = %661
  %667 = call i32 @glfwVulkanSupported()
  %668 = icmp ne i32 %667, 0
  %669 = zext i1 %668 to i64
  %670 = select i1 %668, ptr @.str.79, ptr @.str.80
  %671 = call i32 (ptr, ...) @printf(ptr noundef @.str.78, ptr noundef %670)
  %672 = call i32 @glfwVulkanSupported()
  %673 = icmp ne i32 %672, 0
  br i1 %673, label %674, label %1027

674:                                              ; preds = %666
  %675 = call i32 @gladLoadVulkanUserPtr(ptr noundef null, ptr noundef @glfwGetInstanceProcAddress, ptr noundef null)
  call void @llvm.lifetime.start.p0(i64 4, ptr %63) #12
  store i32 4194304, ptr %63, align 4, !tbaa !5
  %676 = load ptr, ptr @glad_vkEnumerateInstanceVersion, align 8, !tbaa !9
  %677 = icmp ne ptr %676, null
  br i1 %677, label %678, label %685

678:                                              ; preds = %674
  call void @llvm.lifetime.start.p0(i64 4, ptr %64) #12
  %679 = load ptr, ptr @glad_vkEnumerateInstanceVersion, align 8, !tbaa !9
  %680 = call i32 %679(ptr noundef %64)
  %681 = icmp eq i32 %680, 0
  br i1 %681, label %682, label %684

682:                                              ; preds = %678
  %683 = load i32, ptr %64, align 4, !tbaa !5
  store i32 %683, ptr %63, align 4, !tbaa !5
  br label %684

684:                                              ; preds = %682, %678
  call void @llvm.lifetime.end.p0(i64 4, ptr %64) #12
  br label %685

685:                                              ; preds = %684, %674
  %686 = load i32, ptr %63, align 4, !tbaa !5
  %687 = lshr i32 %686, 22
  %688 = load i32, ptr %63, align 4, !tbaa !5
  %689 = lshr i32 %688, 12
  %690 = and i32 %689, 1023
  %691 = call i32 (ptr, ...) @printf(ptr noundef @.str.81, i32 noundef %687, i32 noundef %690)
  call void @llvm.lifetime.start.p0(i64 4, ptr %65) #12
  call void @llvm.lifetime.start.p0(i64 8, ptr %66) #12
  %692 = call ptr @glfwGetRequiredInstanceExtensions(ptr noundef %65)
  store ptr %692, ptr %66, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %67) #12
  %693 = load i32, ptr %65, align 4, !tbaa !5
  store i32 %693, ptr %67, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %68) #12
  %694 = load i32, ptr %65, align 4, !tbaa !5
  %695 = zext i32 %694 to i64
  %696 = call noalias ptr @calloc(i64 noundef %695, i64 noundef 8) #15
  store ptr %696, ptr %68, align 8, !tbaa !9
  %697 = load ptr, ptr %66, align 8, !tbaa !9
  %698 = icmp ne ptr %697, null
  br i1 %698, label %699, label %726

699:                                              ; preds = %685
  %700 = call i32 (ptr, ...) @printf(ptr noundef @.str.82)
  call void @llvm.lifetime.start.p0(i64 4, ptr %69) #12
  store i32 0, ptr %69, align 4, !tbaa !5
  br label %701

701:                                              ; preds = %722, %699
  %702 = load i32, ptr %69, align 4, !tbaa !5
  %703 = load i32, ptr %65, align 4, !tbaa !5
  %704 = icmp ult i32 %702, %703
  br i1 %704, label %706, label %705

705:                                              ; preds = %701
  call void @llvm.lifetime.end.p0(i64 4, ptr %69) #12
  br label %725

706:                                              ; preds = %701
  %707 = load ptr, ptr %66, align 8, !tbaa !9
  %708 = load i32, ptr %69, align 4, !tbaa !5
  %709 = zext i32 %708 to i64
  %710 = getelementptr inbounds ptr, ptr %707, i64 %709
  %711 = load ptr, ptr %710, align 8, !tbaa !9
  %712 = call i32 (ptr, ...) @printf(ptr noundef @.str.83, ptr noundef %711)
  %713 = load ptr, ptr %66, align 8, !tbaa !9
  %714 = load i32, ptr %69, align 4, !tbaa !5
  %715 = zext i32 %714 to i64
  %716 = getelementptr inbounds ptr, ptr %713, i64 %715
  %717 = load ptr, ptr %716, align 8, !tbaa !9
  %718 = load ptr, ptr %68, align 8, !tbaa !9
  %719 = load i32, ptr %69, align 4, !tbaa !5
  %720 = zext i32 %719 to i64
  %721 = getelementptr inbounds ptr, ptr %718, i64 %720
  store ptr %717, ptr %721, align 8, !tbaa !9
  br label %722

722:                                              ; preds = %706
  %723 = load i32, ptr %69, align 4, !tbaa !5
  %724 = add i32 %723, 1
  store i32 %724, ptr %69, align 4, !tbaa !5
  br label %701, !llvm.loop !17

725:                                              ; preds = %705
  br label %728

726:                                              ; preds = %685
  %727 = call i32 (ptr, ...) @printf(ptr noundef @.str.84)
  br label %728

728:                                              ; preds = %726, %725
  call void @llvm.lifetime.start.p0(i64 4, ptr %70) #12
  %729 = load ptr, ptr @glad_vkEnumerateInstanceExtensionProperties, align 8, !tbaa !9
  %730 = call i32 %729(ptr noundef null, ptr noundef %70, ptr noundef null)
  call void @llvm.lifetime.start.p0(i64 8, ptr %71) #12
  %731 = load i32, ptr %70, align 4, !tbaa !5
  %732 = zext i32 %731 to i64
  %733 = call noalias ptr @calloc(i64 noundef %732, i64 noundef 260) #15
  store ptr %733, ptr %71, align 8, !tbaa !9
  %734 = load ptr, ptr @glad_vkEnumerateInstanceExtensionProperties, align 8, !tbaa !9
  %735 = load ptr, ptr %71, align 8, !tbaa !9
  %736 = call i32 %734(ptr noundef null, ptr noundef %70, ptr noundef %735)
  %737 = load i8, ptr %7, align 1, !tbaa !11, !range !15, !noundef !16
  %738 = trunc i8 %737 to i1
  br i1 %738, label %739, label %764

739:                                              ; preds = %728
  %740 = call i32 (ptr, ...) @printf(ptr noundef @.str.85)
  call void @llvm.lifetime.start.p0(i64 4, ptr %72) #12
  store i32 0, ptr %72, align 4, !tbaa !5
  br label %741

741:                                              ; preds = %760, %739
  %742 = load i32, ptr %72, align 4, !tbaa !5
  %743 = load i32, ptr %70, align 4, !tbaa !5
  %744 = icmp ult i32 %742, %743
  br i1 %744, label %746, label %745

745:                                              ; preds = %741
  call void @llvm.lifetime.end.p0(i64 4, ptr %72) #12
  br label %763

746:                                              ; preds = %741
  %747 = load ptr, ptr %71, align 8, !tbaa !9
  %748 = load i32, ptr %72, align 4, !tbaa !5
  %749 = zext i32 %748 to i64
  %750 = getelementptr inbounds %struct.VkExtensionProperties, ptr %747, i64 %749
  %751 = getelementptr inbounds %struct.VkExtensionProperties, ptr %750, i32 0, i32 0
  %752 = getelementptr inbounds [256 x i8], ptr %751, i64 0, i64 0
  %753 = load ptr, ptr %71, align 8, !tbaa !9
  %754 = load i32, ptr %72, align 4, !tbaa !5
  %755 = zext i32 %754 to i64
  %756 = getelementptr inbounds %struct.VkExtensionProperties, ptr %753, i64 %755
  %757 = getelementptr inbounds %struct.VkExtensionProperties, ptr %756, i32 0, i32 1
  %758 = load i32, ptr %757, align 4, !tbaa !18
  %759 = call i32 (ptr, ...) @printf(ptr noundef @.str.86, ptr noundef %752, i32 noundef %758)
  br label %760

760:                                              ; preds = %746
  %761 = load i32, ptr %72, align 4, !tbaa !5
  %762 = add i32 %761, 1
  store i32 %762, ptr %72, align 4, !tbaa !5
  br label %741, !llvm.loop !20

763:                                              ; preds = %745
  br label %764

764:                                              ; preds = %763, %728
  call void @llvm.lifetime.start.p0(i64 1, ptr %73) #12
  store i8 0, ptr %73, align 1, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 4, ptr %74) #12
  store i32 0, ptr %74, align 4, !tbaa !5
  br label %765

765:                                              ; preds = %793, %764
  %766 = load i32, ptr %74, align 4, !tbaa !5
  %767 = load i32, ptr %70, align 4, !tbaa !5
  %768 = icmp ult i32 %766, %767
  br i1 %768, label %770, label %769

769:                                              ; preds = %765
  call void @llvm.lifetime.end.p0(i64 4, ptr %74) #12
  br label %796

770:                                              ; preds = %765
  %771 = load ptr, ptr %71, align 8, !tbaa !9
  %772 = load i32, ptr %74, align 4, !tbaa !5
  %773 = zext i32 %772 to i64
  %774 = getelementptr inbounds %struct.VkExtensionProperties, ptr %771, i64 %773
  %775 = getelementptr inbounds %struct.VkExtensionProperties, ptr %774, i32 0, i32 0
  %776 = getelementptr inbounds [256 x i8], ptr %775, i64 0, i64 0
  %777 = call i32 @strcmp(ptr noundef %776, ptr noundef @.str.87) #13
  %778 = icmp ne i32 %777, 0
  br i1 %778, label %779, label %780

779:                                              ; preds = %770
  br label %793

780:                                              ; preds = %770
  %781 = load i32, ptr %67, align 4, !tbaa !5
  %782 = add i32 %781, 1
  store i32 %782, ptr %67, align 4, !tbaa !5
  %783 = load ptr, ptr %68, align 8, !tbaa !9
  %784 = load i32, ptr %67, align 4, !tbaa !5
  %785 = zext i32 %784 to i64
  %786 = mul i64 8, %785
  %787 = call ptr @realloc(ptr noundef %783, i64 noundef %786) #16
  store ptr %787, ptr %68, align 8, !tbaa !9
  %788 = load ptr, ptr %68, align 8, !tbaa !9
  %789 = load i32, ptr %67, align 4, !tbaa !5
  %790 = sub i32 %789, 1
  %791 = zext i32 %790 to i64
  %792 = getelementptr inbounds ptr, ptr %788, i64 %791
  store ptr @.str.87, ptr %792, align 8, !tbaa !9
  store i8 1, ptr %73, align 1, !tbaa !11
  br label %793

793:                                              ; preds = %780, %779
  %794 = load i32, ptr %74, align 4, !tbaa !5
  %795 = add i32 %794, 1
  store i32 %795, ptr %74, align 4, !tbaa !5
  br label %765, !llvm.loop !21

796:                                              ; preds = %769
  %797 = load ptr, ptr %71, align 8, !tbaa !9
  call void @free(ptr noundef %797) #12
  %798 = load i8, ptr %8, align 1, !tbaa !11, !range !15, !noundef !16
  %799 = trunc i8 %798 to i1
  br i1 %799, label %800, label %801

800:                                              ; preds = %796
  call void @list_vulkan_instance_layers()
  br label %801

801:                                              ; preds = %800, %796
  call void @llvm.lifetime.start.p0(i64 48, ptr %75) #12
  call void @llvm.memset.p0.i64(ptr align 8 %75, i8 0, i64 48, i1 false)
  %802 = getelementptr inbounds %struct.VkApplicationInfo, ptr %75, i32 0, i32 2
  store ptr @.str.88, ptr %802, align 8, !tbaa !22
  %803 = getelementptr inbounds %struct.VkApplicationInfo, ptr %75, i32 0, i32 3
  store i32 12603392, ptr %803, align 8, !tbaa !24
  %804 = load i32, ptr %63, align 4, !tbaa !5
  %805 = icmp uge i32 %804, 4198400
  br i1 %805, label %806, label %808

806:                                              ; preds = %801
  %807 = getelementptr inbounds %struct.VkApplicationInfo, ptr %75, i32 0, i32 6
  store i32 4198400, ptr %807, align 4, !tbaa !25
  br label %810

808:                                              ; preds = %801
  %809 = getelementptr inbounds %struct.VkApplicationInfo, ptr %75, i32 0, i32 6
  store i32 4194304, ptr %809, align 4, !tbaa !25
  br label %810

810:                                              ; preds = %808, %806
  call void @llvm.lifetime.start.p0(i64 64, ptr %76) #12
  call void @llvm.memset.p0.i64(ptr align 8 %76, i8 0, i64 64, i1 false)
  %811 = getelementptr inbounds %struct.VkInstanceCreateInfo, ptr %76, i32 0, i32 0
  store i32 1, ptr %811, align 8
  %812 = getelementptr inbounds %struct.VkInstanceCreateInfo, ptr %76, i32 0, i32 3
  store ptr %75, ptr %812, align 8, !tbaa !26
  %813 = load i32, ptr %67, align 4, !tbaa !5
  %814 = getelementptr inbounds %struct.VkInstanceCreateInfo, ptr %76, i32 0, i32 6
  store i32 %813, ptr %814, align 8, !tbaa !28
  %815 = load ptr, ptr %68, align 8, !tbaa !9
  %816 = getelementptr inbounds %struct.VkInstanceCreateInfo, ptr %76, i32 0, i32 7
  store ptr %815, ptr %816, align 8, !tbaa !29
  %817 = load i8, ptr %73, align 1, !tbaa !11, !range !15, !noundef !16
  %818 = trunc i8 %817 to i1
  br i1 %818, label %819, label %823

819:                                              ; preds = %810
  %820 = getelementptr inbounds %struct.VkInstanceCreateInfo, ptr %76, i32 0, i32 2
  %821 = load i32, ptr %820, align 8, !tbaa !30
  %822 = or i32 %821, 1
  store i32 %822, ptr %820, align 8, !tbaa !30
  br label %823

823:                                              ; preds = %819, %810
  call void @llvm.lifetime.start.p0(i64 8, ptr %77) #12
  store ptr null, ptr %77, align 8, !tbaa !9
  %824 = load ptr, ptr @glad_vkCreateInstance, align 8, !tbaa !9
  %825 = call i32 %824(ptr noundef %76, ptr noundef null, ptr noundef %77)
  %826 = icmp ne i32 %825, 0
  br i1 %826, label %827, label %828

827:                                              ; preds = %823
  call void @glfwTerminate()
  call void @exit(i32 noundef 1) #14
  unreachable

828:                                              ; preds = %823
  %829 = load ptr, ptr %68, align 8, !tbaa !9
  call void @free(ptr noundef %829) #12
  %830 = load ptr, ptr %77, align 8, !tbaa !9
  %831 = call i32 @gladLoadVulkanUserPtr(ptr noundef null, ptr noundef @glfwGetInstanceProcAddress, ptr noundef %830)
  %832 = load i32, ptr %65, align 4, !tbaa !5
  %833 = icmp ne i32 %832, 0
  br i1 %833, label %834, label %847

834:                                              ; preds = %828
  call void @llvm.lifetime.start.p0(i64 8, ptr %78) #12
  store ptr null, ptr %78, align 8, !tbaa !9
  %835 = load ptr, ptr %77, align 8, !tbaa !9
  %836 = load ptr, ptr %39, align 8, !tbaa !9
  %837 = call i32 @glfwCreateWindowSurface(ptr noundef %835, ptr noundef %836, ptr noundef null, ptr noundef %78)
  %838 = icmp eq i32 %837, 0
  br i1 %838, label %839, label %844

839:                                              ; preds = %834
  %840 = call i32 (ptr, ...) @printf(ptr noundef @.str.89)
  %841 = load ptr, ptr @glad_vkDestroySurfaceKHR, align 8, !tbaa !9
  %842 = load ptr, ptr %77, align 8, !tbaa !9
  %843 = load ptr, ptr %78, align 8, !tbaa !9
  call void %841(ptr noundef %842, ptr noundef %843, ptr noundef null)
  br label %846

844:                                              ; preds = %834
  %845 = call i32 (ptr, ...) @printf(ptr noundef @.str.90)
  br label %846

846:                                              ; preds = %844, %839
  call void @llvm.lifetime.end.p0(i64 8, ptr %78) #12
  br label %847

847:                                              ; preds = %846, %828
  call void @llvm.lifetime.start.p0(i64 4, ptr %79) #12
  %848 = load ptr, ptr @glad_vkEnumeratePhysicalDevices, align 8, !tbaa !9
  %849 = load ptr, ptr %77, align 8, !tbaa !9
  %850 = call i32 %848(ptr noundef %849, ptr noundef %79, ptr noundef null)
  call void @llvm.lifetime.start.p0(i64 8, ptr %80) #12
  %851 = load i32, ptr %79, align 4, !tbaa !5
  %852 = zext i32 %851 to i64
  %853 = call noalias ptr @calloc(i64 noundef %852, i64 noundef 8) #15
  store ptr %853, ptr %80, align 8, !tbaa !9
  %854 = load ptr, ptr @glad_vkEnumeratePhysicalDevices, align 8, !tbaa !9
  %855 = load ptr, ptr %77, align 8, !tbaa !9
  %856 = load ptr, ptr %80, align 8, !tbaa !9
  %857 = call i32 %854(ptr noundef %855, ptr noundef %79, ptr noundef %856)
  call void @llvm.lifetime.start.p0(i64 4, ptr %81) #12
  store i32 0, ptr %81, align 4, !tbaa !5
  br label %858

858:                                              ; preds = %1020, %847
  %859 = load i32, ptr %81, align 4, !tbaa !5
  %860 = load i32, ptr %79, align 4, !tbaa !5
  %861 = icmp ult i32 %859, %860
  br i1 %861, label %863, label %862

862:                                              ; preds = %858
  store i32 14, ptr %82, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %81) #12
  br label %1023

863:                                              ; preds = %858
  call void @llvm.lifetime.start.p0(i64 824, ptr %83) #12
  %864 = load ptr, ptr @glad_vkGetPhysicalDeviceProperties, align 8, !tbaa !9
  %865 = load ptr, ptr %80, align 8, !tbaa !9
  %866 = load i32, ptr %81, align 4, !tbaa !5
  %867 = zext i32 %866 to i64
  %868 = getelementptr inbounds ptr, ptr %865, i64 %867
  %869 = load ptr, ptr %868, align 8, !tbaa !9
  call void %864(ptr noundef %869, ptr noundef %83)
  call void @llvm.lifetime.start.p0(i64 4, ptr %84) #12
  %870 = load ptr, ptr @glad_vkGetPhysicalDeviceQueueFamilyProperties, align 8, !tbaa !9
  %871 = load ptr, ptr %80, align 8, !tbaa !9
  %872 = load i32, ptr %81, align 4, !tbaa !5
  %873 = zext i32 %872 to i64
  %874 = getelementptr inbounds ptr, ptr %871, i64 %873
  %875 = load ptr, ptr %874, align 8, !tbaa !9
  call void %870(ptr noundef %875, ptr noundef %84, ptr noundef null)
  call void @llvm.lifetime.start.p0(i64 4, ptr %85) #12
  %876 = load ptr, ptr @glad_vkEnumerateDeviceExtensionProperties, align 8, !tbaa !9
  %877 = load ptr, ptr %80, align 8, !tbaa !9
  %878 = load i32, ptr %81, align 4, !tbaa !5
  %879 = zext i32 %878 to i64
  %880 = getelementptr inbounds ptr, ptr %877, i64 %879
  %881 = load ptr, ptr %880, align 8, !tbaa !9
  %882 = call i32 %876(ptr noundef %881, ptr noundef null, ptr noundef %85, ptr noundef null)
  call void @llvm.lifetime.start.p0(i64 8, ptr %86) #12
  %883 = load i32, ptr %85, align 4, !tbaa !5
  %884 = zext i32 %883 to i64
  %885 = call noalias ptr @calloc(i64 noundef %884, i64 noundef 260) #15
  store ptr %885, ptr %86, align 8, !tbaa !9
  %886 = load ptr, ptr @glad_vkEnumerateDeviceExtensionProperties, align 8, !tbaa !9
  %887 = load ptr, ptr %80, align 8, !tbaa !9
  %888 = load i32, ptr %81, align 4, !tbaa !5
  %889 = zext i32 %888 to i64
  %890 = getelementptr inbounds ptr, ptr %887, i64 %889
  %891 = load ptr, ptr %890, align 8, !tbaa !9
  %892 = load ptr, ptr %86, align 8, !tbaa !9
  %893 = call i32 %886(ptr noundef %891, ptr noundef null, ptr noundef %85, ptr noundef %892)
  %894 = load i8, ptr %73, align 1, !tbaa !11, !range !15, !noundef !16
  %895 = trunc i8 %894 to i1
  br i1 %895, label %896, label %935

896:                                              ; preds = %863
  call void @llvm.lifetime.start.p0(i64 1, ptr %87) #12
  store i8 1, ptr %87, align 1, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 4, ptr %88) #12
  store i32 0, ptr %88, align 4, !tbaa !5
  br label %897

897:                                              ; preds = %913, %896
  %898 = load i32, ptr %88, align 4, !tbaa !5
  %899 = load i32, ptr %85, align 4, !tbaa !5
  %900 = icmp ult i32 %898, %899
  br i1 %900, label %902, label %901

901:                                              ; preds = %897
  store i32 17, ptr %82, align 4
  br label %916

902:                                              ; preds = %897
  %903 = load ptr, ptr %86, align 8, !tbaa !9
  %904 = load i32, ptr %88, align 4, !tbaa !5
  %905 = zext i32 %904 to i64
  %906 = getelementptr inbounds %struct.VkExtensionProperties, ptr %903, i64 %905
  %907 = getelementptr inbounds %struct.VkExtensionProperties, ptr %906, i32 0, i32 0
  %908 = getelementptr inbounds [256 x i8], ptr %907, i64 0, i64 0
  %909 = call i32 @strcmp(ptr noundef %908, ptr noundef @.str.91) #13
  %910 = icmp eq i32 %909, 0
  br i1 %910, label %911, label %912

911:                                              ; preds = %902
  store i8 0, ptr %87, align 1, !tbaa !11
  store i32 17, ptr %82, align 4
  br label %916

912:                                              ; preds = %902
  br label %913

913:                                              ; preds = %912
  %914 = load i32, ptr %88, align 4, !tbaa !5
  %915 = add i32 %914, 1
  store i32 %915, ptr %88, align 4, !tbaa !5
  br label %897, !llvm.loop !31

916:                                              ; preds = %911, %901
  call void @llvm.lifetime.end.p0(i64 4, ptr %88) #12
  br label %917

917:                                              ; preds = %916
  %918 = load i8, ptr %87, align 1, !tbaa !11, !range !15, !noundef !16
  %919 = trunc i8 %918 to i1
  %920 = zext i1 %919 to i64
  %921 = select i1 %919, ptr @.str.93, ptr @.str.94
  %922 = getelementptr inbounds %struct.VkPhysicalDeviceProperties, ptr %83, i32 0, i32 4
  %923 = load i32, ptr %922, align 8, !tbaa !32
  %924 = call ptr @get_device_type_name(i32 noundef %923)
  %925 = getelementptr inbounds %struct.VkPhysicalDeviceProperties, ptr %83, i32 0, i32 5
  %926 = getelementptr inbounds [256 x i8], ptr %925, i64 0, i64 0
  %927 = getelementptr inbounds %struct.VkPhysicalDeviceProperties, ptr %83, i32 0, i32 0
  %928 = load i32, ptr %927, align 8, !tbaa !38
  %929 = lshr i32 %928, 22
  %930 = getelementptr inbounds %struct.VkPhysicalDeviceProperties, ptr %83, i32 0, i32 0
  %931 = load i32, ptr %930, align 8, !tbaa !38
  %932 = lshr i32 %931, 12
  %933 = and i32 %932, 1023
  %934 = call i32 (ptr, ...) @printf(ptr noundef @.str.92, ptr noundef %921, ptr noundef %924, ptr noundef %926, i32 noundef %929, i32 noundef %933)
  call void @llvm.lifetime.end.p0(i64 1, ptr %87) #12
  br label %949

935:                                              ; preds = %863
  %936 = getelementptr inbounds %struct.VkPhysicalDeviceProperties, ptr %83, i32 0, i32 4
  %937 = load i32, ptr %936, align 8, !tbaa !32
  %938 = call ptr @get_device_type_name(i32 noundef %937)
  %939 = getelementptr inbounds %struct.VkPhysicalDeviceProperties, ptr %83, i32 0, i32 5
  %940 = getelementptr inbounds [256 x i8], ptr %939, i64 0, i64 0
  %941 = getelementptr inbounds %struct.VkPhysicalDeviceProperties, ptr %83, i32 0, i32 0
  %942 = load i32, ptr %941, align 8, !tbaa !38
  %943 = lshr i32 %942, 22
  %944 = getelementptr inbounds %struct.VkPhysicalDeviceProperties, ptr %83, i32 0, i32 0
  %945 = load i32, ptr %944, align 8, !tbaa !38
  %946 = lshr i32 %945, 12
  %947 = and i32 %946, 1023
  %948 = call i32 (ptr, ...) @printf(ptr noundef @.str.95, ptr noundef %938, ptr noundef %940, i32 noundef %943, i32 noundef %947)
  br label %949

949:                                              ; preds = %935, %917
  %950 = load i32, ptr %65, align 4, !tbaa !5
  %951 = icmp ne i32 %950, 0
  br i1 %951, label %952, label %980

952:                                              ; preds = %949
  %953 = call i32 (ptr, ...) @printf(ptr noundef @.str.96)
  call void @llvm.lifetime.start.p0(i64 4, ptr %89) #12
  store i32 0, ptr %89, align 4, !tbaa !5
  br label %954

954:                                              ; preds = %976, %952
  %955 = load i32, ptr %89, align 4, !tbaa !5
  %956 = load i32, ptr %84, align 4, !tbaa !5
  %957 = icmp ult i32 %955, %956
  br i1 %957, label %959, label %958

958:                                              ; preds = %954
  store i32 20, ptr %82, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %89) #12
  br label %979

959:                                              ; preds = %954
  %960 = load i32, ptr %89, align 4, !tbaa !5
  %961 = call i32 (ptr, ...) @printf(ptr noundef @.str.97, i32 noundef %960)
  %962 = load ptr, ptr %77, align 8, !tbaa !9
  %963 = load ptr, ptr %80, align 8, !tbaa !9
  %964 = load i32, ptr %81, align 4, !tbaa !5
  %965 = zext i32 %964 to i64
  %966 = getelementptr inbounds ptr, ptr %963, i64 %965
  %967 = load ptr, ptr %966, align 8, !tbaa !9
  %968 = load i32, ptr %89, align 4, !tbaa !5
  %969 = call i32 @glfwGetPhysicalDevicePresentationSupport(ptr noundef %962, ptr noundef %967, i32 noundef %968)
  %970 = icmp ne i32 %969, 0
  br i1 %970, label %971, label %973

971:                                              ; preds = %959
  %972 = call i32 (ptr, ...) @printf(ptr noundef @.str.98)
  br label %975

973:                                              ; preds = %959
  %974 = call i32 (ptr, ...) @printf(ptr noundef @.str.99)
  br label %975

975:                                              ; preds = %973, %971
  br label %976

976:                                              ; preds = %975
  %977 = load i32, ptr %89, align 4, !tbaa !5
  %978 = add i32 %977, 1
  store i32 %978, ptr %89, align 4, !tbaa !5
  br label %954, !llvm.loop !39

979:                                              ; preds = %958
  br label %980

980:                                              ; preds = %979, %949
  %981 = load i8, ptr %7, align 1, !tbaa !11, !range !15, !noundef !16
  %982 = trunc i8 %981 to i1
  br i1 %982, label %983, label %1008

983:                                              ; preds = %980
  %984 = call i32 (ptr, ...) @printf(ptr noundef @.str.100)
  call void @llvm.lifetime.start.p0(i64 4, ptr %90) #12
  store i32 0, ptr %90, align 4, !tbaa !5
  br label %985

985:                                              ; preds = %1004, %983
  %986 = load i32, ptr %90, align 4, !tbaa !5
  %987 = load i32, ptr %85, align 4, !tbaa !5
  %988 = icmp ult i32 %986, %987
  br i1 %988, label %990, label %989

989:                                              ; preds = %985
  store i32 23, ptr %82, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %90) #12
  br label %1007

990:                                              ; preds = %985
  %991 = load ptr, ptr %86, align 8, !tbaa !9
  %992 = load i32, ptr %90, align 4, !tbaa !5
  %993 = zext i32 %992 to i64
  %994 = getelementptr inbounds %struct.VkExtensionProperties, ptr %991, i64 %993
  %995 = getelementptr inbounds %struct.VkExtensionProperties, ptr %994, i32 0, i32 0
  %996 = getelementptr inbounds [256 x i8], ptr %995, i64 0, i64 0
  %997 = load ptr, ptr %86, align 8, !tbaa !9
  %998 = load i32, ptr %90, align 4, !tbaa !5
  %999 = zext i32 %998 to i64
  %1000 = getelementptr inbounds %struct.VkExtensionProperties, ptr %997, i64 %999
  %1001 = getelementptr inbounds %struct.VkExtensionProperties, ptr %1000, i32 0, i32 1
  %1002 = load i32, ptr %1001, align 4, !tbaa !18
  %1003 = call i32 (ptr, ...) @printf(ptr noundef @.str.86, ptr noundef %996, i32 noundef %1002)
  br label %1004

1004:                                             ; preds = %990
  %1005 = load i32, ptr %90, align 4, !tbaa !5
  %1006 = add i32 %1005, 1
  store i32 %1006, ptr %90, align 4, !tbaa !5
  br label %985, !llvm.loop !40

1007:                                             ; preds = %989
  br label %1008

1008:                                             ; preds = %1007, %980
  %1009 = load ptr, ptr %86, align 8, !tbaa !9
  call void @free(ptr noundef %1009) #12
  %1010 = load i8, ptr %8, align 1, !tbaa !11, !range !15, !noundef !16
  %1011 = trunc i8 %1010 to i1
  br i1 %1011, label %1012, label %1019

1012:                                             ; preds = %1008
  %1013 = load ptr, ptr %77, align 8, !tbaa !9
  %1014 = load ptr, ptr %80, align 8, !tbaa !9
  %1015 = load i32, ptr %81, align 4, !tbaa !5
  %1016 = zext i32 %1015 to i64
  %1017 = getelementptr inbounds ptr, ptr %1014, i64 %1016
  %1018 = load ptr, ptr %1017, align 8, !tbaa !9
  call void @list_vulkan_device_layers(ptr noundef %1013, ptr noundef %1018)
  br label %1019

1019:                                             ; preds = %1012, %1008
  call void @llvm.lifetime.end.p0(i64 8, ptr %86) #12
  call void @llvm.lifetime.end.p0(i64 4, ptr %85) #12
  call void @llvm.lifetime.end.p0(i64 4, ptr %84) #12
  call void @llvm.lifetime.end.p0(i64 824, ptr %83) #12
  br label %1020

1020:                                             ; preds = %1019
  %1021 = load i32, ptr %81, align 4, !tbaa !5
  %1022 = add i32 %1021, 1
  store i32 %1022, ptr %81, align 4, !tbaa !5
  br label %858, !llvm.loop !41

1023:                                             ; preds = %862
  %1024 = load ptr, ptr %80, align 8, !tbaa !9
  call void @free(ptr noundef %1024) #12
  %1025 = load ptr, ptr @glad_vkDestroyInstance, align 8, !tbaa !9
  %1026 = load ptr, ptr %77, align 8, !tbaa !9
  call void %1025(ptr noundef %1026, ptr noundef null)
  call void @llvm.lifetime.end.p0(i64 8, ptr %80) #12
  call void @llvm.lifetime.end.p0(i64 4, ptr %79) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr %77) #12
  call void @llvm.lifetime.end.p0(i64 64, ptr %76) #12
  call void @llvm.lifetime.end.p0(i64 48, ptr %75) #12
  call void @llvm.lifetime.end.p0(i64 1, ptr %73) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr %71) #12
  call void @llvm.lifetime.end.p0(i64 4, ptr %70) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr %68) #12
  call void @llvm.lifetime.end.p0(i64 4, ptr %67) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr %66) #12
  call void @llvm.lifetime.end.p0(i64 4, ptr %65) #12
  call void @llvm.lifetime.end.p0(i64 4, ptr %63) #12
  br label %1027

1027:                                             ; preds = %1023, %666
  %1028 = load ptr, ptr %39, align 8, !tbaa !9
  call void @glfwDestroyWindow(ptr noundef %1028)
  call void @glfwTerminate()
  call void @exit(i32 noundef 0) #14
  unreachable
}

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

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

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

; Function Attrs: nounwind uwtable
declare hidden void @usage() #1

; Function Attrs: noreturn nounwind
declare void @exit(i32 noundef) #5

; Function Attrs: inlinehint nounwind willreturn memory(read) uwtable
declare i32 @atoi(ptr noundef nonnull) #6

; Function Attrs: nounwind uwtable
declare hidden void @print_version() #1

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

; Function Attrs: nounwind uwtable
declare hidden zeroext i1 @valid_version() #1

declare ptr @glfwSetErrorCallback(ptr noundef) #3

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

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

declare i32 @glfwInit() #3

; Function Attrs: nounwind uwtable
declare hidden void @print_platform() #1

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

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

declare void @glfwMakeContextCurrent(ptr noundef) #3

declare ptr @glfwGetProcAddress(ptr noundef) #3

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

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

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

; Function Attrs: inlinehint nounwind uwtable
declare i32 @putchar(i32 noundef) #7

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

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

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

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

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

declare void @glfwDestroyWindow(ptr noundef) #3

declare void @glfwTerminate() #3

declare i32 @glfwVulkanSupported() #3

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

declare ptr @glfwGetRequiredInstanceExtensions(ptr noundef) #3

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

; Function Attrs: nounwind allocsize(1)
declare ptr @realloc(ptr noundef, i64 noundef) #9

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

; Function Attrs: nounwind uwtable
declare hidden void @list_vulkan_instance_layers() #1

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

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

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

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

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

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

!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 = !{!"int", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C/C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"any pointer", !7, i64 0}
!11 = !{!12, !12, i64 0}
!12 = !{!"_Bool", !7, i64 0}
!13 = distinct !{!13, !14}
!14 = !{!"llvm.loop.mustprogress"}
!15 = !{i8 0, i8 2}
!16 = !{}
!17 = distinct !{!17, !14}
!18 = !{!19, !6, i64 256}
!19 = !{!"VkExtensionProperties", !7, i64 0, !6, i64 256}
!20 = distinct !{!20, !14}
!21 = distinct !{!21, !14}
!22 = !{!23, !10, i64 16}
!23 = !{!"VkApplicationInfo", !6, i64 0, !10, i64 8, !10, i64 16, !6, i64 24, !10, i64 32, !6, i64 40, !6, i64 44}
!24 = !{!23, !6, i64 24}
!25 = !{!23, !6, i64 44}
!26 = !{!27, !10, i64 24}
!27 = !{!"VkInstanceCreateInfo", !6, i64 0, !10, i64 8, !6, i64 16, !10, i64 24, !6, i64 32, !10, i64 40, !6, i64 48, !10, i64 56}
!28 = !{!27, !6, i64 48}
!29 = !{!27, !10, i64 56}
!30 = !{!27, !6, i64 16}
!31 = distinct !{!31, !14}
!32 = !{!33, !6, i64 16}
!33 = !{!"VkPhysicalDeviceProperties", !6, i64 0, !6, i64 4, !6, i64 8, !6, i64 12, !6, i64 16, !7, i64 20, !7, i64 276, !34, i64 296, !37, i64 800}
!34 = !{!"VkPhysicalDeviceLimits", !6, i64 0, !6, i64 4, !6, i64 8, !6, i64 12, !6, i64 16, !6, i64 20, !6, i64 24, !6, i64 28, !6, i64 32, !6, i64 36, !6, i64 40, !35, i64 48, !35, i64 56, !6, i64 64, !6, i64 68, !6, i64 72, !6, i64 76, !6, i64 80, !6, i64 84, !6, i64 88, !6, i64 92, !6, i64 96, !6, i64 100, !6, i64 104, !6, i64 108, !6, i64 112, !6, i64 116, !6, i64 120, !6, i64 124, !6, i64 128, !6, i64 132, !6, i64 136, !6, i64 140, !6, i64 144, !6, i64 148, !6, i64 152, !6, i64 156, !6, i64 160, !6, i64 164, !6, i64 168, !6, i64 172, !6, i64 176, !6, i64 180, !6, i64 184, !6, i64 188, !6, i64 192, !6, i64 196, !6, i64 200, !6, i64 204, !6, i64 208, !6, i64 212, !6, i64 216, !7, i64 220, !6, i64 232, !7, i64 236, !6, i64 248, !6, i64 252, !6, i64 256, !6, i64 260, !6, i64 264, !36, i64 268, !36, i64 272, !6, i64 276, !7, i64 280, !7, i64 288, !6, i64 296, !35, i64 304, !35, i64 312, !35, i64 320, !35, i64 328, !6, i64 336, !6, i64 340, !6, i64 344, !6, i64 348, !36, i64 352, !36, i64 356, !6, i64 360, !6, i64 364, !6, i64 368, !6, i64 372, !6, i64 376, !6, i64 380, !6, i64 384, !6, i64 388, !6, i64 392, !6, i64 396, !6, i64 400, !6, i64 404, !6, i64 408, !6, i64 412, !6, i64 416, !6, i64 420, !36, i64 424, !6, i64 428, !6, i64 432, !6, i64 436, !6, i64 440, !7, i64 444, !7, i64 452, !36, i64 460, !36, i64 464, !6, i64 468, !6, i64 472, !35, i64 480, !35, i64 488, !35, i64 496}
!35 = !{!"long", !7, i64 0}
!36 = !{!"float", !7, i64 0}
!37 = !{!"VkPhysicalDeviceSparseProperties", !6, i64 0, !6, i64 4, !6, i64 8, !6, i64 12, !6, i64 16}
!38 = !{!33, !6, i64 0}
!39 = distinct !{!39, !14}
!40 = distinct !{!40, !14}
!41 = distinct !{!41, !14}


; 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.option = type { ptr, i32, ptr, i32 }
%struct.VkApplicationInfo = type { i32, ptr, ptr, i32, ptr, i32, i32 }
%struct.VkInstanceCreateInfo = type { i32, ptr, i32, ptr, i32, ptr, i32, ptr }
%struct.VkPhysicalDeviceProperties = type { i32, i32, i32, i32, i32, [256 x i8], [16 x i8], %struct.VkPhysicalDeviceLimits, %struct.VkPhysicalDeviceSparseProperties }
%struct.VkPhysicalDeviceLimits = type { i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i64, i64, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, [3 x i32], i32, [3 x i32], i32, i32, i32, i32, i32, float, float, i32, [2 x i32], [2 x float], i32, i64, i64, i64, i64, i32, i32, i32, i32, float, float, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, float, i32, i32, i32, i32, [2 x float], [2 x float], float, float, i32, i32, i64, i64, i64 }
%struct.VkPhysicalDeviceSparseProperties = type { i32, i32, i32, i32, i32 }
%struct.VkExtensionProperties = type { [256 x i8], i32 }

@GLAD_GL_ARB_multisample = external dso_local local_unnamed_addr global i32, align 4
@GLAD_GL_ARB_robustness = external dso_local local_unnamed_addr global i32, align 4
@glad_glGetError = external dso_local local_unnamed_addr global ptr, align 8
@glad_glGetFramebufferAttachmentParameteriv = external dso_local local_unnamed_addr global ptr, align 8
@glad_glGetIntegerv = external dso_local local_unnamed_addr global ptr, align 8
@glad_glGetString = external dso_local local_unnamed_addr global ptr, align 8
@glad_vkCreateInstance = external dso_local local_unnamed_addr global ptr, align 8
@glad_vkDestroyInstance = external dso_local local_unnamed_addr global ptr, align 8
@glad_vkDestroySurfaceKHR = external dso_local local_unnamed_addr global ptr, align 8
@glad_vkEnumerateDeviceExtensionProperties = external dso_local local_unnamed_addr global ptr, align 8
@glad_vkEnumerateInstanceExtensionProperties = external dso_local local_unnamed_addr global ptr, align 8
@glad_vkEnumerateInstanceVersion = external dso_local local_unnamed_addr global ptr, align 8
@glad_vkEnumeratePhysicalDevices = external dso_local local_unnamed_addr global ptr, align 8
@glad_vkGetPhysicalDeviceProperties = external dso_local local_unnamed_addr global ptr, align 8
@glad_vkGetPhysicalDeviceQueueFamilyProperties = external dso_local local_unnamed_addr global ptr, align 8
@__const.main.options = external hidden unnamed_addr constant [34 x %struct.option], align 16
@.str.35 = external hidden unnamed_addr constant [20 x i8], align 1
@optarg = external local_unnamed_addr global ptr, align 8
@.str.36 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.37 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.38 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.39 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.40 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.41 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.42 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.43 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.44 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.45 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.46 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.47 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.48 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.49 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.50 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.51 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.52 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.53 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.54 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.55 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.56 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.57 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.58 = external hidden unnamed_addr constant [49 x i8], align 1
@.str.59 = external hidden unnamed_addr constant [33 x i8], align 1
@.str.60 = external hidden unnamed_addr constant [45 x i8], align 1
@.str.61 = external hidden unnamed_addr constant [27 x i8], align 1
@.str.62 = external hidden unnamed_addr constant [20 x i8], align 1
@.str.63 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.64 = external hidden unnamed_addr constant [12 x i8], align 1
@.str.65 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.66 = external hidden unnamed_addr constant [33 x i8], align 1
@.str.67 = external hidden unnamed_addr constant [30 x i8], align 1
@.str.68 = external hidden unnamed_addr constant [36 x i8], align 1
@.str.69 = external hidden unnamed_addr constant [37 x i8], align 1
@.str.70 = external hidden unnamed_addr constant [43 x i8], align 1
@.str.71 = external hidden unnamed_addr constant [34 x i8], align 1
@.str.72 = external hidden unnamed_addr constant [32 x i8], align 1
@.str.73 = external hidden unnamed_addr constant [43 x i8], align 1
@.str.74 = external hidden unnamed_addr constant [17 x i8], align 1
@.str.75 = external hidden unnamed_addr constant [61 x i8], align 1
@.str.76 = external hidden unnamed_addr constant [33 x i8], align 1
@.str.77 = external hidden unnamed_addr constant [79 x i8], align 1
@.str.78 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.79 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.80 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.81 = external hidden unnamed_addr constant [34 x i8], align 1
@.str.82 = external hidden unnamed_addr constant [53 x i8], align 1
@.str.83 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.84 = external hidden unnamed_addr constant [42 x i8], align 1
@.str.85 = external hidden unnamed_addr constant [29 x i8], align 1
@.str.86 = external hidden unnamed_addr constant [23 x i8], align 1
@.str.87 = external hidden unnamed_addr constant [31 x i8], align 1
@.str.88 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.89 = external hidden unnamed_addr constant [44 x i8], align 1
@.str.90 = external hidden unnamed_addr constant [40 x i8], align 1
@.str.91 = external hidden unnamed_addr constant [26 x i8], align 1
@.str.92 = external hidden unnamed_addr constant [47 x i8], align 1
@.str.93 = external hidden unnamed_addr constant [11 x i8], align 1
@.str.94 = external hidden unnamed_addr constant [15 x i8], align 1
@.str.95 = external hidden unnamed_addr constant [44 x i8], align 1
@.str.96 = external hidden unnamed_addr constant [50 x i8], align 1
@.str.97 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.98 = external hidden unnamed_addr constant [11 x i8], align 1
@.str.99 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.100 = external hidden unnamed_addr constant [27 x i8], align 1

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

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

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

; Function Attrs: nounwind uwtable
declare dso_local i32 @gladLoadVulkanUserPtr(ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #1

; Function Attrs: noreturn nounwind uwtable
define dso_local noundef i32 @main(i32 noundef %0, ptr noundef %1) local_unnamed_addr #2 {
  %3 = alloca [34 x %struct.option], align 16
  %4 = alloca i32, align 4
  %5 = alloca i32, align 4
  %6 = alloca i32, align 4
  %7 = alloca i32, align 4
  %8 = alloca i32, align 4
  %9 = alloca i32, align 4
  %10 = alloca i32, align 4
  %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 i32, align 4
  %17 = alloca i32, align 4
  %18 = alloca i32, align 4
  %19 = alloca i32, align 4
  %20 = alloca i32, align 4
  %21 = alloca i32, align 4
  %22 = alloca i32, align 4
  %23 = alloca %struct.VkApplicationInfo, align 8
  %24 = alloca %struct.VkInstanceCreateInfo, align 8
  %25 = alloca ptr, align 8
  %26 = alloca ptr, align 8
  %27 = alloca i32, align 4
  %28 = alloca %struct.VkPhysicalDeviceProperties, align 8
  %29 = alloca i32, align 4
  %30 = alloca i32, align 4
  call void @llvm.lifetime.start.p0(i64 1088, ptr nonnull %3) #15
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 16 dereferenceable(1088) %3, ptr noundef nonnull align 16 dereferenceable(1088) @__const.main.options, i64 1088, i1 false)
  br label %31

31:                                               ; preds = %.backedge, %2
  %.0239 = phi i8 [ 0, %2 ], [ %.0239.be, %.backedge ]
  %.0237 = phi i32 [ 0, %2 ], [ %.0237.be, %.backedge ]
  %.0235 = phi i32 [ 8, %2 ], [ %.0235.be, %.backedge ]
  %.0233 = phi i32 [ 8, %2 ], [ %.0233.be, %.backedge ]
  %.0231 = phi i32 [ 8, %2 ], [ %.0231.be, %.backedge ]
  %.0229 = phi i32 [ 8, %2 ], [ %.0229.be, %.backedge ]
  %.0227 = phi i32 [ 24, %2 ], [ %.0227.be, %.backedge ]
  %.0225 = phi i32 [ 8, %2 ], [ %.0225.be, %.backedge ]
  %.0223 = phi i32 [ 0, %2 ], [ %.0223.be, %.backedge ]
  %.0221 = phi i32 [ 0, %2 ], [ %.0221.be, %.backedge ]
  %.0219 = phi i32 [ 0, %2 ], [ %.0219.be, %.backedge ]
  %.0217 = phi i32 [ 0, %2 ], [ %.0217.be, %.backedge ]
  %.0215 = phi i32 [ 0, %2 ], [ %.0215.be, %.backedge ]
  %.0213 = phi i32 [ 0, %2 ], [ %.0213.be, %.backedge ]
  %.0211 = phi i8 [ 0, %2 ], [ %.0211.be, %.backedge ]
  %.0209 = phi i8 [ 0, %2 ], [ %.0209.be, %.backedge ]
  %.0207 = phi i8 [ 1, %2 ], [ %.0207.be, %.backedge ]
  %.0205 = phi i32 [ 225281, %2 ], [ %.0205.be, %.backedge ]
  %.0203 = phi i8 [ 0, %2 ], [ %.0203.be, %.backedge ]
  %.0201 = phi i8 [ 0, %2 ], [ %.0201.be, %.backedge ]
  %.0199 = phi i8 [ 0, %2 ], [ %.0199.be, %.backedge ]
  %.0197 = phi i8 [ 0, %2 ], [ %.0197.be, %.backedge ]
  %.0195 = phi i32 [ 0, %2 ], [ %.0195.be, %.backedge ]
  %.0193 = phi i32 [ 221185, %2 ], [ %.0193.be, %.backedge ]
  %.0191 = phi i32 [ 0, %2 ], [ %.0191.be, %.backedge ]
  %.0189 = phi i32 [ 0, %2 ], [ %.0189.be, %.backedge ]
  %.0187 = phi i32 [ 1, %2 ], [ %.0187.be, %.backedge ]
  %.0183 = phi i32 [ 196609, %2 ], [ %.0183.be, %.backedge ]
  %.0176 = phi i32 [ 393216, %2 ], [ %.0176.be, %.backedge ]
  %.0170 = phi i1 [ false, %2 ], [ %.0170.be, %.backedge ]
  %.0168 = phi i8 [ 0, %2 ], [ %.0168.be, %.backedge ]
  %32 = call i32 @getopt_long(i32 noundef %0, ptr noundef %1, ptr noundef nonnull @.str.35, ptr noundef nonnull %3, ptr noundef null) #15
  switch i32 %32, label %205 [
    i32 -1, label %206
    i32 0, label %33
    i32 97, label %53
    i32 1, label %53
    i32 98, label %61
    i32 3, label %61
    i32 99, label %69
    i32 2, label %69
    i32 100, label %.backedge
    i32 4, label %.backedge
    i32 102, label %80
    i32 5, label %80
    i32 104, label %81
    i32 6, label %81
    i32 108, label %82
    i32 7, label %82
    i32 8, label %83
    i32 109, label %84
    i32 9, label %84
    i32 110, label %87
    i32 10, label %87
    i32 112, label %90
    i32 11, label %90
    i32 115, label %98
    i32 12, label %98
    i32 118, label %106
    i32 13, label %106
    i32 14, label %107
    i32 15, label %113
    i32 16, label %119
    i32 17, label %125
    i32 18, label %131
    i32 19, label %137
    i32 20, label %143
    i32 21, label %149
    i32 22, label %155
    i32 23, label %161
    i32 24, label %167
    i32 25, label %173
    i32 26, label %179
    i32 27, label %180
    i32 28, label %181
    i32 29, label %182
    i32 30, label %183
    i32 31, label %203
    i32 32, label %204
  ]

33:                                               ; preds = %31
  %34 = load ptr, ptr @optarg, align 8, !tbaa !5
  %35 = call i32 @strcasecmp(ptr noundef %34, ptr noundef nonnull @.str.36) #16
  %36 = icmp eq i32 %35, 0
  br i1 %36, label %.backedge, label %37

37:                                               ; preds = %33
  %38 = call i32 @strcasecmp(ptr noundef %34, ptr noundef nonnull @.str.37) #16
  %39 = icmp eq i32 %38, 0
  br i1 %39, label %.backedge, label %40

40:                                               ; preds = %37
  %41 = call i32 @strcasecmp(ptr noundef %34, ptr noundef nonnull @.str.38) #16
  %42 = icmp eq i32 %41, 0
  br i1 %42, label %.backedge, label %43

43:                                               ; preds = %40
  %44 = call i32 @strcasecmp(ptr noundef %34, ptr noundef nonnull @.str.39) #16
  %45 = icmp eq i32 %44, 0
  br i1 %45, label %.backedge, label %46

46:                                               ; preds = %43
  %47 = call i32 @strcasecmp(ptr noundef %34, ptr noundef nonnull @.str.40) #16
  %48 = icmp eq i32 %47, 0
  br i1 %48, label %.backedge, label %49

49:                                               ; preds = %46
  %50 = call i32 @strcasecmp(ptr noundef %34, ptr noundef nonnull @.str.41) #16
  %51 = icmp eq i32 %50, 0
  br i1 %51, label %.backedge, label %52

52:                                               ; preds = %49
  call void @usage()
  call void @exit(i32 noundef 1) #17
  unreachable

53:                                               ; preds = %31, %31
  %54 = load ptr, ptr @optarg, align 8, !tbaa !5
  %55 = call i32 @strcasecmp(ptr noundef %54, ptr noundef nonnull @.str.42) #16
  %56 = icmp eq i32 %55, 0
  br i1 %56, label %.backedge, label %57

57:                                               ; preds = %53
  %58 = call i32 @strcasecmp(ptr noundef %54, ptr noundef nonnull @.str.43) #16
  %59 = icmp eq i32 %58, 0
  br i1 %59, label %.backedge, label %60

60:                                               ; preds = %57
  call void @usage()
  call void @exit(i32 noundef 1) #17
  unreachable

61:                                               ; preds = %31, %31
  %62 = load ptr, ptr @optarg, align 8, !tbaa !5
  %63 = call i32 @strcasecmp(ptr noundef %62, ptr noundef nonnull @.str.44) #16
  %64 = icmp eq i32 %63, 0
  br i1 %64, label %.backedge, label %65

65:                                               ; preds = %61
  %66 = call i32 @strcasecmp(ptr noundef %62, ptr noundef nonnull @.str.45) #16
  %67 = icmp eq i32 %66, 0
  br i1 %67, label %.backedge, label %68

68:                                               ; preds = %65
  call void @usage()
  call void @exit(i32 noundef 1) #17
  unreachable

69:                                               ; preds = %31, %31
  %70 = load ptr, ptr @optarg, align 8, !tbaa !5
  %71 = call i32 @strcasecmp(ptr noundef %70, ptr noundef nonnull @.str.46) #16
  %72 = icmp eq i32 %71, 0
  br i1 %72, label %.backedge, label %73

73:                                               ; preds = %69
  %74 = call i32 @strcasecmp(ptr noundef %70, ptr noundef nonnull @.str.47) #16
  %75 = icmp eq i32 %74, 0
  br i1 %75, label %.backedge, label %76

76:                                               ; preds = %73
  %77 = call i32 @strcasecmp(ptr noundef %70, ptr noundef nonnull @.str.48) #16
  %78 = icmp eq i32 %77, 0
  br i1 %78, label %.backedge, label %79

79:                                               ; preds = %76
  call void @usage()
  call void @exit(i32 noundef 1) #17
  unreachable

80:                                               ; preds = %31, %31
  br label %.backedge

81:                                               ; preds = %31, %31
  call void @usage()
  call void @exit(i32 noundef 0) #17
  unreachable

82:                                               ; preds = %31, %31
  br label %.backedge

83:                                               ; preds = %31
  br label %.backedge

84:                                               ; preds = %31, %31
  %85 = load ptr, ptr @optarg, align 8, !tbaa !5
  %86 = call i32 @atoi(ptr nocapture noundef %85) #16
  br label %.backedge

87:                                               ; preds = %31, %31
  %88 = load ptr, ptr @optarg, align 8, !tbaa !5
  %89 = call i32 @atoi(ptr nocapture noundef %88) #16
  br label %.backedge

90:                                               ; preds = %31, %31
  %91 = load ptr, ptr @optarg, align 8, !tbaa !5
  %92 = call i32 @strcasecmp(ptr noundef %91, ptr noundef nonnull @.str.49) #16
  %93 = icmp eq i32 %92, 0
  br i1 %93, label %.backedge, label %94

94:                                               ; preds = %90
  %95 = call i32 @strcasecmp(ptr noundef %91, ptr noundef nonnull @.str.50) #16
  %96 = icmp eq i32 %95, 0
  br i1 %96, label %.backedge, label %97

97:                                               ; preds = %94
  call void @usage()
  call void @exit(i32 noundef 1) #17
  unreachable

98:                                               ; preds = %31, %31
  %99 = load ptr, ptr @optarg, align 8, !tbaa !5
  %100 = call i32 @strcasecmp(ptr noundef %99, ptr noundef nonnull @.str.44) #16
  %101 = icmp eq i32 %100, 0
  br i1 %101, label %.backedge, label %102

102:                                              ; preds = %98
  %103 = call i32 @strcasecmp(ptr noundef %99, ptr noundef nonnull @.str.51) #16
  %104 = icmp eq i32 %103, 0
  br i1 %104, label %.backedge, label %105

105:                                              ; preds = %102
  call void @usage()
  call void @exit(i32 noundef 1) #17
  unreachable

106:                                              ; preds = %31, %31
  call void @print_version()
  call void @exit(i32 noundef 0) #17
  unreachable

107:                                              ; preds = %31
  %108 = load ptr, ptr @optarg, align 8, !tbaa !5
  %109 = call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %108, ptr noundef nonnull dereferenceable(1) @.str.52) #16
  %110 = icmp eq i32 %109, 0
  br i1 %110, label %.backedge, label %111

111:                                              ; preds = %107
  %112 = call i32 @atoi(ptr nocapture noundef %108) #16
  br label %.backedge

113:                                              ; preds = %31
  %114 = load ptr, ptr @optarg, align 8, !tbaa !5
  %115 = call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %114, ptr noundef nonnull dereferenceable(1) @.str.52) #16
  %116 = icmp eq i32 %115, 0
  br i1 %116, label %.backedge, label %117

117:                                              ; preds = %113
  %118 = call i32 @atoi(ptr nocapture noundef %114) #16
  br label %.backedge

119:                                              ; preds = %31
  %120 = load ptr, ptr @optarg, align 8, !tbaa !5
  %121 = call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %120, ptr noundef nonnull dereferenceable(1) @.str.52) #16
  %122 = icmp eq i32 %121, 0
  br i1 %122, label %.backedge, label %123

123:                                              ; preds = %119
  %124 = call i32 @atoi(ptr nocapture noundef %120) #16
  br label %.backedge

125:                                              ; preds = %31
  %126 = load ptr, ptr @optarg, align 8, !tbaa !5
  %127 = call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %126, ptr noundef nonnull dereferenceable(1) @.str.52) #16
  %128 = icmp eq i32 %127, 0
  br i1 %128, label %.backedge, label %129

129:                                              ; preds = %125
  %130 = call i32 @atoi(ptr nocapture noundef %126) #16
  br label %.backedge

131:                                              ; preds = %31
  %132 = load ptr, ptr @optarg, align 8, !tbaa !5
  %133 = call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %132, ptr noundef nonnull dereferenceable(1) @.str.52) #16
  %134 = icmp eq i32 %133, 0
  br i1 %134, label %.backedge, label %135

135:                                              ; preds = %131
  %136 = call i32 @atoi(ptr nocapture noundef %132) #16
  br label %.backedge

137:                                              ; preds = %31
  %138 = load ptr, ptr @optarg, align 8, !tbaa !5
  %139 = call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %138, ptr noundef nonnull dereferenceable(1) @.str.52) #16
  %140 = icmp eq i32 %139, 0
  br i1 %140, label %.backedge, label %141

141:                                              ; preds = %137
  %142 = call i32 @atoi(ptr nocapture noundef %138) #16
  br label %.backedge

143:                                              ; preds = %31
  %144 = load ptr, ptr @optarg, align 8, !tbaa !5
  %145 = call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %144, ptr noundef nonnull dereferenceable(1) @.str.52) #16
  %146 = icmp eq i32 %145, 0
  br i1 %146, label %.backedge, label %147

147:                                              ; preds = %143
  %148 = call i32 @atoi(ptr nocapture noundef %144) #16
  br label %.backedge

149:                                              ; preds = %31
  %150 = load ptr, ptr @optarg, align 8, !tbaa !5
  %151 = call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %150, ptr noundef nonnull dereferenceable(1) @.str.52) #16
  %152 = icmp eq i32 %151, 0
  br i1 %152, label %.backedge, label %153

153:                                              ; preds = %149
  %154 = call i32 @atoi(ptr nocapture noundef %150) #16
  br label %.backedge

155:                                              ; preds = %31
  %156 = load ptr, ptr @optarg, align 8, !tbaa !5
  %157 = call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %156, ptr noundef nonnull dereferenceable(1) @.str.52) #16
  %158 = icmp eq i32 %157, 0
  br i1 %158, label %.backedge, label %159

159:                                              ; preds = %155
  %160 = call i32 @atoi(ptr nocapture noundef %156) #16
  br label %.backedge

161:                                              ; preds = %31
  %162 = load ptr, ptr @optarg, align 8, !tbaa !5
  %163 = call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %162, ptr noundef nonnull dereferenceable(1) @.str.52) #16
  %164 = icmp eq i32 %163, 0
  br i1 %164, label %.backedge, label %165

165:                                              ; preds = %161
  %166 = call i32 @atoi(ptr nocapture noundef %162) #16
  br label %.backedge

167:                                              ; preds = %31
  %168 = load ptr, ptr @optarg, align 8, !tbaa !5
  %169 = call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %168, ptr noundef nonnull dereferenceable(1) @.str.52) #16
  %170 = icmp eq i32 %169, 0
  br i1 %170, label %.backedge, label %171

171:                                              ; preds = %167
  %172 = call i32 @atoi(ptr nocapture noundef %168) #16
  br label %.backedge

173:                                              ; preds = %31
  %174 = load ptr, ptr @optarg, align 8, !tbaa !5
  %175 = call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %174, ptr noundef nonnull dereferenceable(1) @.str.52) #16
  %176 = icmp eq i32 %175, 0
  br i1 %176, label %.backedge, label %177

177:                                              ; preds = %173
  %178 = call i32 @atoi(ptr nocapture noundef %174) #16
  br label %.backedge

179:                                              ; preds = %31
  br label %.backedge

180:                                              ; preds = %31
  br label %.backedge

181:                                              ; preds = %31
  br label %.backedge

182:                                              ; preds = %31
  br label %.backedge

183:                                              ; preds = %31
  %184 = load ptr, ptr @optarg, align 8, !tbaa !5
  %185 = call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %184, ptr noundef nonnull dereferenceable(1) @.str.42) #16
  %186 = icmp eq i32 %185, 0
  br i1 %186, label %.backedge, label %187

187:                                              ; preds = %183
  %188 = call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %184, ptr noundef nonnull dereferenceable(1) @.str.43) #16
  %189 = icmp eq i32 %188, 0
  br i1 %189, label %.backedge, label %190

190:                                              ; preds = %187
  %191 = call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %184, ptr noundef nonnull dereferenceable(1) @.str.53) #16
  %192 = icmp eq i32 %191, 0
  br i1 %192, label %.backedge, label %193

193:                                              ; preds = %190
  %194 = call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %184, ptr noundef nonnull dereferenceable(1) @.str.54) #16
  %195 = icmp eq i32 %194, 0
  br i1 %195, label %.backedge, label %196

196:                                              ; preds = %193
  %197 = call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %184, ptr noundef nonnull dereferenceable(1) @.str.55) #16
  %198 = icmp eq i32 %197, 0
  br i1 %198, label %.backedge, label %199

199:                                              ; preds = %196
  %200 = call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %184, ptr noundef nonnull dereferenceable(1) @.str.56) #16
  %201 = icmp eq i32 %200, 0
  br i1 %201, label %.backedge, label %202

.backedge:                                        ; preds = %199, %196, %193, %190, %187, %183, %173, %167, %161, %155, %149, %143, %137, %131, %125, %119, %113, %107, %102, %98, %94, %90, %31, %31, %76, %73, %69, %65, %61, %57, %53, %49, %46, %43, %40, %37, %33, %177, %171, %165, %159, %153, %147, %141, %135, %129, %123, %117, %111, %204, %203, %182, %181, %180, %179, %87, %84, %83, %82, %80
  %.0239.be = phi i8 [ %.0239, %204 ], [ %.0239, %203 ], [ %.0239, %182 ], [ %.0239, %181 ], [ %.0239, %180 ], [ %.0239, %179 ], [ %.0239, %177 ], [ %.0239, %171 ], [ %.0239, %165 ], [ %.0239, %159 ], [ %.0239, %153 ], [ %.0239, %147 ], [ %.0239, %141 ], [ %.0239, %135 ], [ %.0239, %129 ], [ %.0239, %123 ], [ %.0239, %117 ], [ %.0239, %111 ], [ %.0239, %87 ], [ %.0239, %84 ], [ %.0239, %83 ], [ %.0239, %82 ], [ 1, %80 ], [ %.0239, %33 ], [ %.0239, %37 ], [ %.0239, %40 ], [ %.0239, %43 ], [ %.0239, %46 ], [ %.0239, %49 ], [ %.0239, %53 ], [ %.0239, %57 ], [ %.0239, %61 ], [ %.0239, %65 ], [ %.0239, %69 ], [ %.0239, %73 ], [ %.0239, %76 ], [ %.0239, %31 ], [ %.0239, %31 ], [ %.0239, %90 ], [ %.0239, %94 ], [ %.0239, %98 ], [ %.0239, %102 ], [ %.0239, %107 ], [ %.0239, %113 ], [ %.0239, %119 ], [ %.0239, %125 ], [ %.0239, %131 ], [ %.0239, %137 ], [ %.0239, %143 ], [ %.0239, %149 ], [ %.0239, %155 ], [ %.0239, %161 ], [ %.0239, %167 ], [ %.0239, %173 ], [ %.0239, %183 ], [ %.0239, %187 ], [ %.0239, %190 ], [ %.0239, %193 ], [ %.0239, %196 ], [ %.0239, %199 ]
  %.0237.be = phi i32 [ %.0237, %204 ], [ %.0237, %203 ], [ %.0237, %182 ], [ %.0237, %181 ], [ %.0237, %180 ], [ %.0237, %179 ], [ %.0237, %177 ], [ %.0237, %171 ], [ %.0237, %165 ], [ %.0237, %159 ], [ %.0237, %153 ], [ %.0237, %147 ], [ %.0237, %141 ], [ %.0237, %135 ], [ %.0237, %129 ], [ %.0237, %123 ], [ %.0237, %117 ], [ %.0237, %111 ], [ %.0237, %87 ], [ %.0237, %84 ], [ %.0237, %83 ], [ %.0237, %82 ], [ %.0237, %80 ], [ %.0237, %33 ], [ %.0237, %37 ], [ %.0237, %40 ], [ %.0237, %43 ], [ %.0237, %46 ], [ %.0237, %49 ], [ %.0237, %53 ], [ %.0237, %57 ], [ %.0237, %61 ], [ %.0237, %65 ], [ %.0237, %69 ], [ %.0237, %73 ], [ %.0237, %76 ], [ %.0237, %31 ], [ %.0237, %31 ], [ 204801, %90 ], [ 204802, %94 ], [ %.0237, %98 ], [ %.0237, %102 ], [ %.0237, %107 ], [ %.0237, %113 ], [ %.0237, %119 ], [ %.0237, %125 ], [ %.0237, %131 ], [ %.0237, %137 ], [ %.0237, %143 ], [ %.0237, %149 ], [ %.0237, %155 ], [ %.0237, %161 ], [ %.0237, %167 ], [ %.0237, %173 ], [ %.0237, %183 ], [ %.0237, %187 ], [ %.0237, %190 ], [ %.0237, %193 ], [ %.0237, %196 ], [ %.0237, %199 ]
  %.0235.be = phi i32 [ %.0235, %204 ], [ %.0235, %203 ], [ %.0235, %182 ], [ %.0235, %181 ], [ %.0235, %180 ], [ %.0235, %179 ], [ %.0235, %177 ], [ %.0235, %171 ], [ %.0235, %165 ], [ %.0235, %159 ], [ %.0235, %153 ], [ %.0235, %147 ], [ %.0235, %141 ], [ %.0235, %135 ], [ %.0235, %129 ], [ %.0235, %123 ], [ %.0235, %117 ], [ %112, %111 ], [ %.0235, %87 ], [ %.0235, %84 ], [ %.0235, %83 ], [ %.0235, %82 ], [ %.0235, %80 ], [ %.0235, %33 ], [ %.0235, %37 ], [ %.0235, %40 ], [ %.0235, %43 ], [ %.0235, %46 ], [ %.0235, %49 ], [ %.0235, %53 ], [ %.0235, %57 ], [ %.0235, %61 ], [ %.0235, %65 ], [ %.0235, %69 ], [ %.0235, %73 ], [ %.0235, %76 ], [ %.0235, %31 ], [ %.0235, %31 ], [ %.0235, %90 ], [ %.0235, %94 ], [ %.0235, %98 ], [ %.0235, %102 ], [ -1, %107 ], [ %.0235, %113 ], [ %.0235, %119 ], [ %.0235, %125 ], [ %.0235, %131 ], [ %.0235, %137 ], [ %.0235, %143 ], [ %.0235, %149 ], [ %.0235, %155 ], [ %.0235, %161 ], [ %.0235, %167 ], [ %.0235, %173 ], [ %.0235, %183 ], [ %.0235, %187 ], [ %.0235, %190 ], [ %.0235, %193 ], [ %.0235, %196 ], [ %.0235, %199 ]
  %.0233.be = phi i32 [ %.0233, %204 ], [ %.0233, %203 ], [ %.0233, %182 ], [ %.0233, %181 ], [ %.0233, %180 ], [ %.0233, %179 ], [ %.0233, %177 ], [ %.0233, %171 ], [ %.0233, %165 ], [ %.0233, %159 ], [ %.0233, %153 ], [ %.0233, %147 ], [ %.0233, %141 ], [ %.0233, %135 ], [ %.0233, %129 ], [ %.0233, %123 ], [ %118, %117 ], [ %.0233, %111 ], [ %.0233, %87 ], [ %.0233, %84 ], [ %.0233, %83 ], [ %.0233, %82 ], [ %.0233, %80 ], [ %.0233, %33 ], [ %.0233, %37 ], [ %.0233, %40 ], [ %.0233, %43 ], [ %.0233, %46 ], [ %.0233, %49 ], [ %.0233, %53 ], [ %.0233, %57 ], [ %.0233, %61 ], [ %.0233, %65 ], [ %.0233, %69 ], [ %.0233, %73 ], [ %.0233, %76 ], [ %.0233, %31 ], [ %.0233, %31 ], [ %.0233, %90 ], [ %.0233, %94 ], [ %.0233, %98 ], [ %.0233, %102 ], [ %.0233, %107 ], [ -1, %113 ], [ %.0233, %119 ], [ %.0233, %125 ], [ %.0233, %131 ], [ %.0233, %137 ], [ %.0233, %143 ], [ %.0233, %149 ], [ %.0233, %155 ], [ %.0233, %161 ], [ %.0233, %167 ], [ %.0233, %173 ], [ %.0233, %183 ], [ %.0233, %187 ], [ %.0233, %190 ], [ %.0233, %193 ], [ %.0233, %196 ], [ %.0233, %199 ]
  %.0231.be = phi i32 [ %.0231, %204 ], [ %.0231, %203 ], [ %.0231, %182 ], [ %.0231, %181 ], [ %.0231, %180 ], [ %.0231, %179 ], [ %.0231, %177 ], [ %.0231, %171 ], [ %.0231, %165 ], [ %.0231, %159 ], [ %.0231, %153 ], [ %.0231, %147 ], [ %.0231, %141 ], [ %.0231, %135 ], [ %.0231, %129 ], [ %124, %123 ], [ %.0231, %117 ], [ %.0231, %111 ], [ %.0231, %87 ], [ %.0231, %84 ], [ %.0231, %83 ], [ %.0231, %82 ], [ %.0231, %80 ], [ %.0231, %33 ], [ %.0231, %37 ], [ %.0231, %40 ], [ %.0231, %43 ], [ %.0231, %46 ], [ %.0231, %49 ], [ %.0231, %53 ], [ %.0231, %57 ], [ %.0231, %61 ], [ %.0231, %65 ], [ %.0231, %69 ], [ %.0231, %73 ], [ %.0231, %76 ], [ %.0231, %31 ], [ %.0231, %31 ], [ %.0231, %90 ], [ %.0231, %94 ], [ %.0231, %98 ], [ %.0231, %102 ], [ %.0231, %107 ], [ %.0231, %113 ], [ -1, %119 ], [ %.0231, %125 ], [ %.0231, %131 ], [ %.0231, %137 ], [ %.0231, %143 ], [ %.0231, %149 ], [ %.0231, %155 ], [ %.0231, %161 ], [ %.0231, %167 ], [ %.0231, %173 ], [ %.0231, %183 ], [ %.0231, %187 ], [ %.0231, %190 ], [ %.0231, %193 ], [ %.0231, %196 ], [ %.0231, %199 ]
  %.0229.be = phi i32 [ %.0229, %204 ], [ %.0229, %203 ], [ %.0229, %182 ], [ %.0229, %181 ], [ %.0229, %180 ], [ %.0229, %179 ], [ %.0229, %177 ], [ %.0229, %171 ], [ %.0229, %165 ], [ %.0229, %159 ], [ %.0229, %153 ], [ %.0229, %147 ], [ %.0229, %141 ], [ %.0229, %135 ], [ %130, %129 ], [ %.0229, %123 ], [ %.0229, %117 ], [ %.0229, %111 ], [ %.0229, %87 ], [ %.0229, %84 ], [ %.0229, %83 ], [ %.0229, %82 ], [ %.0229, %80 ], [ %.0229, %33 ], [ %.0229, %37 ], [ %.0229, %40 ], [ %.0229, %43 ], [ %.0229, %46 ], [ %.0229, %49 ], [ %.0229, %53 ], [ %.0229, %57 ], [ %.0229, %61 ], [ %.0229, %65 ], [ %.0229, %69 ], [ %.0229, %73 ], [ %.0229, %76 ], [ %.0229, %31 ], [ %.0229, %31 ], [ %.0229, %90 ], [ %.0229, %94 ], [ %.0229, %98 ], [ %.0229, %102 ], [ %.0229, %107 ], [ %.0229, %113 ], [ %.0229, %119 ], [ -1, %125 ], [ %.0229, %131 ], [ %.0229, %137 ], [ %.0229, %143 ], [ %.0229, %149 ], [ %.0229, %155 ], [ %.0229, %161 ], [ %.0229, %167 ], [ %.0229, %173 ], [ %.0229, %183 ], [ %.0229, %187 ], [ %.0229, %190 ], [ %.0229, %193 ], [ %.0229, %196 ], [ %.0229, %199 ]
  %.0227.be = phi i32 [ %.0227, %204 ], [ %.0227, %203 ], [ %.0227, %182 ], [ %.0227, %181 ], [ %.0227, %180 ], [ %.0227, %179 ], [ %.0227, %177 ], [ %.0227, %171 ], [ %.0227, %165 ], [ %.0227, %159 ], [ %.0227, %153 ], [ %.0227, %147 ], [ %.0227, %141 ], [ %136, %135 ], [ %.0227, %129 ], [ %.0227, %123 ], [ %.0227, %117 ], [ %.0227, %111 ], [ %.0227, %87 ], [ %.0227, %84 ], [ %.0227, %83 ], [ %.0227, %82 ], [ %.0227, %80 ], [ %.0227, %33 ], [ %.0227, %37 ], [ %.0227, %40 ], [ %.0227, %43 ], [ %.0227, %46 ], [ %.0227, %49 ], [ %.0227, %53 ], [ %.0227, %57 ], [ %.0227, %61 ], [ %.0227, %65 ], [ %.0227, %69 ], [ %.0227, %73 ], [ %.0227, %76 ], [ %.0227, %31 ], [ %.0227, %31 ], [ %.0227, %90 ], [ %.0227, %94 ], [ %.0227, %98 ], [ %.0227, %102 ], [ %.0227, %107 ], [ %.0227, %113 ], [ %.0227, %119 ], [ %.0227, %125 ], [ -1, %131 ], [ %.0227, %137 ], [ %.0227, %143 ], [ %.0227, %149 ], [ %.0227, %155 ], [ %.0227, %161 ], [ %.0227, %167 ], [ %.0227, %173 ], [ %.0227, %183 ], [ %.0227, %187 ], [ %.0227, %190 ], [ %.0227, %193 ], [ %.0227, %196 ], [ %.0227, %199 ]
  %.0225.be = phi i32 [ %.0225, %204 ], [ %.0225, %203 ], [ %.0225, %182 ], [ %.0225, %181 ], [ %.0225, %180 ], [ %.0225, %179 ], [ %.0225, %177 ], [ %.0225, %171 ], [ %.0225, %165 ], [ %.0225, %159 ], [ %.0225, %153 ], [ %.0225, %147 ], [ %142, %141 ], [ %.0225, %135 ], [ %.0225, %129 ], [ %.0225, %123 ], [ %.0225, %117 ], [ %.0225, %111 ], [ %.0225, %87 ], [ %.0225, %84 ], [ %.0225, %83 ], [ %.0225, %82 ], [ %.0225, %80 ], [ %.0225, %33 ], [ %.0225, %37 ], [ %.0225, %40 ], [ %.0225, %43 ], [ %.0225, %46 ], [ %.0225, %49 ], [ %.0225, %53 ], [ %.0225, %57 ], [ %.0225, %61 ], [ %.0225, %65 ], [ %.0225, %69 ], [ %.0225, %73 ], [ %.0225, %76 ], [ %.0225, %31 ], [ %.0225, %31 ], [ %.0225, %90 ], [ %.0225, %94 ], [ %.0225, %98 ], [ %.0225, %102 ], [ %.0225, %107 ], [ %.0225, %113 ], [ %.0225, %119 ], [ %.0225, %125 ], [ %.0225, %131 ], [ -1, %137 ], [ %.0225, %143 ], [ %.0225, %149 ], [ %.0225, %155 ], [ %.0225, %161 ], [ %.0225, %167 ], [ %.0225, %173 ], [ %.0225, %183 ], [ %.0225, %187 ], [ %.0225, %190 ], [ %.0225, %193 ], [ %.0225, %196 ], [ %.0225, %199 ]
  %.0223.be = phi i32 [ %.0223, %204 ], [ %.0223, %203 ], [ %.0223, %182 ], [ %.0223, %181 ], [ %.0223, %180 ], [ %.0223, %179 ], [ %.0223, %177 ], [ %.0223, %171 ], [ %.0223, %165 ], [ %.0223, %159 ], [ %.0223, %153 ], [ %148, %147 ], [ %.0223, %141 ], [ %.0223, %135 ], [ %.0223, %129 ], [ %.0223, %123 ], [ %.0223, %117 ], [ %.0223, %111 ], [ %.0223, %87 ], [ %.0223, %84 ], [ %.0223, %83 ], [ %.0223, %82 ], [ %.0223, %80 ], [ %.0223, %33 ], [ %.0223, %37 ], [ %.0223, %40 ], [ %.0223, %43 ], [ %.0223, %46 ], [ %.0223, %49 ], [ %.0223, %53 ], [ %.0223, %57 ], [ %.0223, %61 ], [ %.0223, %65 ], [ %.0223, %69 ], [ %.0223, %73 ], [ %.0223, %76 ], [ %.0223, %31 ], [ %.0223, %31 ], [ %.0223, %90 ], [ %.0223, %94 ], [ %.0223, %98 ], [ %.0223, %102 ], [ %.0223, %107 ], [ %.0223, %113 ], [ %.0223, %119 ], [ %.0223, %125 ], [ %.0223, %131 ], [ %.0223, %137 ], [ -1, %143 ], [ %.0223, %149 ], [ %.0223, %155 ], [ %.0223, %161 ], [ %.0223, %167 ], [ %.0223, %173 ], [ %.0223, %183 ], [ %.0223, %187 ], [ %.0223, %190 ], [ %.0223, %193 ], [ %.0223, %196 ], [ %.0223, %199 ]
  %.0221.be = phi i32 [ %.0221, %204 ], [ %.0221, %203 ], [ %.0221, %182 ], [ %.0221, %181 ], [ %.0221, %180 ], [ %.0221, %179 ], [ %.0221, %177 ], [ %.0221, %171 ], [ %.0221, %165 ], [ %.0221, %159 ], [ %154, %153 ], [ %.0221, %147 ], [ %.0221, %141 ], [ %.0221, %135 ], [ %.0221, %129 ], [ %.0221, %123 ], [ %.0221, %117 ], [ %.0221, %111 ], [ %.0221, %87 ], [ %.0221, %84 ], [ %.0221, %83 ], [ %.0221, %82 ], [ %.0221, %80 ], [ %.0221, %33 ], [ %.0221, %37 ], [ %.0221, %40 ], [ %.0221, %43 ], [ %.0221, %46 ], [ %.0221, %49 ], [ %.0221, %53 ], [ %.0221, %57 ], [ %.0221, %61 ], [ %.0221, %65 ], [ %.0221, %69 ], [ %.0221, %73 ], [ %.0221, %76 ], [ %.0221, %31 ], [ %.0221, %31 ], [ %.0221, %90 ], [ %.0221, %94 ], [ %.0221, %98 ], [ %.0221, %102 ], [ %.0221, %107 ], [ %.0221, %113 ], [ %.0221, %119 ], [ %.0221, %125 ], [ %.0221, %131 ], [ %.0221, %137 ], [ %.0221, %143 ], [ -1, %149 ], [ %.0221, %155 ], [ %.0221, %161 ], [ %.0221, %167 ], [ %.0221, %173 ], [ %.0221, %183 ], [ %.0221, %187 ], [ %.0221, %190 ], [ %.0221, %193 ], [ %.0221, %196 ], [ %.0221, %199 ]
  %.0219.be = phi i32 [ %.0219, %204 ], [ %.0219, %203 ], [ %.0219, %182 ], [ %.0219, %181 ], [ %.0219, %180 ], [ %.0219, %179 ], [ %.0219, %177 ], [ %.0219, %171 ], [ %.0219, %165 ], [ %160, %159 ], [ %.0219, %153 ], [ %.0219, %147 ], [ %.0219, %141 ], [ %.0219, %135 ], [ %.0219, %129 ], [ %.0219, %123 ], [ %.0219, %117 ], [ %.0219, %111 ], [ %.0219, %87 ], [ %.0219, %84 ], [ %.0219, %83 ], [ %.0219, %82 ], [ %.0219, %80 ], [ %.0219, %33 ], [ %.0219, %37 ], [ %.0219, %40 ], [ %.0219, %43 ], [ %.0219, %46 ], [ %.0219, %49 ], [ %.0219, %53 ], [ %.0219, %57 ], [ %.0219, %61 ], [ %.0219, %65 ], [ %.0219, %69 ], [ %.0219, %73 ], [ %.0219, %76 ], [ %.0219, %31 ], [ %.0219, %31 ], [ %.0219, %90 ], [ %.0219, %94 ], [ %.0219, %98 ], [ %.0219, %102 ], [ %.0219, %107 ], [ %.0219, %113 ], [ %.0219, %119 ], [ %.0219, %125 ], [ %.0219, %131 ], [ %.0219, %137 ], [ %.0219, %143 ], [ %.0219, %149 ], [ -1, %155 ], [ %.0219, %161 ], [ %.0219, %167 ], [ %.0219, %173 ], [ %.0219, %183 ], [ %.0219, %187 ], [ %.0219, %190 ], [ %.0219, %193 ], [ %.0219, %196 ], [ %.0219, %199 ]
  %.0217.be = phi i32 [ %.0217, %204 ], [ %.0217, %203 ], [ %.0217, %182 ], [ %.0217, %181 ], [ %.0217, %180 ], [ %.0217, %179 ], [ %.0217, %177 ], [ %.0217, %171 ], [ %166, %165 ], [ %.0217, %159 ], [ %.0217, %153 ], [ %.0217, %147 ], [ %.0217, %141 ], [ %.0217, %135 ], [ %.0217, %129 ], [ %.0217, %123 ], [ %.0217, %117 ], [ %.0217, %111 ], [ %.0217, %87 ], [ %.0217, %84 ], [ %.0217, %83 ], [ %.0217, %82 ], [ %.0217, %80 ], [ %.0217, %33 ], [ %.0217, %37 ], [ %.0217, %40 ], [ %.0217, %43 ], [ %.0217, %46 ], [ %.0217, %49 ], [ %.0217, %53 ], [ %.0217, %57 ], [ %.0217, %61 ], [ %.0217, %65 ], [ %.0217, %69 ], [ %.0217, %73 ], [ %.0217, %76 ], [ %.0217, %31 ], [ %.0217, %31 ], [ %.0217, %90 ], [ %.0217, %94 ], [ %.0217, %98 ], [ %.0217, %102 ], [ %.0217, %107 ], [ %.0217, %113 ], [ %.0217, %119 ], [ %.0217, %125 ], [ %.0217, %131 ], [ %.0217, %137 ], [ %.0217, %143 ], [ %.0217, %149 ], [ %.0217, %155 ], [ -1, %161 ], [ %.0217, %167 ], [ %.0217, %173 ], [ %.0217, %183 ], [ %.0217, %187 ], [ %.0217, %190 ], [ %.0217, %193 ], [ %.0217, %196 ], [ %.0217, %199 ]
  %.0215.be = phi i32 [ %.0215, %204 ], [ %.0215, %203 ], [ %.0215, %182 ], [ %.0215, %181 ], [ %.0215, %180 ], [ %.0215, %179 ], [ %.0215, %177 ], [ %172, %171 ], [ %.0215, %165 ], [ %.0215, %159 ], [ %.0215, %153 ], [ %.0215, %147 ], [ %.0215, %141 ], [ %.0215, %135 ], [ %.0215, %129 ], [ %.0215, %123 ], [ %.0215, %117 ], [ %.0215, %111 ], [ %.0215, %87 ], [ %.0215, %84 ], [ %.0215, %83 ], [ %.0215, %82 ], [ %.0215, %80 ], [ %.0215, %33 ], [ %.0215, %37 ], [ %.0215, %40 ], [ %.0215, %43 ], [ %.0215, %46 ], [ %.0215, %49 ], [ %.0215, %53 ], [ %.0215, %57 ], [ %.0215, %61 ], [ %.0215, %65 ], [ %.0215, %69 ], [ %.0215, %73 ], [ %.0215, %76 ], [ %.0215, %31 ], [ %.0215, %31 ], [ %.0215, %90 ], [ %.0215, %94 ], [ %.0215, %98 ], [ %.0215, %102 ], [ %.0215, %107 ], [ %.0215, %113 ], [ %.0215, %119 ], [ %.0215, %125 ], [ %.0215, %131 ], [ %.0215, %137 ], [ %.0215, %143 ], [ %.0215, %149 ], [ %.0215, %155 ], [ %.0215, %161 ], [ -1, %167 ], [ %.0215, %173 ], [ %.0215, %183 ], [ %.0215, %187 ], [ %.0215, %190 ], [ %.0215, %193 ], [ %.0215, %196 ], [ %.0215, %199 ]
  %.0213.be = phi i32 [ %.0213, %204 ], [ %.0213, %203 ], [ %.0213, %182 ], [ %.0213, %181 ], [ %.0213, %180 ], [ %.0213, %179 ], [ %178, %177 ], [ %.0213, %171 ], [ %.0213, %165 ], [ %.0213, %159 ], [ %.0213, %153 ], [ %.0213, %147 ], [ %.0213, %141 ], [ %.0213, %135 ], [ %.0213, %129 ], [ %.0213, %123 ], [ %.0213, %117 ], [ %.0213, %111 ], [ %.0213, %87 ], [ %.0213, %84 ], [ %.0213, %83 ], [ %.0213, %82 ], [ %.0213, %80 ], [ %.0213, %33 ], [ %.0213, %37 ], [ %.0213, %40 ], [ %.0213, %43 ], [ %.0213, %46 ], [ %.0213, %49 ], [ %.0213, %53 ], [ %.0213, %57 ], [ %.0213, %61 ], [ %.0213, %65 ], [ %.0213, %69 ], [ %.0213, %73 ], [ %.0213, %76 ], [ %.0213, %31 ], [ %.0213, %31 ], [ %.0213, %90 ], [ %.0213, %94 ], [ %.0213, %98 ], [ %.0213, %102 ], [ %.0213, %107 ], [ %.0213, %113 ], [ %.0213, %119 ], [ %.0213, %125 ], [ %.0213, %131 ], [ %.0213, %137 ], [ %.0213, %143 ], [ %.0213, %149 ], [ %.0213, %155 ], [ %.0213, %161 ], [ %.0213, %167 ], [ -1, %173 ], [ %.0213, %183 ], [ %.0213, %187 ], [ %.0213, %190 ], [ %.0213, %193 ], [ %.0213, %196 ], [ %.0213, %199 ]
  %.0211.be = phi i8 [ %.0211, %204 ], [ %.0211, %203 ], [ %.0211, %182 ], [ %.0211, %181 ], [ %.0211, %180 ], [ 1, %179 ], [ %.0211, %177 ], [ %.0211, %171 ], [ %.0211, %165 ], [ %.0211, %159 ], [ %.0211, %153 ], [ %.0211, %147 ], [ %.0211, %141 ], [ %.0211, %135 ], [ %.0211, %129 ], [ %.0211, %123 ], [ %.0211, %117 ], [ %.0211, %111 ], [ %.0211, %87 ], [ %.0211, %84 ], [ %.0211, %83 ], [ %.0211, %82 ], [ %.0211, %80 ], [ %.0211, %33 ], [ %.0211, %37 ], [ %.0211, %40 ], [ %.0211, %43 ], [ %.0211, %46 ], [ %.0211, %49 ], [ %.0211, %53 ], [ %.0211, %57 ], [ %.0211, %61 ], [ %.0211, %65 ], [ %.0211, %69 ], [ %.0211, %73 ], [ %.0211, %76 ], [ %.0211, %31 ], [ %.0211, %31 ], [ %.0211, %90 ], [ %.0211, %94 ], [ %.0211, %98 ], [ %.0211, %102 ], [ %.0211, %107 ], [ %.0211, %113 ], [ %.0211, %119 ], [ %.0211, %125 ], [ %.0211, %131 ], [ %.0211, %137 ], [ %.0211, %143 ], [ %.0211, %149 ], [ %.0211, %155 ], [ %.0211, %161 ], [ %.0211, %167 ], [ %.0211, %173 ], [ %.0211, %183 ], [ %.0211, %187 ], [ %.0211, %190 ], [ %.0211, %193 ], [ %.0211, %196 ], [ %.0211, %199 ]
  %.0209.be = phi i8 [ %.0209, %204 ], [ %.0209, %203 ], [ %.0209, %182 ], [ %.0209, %181 ], [ 1, %180 ], [ %.0209, %179 ], [ %.0209, %177 ], [ %.0209, %171 ], [ %.0209, %165 ], [ %.0209, %159 ], [ %.0209, %153 ], [ %.0209, %147 ], [ %.0209, %141 ], [ %.0209, %135 ], [ %.0209, %129 ], [ %.0209, %123 ], [ %.0209, %117 ], [ %.0209, %111 ], [ %.0209, %87 ], [ %.0209, %84 ], [ %.0209, %83 ], [ %.0209, %82 ], [ %.0209, %80 ], [ %.0209, %33 ], [ %.0209, %37 ], [ %.0209, %40 ], [ %.0209, %43 ], [ %.0209, %46 ], [ %.0209, %49 ], [ %.0209, %53 ], [ %.0209, %57 ], [ %.0209, %61 ], [ %.0209, %65 ], [ %.0209, %69 ], [ %.0209, %73 ], [ %.0209, %76 ], [ %.0209, %31 ], [ %.0209, %31 ], [ %.0209, %90 ], [ %.0209, %94 ], [ %.0209, %98 ], [ %.0209, %102 ], [ %.0209, %107 ], [ %.0209, %113 ], [ %.0209, %119 ], [ %.0209, %125 ], [ %.0209, %131 ], [ %.0209, %137 ], [ %.0209, %143 ], [ %.0209, %149 ], [ %.0209, %155 ], [ %.0209, %161 ], [ %.0209, %167 ], [ %.0209, %173 ], [ %.0209, %183 ], [ %.0209, %187 ], [ %.0209, %190 ], [ %.0209, %193 ], [ %.0209, %196 ], [ %.0209, %199 ]
  %.0207.be = phi i8 [ %.0207, %204 ], [ %.0207, %203 ], [ %.0207, %182 ], [ 0, %181 ], [ %.0207, %180 ], [ %.0207, %179 ], [ %.0207, %177 ], [ %.0207, %171 ], [ %.0207, %165 ], [ %.0207, %159 ], [ %.0207, %153 ], [ %.0207, %147 ], [ %.0207, %141 ], [ %.0207, %135 ], [ %.0207, %129 ], [ %.0207, %123 ], [ %.0207, %117 ], [ %.0207, %111 ], [ %.0207, %87 ], [ %.0207, %84 ], [ %.0207, %83 ], [ %.0207, %82 ], [ %.0207, %80 ], [ %.0207, %33 ], [ %.0207, %37 ], [ %.0207, %40 ], [ %.0207, %43 ], [ %.0207, %46 ], [ %.0207, %49 ], [ %.0207, %53 ], [ %.0207, %57 ], [ %.0207, %61 ], [ %.0207, %65 ], [ %.0207, %69 ], [ %.0207, %73 ], [ %.0207, %76 ], [ %.0207, %31 ], [ %.0207, %31 ], [ %.0207, %90 ], [ %.0207, %94 ], [ %.0207, %98 ], [ %.0207, %102 ], [ %.0207, %107 ], [ %.0207, %113 ], [ %.0207, %119 ], [ %.0207, %125 ], [ %.0207, %131 ], [ %.0207, %137 ], [ %.0207, %143 ], [ %.0207, %149 ], [ %.0207, %155 ], [ %.0207, %161 ], [ %.0207, %167 ], [ %.0207, %173 ], [ %.0207, %183 ], [ %.0207, %187 ], [ %.0207, %190 ], [ %.0207, %193 ], [ %.0207, %196 ], [ %.0207, %199 ]
  %.0205.be = phi i32 [ %.0205, %204 ], [ %.0205, %203 ], [ %.0205, %182 ], [ %.0205, %181 ], [ %.0205, %180 ], [ %.0205, %179 ], [ %.0205, %177 ], [ %.0205, %171 ], [ %.0205, %165 ], [ %.0205, %159 ], [ %.0205, %153 ], [ %.0205, %147 ], [ %.0205, %141 ], [ %.0205, %135 ], [ %.0205, %129 ], [ %.0205, %123 ], [ %.0205, %117 ], [ %.0205, %111 ], [ %.0205, %87 ], [ %.0205, %84 ], [ %.0205, %83 ], [ %.0205, %82 ], [ %.0205, %80 ], [ %.0205, %33 ], [ %.0205, %37 ], [ %.0205, %40 ], [ %.0205, %43 ], [ %.0205, %46 ], [ %.0205, %49 ], [ %.0205, %53 ], [ %.0205, %57 ], [ %.0205, %61 ], [ %.0205, %65 ], [ %.0205, %69 ], [ %.0205, %73 ], [ %.0205, %76 ], [ %.0205, %31 ], [ %.0205, %31 ], [ %.0205, %90 ], [ %.0205, %94 ], [ %.0205, %98 ], [ %.0205, %102 ], [ %.0205, %107 ], [ %.0205, %113 ], [ %.0205, %119 ], [ %.0205, %125 ], [ %.0205, %131 ], [ %.0205, %137 ], [ %.0205, %143 ], [ %.0205, %149 ], [ %.0205, %155 ], [ %.0205, %161 ], [ %.0205, %167 ], [ %.0205, %173 ], [ 225282, %183 ], [ 225283, %187 ], [ 225284, %190 ], [ 225285, %193 ], [ 225287, %196 ], [ 225288, %199 ]
  %.0203.be = phi i8 [ %.0203, %204 ], [ 1, %203 ], [ %.0203, %182 ], [ %.0203, %181 ], [ %.0203, %180 ], [ %.0203, %179 ], [ %.0203, %177 ], [ %.0203, %171 ], [ %.0203, %165 ], [ %.0203, %159 ], [ %.0203, %153 ], [ %.0203, %147 ], [ %.0203, %141 ], [ %.0203, %135 ], [ %.0203, %129 ], [ %.0203, %123 ], [ %.0203, %117 ], [ %.0203, %111 ], [ %.0203, %87 ], [ %.0203, %84 ], [ %.0203, %83 ], [ %.0203, %82 ], [ %.0203, %80 ], [ %.0203, %33 ], [ %.0203, %37 ], [ %.0203, %40 ], [ %.0203, %43 ], [ %.0203, %46 ], [ %.0203, %49 ], [ %.0203, %53 ], [ %.0203, %57 ], [ %.0203, %61 ], [ %.0203, %65 ], [ %.0203, %69 ], [ %.0203, %73 ], [ %.0203, %76 ], [ %.0203, %31 ], [ %.0203, %31 ], [ %.0203, %90 ], [ %.0203, %94 ], [ %.0203, %98 ], [ %.0203, %102 ], [ %.0203, %107 ], [ %.0203, %113 ], [ %.0203, %119 ], [ %.0203, %125 ], [ %.0203, %131 ], [ %.0203, %137 ], [ %.0203, %143 ], [ %.0203, %149 ], [ %.0203, %155 ], [ %.0203, %161 ], [ %.0203, %167 ], [ %.0203, %173 ], [ %.0203, %183 ], [ %.0203, %187 ], [ %.0203, %190 ], [ %.0203, %193 ], [ %.0203, %196 ], [ %.0203, %199 ]
  %.0201.be = phi i8 [ 1, %204 ], [ %.0201, %203 ], [ %.0201, %182 ], [ %.0201, %181 ], [ %.0201, %180 ], [ %.0201, %179 ], [ %.0201, %177 ], [ %.0201, %171 ], [ %.0201, %165 ], [ %.0201, %159 ], [ %.0201, %153 ], [ %.0201, %147 ], [ %.0201, %141 ], [ %.0201, %135 ], [ %.0201, %129 ], [ %.0201, %123 ], [ %.0201, %117 ], [ %.0201, %111 ], [ %.0201, %87 ], [ %.0201, %84 ], [ %.0201, %83 ], [ %.0201, %82 ], [ %.0201, %80 ], [ %.0201, %33 ], [ %.0201, %37 ], [ %.0201, %40 ], [ %.0201, %43 ], [ %.0201, %46 ], [ %.0201, %49 ], [ %.0201, %53 ], [ %.0201, %57 ], [ %.0201, %61 ], [ %.0201, %65 ], [ %.0201, %69 ], [ %.0201, %73 ], [ %.0201, %76 ], [ %.0201, %31 ], [ %.0201, %31 ], [ %.0201, %90 ], [ %.0201, %94 ], [ %.0201, %98 ], [ %.0201, %102 ], [ %.0201, %107 ], [ %.0201, %113 ], [ %.0201, %119 ], [ %.0201, %125 ], [ %.0201, %131 ], [ %.0201, %137 ], [ %.0201, %143 ], [ %.0201, %149 ], [ %.0201, %155 ], [ %.0201, %161 ], [ %.0201, %167 ], [ %.0201, %173 ], [ %.0201, %183 ], [ %.0201, %187 ], [ %.0201, %190 ], [ %.0201, %193 ], [ %.0201, %196 ], [ %.0201, %199 ]
  %.0199.be = phi i8 [ %.0199, %204 ], [ %.0199, %203 ], [ 1, %182 ], [ %.0199, %181 ], [ %.0199, %180 ], [ %.0199, %179 ], [ %.0199, %177 ], [ %.0199, %171 ], [ %.0199, %165 ], [ %.0199, %159 ], [ %.0199, %153 ], [ %.0199, %147 ], [ %.0199, %141 ], [ %.0199, %135 ], [ %.0199, %129 ], [ %.0199, %123 ], [ %.0199, %117 ], [ %.0199, %111 ], [ %.0199, %87 ], [ %.0199, %84 ], [ %.0199, %83 ], [ %.0199, %82 ], [ %.0199, %80 ], [ %.0199, %33 ], [ %.0199, %37 ], [ %.0199, %40 ], [ %.0199, %43 ], [ %.0199, %46 ], [ %.0199, %49 ], [ %.0199, %53 ], [ %.0199, %57 ], [ %.0199, %61 ], [ %.0199, %65 ], [ %.0199, %69 ], [ %.0199, %73 ], [ %.0199, %76 ], [ %.0199, %31 ], [ %.0199, %31 ], [ %.0199, %90 ], [ %.0199, %94 ], [ %.0199, %98 ], [ %.0199, %102 ], [ %.0199, %107 ], [ %.0199, %113 ], [ %.0199, %119 ], [ %.0199, %125 ], [ %.0199, %131 ], [ %.0199, %137 ], [ %.0199, %143 ], [ %.0199, %149 ], [ %.0199, %155 ], [ %.0199, %161 ], [ %.0199, %167 ], [ %.0199, %173 ], [ %.0199, %183 ], [ %.0199, %187 ], [ %.0199, %190 ], [ %.0199, %193 ], [ %.0199, %196 ], [ %.0199, %199 ]
  %.0197.be = phi i8 [ %.0197, %204 ], [ %.0197, %203 ], [ %.0197, %182 ], [ %.0197, %181 ], [ %.0197, %180 ], [ %.0197, %179 ], [ %.0197, %177 ], [ %.0197, %171 ], [ %.0197, %165 ], [ %.0197, %159 ], [ %.0197, %153 ], [ %.0197, %147 ], [ %.0197, %141 ], [ %.0197, %135 ], [ %.0197, %129 ], [ %.0197, %123 ], [ %.0197, %117 ], [ %.0197, %111 ], [ %.0197, %87 ], [ %.0197, %84 ], [ %.0197, %83 ], [ %.0197, %82 ], [ %.0197, %80 ], [ %.0197, %33 ], [ %.0197, %37 ], [ %.0197, %40 ], [ %.0197, %43 ], [ %.0197, %46 ], [ %.0197, %49 ], [ %.0197, %53 ], [ %.0197, %57 ], [ %.0197, %61 ], [ %.0197, %65 ], [ %.0197, %69 ], [ %.0197, %73 ], [ %.0197, %76 ], [ 1, %31 ], [ 1, %31 ], [ %.0197, %90 ], [ %.0197, %94 ], [ %.0197, %98 ], [ %.0197, %102 ], [ %.0197, %107 ], [ %.0197, %113 ], [ %.0197, %119 ], [ %.0197, %125 ], [ %.0197, %131 ], [ %.0197, %137 ], [ %.0197, %143 ], [ %.0197, %149 ], [ %.0197, %155 ], [ %.0197, %161 ], [ %.0197, %167 ], [ %.0197, %173 ], [ %.0197, %183 ], [ %.0197, %187 ], [ %.0197, %190 ], [ %.0197, %193 ], [ %.0197, %196 ], [ %.0197, %199 ]
  %.0195.be = phi i32 [ %.0195, %204 ], [ %.0195, %203 ], [ %.0195, %182 ], [ %.0195, %181 ], [ %.0195, %180 ], [ %.0195, %179 ], [ %.0195, %177 ], [ %.0195, %171 ], [ %.0195, %165 ], [ %.0195, %159 ], [ %.0195, %153 ], [ %.0195, %147 ], [ %.0195, %141 ], [ %.0195, %135 ], [ %.0195, %129 ], [ %.0195, %123 ], [ %.0195, %117 ], [ %.0195, %111 ], [ %.0195, %87 ], [ %.0195, %84 ], [ %.0195, %83 ], [ %.0195, %82 ], [ %.0195, %80 ], [ %.0195, %33 ], [ %.0195, %37 ], [ %.0195, %40 ], [ %.0195, %43 ], [ %.0195, %46 ], [ %.0195, %49 ], [ %.0195, %53 ], [ %.0195, %57 ], [ %.0195, %61 ], [ %.0195, %65 ], [ %.0195, %69 ], [ %.0195, %73 ], [ %.0195, %76 ], [ %.0195, %31 ], [ %.0195, %31 ], [ %.0195, %90 ], [ %.0195, %94 ], [ 200705, %98 ], [ 200706, %102 ], [ %.0195, %107 ], [ %.0195, %113 ], [ %.0195, %119 ], [ %.0195, %125 ], [ %.0195, %131 ], [ %.0195, %137 ], [ %.0195, %143 ], [ %.0195, %149 ], [ %.0195, %155 ], [ %.0195, %161 ], [ %.0195, %167 ], [ %.0195, %173 ], [ %.0195, %183 ], [ %.0195, %187 ], [ %.0195, %190 ], [ %.0195, %193 ], [ %.0195, %196 ], [ %.0195, %199 ]
  %.0193.be = phi i32 [ %.0193, %204 ], [ %.0193, %203 ], [ %.0193, %182 ], [ %.0193, %181 ], [ %.0193, %180 ], [ %.0193, %179 ], [ %.0193, %177 ], [ %.0193, %171 ], [ %.0193, %165 ], [ %.0193, %159 ], [ %.0193, %153 ], [ %.0193, %147 ], [ %.0193, %141 ], [ %.0193, %135 ], [ %.0193, %129 ], [ %.0193, %123 ], [ %.0193, %117 ], [ %.0193, %111 ], [ %.0193, %87 ], [ %.0193, %84 ], [ %.0193, %83 ], [ %.0193, %82 ], [ %.0193, %80 ], [ %.0193, %33 ], [ %.0193, %37 ], [ %.0193, %40 ], [ %.0193, %43 ], [ %.0193, %46 ], [ %.0193, %49 ], [ %.0193, %53 ], [ %.0193, %57 ], [ %.0193, %61 ], [ %.0193, %65 ], [ 221185, %69 ], [ 221186, %73 ], [ 221187, %76 ], [ %.0193, %31 ], [ %.0193, %31 ], [ %.0193, %90 ], [ %.0193, %94 ], [ %.0193, %98 ], [ %.0193, %102 ], [ %.0193, %107 ], [ %.0193, %113 ], [ %.0193, %119 ], [ %.0193, %125 ], [ %.0193, %131 ], [ %.0193, %137 ], [ %.0193, %143 ], [ %.0193, %149 ], [ %.0193, %155 ], [ %.0193, %161 ], [ %.0193, %167 ], [ %.0193, %173 ], [ %.0193, %183 ], [ %.0193, %187 ], [ %.0193, %190 ], [ %.0193, %193 ], [ %.0193, %196 ], [ %.0193, %199 ]
  %.0191.be = phi i32 [ %.0191, %204 ], [ %.0191, %203 ], [ %.0191, %182 ], [ %.0191, %181 ], [ %.0191, %180 ], [ %.0191, %179 ], [ %.0191, %177 ], [ %.0191, %171 ], [ %.0191, %165 ], [ %.0191, %159 ], [ %.0191, %153 ], [ %.0191, %147 ], [ %.0191, %141 ], [ %.0191, %135 ], [ %.0191, %129 ], [ %.0191, %123 ], [ %.0191, %117 ], [ %.0191, %111 ], [ %.0191, %87 ], [ %.0191, %84 ], [ %.0191, %83 ], [ %.0191, %82 ], [ %.0191, %80 ], [ %.0191, %33 ], [ %.0191, %37 ], [ %.0191, %40 ], [ %.0191, %43 ], [ %.0191, %46 ], [ %.0191, %49 ], [ %.0191, %53 ], [ %.0191, %57 ], [ 217090, %61 ], [ 217089, %65 ], [ %.0191, %69 ], [ %.0191, %73 ], [ %.0191, %76 ], [ %.0191, %31 ], [ %.0191, %31 ], [ %.0191, %90 ], [ %.0191, %94 ], [ %.0191, %98 ], [ %.0191, %102 ], [ %.0191, %107 ], [ %.0191, %113 ], [ %.0191, %119 ], [ %.0191, %125 ], [ %.0191, %131 ], [ %.0191, %137 ], [ %.0191, %143 ], [ %.0191, %149 ], [ %.0191, %155 ], [ %.0191, %161 ], [ %.0191, %167 ], [ %.0191, %173 ], [ %.0191, %183 ], [ %.0191, %187 ], [ %.0191, %190 ], [ %.0191, %193 ], [ %.0191, %196 ], [ %.0191, %199 ]
  %.0189.be = phi i32 [ %.0189, %204 ], [ %.0189, %203 ], [ %.0189, %182 ], [ %.0189, %181 ], [ %.0189, %180 ], [ %.0189, %179 ], [ %.0189, %177 ], [ %.0189, %171 ], [ %.0189, %165 ], [ %.0189, %159 ], [ %.0189, %153 ], [ %.0189, %147 ], [ %.0189, %141 ], [ %.0189, %135 ], [ %.0189, %129 ], [ %.0189, %123 ], [ %.0189, %117 ], [ %.0189, %111 ], [ %89, %87 ], [ %.0189, %84 ], [ %.0189, %83 ], [ %.0189, %82 ], [ %.0189, %80 ], [ %.0189, %33 ], [ %.0189, %37 ], [ %.0189, %40 ], [ %.0189, %43 ], [ %.0189, %46 ], [ %.0189, %49 ], [ %.0189, %53 ], [ %.0189, %57 ], [ %.0189, %61 ], [ %.0189, %65 ], [ %.0189, %69 ], [ %.0189, %73 ], [ %.0189, %76 ], [ %.0189, %31 ], [ %.0189, %31 ], [ %.0189, %90 ], [ %.0189, %94 ], [ %.0189, %98 ], [ %.0189, %102 ], [ %.0189, %107 ], [ %.0189, %113 ], [ %.0189, %119 ], [ %.0189, %125 ], [ %.0189, %131 ], [ %.0189, %137 ], [ %.0189, %143 ], [ %.0189, %149 ], [ %.0189, %155 ], [ %.0189, %161 ], [ %.0189, %167 ], [ %.0189, %173 ], [ %.0189, %183 ], [ %.0189, %187 ], [ %.0189, %190 ], [ %.0189, %193 ], [ %.0189, %196 ], [ %.0189, %199 ]
  %.0187.be = phi i32 [ %.0187, %204 ], [ %.0187, %203 ], [ %.0187, %182 ], [ %.0187, %181 ], [ %.0187, %180 ], [ %.0187, %179 ], [ %.0187, %177 ], [ %.0187, %171 ], [ %.0187, %165 ], [ %.0187, %159 ], [ %.0187, %153 ], [ %.0187, %147 ], [ %.0187, %141 ], [ %.0187, %135 ], [ %.0187, %129 ], [ %.0187, %123 ], [ %.0187, %117 ], [ %.0187, %111 ], [ %.0187, %87 ], [ %86, %84 ], [ %.0187, %83 ], [ %.0187, %82 ], [ %.0187, %80 ], [ %.0187, %33 ], [ %.0187, %37 ], [ %.0187, %40 ], [ %.0187, %43 ], [ %.0187, %46 ], [ %.0187, %49 ], [ %.0187, %53 ], [ %.0187, %57 ], [ %.0187, %61 ], [ %.0187, %65 ], [ %.0187, %69 ], [ %.0187, %73 ], [ %.0187, %76 ], [ %.0187, %31 ], [ %.0187, %31 ], [ %.0187, %90 ], [ %.0187, %94 ], [ %.0187, %98 ], [ %.0187, %102 ], [ %.0187, %107 ], [ %.0187, %113 ], [ %.0187, %119 ], [ %.0187, %125 ], [ %.0187, %131 ], [ %.0187, %137 ], [ %.0187, %143 ], [ %.0187, %149 ], [ %.0187, %155 ], [ %.0187, %161 ], [ %.0187, %167 ], [ %.0187, %173 ], [ %.0187, %183 ], [ %.0187, %187 ], [ %.0187, %190 ], [ %.0187, %193 ], [ %.0187, %196 ], [ %.0187, %199 ]
  %.0183.be = phi i32 [ %.0183, %204 ], [ %.0183, %203 ], [ %.0183, %182 ], [ %.0183, %181 ], [ %.0183, %180 ], [ %.0183, %179 ], [ %.0183, %177 ], [ %.0183, %171 ], [ %.0183, %165 ], [ %.0183, %159 ], [ %.0183, %153 ], [ %.0183, %147 ], [ %.0183, %141 ], [ %.0183, %135 ], [ %.0183, %129 ], [ %.0183, %123 ], [ %.0183, %117 ], [ %.0183, %111 ], [ %.0183, %87 ], [ %.0183, %84 ], [ %.0183, %83 ], [ %.0183, %82 ], [ %.0183, %80 ], [ %.0183, %33 ], [ %.0183, %37 ], [ %.0183, %40 ], [ %.0183, %43 ], [ %.0183, %46 ], [ %.0183, %49 ], [ 196609, %53 ], [ 196610, %57 ], [ %.0183, %61 ], [ %.0183, %65 ], [ %.0183, %69 ], [ %.0183, %73 ], [ %.0183, %76 ], [ %.0183, %31 ], [ %.0183, %31 ], [ %.0183, %90 ], [ %.0183, %94 ], [ %.0183, %98 ], [ %.0183, %102 ], [ %.0183, %107 ], [ %.0183, %113 ], [ %.0183, %119 ], [ %.0183, %125 ], [ %.0183, %131 ], [ %.0183, %137 ], [ %.0183, %143 ], [ %.0183, %149 ], [ %.0183, %155 ], [ %.0183, %161 ], [ %.0183, %167 ], [ %.0183, %173 ], [ %.0183, %183 ], [ %.0183, %187 ], [ %.0183, %190 ], [ %.0183, %193 ], [ %.0183, %196 ], [ %.0183, %199 ]
  %.0176.be = phi i32 [ %.0176, %204 ], [ %.0176, %203 ], [ %.0176, %182 ], [ %.0176, %181 ], [ %.0176, %180 ], [ %.0176, %179 ], [ %.0176, %177 ], [ %.0176, %171 ], [ %.0176, %165 ], [ %.0176, %159 ], [ %.0176, %153 ], [ %.0176, %147 ], [ %.0176, %141 ], [ %.0176, %135 ], [ %.0176, %129 ], [ %.0176, %123 ], [ %.0176, %117 ], [ %.0176, %111 ], [ %.0176, %87 ], [ %.0176, %84 ], [ %.0176, %83 ], [ %.0176, %82 ], [ %.0176, %80 ], [ 393216, %33 ], [ 393217, %37 ], [ 393218, %40 ], [ 393219, %43 ], [ 393220, %46 ], [ 393221, %49 ], [ %.0176, %53 ], [ %.0176, %57 ], [ %.0176, %61 ], [ %.0176, %65 ], [ %.0176, %69 ], [ %.0176, %73 ], [ %.0176, %76 ], [ %.0176, %31 ], [ %.0176, %31 ], [ %.0176, %90 ], [ %.0176, %94 ], [ %.0176, %98 ], [ %.0176, %102 ], [ %.0176, %107 ], [ %.0176, %113 ], [ %.0176, %119 ], [ %.0176, %125 ], [ %.0176, %131 ], [ %.0176, %137 ], [ %.0176, %143 ], [ %.0176, %149 ], [ %.0176, %155 ], [ %.0176, %161 ], [ %.0176, %167 ], [ %.0176, %173 ], [ %.0176, %183 ], [ %.0176, %187 ], [ %.0176, %190 ], [ %.0176, %193 ], [ %.0176, %196 ], [ %.0176, %199 ]
  %.0170.be = phi i1 [ %.0170, %204 ], [ %.0170, %203 ], [ %.0170, %182 ], [ %.0170, %181 ], [ %.0170, %180 ], [ %.0170, %179 ], [ %.0170, %177 ], [ %.0170, %171 ], [ %.0170, %165 ], [ %.0170, %159 ], [ %.0170, %153 ], [ %.0170, %147 ], [ %.0170, %141 ], [ %.0170, %135 ], [ %.0170, %129 ], [ %.0170, %123 ], [ %.0170, %117 ], [ %.0170, %111 ], [ %.0170, %87 ], [ %.0170, %84 ], [ true, %83 ], [ %.0170, %82 ], [ %.0170, %80 ], [ %.0170, %33 ], [ %.0170, %37 ], [ %.0170, %40 ], [ %.0170, %43 ], [ %.0170, %46 ], [ %.0170, %49 ], [ %.0170, %53 ], [ %.0170, %57 ], [ %.0170, %61 ], [ %.0170, %65 ], [ %.0170, %69 ], [ %.0170, %73 ], [ %.0170, %76 ], [ %.0170, %31 ], [ %.0170, %31 ], [ %.0170, %90 ], [ %.0170, %94 ], [ %.0170, %98 ], [ %.0170, %102 ], [ %.0170, %107 ], [ %.0170, %113 ], [ %.0170, %119 ], [ %.0170, %125 ], [ %.0170, %131 ], [ %.0170, %137 ], [ %.0170, %143 ], [ %.0170, %149 ], [ %.0170, %155 ], [ %.0170, %161 ], [ %.0170, %167 ], [ %.0170, %173 ], [ %.0170, %183 ], [ %.0170, %187 ], [ %.0170, %190 ], [ %.0170, %193 ], [ %.0170, %196 ], [ %.0170, %199 ]
  %.0168.be = phi i8 [ %.0168, %204 ], [ %.0168, %203 ], [ %.0168, %182 ], [ %.0168, %181 ], [ %.0168, %180 ], [ %.0168, %179 ], [ %.0168, %177 ], [ %.0168, %171 ], [ %.0168, %165 ], [ %.0168, %159 ], [ %.0168, %153 ], [ %.0168, %147 ], [ %.0168, %141 ], [ %.0168, %135 ], [ %.0168, %129 ], [ %.0168, %123 ], [ %.0168, %117 ], [ %.0168, %111 ], [ %.0168, %87 ], [ %.0168, %84 ], [ %.0168, %83 ], [ 1, %82 ], [ %.0168, %80 ], [ %.0168, %33 ], [ %.0168, %37 ], [ %.0168, %40 ], [ %.0168, %43 ], [ %.0168, %46 ], [ %.0168, %49 ], [ %.0168, %53 ], [ %.0168, %57 ], [ %.0168, %61 ], [ %.0168, %65 ], [ %.0168, %69 ], [ %.0168, %73 ], [ %.0168, %76 ], [ %.0168, %31 ], [ %.0168, %31 ], [ %.0168, %90 ], [ %.0168, %94 ], [ %.0168, %98 ], [ %.0168, %102 ], [ %.0168, %107 ], [ %.0168, %113 ], [ %.0168, %119 ], [ %.0168, %125 ], [ %.0168, %131 ], [ %.0168, %137 ], [ %.0168, %143 ], [ %.0168, %149 ], [ %.0168, %155 ], [ %.0168, %161 ], [ %.0168, %167 ], [ %.0168, %173 ], [ %.0168, %183 ], [ %.0168, %187 ], [ %.0168, %190 ], [ %.0168, %193 ], [ %.0168, %196 ], [ %.0168, %199 ]
  br label %31, !llvm.loop !9

202:                                              ; preds = %199
  call void @usage()
  call void @exit(i32 noundef 1) #17
  unreachable

203:                                              ; preds = %31
  br label %.backedge

204:                                              ; preds = %31
  br label %.backedge

205:                                              ; preds = %31
  call void @usage()
  call void @exit(i32 noundef 1) #17
  unreachable

206:                                              ; preds = %31
  %207 = call zeroext i1 @valid_version()
  br i1 %207, label %209, label %208

208:                                              ; preds = %206
  call void @exit(i32 noundef 1) #17
  unreachable

209:                                              ; preds = %206
  %210 = call ptr @glfwSetErrorCallback(ptr noundef nonnull @error_callback) #15
  call void @glfwInitHint(i32 noundef 327683, i32 noundef %.0176) #15
  call void @glfwInitHint(i32 noundef 331778, i32 noundef 0) #15
  call void @glfwInitHint(i32 noundef 327682, i32 noundef %.0205) #15
  %211 = xor i8 %.0201, 1
  %212 = zext nneg i8 %211 to i32
  call void @glfwInitHint(i32 noundef 335873, i32 noundef %212) #15
  %213 = call i32 @glfwInit() #15
  %.not248 = icmp eq i32 %213, 0
  br i1 %.not248, label %214, label %215

214:                                              ; preds = %209
  call void @exit(i32 noundef 1) #17
  unreachable

215:                                              ; preds = %209
  call void @print_version()
  call void @print_platform()
  call void @glfwWindowHint(i32 noundef 131076, i32 noundef 0) #15
  call void @glfwWindowHint(i32 noundef 139265, i32 noundef %.0183) #15
  call void @glfwWindowHint(i32 noundef 139266, i32 noundef %.0187) #15
  call void @glfwWindowHint(i32 noundef 139267, i32 noundef %.0189) #15
  call void @glfwWindowHint(i32 noundef 139273, i32 noundef %.0191) #15
  call void @glfwWindowHint(i32 noundef 139275, i32 noundef %.0193) #15
  call void @glfwWindowHint(i32 noundef 139269, i32 noundef %.0195) #15
  %216 = zext nneg i8 %.0197 to i32
  call void @glfwWindowHint(i32 noundef 139271, i32 noundef %216) #15
  %217 = zext nneg i8 %.0199 to i32
  call void @glfwWindowHint(i32 noundef 139274, i32 noundef %217) #15
  %218 = zext nneg i8 %.0239 to i32
  call void @glfwWindowHint(i32 noundef 139270, i32 noundef %218) #15
  call void @glfwWindowHint(i32 noundef 139272, i32 noundef %.0237) #15
  call void @glfwWindowHint(i32 noundef 135169, i32 noundef %.0235) #15
  call void @glfwWindowHint(i32 noundef 135171, i32 noundef %.0231) #15
  call void @glfwWindowHint(i32 noundef 135170, i32 noundef %.0233) #15
  call void @glfwWindowHint(i32 noundef 135172, i32 noundef %.0229) #15
  call void @glfwWindowHint(i32 noundef 135173, i32 noundef %.0227) #15
  call void @glfwWindowHint(i32 noundef 135174, i32 noundef %.0225) #15
  call void @glfwWindowHint(i32 noundef 135175, i32 noundef %.0223) #15
  call void @glfwWindowHint(i32 noundef 135176, i32 noundef %.0221) #15
  call void @glfwWindowHint(i32 noundef 135177, i32 noundef %.0219) #15
  call void @glfwWindowHint(i32 noundef 135178, i32 noundef %.0217) #15
  call void @glfwWindowHint(i32 noundef 135179, i32 noundef %.0215) #15
  call void @glfwWindowHint(i32 noundef 135181, i32 noundef %.0213) #15
  %219 = zext nneg i8 %.0211 to i32
  call void @glfwWindowHint(i32 noundef 135180, i32 noundef %219) #15
  %220 = zext nneg i8 %.0209 to i32
  call void @glfwWindowHint(i32 noundef 135182, i32 noundef %220) #15
  %221 = zext nneg i8 %.0207 to i32
  call void @glfwWindowHint(i32 noundef 135184, i32 noundef %221) #15
  %222 = zext nneg i8 %.0203 to i32
  call void @glfwWindowHint(i32 noundef 143363, i32 noundef %222) #15
  %223 = call ptr @glfwCreateWindow(i32 noundef 200, i32 noundef 200, ptr noundef nonnull @.str.57, ptr noundef null, ptr noundef null) #15
  %.not249 = icmp eq ptr %223, null
  br i1 %.not249, label %382, label %224

224:                                              ; preds = %215
  call void @glfwMakeContextCurrent(ptr noundef nonnull %223) #15
  %225 = call i32 @gladLoadGL(ptr noundef nonnull @glfwGetProcAddress)
  %226 = load ptr, ptr @glad_glGetError, align 8, !tbaa !5
  %227 = call i32 %226() #15
  %.not250 = icmp eq i32 %227, 0
  br i1 %.not250, label %230, label %228

228:                                              ; preds = %224
  %229 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.58, i32 noundef %227)
  br label %230

230:                                              ; preds = %228, %224
  %231 = call i32 @glfwGetWindowAttrib(ptr noundef nonnull %223, i32 noundef 139265) #15
  %232 = call i32 @glfwGetWindowAttrib(ptr noundef nonnull %223, i32 noundef 139266) #15
  %233 = call i32 @glfwGetWindowAttrib(ptr noundef nonnull %223, i32 noundef 139267) #15
  %234 = call i32 @glfwGetWindowAttrib(ptr noundef nonnull %223, i32 noundef 139268) #15
  %235 = call i32 @glfwGetWindowAttrib(ptr noundef nonnull %223, i32 noundef 139272) #15
  %236 = call ptr @get_api_name(i32 noundef %231)
  %237 = load ptr, ptr @glad_glGetString, align 8, !tbaa !5
  %238 = call ptr %237(i32 noundef 7938) #15
  %239 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.59, ptr noundef %236, ptr noundef %238)
  %240 = call ptr @get_api_name(i32 noundef %231)
  %241 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.60, ptr noundef %240, i32 noundef %232, i32 noundef %233, i32 noundef %234)
  %242 = icmp eq i32 %231, 196609
  br i1 %242, label %243, label %313

243:                                              ; preds = %230
  %244 = icmp sgt i32 %232, 2
  br i1 %244, label %245, label %.thread270

245:                                              ; preds = %243
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %4) #15
  %246 = load ptr, ptr @glad_glGetIntegerv, align 8, !tbaa !5
  call void %246(i32 noundef 33310, ptr noundef nonnull %4) #15
  %247 = call ptr @get_api_name(i32 noundef 196609)
  %248 = load i32, ptr %4, align 4, !tbaa !11
  %249 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.61, ptr noundef %247, i32 noundef %248)
  %250 = load i32, ptr %4, align 4, !tbaa !11
  %251 = and i32 %250, 1
  %.not251 = icmp eq i32 %251, 0
  br i1 %.not251, label %254, label %252

252:                                              ; preds = %245
  %253 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.62)
  %.pre = load i32, ptr %4, align 4, !tbaa !11
  br label %254

254:                                              ; preds = %252, %245
  %255 = phi i32 [ %.pre, %252 ], [ %250, %245 ]
  %256 = and i32 %255, 2
  %.not252 = icmp eq i32 %256, 0
  br i1 %.not252, label %259, label %257

257:                                              ; preds = %254
  %258 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.63)
  %.pre943 = load i32, ptr %4, align 4, !tbaa !11
  br label %259

259:                                              ; preds = %257, %254
  %260 = phi i32 [ %.pre943, %257 ], [ %255, %254 ]
  %261 = and i32 %260, 4
  %.not253 = icmp eq i32 %261, 0
  br i1 %.not253, label %264, label %262

262:                                              ; preds = %259
  %263 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.64)
  %.pre944 = load i32, ptr %4, align 4, !tbaa !11
  br label %264

264:                                              ; preds = %262, %259
  %265 = phi i32 [ %.pre944, %262 ], [ %260, %259 ]
  %266 = and i32 %265, 8
  %.not254 = icmp eq i32 %266, 0
  br i1 %.not254, label %269, label %267

267:                                              ; preds = %264
  %268 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.65)
  br label %269

269:                                              ; preds = %267, %264
  %270 = call i32 @putchar(i32 noundef 10)
  %271 = call ptr @get_api_name(i32 noundef 196609)
  %272 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.66, ptr noundef %271)
  %273 = call i32 @glfwGetWindowAttrib(ptr noundef nonnull %223, i32 noundef 139270) #15
  %.not255 = icmp eq i32 %273, 0
  br i1 %.not255, label %276, label %274

274:                                              ; preds = %269
  %275 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.62)
  br label %276

276:                                              ; preds = %274, %269
  %277 = call i32 @glfwGetWindowAttrib(ptr noundef nonnull %223, i32 noundef 139271) #15
  %.not256 = icmp eq i32 %277, 0
  br i1 %.not256, label %280, label %278

278:                                              ; preds = %276
  %279 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.63)
  br label %280

280:                                              ; preds = %278, %276
  %281 = call i32 @glfwGetWindowAttrib(ptr noundef nonnull %223, i32 noundef 139269) #15
  %282 = icmp eq i32 %281, 200706
  br i1 %282, label %283, label %285

283:                                              ; preds = %280
  %284 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.64)
  br label %285

285:                                              ; preds = %283, %280
  %286 = call i32 @glfwGetWindowAttrib(ptr noundef nonnull %223, i32 noundef 139274) #15
  %.not257 = icmp eq i32 %286, 0
  br i1 %.not257, label %289, label %287

287:                                              ; preds = %285
  %288 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.65)
  br label %289

289:                                              ; preds = %285, %287
  %290 = call i32 @putchar(i32 noundef 10)
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %4) #15
  %291 = icmp ne i32 %232, 3
  %292 = icmp sgt i32 %233, 1
  %or.cond272 = select i1 %291, i1 true, i1 %292
  br i1 %or.cond272, label %293, label %.thread270

293:                                              ; preds = %289
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %5) #15
  %294 = load ptr, ptr @glad_glGetIntegerv, align 8, !tbaa !5
  call void %294(i32 noundef 37158, ptr noundef nonnull %5) #15
  %295 = call ptr @get_api_name(i32 noundef 196609)
  %296 = load i32, ptr %5, align 4, !tbaa !11
  %297 = call ptr @get_profile_name_gl(i32 noundef %296)
  %298 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.67, ptr noundef %295, i32 noundef %296, ptr noundef %297)
  %299 = call ptr @get_api_name(i32 noundef 196609)
  %300 = call ptr @get_profile_name_glfw(i32 noundef %235)
  %301 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.68, ptr noundef %299, ptr noundef %300)
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %5) #15
  br label %.thread270

.thread270:                                       ; preds = %289, %243, %293
  %302 = load i32, ptr @GLAD_GL_ARB_robustness, align 4, !tbaa !11
  %.not258 = icmp eq i32 %302, 0
  br i1 %.not258, label %313, label %303

303:                                              ; preds = %.thread270
  %304 = call i32 @glfwGetWindowAttrib(ptr noundef nonnull %223, i32 noundef 139269) #15
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %6) #15
  %305 = load ptr, ptr @glad_glGetIntegerv, align 8, !tbaa !5
  call void %305(i32 noundef 33366, ptr noundef nonnull %6) #15
  %306 = call ptr @get_api_name(i32 noundef 196609)
  %307 = load i32, ptr %6, align 4, !tbaa !11
  %308 = call ptr @get_strategy_name_gl(i32 noundef %307)
  %309 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.69, ptr noundef %306, i32 noundef %307, ptr noundef %308)
  %310 = call ptr @get_api_name(i32 noundef 196609)
  %311 = call ptr @get_strategy_name_glfw(i32 noundef %304)
  %312 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.70, ptr noundef %310, ptr noundef %311)
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %6) #15
  br label %313

313:                                              ; preds = %.thread270, %303, %230
  %314 = call ptr @get_api_name(i32 noundef %231)
  %315 = load ptr, ptr @glad_glGetString, align 8, !tbaa !5
  %316 = call ptr %315(i32 noundef 7937) #15
  %317 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.71, ptr noundef %314, ptr noundef %316)
  %318 = call ptr @get_api_name(i32 noundef %231)
  %319 = load ptr, ptr @glad_glGetString, align 8, !tbaa !5
  %320 = call ptr %319(i32 noundef 7936) #15
  %321 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.72, ptr noundef %318, ptr noundef %320)
  %322 = icmp sgt i32 %232, 1
  br i1 %322, label %323, label %328

323:                                              ; preds = %313
  %324 = call ptr @get_api_name(i32 noundef %231)
  %325 = load ptr, ptr @glad_glGetString, align 8, !tbaa !5
  %326 = call ptr %325(i32 noundef 35724) #15
  %327 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.73, ptr noundef %324, ptr noundef %326)
  br label %328

328:                                              ; preds = %323, %313
  %329 = call ptr @get_api_name(i32 noundef %231)
  %330 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.74, ptr noundef %329)
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %7) #15
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %8) #15
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %9) #15
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %10) #15
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %11) #15
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %12) #15
  %331 = icmp eq i32 %235, 204801
  %or.cond3 = select i1 %242, i1 %331, i1 false
  br i1 %or.cond3, label %332, label %339

332:                                              ; preds = %328
  %333 = load ptr, ptr @glad_glGetFramebufferAttachmentParameteriv, align 8, !tbaa !5
  call void %333(i32 noundef 36160, i32 noundef 1026, i32 noundef 33298, ptr noundef nonnull %7) #15
  %334 = load ptr, ptr @glad_glGetFramebufferAttachmentParameteriv, align 8, !tbaa !5
  call void %334(i32 noundef 36160, i32 noundef 1026, i32 noundef 33299, ptr noundef nonnull %8) #15
  %335 = load ptr, ptr @glad_glGetFramebufferAttachmentParameteriv, align 8, !tbaa !5
  call void %335(i32 noundef 36160, i32 noundef 1026, i32 noundef 33300, ptr noundef nonnull %9) #15
  %336 = load ptr, ptr @glad_glGetFramebufferAttachmentParameteriv, align 8, !tbaa !5
  call void %336(i32 noundef 36160, i32 noundef 1026, i32 noundef 33301, ptr noundef nonnull %10) #15
  %337 = load ptr, ptr @glad_glGetFramebufferAttachmentParameteriv, align 8, !tbaa !5
  call void %337(i32 noundef 36160, i32 noundef 6145, i32 noundef 33302, ptr noundef nonnull %11) #15
  %338 = load ptr, ptr @glad_glGetFramebufferAttachmentParameteriv, align 8, !tbaa !5
  call void %338(i32 noundef 36160, i32 noundef 6146, i32 noundef 33303, ptr noundef nonnull %12) #15
  br label %346

339:                                              ; preds = %328
  %340 = load ptr, ptr @glad_glGetIntegerv, align 8, !tbaa !5
  call void %340(i32 noundef 3410, ptr noundef nonnull %7) #15
  %341 = load ptr, ptr @glad_glGetIntegerv, align 8, !tbaa !5
  call void %341(i32 noundef 3411, ptr noundef nonnull %8) #15
  %342 = load ptr, ptr @glad_glGetIntegerv, align 8, !tbaa !5
  call void %342(i32 noundef 3412, ptr noundef nonnull %9) #15
  %343 = load ptr, ptr @glad_glGetIntegerv, align 8, !tbaa !5
  call void %343(i32 noundef 3413, ptr noundef nonnull %10) #15
  %344 = load ptr, ptr @glad_glGetIntegerv, align 8, !tbaa !5
  call void %344(i32 noundef 3414, ptr noundef nonnull %11) #15
  %345 = load ptr, ptr @glad_glGetIntegerv, align 8, !tbaa !5
  call void %345(i32 noundef 3415, ptr noundef nonnull %12) #15
  br label %346

346:                                              ; preds = %339, %332
  %347 = load i32, ptr %7, align 4, !tbaa !11
  %348 = load i32, ptr %8, align 4, !tbaa !11
  %349 = load i32, ptr %9, align 4, !tbaa !11
  %350 = load i32, ptr %10, align 4, !tbaa !11
  %351 = load i32, ptr %11, align 4, !tbaa !11
  %352 = load i32, ptr %12, align 4, !tbaa !11
  %353 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.75, i32 noundef %347, i32 noundef %348, i32 noundef %349, i32 noundef %350, i32 noundef %351, i32 noundef %352)
  %354 = icmp eq i32 %231, 196610
  %355 = load i32, ptr @GLAD_GL_ARB_multisample, align 4
  %356 = icmp ne i32 %355, 0
  %or.cond5 = select i1 %354, i1 true, i1 %356
  %or.cond7 = or i1 %322, %or.cond5
  %357 = icmp sgt i32 %233, 2
  %or.cond9 = select i1 %or.cond7, i1 true, i1 %357
  br i1 %or.cond9, label %358, label %364

358:                                              ; preds = %346
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %13) #15
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %14) #15
  %359 = load ptr, ptr @glad_glGetIntegerv, align 8, !tbaa !5
  call void %359(i32 noundef 32937, ptr noundef nonnull %13) #15
  %360 = load ptr, ptr @glad_glGetIntegerv, align 8, !tbaa !5
  call void %360(i32 noundef 32936, ptr noundef nonnull %14) #15
  %361 = load i32, ptr %13, align 4, !tbaa !11
  %362 = load i32, ptr %14, align 4, !tbaa !11
  %363 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.76, i32 noundef %361, i32 noundef %362)
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %14) #15
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %13) #15
  br label %364

364:                                              ; preds = %346, %358
  %365 = icmp ne i32 %235, 204801
  %or.cond11 = select i1 %242, i1 %365, i1 false
  br i1 %or.cond11, label %366, label %378

366:                                              ; preds = %364
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %15) #15
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %16) #15
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %17) #15
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %18) #15
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %19) #15
  %367 = load ptr, ptr @glad_glGetIntegerv, align 8, !tbaa !5
  call void %367(i32 noundef 3416, ptr noundef nonnull %15) #15
  %368 = load ptr, ptr @glad_glGetIntegerv, align 8, !tbaa !5
  call void %368(i32 noundef 3417, ptr noundef nonnull %16) #15
  %369 = load ptr, ptr @glad_glGetIntegerv, align 8, !tbaa !5
  call void %369(i32 noundef 3418, ptr noundef nonnull %17) #15
  %370 = load ptr, ptr @glad_glGetIntegerv, align 8, !tbaa !5
  call void %370(i32 noundef 3419, ptr noundef nonnull %18) #15
  %371 = load ptr, ptr @glad_glGetIntegerv, align 8, !tbaa !5
  call void %371(i32 noundef 3072, ptr noundef nonnull %19) #15
  %372 = load i32, ptr %15, align 4, !tbaa !11
  %373 = load i32, ptr %16, align 4, !tbaa !11
  %374 = load i32, ptr %17, align 4, !tbaa !11
  %375 = load i32, ptr %18, align 4, !tbaa !11
  %376 = load i32, ptr %19, align 4, !tbaa !11
  %377 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.77, i32 noundef %372, i32 noundef %373, i32 noundef %374, i32 noundef %375, i32 noundef %376)
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %19) #15
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %18) #15
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %17) #15
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %16) #15
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %15) #15
  br label %378

378:                                              ; preds = %366, %364
  %379 = trunc nuw i8 %.0168 to i1
  br i1 %379, label %380, label %381

380:                                              ; preds = %378
  call void @list_context_extensions(i32 noundef %231, i32 noundef %232, i32 noundef %233)
  br label %381

381:                                              ; preds = %380, %378
  call void @glfwDestroyWindow(ptr noundef nonnull %223) #15
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %12) #15
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %11) #15
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %10) #15
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %9) #15
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %8) #15
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %7) #15
  br label %382

382:                                              ; preds = %381, %215
  call void @glfwWindowHint(i32 noundef 139265, i32 noundef 0) #15
  %383 = call ptr @glfwCreateWindow(i32 noundef 200, i32 noundef 200, ptr noundef nonnull @.str.57, ptr noundef null, ptr noundef null) #15
  %.not259 = icmp eq ptr %383, null
  br i1 %.not259, label %384, label %385

384:                                              ; preds = %382
  call void @glfwTerminate() #15
  call void @exit(i32 noundef 1) #17
  unreachable

385:                                              ; preds = %382
  %386 = call i32 @glfwVulkanSupported() #15
  %.not260 = icmp eq i32 %386, 0
  %387 = select i1 %.not260, ptr @.str.80, ptr @.str.79
  %388 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.78, ptr noundef nonnull %387)
  %389 = call i32 @glfwVulkanSupported() #15
  %.not261 = icmp eq i32 %389, 0
  br i1 %.not261, label %563, label %390

390:                                              ; preds = %385
  %391 = call i32 @gladLoadVulkanUserPtr(ptr noundef null, ptr noundef nonnull @glfwGetInstanceProcAddress, ptr noundef null)
  %392 = load ptr, ptr @glad_vkEnumerateInstanceVersion, align 8, !tbaa !5
  %.not262 = icmp eq ptr %392, null
  br i1 %.not262, label %397, label %393

393:                                              ; preds = %390
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %20) #15
  %394 = call i32 %392(ptr noundef nonnull %20) #15
  %395 = icmp eq i32 %394, 0
  %396 = load i32, ptr %20, align 4
  %spec.select = select i1 %395, i32 %396, i32 4194304
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %20) #15
  br label %397

397:                                              ; preds = %393, %390
  %.1186 = phi i32 [ %spec.select, %393 ], [ 4194304, %390 ]
  %398 = lshr i32 %.1186, 22
  %399 = lshr i32 %.1186, 12
  %400 = and i32 %399, 1023
  %401 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.81, i32 noundef %398, i32 noundef %400)
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %21) #15
  %402 = call ptr @glfwGetRequiredInstanceExtensions(ptr noundef nonnull %21) #15
  %403 = load i32, ptr %21, align 4, !tbaa !11
  %404 = zext i32 %403 to i64
  %405 = call noalias ptr @calloc(i64 noundef %404, i64 noundef 8) #18
  %.not263 = icmp eq ptr %402, null
  br i1 %.not263, label %417, label %406

406:                                              ; preds = %397
  %407 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.82)
  %408 = load i32, ptr %21, align 4, !tbaa !11
  %.not = icmp eq i32 %408, 0
  br i1 %.not, label %.loopexit275, label %.lr.ph

.lr.ph:                                           ; preds = %406, %.lr.ph
  %indvars.iv = phi i64 [ %indvars.iv.next, %.lr.ph ], [ 0, %406 ]
  %409 = getelementptr inbounds ptr, ptr %402, i64 %indvars.iv
  %410 = load ptr, ptr %409, align 8, !tbaa !5
  %411 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.83, ptr noundef %410)
  %412 = load ptr, ptr %409, align 8, !tbaa !5
  %413 = getelementptr inbounds ptr, ptr %405, i64 %indvars.iv
  store ptr %412, ptr %413, align 8, !tbaa !5
  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
  %414 = load i32, ptr %21, align 4, !tbaa !11
  %415 = zext i32 %414 to i64
  %416 = icmp ult i64 %indvars.iv.next, %415
  br i1 %416, label %.lr.ph, label %.loopexit275, !llvm.loop !13

417:                                              ; preds = %397
  %418 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.84)
  br label %.loopexit275

.loopexit275:                                     ; preds = %.lr.ph, %406, %417
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %22) #15
  %419 = load ptr, ptr @glad_vkEnumerateInstanceExtensionProperties, align 8, !tbaa !5
  %420 = call i32 %419(ptr noundef null, ptr noundef nonnull %22, ptr noundef null) #15
  %421 = load i32, ptr %22, align 4, !tbaa !11
  %422 = zext i32 %421 to i64
  %423 = call noalias ptr @calloc(i64 noundef %422, i64 noundef 260) #18
  %424 = load ptr, ptr @glad_vkEnumerateInstanceExtensionProperties, align 8, !tbaa !5
  %425 = call i32 %424(ptr noundef null, ptr noundef nonnull %22, ptr noundef %423) #15
  %426 = trunc nuw i8 %.0168 to i1
  br i1 %426, label %427, label %.loopexit275..loopexit274_crit_edge

.loopexit275..loopexit274_crit_edge:              ; preds = %.loopexit275
  %.pre945 = load i32, ptr %22, align 4, !tbaa !11
  br label %.loopexit274

427:                                              ; preds = %.loopexit275
  %428 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.85)
  %429 = load i32, ptr %22, align 4, !tbaa !11
  %.not613 = icmp eq i32 %429, 0
  br i1 %.not613, label %._crit_edge, label %.lr.ph588

.lr.ph588:                                        ; preds = %427, %.lr.ph588
  %indvars.iv929 = phi i64 [ %indvars.iv.next930, %.lr.ph588 ], [ 0, %427 ]
  %430 = getelementptr inbounds %struct.VkExtensionProperties, ptr %423, i64 %indvars.iv929
  %431 = getelementptr inbounds i8, ptr %430, i64 256
  %432 = load i32, ptr %431, align 4, !tbaa !14
  %433 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.86, ptr noundef %430, i32 noundef %432)
  %indvars.iv.next930 = add nuw nsw i64 %indvars.iv929, 1
  %434 = load i32, ptr %22, align 4, !tbaa !11
  %435 = zext i32 %434 to i64
  %436 = icmp ult i64 %indvars.iv.next930, %435
  br i1 %436, label %.lr.ph588, label %.loopexit274, !llvm.loop !16

.loopexit274:                                     ; preds = %.lr.ph588, %.loopexit275..loopexit274_crit_edge
  %437 = phi i32 [ %.pre945, %.loopexit275..loopexit274_crit_edge ], [ %434, %.lr.ph588 ]
  %.not614 = icmp eq i32 %437, 0
  br i1 %.not614, label %._crit_edge, label %.lr.ph593

._crit_edge:                                      ; preds = %448, %427, %.loopexit274
  %.0181.lcssa = phi i32 [ %403, %.loopexit274 ], [ %403, %427 ], [ %.1182, %448 ]
  %.0179.lcssa = phi ptr [ %405, %.loopexit274 ], [ %405, %427 ], [ %.1180, %448 ]
  %.0173.lcssa = phi i1 [ false, %.loopexit274 ], [ false, %427 ], [ %.1174, %448 ]
  call void @free(ptr noundef %423) #15
  br i1 %.0170, label %452, label %453

.lr.ph593:                                        ; preds = %.loopexit274, %448
  %438 = phi i32 [ %449, %448 ], [ %437, %.loopexit274 ]
  %indvars.iv932 = phi i64 [ %indvars.iv.next933, %448 ], [ 0, %.loopexit274 ]
  %.0173591 = phi i1 [ %.1174, %448 ], [ false, %.loopexit274 ]
  %.0179590 = phi ptr [ %.1180, %448 ], [ %405, %.loopexit274 ]
  %.0181589 = phi i32 [ %.1182, %448 ], [ %403, %.loopexit274 ]
  %439 = getelementptr inbounds %struct.VkExtensionProperties, ptr %423, i64 %indvars.iv932
  %440 = call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %439, ptr noundef nonnull dereferenceable(1) @.str.87) #16
  %.not269 = icmp eq i32 %440, 0
  br i1 %.not269, label %441, label %448

441:                                              ; preds = %.lr.ph593
  %442 = add i32 %.0181589, 1
  %443 = zext i32 %442 to i64
  %444 = shl nuw nsw i64 %443, 3
  %445 = call ptr @realloc(ptr noundef %.0179590, i64 noundef %444) #19
  %446 = zext i32 %.0181589 to i64
  %447 = getelementptr inbounds ptr, ptr %445, i64 %446
  store ptr @.str.87, ptr %447, align 8, !tbaa !5
  %.pre946 = load i32, ptr %22, align 4, !tbaa !11
  br label %448

448:                                              ; preds = %.lr.ph593, %441
  %449 = phi i32 [ %438, %.lr.ph593 ], [ %.pre946, %441 ]
  %.1182 = phi i32 [ %.0181589, %.lr.ph593 ], [ %442, %441 ]
  %.1180 = phi ptr [ %.0179590, %.lr.ph593 ], [ %445, %441 ]
  %.1174 = phi i1 [ %.0173591, %.lr.ph593 ], [ true, %441 ]
  %indvars.iv.next933 = add nuw nsw i64 %indvars.iv932, 1
  %450 = zext i32 %449 to i64
  %451 = icmp ult i64 %indvars.iv.next933, %450
  br i1 %451, label %.lr.ph593, label %._crit_edge, !llvm.loop !17

452:                                              ; preds = %._crit_edge
  call void @list_vulkan_instance_layers()
  br label %453

453:                                              ; preds = %452, %._crit_edge
  call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %23) #15
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(48) %23, i8 0, i64 48, i1 false)
  %454 = getelementptr inbounds i8, ptr %23, i64 16
  store ptr @.str.88, ptr %454, align 8, !tbaa !18
  %455 = getelementptr inbounds i8, ptr %23, i64 24
  store i32 12603392, ptr %455, align 8, !tbaa !20
  %.inv = icmp ult i32 %.1186, 4198400
  %spec.select1258 = select i1 %.inv, i32 4194304, i32 4198400
  %456 = getelementptr inbounds i8, ptr %23, i64 44
  store i32 %spec.select1258, ptr %456, align 4
  call void @llvm.lifetime.start.p0(i64 64, ptr nonnull %24) #15
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(64) %24, i8 0, i64 56, i1 false)
  store i32 1, ptr %24, align 8
  %457 = getelementptr inbounds i8, ptr %24, i64 24
  store ptr %23, ptr %457, align 8, !tbaa !21
  %458 = getelementptr inbounds i8, ptr %24, i64 48
  store i32 %.0181.lcssa, ptr %458, align 8, !tbaa !23
  %459 = getelementptr inbounds i8, ptr %24, i64 56
  store ptr %.0179.lcssa, ptr %459, align 8, !tbaa !24
  br i1 %.0173.lcssa, label %460, label %462

460:                                              ; preds = %453
  %461 = getelementptr inbounds i8, ptr %24, i64 16
  store i32 1, ptr %461, align 8, !tbaa !25
  br label %462

462:                                              ; preds = %460, %453
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %25) #15
  store ptr null, ptr %25, align 8, !tbaa !5
  %463 = load ptr, ptr @glad_vkCreateInstance, align 8, !tbaa !5
  %464 = call i32 %463(ptr noundef nonnull %24, ptr noundef null, ptr noundef nonnull %25) #15
  %.not264 = icmp eq i32 %464, 0
  br i1 %.not264, label %466, label %465

465:                                              ; preds = %462
  call void @glfwTerminate() #15
  call void @exit(i32 noundef 1) #17
  unreachable

466:                                              ; preds = %462
  call void @free(ptr noundef %.0179.lcssa) #15
  %467 = load ptr, ptr %25, align 8, !tbaa !5
  %468 = call i32 @gladLoadVulkanUserPtr(ptr noundef null, ptr noundef nonnull @glfwGetInstanceProcAddress, ptr noundef %467)
  %469 = load i32, ptr %21, align 4, !tbaa !11
  %.not265 = icmp eq i32 %469, 0
  br i1 %.not265, label %482, label %470

470:                                              ; preds = %466
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %26) #15
  store ptr null, ptr %26, align 8, !tbaa !5
  %471 = load ptr, ptr %25, align 8, !tbaa !5
  %472 = call i32 @glfwCreateWindowSurface(ptr noundef %471, ptr noundef nonnull %383, ptr noundef null, ptr noundef nonnull %26) #15
  %473 = icmp eq i32 %472, 0
  br i1 %473, label %474, label %479

474:                                              ; preds = %470
  %475 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.89)
  %476 = load ptr, ptr @glad_vkDestroySurfaceKHR, align 8, !tbaa !5
  %477 = load ptr, ptr %25, align 8, !tbaa !5
  %478 = load ptr, ptr %26, align 8, !tbaa !5
  call void %476(ptr noundef %477, ptr noundef %478, ptr noundef null) #15
  br label %481

479:                                              ; preds = %470
  %480 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.90)
  br label %481

481:                                              ; preds = %479, %474
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %26) #15
  br label %482

482:                                              ; preds = %481, %466
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %27) #15
  %483 = load ptr, ptr @glad_vkEnumeratePhysicalDevices, align 8, !tbaa !5
  %484 = load ptr, ptr %25, align 8, !tbaa !5
  %485 = call i32 %483(ptr noundef %484, ptr noundef nonnull %27, ptr noundef null) #15
  %486 = load i32, ptr %27, align 4, !tbaa !11
  %487 = zext i32 %486 to i64
  %488 = call noalias ptr @calloc(i64 noundef %487, i64 noundef 8) #18
  %489 = load ptr, ptr @glad_vkEnumeratePhysicalDevices, align 8, !tbaa !5
  %490 = load ptr, ptr %25, align 8, !tbaa !5
  %491 = call i32 %489(ptr noundef %490, ptr noundef nonnull %27, ptr noundef %488) #15
  %492 = load i32, ptr %27, align 4, !tbaa !11
  %.not615 = icmp eq i32 %492, 0
  br i1 %.not615, label %._crit_edge612, label %.lr.ph611

.lr.ph611:                                        ; preds = %482
  %493 = getelementptr inbounds i8, ptr %28, i64 16
  %494 = getelementptr inbounds i8, ptr %28, i64 20
  br label %497

._crit_edge612:                                   ; preds = %559, %482
  call void @free(ptr noundef %488) #15
  %495 = load ptr, ptr @glad_vkDestroyInstance, align 8, !tbaa !5
  %496 = load ptr, ptr %25, align 8, !tbaa !5
  call void %495(ptr noundef %496, ptr noundef null) #15
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %27) #15
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %25) #15
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %24) #15
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %23) #15
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %22) #15
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %21) #15
  br label %563

497:                                              ; preds = %.lr.ph611, %559
  %indvars.iv940 = phi i64 [ 0, %.lr.ph611 ], [ %indvars.iv.next941, %559 ]
  call void @llvm.lifetime.start.p0(i64 824, ptr nonnull %28) #15
  %498 = load ptr, ptr @glad_vkGetPhysicalDeviceProperties, align 8, !tbaa !5
  %499 = getelementptr inbounds ptr, ptr %488, i64 %indvars.iv940
  %500 = load ptr, ptr %499, align 8, !tbaa !5
  call void %498(ptr noundef %500, ptr noundef nonnull %28) #15
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %29) #15
  %501 = load ptr, ptr @glad_vkGetPhysicalDeviceQueueFamilyProperties, align 8, !tbaa !5
  %502 = load ptr, ptr %499, align 8, !tbaa !5
  call void %501(ptr noundef %502, ptr noundef nonnull %29, ptr noundef null) #15
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %30) #15
  %503 = load ptr, ptr @glad_vkEnumerateDeviceExtensionProperties, align 8, !tbaa !5
  %504 = load ptr, ptr %499, align 8, !tbaa !5
  %505 = call i32 %503(ptr noundef %504, ptr noundef null, ptr noundef nonnull %30, ptr noundef null) #15
  %506 = load i32, ptr %30, align 4, !tbaa !11
  %507 = zext i32 %506 to i64
  %508 = call noalias ptr @calloc(i64 noundef %507, i64 noundef 260) #18
  %509 = load ptr, ptr @glad_vkEnumerateDeviceExtensionProperties, align 8, !tbaa !5
  %510 = load ptr, ptr %499, align 8, !tbaa !5
  %511 = call i32 %509(ptr noundef %510, ptr noundef null, ptr noundef nonnull %30, ptr noundef %508) #15
  br i1 %.0173.lcssa, label %.preheader, label %525

.preheader:                                       ; preds = %497
  %512 = load i32, ptr %30, align 4, !tbaa !11
  %.not266596.not = icmp eq i32 %512, 0
  br i1 %.not266596.not, label %._crit_edge599, label %.lr.ph598.preheader

.lr.ph598.preheader:                              ; preds = %.preheader
  %wide.trip.count = zext i32 %512 to i64
  br label %.lr.ph598

513:                                              ; preds = %.lr.ph598
  %indvars.iv.next935 = add nuw nsw i64 %indvars.iv934, 1
  %exitcond.not = icmp eq i64 %indvars.iv.next935, %wide.trip.count
  br i1 %exitcond.not, label %._crit_edge599, label %.lr.ph598, !llvm.loop !26

.lr.ph598:                                        ; preds = %.lr.ph598.preheader, %513
  %indvars.iv934 = phi i64 [ 0, %.lr.ph598.preheader ], [ %indvars.iv.next935, %513 ]
  %514 = getelementptr inbounds %struct.VkExtensionProperties, ptr %508, i64 %indvars.iv934
  %515 = call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %514, ptr noundef nonnull dereferenceable(1) @.str.91) #16
  %516 = icmp eq i32 %515, 0
  br i1 %516, label %._crit_edge599, label %513

._crit_edge599:                                   ; preds = %513, %.lr.ph598, %.preheader
  %517 = phi ptr [ @.str.93, %.preheader ], [ @.str.94, %.lr.ph598 ], [ @.str.93, %513 ]
  %518 = load i32, ptr %493, align 8, !tbaa !27
  %519 = call ptr @get_device_type_name(i32 noundef %518)
  %520 = load i32, ptr %28, align 8, !tbaa !33
  %521 = lshr i32 %520, 22
  %522 = lshr i32 %520, 12
  %523 = and i32 %522, 1023
  %524 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.92, ptr noundef nonnull %517, ptr noundef %519, ptr noundef nonnull %494, i32 noundef %521, i32 noundef %523)
  br label %533

525:                                              ; preds = %497
  %526 = load i32, ptr %493, align 8, !tbaa !27
  %527 = call ptr @get_device_type_name(i32 noundef %526)
  %528 = load i32, ptr %28, align 8, !tbaa !33
  %529 = lshr i32 %528, 22
  %530 = lshr i32 %528, 12
  %531 = and i32 %530, 1023
  %532 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.95, ptr noundef %527, ptr noundef nonnull %494, i32 noundef %529, i32 noundef %531)
  br label %533

533:                                              ; preds = %525, %._crit_edge599
  %534 = load i32, ptr %21, align 4, !tbaa !11
  %.not267 = icmp eq i32 %534, 0
  br i1 %.not267, label %.loopexit273, label %535

535:                                              ; preds = %533
  %536 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.96)
  %537 = load i32, ptr %29, align 4, !tbaa !11
  %.not616 = icmp eq i32 %537, 0
  br i1 %.not616, label %.loopexit273, label %.lr.ph605

.lr.ph605:                                        ; preds = %535, %.lr.ph605
  %.0165603 = phi i32 [ %543, %.lr.ph605 ], [ 0, %535 ]
  %538 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.97, i32 noundef %.0165603)
  %539 = load ptr, ptr %25, align 8, !tbaa !5
  %540 = load ptr, ptr %499, align 8, !tbaa !5
  %541 = call i32 @glfwGetPhysicalDevicePresentationSupport(ptr noundef %539, ptr noundef %540, i32 noundef %.0165603) #15
  %.not268 = icmp eq i32 %541, 0
  %.str.99..str.98 = select i1 %.not268, ptr @.str.99, ptr @.str.98
  %542 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) %.str.99..str.98)
  %543 = add nuw i32 %.0165603, 1
  %544 = load i32, ptr %29, align 4, !tbaa !11
  %545 = icmp ult i32 %543, %544
  br i1 %545, label %.lr.ph605, label %.loopexit273, !llvm.loop !34

.loopexit273:                                     ; preds = %.lr.ph605, %535, %533
  br i1 %426, label %546, label %.loopexit

546:                                              ; preds = %.loopexit273
  %547 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.100)
  %548 = load i32, ptr %30, align 4, !tbaa !11
  %.not617 = icmp eq i32 %548, 0
  br i1 %.not617, label %.loopexit, label %.lr.ph608

.lr.ph608:                                        ; preds = %546, %.lr.ph608
  %indvars.iv937 = phi i64 [ %indvars.iv.next938, %.lr.ph608 ], [ 0, %546 ]
  %549 = getelementptr inbounds %struct.VkExtensionProperties, ptr %508, i64 %indvars.iv937
  %550 = getelementptr inbounds i8, ptr %549, i64 256
  %551 = load i32, ptr %550, align 4, !tbaa !14
  %552 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.86, ptr noundef %549, i32 noundef %551)
  %indvars.iv.next938 = add nuw nsw i64 %indvars.iv937, 1
  %553 = load i32, ptr %30, align 4, !tbaa !11
  %554 = zext i32 %553 to i64
  %555 = icmp ult i64 %indvars.iv.next938, %554
  br i1 %555, label %.lr.ph608, label %.loopexit, !llvm.loop !35

.loopexit:                                        ; preds = %.lr.ph608, %546, %.loopexit273
  call void @free(ptr noundef %508) #15
  br i1 %.0170, label %556, label %559

556:                                              ; preds = %.loopexit
  %557 = load ptr, ptr %25, align 8, !tbaa !5
  %558 = load ptr, ptr %499, align 8, !tbaa !5
  call void @list_vulkan_device_layers(ptr noundef %557, ptr noundef %558)
  br label %559

559:                                              ; preds = %556, %.loopexit
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %30) #15
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %29) #15
  call void @llvm.lifetime.end.p0(i64 824, ptr nonnull %28) #15
  %indvars.iv.next941 = add nuw nsw i64 %indvars.iv940, 1
  %560 = load i32, ptr %27, align 4, !tbaa !11
  %561 = zext i32 %560 to i64
  %562 = icmp ult i64 %indvars.iv.next941, %561
  br i1 %562, label %497, label %._crit_edge612, !llvm.loop !36

563:                                              ; preds = %._crit_edge612, %385
  call void @glfwDestroyWindow(ptr noundef nonnull %383) #15
  call void @glfwTerminate() #15
  call void @exit(i32 noundef 0) #17
  unreachable
}

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

declare i32 @getopt_long(i32 noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #4

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

; Function Attrs: nounwind uwtable
declare hidden void @usage() local_unnamed_addr #1

; Function Attrs: noreturn nounwind
declare void @exit(i32 noundef) local_unnamed_addr #6

; Function Attrs: inlinehint mustprogress nofree nounwind willreturn memory(read) uwtable
declare i32 @atoi(ptr nocapture noundef nonnull) local_unnamed_addr #7

; Function Attrs: nounwind uwtable
declare hidden void @print_version() local_unnamed_addr #1

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

; Function Attrs: nounwind uwtable
declare hidden zeroext i1 @valid_version() local_unnamed_addr #1

declare ptr @glfwSetErrorCallback(ptr noundef) local_unnamed_addr #4

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

declare void @glfwInitHint(i32 noundef, i32 noundef) local_unnamed_addr #4

declare i32 @glfwInit() local_unnamed_addr #4

; Function Attrs: nounwind uwtable
declare hidden void @print_platform() local_unnamed_addr #1

declare void @glfwWindowHint(i32 noundef, i32 noundef) local_unnamed_addr #4

declare ptr @glfwCreateWindow(i32 noundef, i32 noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #4

declare void @glfwMakeContextCurrent(ptr noundef) local_unnamed_addr #4

declare ptr @glfwGetProcAddress(ptr noundef) #4

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

declare i32 @glfwGetWindowAttrib(ptr noundef, i32 noundef) local_unnamed_addr #4

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

; Function Attrs: inlinehint nofree nounwind uwtable
declare noundef i32 @putchar(i32 noundef) local_unnamed_addr #10

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

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

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

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

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

declare void @glfwDestroyWindow(ptr noundef) local_unnamed_addr #4

declare void @glfwTerminate() local_unnamed_addr #4

declare i32 @glfwVulkanSupported() local_unnamed_addr #4

declare ptr @glfwGetInstanceProcAddress(ptr noundef, ptr noundef) #4

declare ptr @glfwGetRequiredInstanceExtensions(ptr noundef) local_unnamed_addr #4

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

; Function Attrs: mustprogress nounwind willreturn allockind("realloc") allocsize(1) memory(argmem: readwrite, inaccessiblemem: readwrite)
declare noalias noundef ptr @realloc(ptr allocptr nocapture noundef, i64 noundef) local_unnamed_addr #12

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

; Function Attrs: nounwind uwtable
declare hidden void @list_vulkan_instance_layers() local_unnamed_addr #1

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

declare i32 @glfwCreateWindowSurface(ptr noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #4

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

declare i32 @glfwGetPhysicalDevicePresentationSupport(ptr noundef, ptr noundef, i32 noundef) local_unnamed_addr #4

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

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C/C++ TBAA"}
!9 = distinct !{!9, !10}
!10 = !{!"llvm.loop.mustprogress"}
!11 = !{!12, !12, i64 0}
!12 = !{!"int", !7, i64 0}
!13 = distinct !{!13, !10}
!14 = !{!15, !12, i64 256}
!15 = !{!"VkExtensionProperties", !7, i64 0, !12, i64 256}
!16 = distinct !{!16, !10}
!17 = distinct !{!17, !10}
!18 = !{!19, !6, i64 16}
!19 = !{!"VkApplicationInfo", !12, i64 0, !6, i64 8, !6, i64 16, !12, i64 24, !6, i64 32, !12, i64 40, !12, i64 44}
!20 = !{!19, !12, i64 24}
!21 = !{!22, !6, i64 24}
!22 = !{!"VkInstanceCreateInfo", !12, i64 0, !6, i64 8, !12, i64 16, !6, i64 24, !12, i64 32, !6, i64 40, !12, i64 48, !6, i64 56}
!23 = !{!22, !12, i64 48}
!24 = !{!22, !6, i64 56}
!25 = !{!22, !12, i64 16}
!26 = distinct !{!26, !10}
!27 = !{!28, !12, i64 16}
!28 = !{!"VkPhysicalDeviceProperties", !12, i64 0, !12, i64 4, !12, i64 8, !12, i64 12, !12, i64 16, !7, i64 20, !7, i64 276, !29, i64 296, !32, i64 800}
!29 = !{!"VkPhysicalDeviceLimits", !12, i64 0, !12, i64 4, !12, i64 8, !12, i64 12, !12, i64 16, !12, i64 20, !12, i64 24, !12, i64 28, !12, i64 32, !12, i64 36, !12, i64 40, !30, i64 48, !30, i64 56, !12, i64 64, !12, i64 68, !12, i64 72, !12, i64 76, !12, i64 80, !12, i64 84, !12, i64 88, !12, i64 92, !12, i64 96, !12, i64 100, !12, i64 104, !12, i64 108, !12, i64 112, !12, i64 116, !12, i64 120, !12, i64 124, !12, i64 128, !12, i64 132, !12, i64 136, !12, i64 140, !12, i64 144, !12, i64 148, !12, i64 152, !12, i64 156, !12, i64 160, !12, i64 164, !12, i64 168, !12, i64 172, !12, i64 176, !12, i64 180, !12, i64 184, !12, i64 188, !12, i64 192, !12, i64 196, !12, i64 200, !12, i64 204, !12, i64 208, !12, i64 212, !12, i64 216, !7, i64 220, !12, i64 232, !7, i64 236, !12, i64 248, !12, i64 252, !12, i64 256, !12, i64 260, !12, i64 264, !31, i64 268, !31, i64 272, !12, i64 276, !7, i64 280, !7, i64 288, !12, i64 296, !30, i64 304, !30, i64 312, !30, i64 320, !30, i64 328, !12, i64 336, !12, i64 340, !12, i64 344, !12, i64 348, !31, i64 352, !31, i64 356, !12, i64 360, !12, i64 364, !12, i64 368, !12, i64 372, !12, i64 376, !12, i64 380, !12, i64 384, !12, i64 388, !12, i64 392, !12, i64 396, !12, i64 400, !12, i64 404, !12, i64 408, !12, i64 412, !12, i64 416, !12, i64 420, !31, i64 424, !12, i64 428, !12, i64 432, !12, i64 436, !12, i64 440, !7, i64 444, !7, i64 452, !31, i64 460, !31, i64 464, !12, i64 468, !12, i64 472, !30, i64 480, !30, i64 488, !30, i64 496}
!30 = !{!"long", !7, i64 0}
!31 = !{!"float", !7, i64 0}
!32 = !{!"VkPhysicalDeviceSparseProperties", !12, i64 0, !12, i64 4, !12, i64 8, !12, i64 12, !12, i64 16}
!33 = !{!28, !12, i64 0}
!34 = distinct !{!34, !10}
!35 = distinct !{!35, !10}
!36 = distinct !{!36, !10}


; Effective O3 passes: AggressiveInstCombinePass,CorrelatedValuePropagationPass,DSEPass,EarlyCSEPass,GVNPass,GlobalOptPass,IPSCCPPass,IndVarSimplifyPass,InferFunctionAttrsPass,InstCombinePass,InstSimplifyPass,JumpThreadingPass,LCSSAPass,LICMPass,LoopInstSimplifyPass,LoopRotatePass,LoopSimplifyPass,LoopUnrollPass,MergedLoadStoreMotionPass,PostOrderFunctionAttrsPass,ReassociatePass,SROAPass,SimplifyCFGPass