; LLVM IR from unitreerobotics/kinect_teleoperate :: src/extern/glfw/src/src/egl_context.ll (glfwCreateContextEGL)

; 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._GLFWlibrary = type { i32, %struct.GLFWallocator, %struct._GLFWplatform, %struct.anon, ptr, ptr, ptr, ptr, i32, i32, [16 x %struct._GLFWjoystick], ptr, i32, %struct._GLFWtls, %struct._GLFWtls, %struct._GLFWmutex, %struct.anon.8, %struct.anon.9, %struct.anon.10, %struct.anon.11, %struct.anon.12, %struct._GLFWlibraryNull }
%struct.GLFWallocator = type { ptr, ptr, ptr, ptr }
%struct._GLFWplatform = type { i32, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr }
%struct.anon = type { %struct._GLFWinitconfig, %struct._GLFWfbconfig, %struct._GLFWwndconfig, %struct._GLFWctxconfig, i32 }
%struct._GLFWinitconfig = type { i32, i32, i32, ptr, %struct.anon.0, %struct.anon.1, %struct.anon.2 }
%struct.anon.0 = type { i32, i32 }
%struct.anon.1 = type { i32 }
%struct.anon.2 = type { i32 }
%struct._GLFWfbconfig = type { i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i64 }
%struct._GLFWwndconfig = type { i32, i32, i32, i32, ptr, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, %struct.anon.3, %struct.anon.4, %struct.anon.5, %struct.anon.6 }
%struct.anon.3 = type { [256 x i8] }
%struct.anon.4 = type { [256 x i8], [256 x i8] }
%struct.anon.5 = type { i32, i32 }
%struct.anon.6 = type { [256 x i8] }
%struct._GLFWctxconfig = type { i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, ptr, %struct.anon.7 }
%struct.anon.7 = type { i32 }
%struct._GLFWjoystick = type { i32, i32, ptr, i32, ptr, i32, ptr, i32, [128 x i8], ptr, [33 x i8], ptr }
%struct._GLFWtls = type { %struct._GLFWtlsPOSIX }
%struct._GLFWtlsPOSIX = type { i32, i32 }
%struct._GLFWmutex = type { %struct._GLFWmutexPOSIX }
%struct._GLFWmutexPOSIX = type { i32, %union.pthread_mutex_t }
%union.pthread_mutex_t = type { %struct.__pthread_mutex_s }
%struct.__pthread_mutex_s = type { i32, i32, i32, i32, i32, i16, i16, %struct.__pthread_internal_list }
%struct.__pthread_internal_list = type { ptr, ptr }
%struct.anon.8 = type { i64, %struct._GLFWtimerPOSIX }
%struct._GLFWtimerPOSIX = type { i32, i64 }
%struct.anon.9 = type { i32, ptr, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr }
%struct.anon.10 = type { ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr }
%struct.anon.11 = type { i32, ptr, [2 x ptr], ptr, i32, i32, i32, i32, i32, i32, i32, i32 }
%struct.anon.12 = type { ptr, ptr }
%struct._GLFWlibraryNull = type { i32, i32, ptr, ptr, [121 x i16], [349 x i8] }
%struct._GLFWwindow = type { ptr, i32, i32, i32, i32, i32, i32, i32, ptr, i32, %struct.GLFWvidmode, ptr, ptr, ptr, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, [8 x i8], [349 x i8], double, double, i32, %struct._GLFWcontext, %struct.anon.15, %struct._GLFWwindowNull }
%struct.GLFWvidmode = type { i32, i32, i32, i32, i32, i32 }
%struct._GLFWcontext = type { i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, %struct.anon.13, %struct.anon.14 }
%struct.anon.13 = type { ptr, ptr, ptr, ptr }
%struct.anon.14 = type { ptr, i32, i32, ptr }
%struct.anon.15 = type { ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr }
%struct._GLFWwindowNull = type { i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, float }

@_glfw = external global %struct._GLFWlibrary, align 8
@.str.2 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.40 = external hidden unnamed_addr constant [23 x i8], align 1
@.str.41 = external hidden unnamed_addr constant [34 x i8], align 1
@.str.42 = external hidden unnamed_addr constant [31 x i8], align 1
@.str.43 = external hidden unnamed_addr constant [60 x i8], align 1
@.str.44 = external hidden unnamed_addr constant [106 x i8], align 1
@__PRETTY_FUNCTION__._glfwCreateContextEGL = external hidden unnamed_addr constant [93 x i8], align 1
@.str.45 = external hidden unnamed_addr constant [34 x i8], align 1
@.str.46 = external hidden unnamed_addr constant [41 x i8], align 1
@__const._glfwCreateContextEGL.es1sonames = external hidden unnamed_addr constant [3 x ptr], align 16
@__const._glfwCreateContextEGL.es2sonames = external hidden unnamed_addr constant [2 x ptr], align 16
@__const._glfwCreateContextEGL.glsonames = external hidden unnamed_addr constant [3 x ptr], align 16
@.str.52 = external hidden unnamed_addr constant [35 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 nounwind willreturn memory(argmem: readwrite)
declare void @llvm.memcpy.p0.p0.i64(ptr noalias nocapture writeonly, ptr noalias nocapture readonly, i64, i1 immarg) #1

declare ptr @_glfwPlatformLoadModule(ptr noundef) #2

declare void @_glfwInputError(i32 noundef, ptr noundef, ...) #2

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

; Function Attrs: nounwind uwtable
declare hidden ptr @getEGLErrorString(i32 noundef) #4

; Function Attrs: nounwind uwtable
declare hidden i32 @extensionSupportedEGL(ptr noundef) #4

; 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
define dso_local i32 @_glfwCreateContextEGL(ptr noundef %0, ptr noundef %1, ptr noundef %2) #4 {
  %4 = alloca i32, align 4
  %5 = alloca ptr, align 8
  %6 = alloca ptr, align 8
  %7 = alloca ptr, align 8
  %8 = alloca [40 x i32], align 16
  %9 = alloca ptr, align 8
  %10 = alloca ptr, align 8
  %11 = alloca ptr, align 8
  %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 ptr, align 8
  %20 = alloca [3 x ptr], align 16
  %21 = alloca [2 x ptr], align 16
  %22 = alloca [3 x ptr], align 16
  store ptr %0, ptr %5, align 8, !tbaa !5
  store ptr %1, ptr %6, align 8, !tbaa !5
  store ptr %2, ptr %7, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 160, ptr %8) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr %9) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr %10) #6
  store ptr null, ptr %10, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %11) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr %12) #6
  store i32 0, ptr %12, align 4, !tbaa !9
  %23 = load ptr, ptr getelementptr inbounds (%struct.anon.9, ptr getelementptr inbounds (%struct._GLFWlibrary, ptr @_glfw, i32 0, i32 17), i32 0, i32 1), align 8, !tbaa !11
  %24 = icmp ne ptr %23, null
  br i1 %24, label %26, label %25

25:                                               ; preds = %3
  call void (i32, ptr, ...) @_glfwInputError(i32 noundef 65542, ptr noundef @.str.40)
  store i32 0, ptr %4, align 4
  store i32 1, ptr %13, align 4
  br label %664

26:                                               ; preds = %3
  %27 = load ptr, ptr %6, align 8, !tbaa !5
  %28 = getelementptr inbounds %struct._GLFWctxconfig, ptr %27, i32 0, i32 10
  %29 = load ptr, ptr %28, align 8, !tbaa !36
  %30 = icmp ne ptr %29, null
  br i1 %30, label %31, label %39

31:                                               ; preds = %26
  %32 = load ptr, ptr %6, align 8, !tbaa !5
  %33 = getelementptr inbounds %struct._GLFWctxconfig, ptr %32, i32 0, i32 10
  %34 = load ptr, ptr %33, align 8, !tbaa !36
  %35 = getelementptr inbounds %struct._GLFWwindow, ptr %34, i32 0, i32 30
  %36 = getelementptr inbounds %struct._GLFWcontext, ptr %35, i32 0, i32 20
  %37 = getelementptr inbounds %struct.anon.13, ptr %36, i32 0, i32 1
  %38 = load ptr, ptr %37, align 8, !tbaa !37
  store ptr %38, ptr %10, align 8, !tbaa !5
  br label %39

39:                                               ; preds = %31, %26
  %40 = load ptr, ptr %6, align 8, !tbaa !5
  %41 = load ptr, ptr %7, align 8, !tbaa !5
  %42 = call i32 @chooseEGLConfig(ptr noundef %40, ptr noundef %41, ptr noundef %9)
  %43 = icmp ne i32 %42, 0
  br i1 %43, label %45, label %44

44:                                               ; preds = %39
  store i32 0, ptr %4, align 4
  store i32 1, ptr %13, align 4
  br label %664

45:                                               ; preds = %39
  %46 = load ptr, ptr %6, align 8, !tbaa !5
  %47 = getelementptr inbounds %struct._GLFWctxconfig, ptr %46, i32 0, i32 0
  %48 = load i32, ptr %47, align 8, !tbaa !47
  %49 = icmp eq i32 %48, 196610
  br i1 %49, label %50, label %59

50:                                               ; preds = %45
  %51 = load ptr, ptr getelementptr inbounds (%struct.anon.9, ptr getelementptr inbounds (%struct._GLFWlibrary, ptr @_glfw, i32 0, i32 17), i32 0, i32 28), align 8, !tbaa !48
  %52 = call i32 %51(i32 noundef 12448)
  %53 = icmp ne i32 %52, 0
  br i1 %53, label %58, label %54

54:                                               ; preds = %50
  %55 = load ptr, ptr getelementptr inbounds (%struct.anon.9, ptr getelementptr inbounds (%struct._GLFWlibrary, ptr @_glfw, i32 0, i32 17), i32 0, i32 25), align 8, !tbaa !49
  %56 = call i32 %55()
  %57 = call ptr @getEGLErrorString(i32 noundef %56)
  call void (i32, ptr, ...) @_glfwInputError(i32 noundef 65542, ptr noundef @.str.41, ptr noundef %57)
  store i32 0, ptr %4, align 4
  store i32 1, ptr %13, align 4
  br label %664

58:                                               ; preds = %50
  br label %68

59:                                               ; preds = %45
  %60 = load ptr, ptr getelementptr inbounds (%struct.anon.9, ptr getelementptr inbounds (%struct._GLFWlibrary, ptr @_glfw, i32 0, i32 17), i32 0, i32 28), align 8, !tbaa !48
  %61 = call i32 %60(i32 noundef 12450)
  %62 = icmp ne i32 %61, 0
  br i1 %62, label %67, label %63

63:                                               ; preds = %59
  %64 = load ptr, ptr getelementptr inbounds (%struct.anon.9, ptr getelementptr inbounds (%struct._GLFWlibrary, ptr @_glfw, i32 0, i32 17), i32 0, i32 25), align 8, !tbaa !49
  %65 = call i32 %64()
  %66 = call ptr @getEGLErrorString(i32 noundef %65)
  call void (i32, ptr, ...) @_glfwInputError(i32 noundef 65542, ptr noundef @.str.42, ptr noundef %66)
  store i32 0, ptr %4, align 4
  store i32 1, ptr %13, align 4
  br label %664

67:                                               ; preds = %59
  br label %68

68:                                               ; preds = %67, %58
  %69 = load i32, ptr getelementptr inbounds (%struct.anon.9, ptr getelementptr inbounds (%struct._GLFWlibrary, ptr @_glfw, i32 0, i32 17), i32 0, i32 5), align 4, !tbaa !50
  %70 = icmp ne i32 %69, 0
  br i1 %70, label %71, label %274

71:                                               ; preds = %68
  call void @llvm.lifetime.start.p0(i64 4, ptr %14) #6
  store i32 0, ptr %14, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %15) #6
  store i32 0, ptr %15, align 4, !tbaa !9
  %72 = load ptr, ptr %6, align 8, !tbaa !5
  %73 = getelementptr inbounds %struct._GLFWctxconfig, ptr %72, i32 0, i32 0
  %74 = load i32, ptr %73, align 8, !tbaa !47
  %75 = icmp eq i32 %74, 196609
  br i1 %75, label %76, label %102

76:                                               ; preds = %71
  %77 = load ptr, ptr %6, align 8, !tbaa !5
  %78 = getelementptr inbounds %struct._GLFWctxconfig, ptr %77, i32 0, i32 4
  %79 = load i32, ptr %78, align 8, !tbaa !51
  %80 = icmp ne i32 %79, 0
  br i1 %80, label %81, label %84

81:                                               ; preds = %76
  %82 = load i32, ptr %15, align 4, !tbaa !9
  %83 = or i32 %82, 2
  store i32 %83, ptr %15, align 4, !tbaa !9
  br label %84

84:                                               ; preds = %81, %76
  %85 = load ptr, ptr %6, align 8, !tbaa !5
  %86 = getelementptr inbounds %struct._GLFWctxconfig, ptr %85, i32 0, i32 7
  %87 = load i32, ptr %86, align 4, !tbaa !52
  %88 = icmp eq i32 %87, 204801
  br i1 %88, label %89, label %92

89:                                               ; preds = %84
  %90 = load i32, ptr %14, align 4, !tbaa !9
  %91 = or i32 %90, 1
  store i32 %91, ptr %14, align 4, !tbaa !9
  br label %101

92:                                               ; preds = %84
  %93 = load ptr, ptr %6, align 8, !tbaa !5
  %94 = getelementptr inbounds %struct._GLFWctxconfig, ptr %93, i32 0, i32 7
  %95 = load i32, ptr %94, align 4, !tbaa !52
  %96 = icmp eq i32 %95, 204802
  br i1 %96, label %97, label %100

97:                                               ; preds = %92
  %98 = load i32, ptr %14, align 4, !tbaa !9
  %99 = or i32 %98, 2
  store i32 %99, ptr %14, align 4, !tbaa !9
  br label %100

100:                                              ; preds = %97, %92
  br label %101

101:                                              ; preds = %100, %89
  br label %102

102:                                              ; preds = %101, %71
  %103 = load ptr, ptr %6, align 8, !tbaa !5
  %104 = getelementptr inbounds %struct._GLFWctxconfig, ptr %103, i32 0, i32 5
  %105 = load i32, ptr %104, align 4, !tbaa !53
  %106 = icmp ne i32 %105, 0
  br i1 %106, label %107, label %110

107:                                              ; preds = %102
  %108 = load i32, ptr %15, align 4, !tbaa !9
  %109 = or i32 %108, 1
  store i32 %109, ptr %15, align 4, !tbaa !9
  br label %110

110:                                              ; preds = %107, %102
  %111 = load ptr, ptr %6, align 8, !tbaa !5
  %112 = getelementptr inbounds %struct._GLFWctxconfig, ptr %111, i32 0, i32 8
  %113 = load i32, ptr %112, align 8, !tbaa !54
  %114 = icmp ne i32 %113, 0
  br i1 %114, label %115, label %161

115:                                              ; preds = %110
  %116 = load ptr, ptr %6, align 8, !tbaa !5
  %117 = getelementptr inbounds %struct._GLFWctxconfig, ptr %116, i32 0, i32 8
  %118 = load i32, ptr %117, align 8, !tbaa !54
  %119 = icmp eq i32 %118, 200705
  br i1 %119, label %120, label %136

120:                                              ; preds = %115
  %121 = load i32, ptr %12, align 4, !tbaa !9
  %122 = sext i32 %121 to i64
  %123 = add i64 %122, 1
  %124 = icmp ult i64 %123, 40
  br i1 %124, label %125, label %126

125:                                              ; preds = %120
  br label %127

126:                                              ; preds = %120
  call void @__assert_fail(ptr noundef @.str.43, ptr noundef @.str.44, i32 noundef 640, ptr noundef @__PRETTY_FUNCTION__._glfwCreateContextEGL) #7
  unreachable

127:                                              ; preds = %125
  %128 = load i32, ptr %12, align 4, !tbaa !9
  %129 = add nsw i32 %128, 1
  store i32 %129, ptr %12, align 4, !tbaa !9
  %130 = sext i32 %128 to i64
  %131 = getelementptr inbounds [40 x i32], ptr %8, i64 0, i64 %130
  store i32 12733, ptr %131, align 4, !tbaa !9
  %132 = load i32, ptr %12, align 4, !tbaa !9
  %133 = add nsw i32 %132, 1
  store i32 %133, ptr %12, align 4, !tbaa !9
  %134 = sext i32 %132 to i64
  %135 = getelementptr inbounds [40 x i32], ptr %8, i64 0, i64 %134
  store i32 12734, ptr %135, align 4, !tbaa !9
  br label %158

136:                                              ; preds = %115
  %137 = load ptr, ptr %6, align 8, !tbaa !5
  %138 = getelementptr inbounds %struct._GLFWctxconfig, ptr %137, i32 0, i32 8
  %139 = load i32, ptr %138, align 8, !tbaa !54
  %140 = icmp eq i32 %139, 200706
  br i1 %140, label %141, label %157

141:                                              ; preds = %136
  %142 = load i32, ptr %12, align 4, !tbaa !9
  %143 = sext i32 %142 to i64
  %144 = add i64 %143, 1
  %145 = icmp ult i64 %144, 40
  br i1 %145, label %146, label %147

146:                                              ; preds = %141
  br label %148

147:                                              ; preds = %141
  call void @__assert_fail(ptr noundef @.str.43, ptr noundef @.str.44, i32 noundef 645, ptr noundef @__PRETTY_FUNCTION__._glfwCreateContextEGL) #7
  unreachable

148:                                              ; preds = %146
  %149 = load i32, ptr %12, align 4, !tbaa !9
  %150 = add nsw i32 %149, 1
  store i32 %150, ptr %12, align 4, !tbaa !9
  %151 = sext i32 %149 to i64
  %152 = getelementptr inbounds [40 x i32], ptr %8, i64 0, i64 %151
  store i32 12733, ptr %152, align 4, !tbaa !9
  %153 = load i32, ptr %12, align 4, !tbaa !9
  %154 = add nsw i32 %153, 1
  store i32 %154, ptr %12, align 4, !tbaa !9
  %155 = sext i32 %153 to i64
  %156 = getelementptr inbounds [40 x i32], ptr %8, i64 0, i64 %155
  store i32 12735, ptr %156, align 4, !tbaa !9
  br label %157

157:                                              ; preds = %148, %136
  br label %158

158:                                              ; preds = %157, %127
  %159 = load i32, ptr %15, align 4, !tbaa !9
  %160 = or i32 %159, 4
  store i32 %160, ptr %15, align 4, !tbaa !9
  br label %161

161:                                              ; preds = %158, %110
  %162 = load ptr, ptr %6, align 8, !tbaa !5
  %163 = getelementptr inbounds %struct._GLFWctxconfig, ptr %162, i32 0, i32 2
  %164 = load i32, ptr %163, align 8, !tbaa !55
  %165 = icmp ne i32 %164, 1
  br i1 %165, label %171, label %166

166:                                              ; preds = %161
  %167 = load ptr, ptr %6, align 8, !tbaa !5
  %168 = getelementptr inbounds %struct._GLFWctxconfig, ptr %167, i32 0, i32 3
  %169 = load i32, ptr %168, align 4, !tbaa !56
  %170 = icmp ne i32 %169, 0
  br i1 %170, label %171, label %208

171:                                              ; preds = %166, %161
  %172 = load i32, ptr %12, align 4, !tbaa !9
  %173 = sext i32 %172 to i64
  %174 = add i64 %173, 1
  %175 = icmp ult i64 %174, 40
  br i1 %175, label %176, label %177

176:                                              ; preds = %171
  br label %178

177:                                              ; preds = %171
  call void @__assert_fail(ptr noundef @.str.43, ptr noundef @.str.44, i32 noundef 653, ptr noundef @__PRETTY_FUNCTION__._glfwCreateContextEGL) #7
  unreachable

178:                                              ; preds = %176
  %179 = load i32, ptr %12, align 4, !tbaa !9
  %180 = add nsw i32 %179, 1
  store i32 %180, ptr %12, align 4, !tbaa !9
  %181 = sext i32 %179 to i64
  %182 = getelementptr inbounds [40 x i32], ptr %8, i64 0, i64 %181
  store i32 12440, ptr %182, align 4, !tbaa !9
  %183 = load ptr, ptr %6, align 8, !tbaa !5
  %184 = getelementptr inbounds %struct._GLFWctxconfig, ptr %183, i32 0, i32 2
  %185 = load i32, ptr %184, align 8, !tbaa !55
  %186 = load i32, ptr %12, align 4, !tbaa !9
  %187 = add nsw i32 %186, 1
  store i32 %187, ptr %12, align 4, !tbaa !9
  %188 = sext i32 %186 to i64
  %189 = getelementptr inbounds [40 x i32], ptr %8, i64 0, i64 %188
  store i32 %185, ptr %189, align 4, !tbaa !9
  %190 = load i32, ptr %12, align 4, !tbaa !9
  %191 = sext i32 %190 to i64
  %192 = add i64 %191, 1
  %193 = icmp ult i64 %192, 40
  br i1 %193, label %194, label %195

194:                                              ; preds = %178
  br label %196

195:                                              ; preds = %178
  call void @__assert_fail(ptr noundef @.str.43, ptr noundef @.str.44, i32 noundef 654, ptr noundef @__PRETTY_FUNCTION__._glfwCreateContextEGL) #7
  unreachable

196:                                              ; preds = %194
  %197 = load i32, ptr %12, align 4, !tbaa !9
  %198 = add nsw i32 %197, 1
  store i32 %198, ptr %12, align 4, !tbaa !9
  %199 = sext i32 %197 to i64
  %200 = getelementptr inbounds [40 x i32], ptr %8, i64 0, i64 %199
  store i32 12539, ptr %200, align 4, !tbaa !9
  %201 = load ptr, ptr %6, align 8, !tbaa !5
  %202 = getelementptr inbounds %struct._GLFWctxconfig, ptr %201, i32 0, i32 3
  %203 = load i32, ptr %202, align 4, !tbaa !56
  %204 = load i32, ptr %12, align 4, !tbaa !9
  %205 = add nsw i32 %204, 1
  store i32 %205, ptr %12, align 4, !tbaa !9
  %206 = sext i32 %204 to i64
  %207 = getelementptr inbounds [40 x i32], ptr %8, i64 0, i64 %206
  store i32 %203, ptr %207, align 4, !tbaa !9
  br label %208

208:                                              ; preds = %196, %166
  %209 = load ptr, ptr %6, align 8, !tbaa !5
  %210 = getelementptr inbounds %struct._GLFWctxconfig, ptr %209, i32 0, i32 6
  %211 = load i32, ptr %210, align 8, !tbaa !57
  %212 = icmp ne i32 %211, 0
  br i1 %212, label %213, label %233

213:                                              ; preds = %208
  %214 = load i32, ptr getelementptr inbounds (%struct.anon.9, ptr getelementptr inbounds (%struct._GLFWlibrary, ptr @_glfw, i32 0, i32 17), i32 0, i32 6), align 8, !tbaa !58
  %215 = icmp ne i32 %214, 0
  br i1 %215, label %216, label %232

216:                                              ; preds = %213
  %217 = load i32, ptr %12, align 4, !tbaa !9
  %218 = sext i32 %217 to i64
  %219 = add i64 %218, 1
  %220 = icmp ult i64 %219, 40
  br i1 %220, label %221, label %222

221:                                              ; preds = %216
  br label %223

222:                                              ; preds = %216
  call void @__assert_fail(ptr noundef @.str.43, ptr noundef @.str.44, i32 noundef 660, ptr noundef @__PRETTY_FUNCTION__._glfwCreateContextEGL) #7
  unreachable

223:                                              ; preds = %221
  %224 = load i32, ptr %12, align 4, !tbaa !9
  %225 = add nsw i32 %224, 1
  store i32 %225, ptr %12, align 4, !tbaa !9
  %226 = sext i32 %224 to i64
  %227 = getelementptr inbounds [40 x i32], ptr %8, i64 0, i64 %226
  store i32 12723, ptr %227, align 4, !tbaa !9
  %228 = load i32, ptr %12, align 4, !tbaa !9
  %229 = add nsw i32 %228, 1
  store i32 %229, ptr %12, align 4, !tbaa !9
  %230 = sext i32 %228 to i64
  %231 = getelementptr inbounds [40 x i32], ptr %8, i64 0, i64 %230
  store i32 1, ptr %231, align 4, !tbaa !9
  br label %232

232:                                              ; preds = %223, %213
  br label %233

233:                                              ; preds = %232, %208
  %234 = load i32, ptr %14, align 4, !tbaa !9
  %235 = icmp ne i32 %234, 0
  br i1 %235, label %236, label %253

236:                                              ; preds = %233
  %237 = load i32, ptr %12, align 4, !tbaa !9
  %238 = sext i32 %237 to i64
  %239 = add i64 %238, 1
  %240 = icmp ult i64 %239, 40
  br i1 %240, label %241, label %242

241:                                              ; preds = %236
  br label %243

242:                                              ; preds = %236
  call void @__assert_fail(ptr noundef @.str.43, ptr noundef @.str.44, i32 noundef 664, ptr noundef @__PRETTY_FUNCTION__._glfwCreateContextEGL) #7
  unreachable

243:                                              ; preds = %241
  %244 = load i32, ptr %12, align 4, !tbaa !9
  %245 = add nsw i32 %244, 1
  store i32 %245, ptr %12, align 4, !tbaa !9
  %246 = sext i32 %244 to i64
  %247 = getelementptr inbounds [40 x i32], ptr %8, i64 0, i64 %246
  store i32 12541, ptr %247, align 4, !tbaa !9
  %248 = load i32, ptr %14, align 4, !tbaa !9
  %249 = load i32, ptr %12, align 4, !tbaa !9
  %250 = add nsw i32 %249, 1
  store i32 %250, ptr %12, align 4, !tbaa !9
  %251 = sext i32 %249 to i64
  %252 = getelementptr inbounds [40 x i32], ptr %8, i64 0, i64 %251
  store i32 %248, ptr %252, align 4, !tbaa !9
  br label %253

253:                                              ; preds = %243, %233
  %254 = load i32, ptr %15, align 4, !tbaa !9
  %255 = icmp ne i32 %254, 0
  br i1 %255, label %256, label %273

256:                                              ; preds = %253
  %257 = load i32, ptr %12, align 4, !tbaa !9
  %258 = sext i32 %257 to i64
  %259 = add i64 %258, 1
  %260 = icmp ult i64 %259, 40
  br i1 %260, label %261, label %262

261:                                              ; preds = %256
  br label %263

262:                                              ; preds = %256
  call void @__assert_fail(ptr noundef @.str.43, ptr noundef @.str.44, i32 noundef 667, ptr noundef @__PRETTY_FUNCTION__._glfwCreateContextEGL) #7
  unreachable

263:                                              ; preds = %261
  %264 = load i32, ptr %12, align 4, !tbaa !9
  %265 = add nsw i32 %264, 1
  store i32 %265, ptr %12, align 4, !tbaa !9
  %266 = sext i32 %264 to i64
  %267 = getelementptr inbounds [40 x i32], ptr %8, i64 0, i64 %266
  store i32 12540, ptr %267, align 4, !tbaa !9
  %268 = load i32, ptr %15, align 4, !tbaa !9
  %269 = load i32, ptr %12, align 4, !tbaa !9
  %270 = add nsw i32 %269, 1
  store i32 %270, ptr %12, align 4, !tbaa !9
  %271 = sext i32 %269 to i64
  %272 = getelementptr inbounds [40 x i32], ptr %8, i64 0, i64 %271
  store i32 %268, ptr %272, align 4, !tbaa !9
  br label %273

273:                                              ; preds = %263, %253
  call void @llvm.lifetime.end.p0(i64 4, ptr %15) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %14) #6
  br label %299

274:                                              ; preds = %68
  %275 = load ptr, ptr %6, align 8, !tbaa !5
  %276 = getelementptr inbounds %struct._GLFWctxconfig, ptr %275, i32 0, i32 0
  %277 = load i32, ptr %276, align 8, !tbaa !47
  %278 = icmp eq i32 %277, 196610
  br i1 %278, label %279, label %298

279:                                              ; preds = %274
  %280 = load i32, ptr %12, align 4, !tbaa !9
  %281 = sext i32 %280 to i64
  %282 = add i64 %281, 1
  %283 = icmp ult i64 %282, 40
  br i1 %283, label %284, label %285

284:                                              ; preds = %279
  br label %286

285:                                              ; preds = %279
  call void @__assert_fail(ptr noundef @.str.43, ptr noundef @.str.44, i32 noundef 672, ptr noundef @__PRETTY_FUNCTION__._glfwCreateContextEGL) #7
  unreachable

286:                                              ; preds = %284
  %287 = load i32, ptr %12, align 4, !tbaa !9
  %288 = add nsw i32 %287, 1
  store i32 %288, ptr %12, align 4, !tbaa !9
  %289 = sext i32 %287 to i64
  %290 = getelementptr inbounds [40 x i32], ptr %8, i64 0, i64 %289
  store i32 12440, ptr %290, align 4, !tbaa !9
  %291 = load ptr, ptr %6, align 8, !tbaa !5
  %292 = getelementptr inbounds %struct._GLFWctxconfig, ptr %291, i32 0, i32 2
  %293 = load i32, ptr %292, align 8, !tbaa !55
  %294 = load i32, ptr %12, align 4, !tbaa !9
  %295 = add nsw i32 %294, 1
  store i32 %295, ptr %12, align 4, !tbaa !9
  %296 = sext i32 %294 to i64
  %297 = getelementptr inbounds [40 x i32], ptr %8, i64 0, i64 %296
  store i32 %293, ptr %297, align 4, !tbaa !9
  br label %298

298:                                              ; preds = %286, %274
  br label %299

299:                                              ; preds = %298, %273
  %300 = load i32, ptr getelementptr inbounds (%struct.anon.9, ptr getelementptr inbounds (%struct._GLFWlibrary, ptr @_glfw, i32 0, i32 17), i32 0, i32 9), align 4, !tbaa !59
  %301 = icmp ne i32 %300, 0
  br i1 %301, label %302, label %346

302:                                              ; preds = %299
  %303 = load ptr, ptr %6, align 8, !tbaa !5
  %304 = getelementptr inbounds %struct._GLFWctxconfig, ptr %303, i32 0, i32 9
  %305 = load i32, ptr %304, align 4, !tbaa !60
  %306 = icmp eq i32 %305, 217090
  br i1 %306, label %307, label %323

307:                                              ; preds = %302
  %308 = load i32, ptr %12, align 4, !tbaa !9
  %309 = sext i32 %308 to i64
  %310 = add i64 %309, 1
  %311 = icmp ult i64 %310, 40
  br i1 %311, label %312, label %313

312:                                              ; preds = %307
  br label %314

313:                                              ; preds = %307
  call void @__assert_fail(ptr noundef @.str.43, ptr noundef @.str.44, i32 noundef 680, ptr noundef @__PRETTY_FUNCTION__._glfwCreateContextEGL) #7
  unreachable

314:                                              ; preds = %312
  %315 = load i32, ptr %12, align 4, !tbaa !9
  %316 = add nsw i32 %315, 1
  store i32 %316, ptr %12, align 4, !tbaa !9
  %317 = sext i32 %315 to i64
  %318 = getelementptr inbounds [40 x i32], ptr %8, i64 0, i64 %317
  store i32 8343, ptr %318, align 4, !tbaa !9
  %319 = load i32, ptr %12, align 4, !tbaa !9
  %320 = add nsw i32 %319, 1
  store i32 %320, ptr %12, align 4, !tbaa !9
  %321 = sext i32 %319 to i64
  %322 = getelementptr inbounds [40 x i32], ptr %8, i64 0, i64 %321
  store i32 0, ptr %322, align 4, !tbaa !9
  br label %345

323:                                              ; preds = %302
  %324 = load ptr, ptr %6, align 8, !tbaa !5
  %325 = getelementptr inbounds %struct._GLFWctxconfig, ptr %324, i32 0, i32 9
  %326 = load i32, ptr %325, align 4, !tbaa !60
  %327 = icmp eq i32 %326, 217089
  br i1 %327, label %328, label %344

328:                                              ; preds = %323
  %329 = load i32, ptr %12, align 4, !tbaa !9
  %330 = sext i32 %329 to i64
  %331 = add i64 %330, 1
  %332 = icmp ult i64 %331, 40
  br i1 %332, label %333, label %334

333:                                              ; preds = %328
  br label %335

334:                                              ; preds = %328
  call void @__assert_fail(ptr noundef @.str.43, ptr noundef @.str.44, i32 noundef 685, ptr noundef @__PRETTY_FUNCTION__._glfwCreateContextEGL) #7
  unreachable

335:                                              ; preds = %333
  %336 = load i32, ptr %12, align 4, !tbaa !9
  %337 = add nsw i32 %336, 1
  store i32 %337, ptr %12, align 4, !tbaa !9
  %338 = sext i32 %336 to i64
  %339 = getelementptr inbounds [40 x i32], ptr %8, i64 0, i64 %338
  store i32 8343, ptr %339, align 4, !tbaa !9
  %340 = load i32, ptr %12, align 4, !tbaa !9
  %341 = add nsw i32 %340, 1
  store i32 %341, ptr %12, align 4, !tbaa !9
  %342 = sext i32 %340 to i64
  %343 = getelementptr inbounds [40 x i32], ptr %8, i64 0, i64 %342
  store i32 8344, ptr %343, align 4, !tbaa !9
  br label %344

344:                                              ; preds = %335, %323
  br label %345

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

346:                                              ; preds = %345, %299
  %347 = load i32, ptr %12, align 4, !tbaa !9
  %348 = sext i32 %347 to i64
  %349 = add i64 %348, 1
  %350 = icmp ult i64 %349, 40
  br i1 %350, label %351, label %352

351:                                              ; preds = %346
  br label %353

352:                                              ; preds = %346
  call void @__assert_fail(ptr noundef @.str.43, ptr noundef @.str.44, i32 noundef 689, ptr noundef @__PRETTY_FUNCTION__._glfwCreateContextEGL) #7
  unreachable

353:                                              ; preds = %351
  %354 = load i32, ptr %12, align 4, !tbaa !9
  %355 = add nsw i32 %354, 1
  store i32 %355, ptr %12, align 4, !tbaa !9
  %356 = sext i32 %354 to i64
  %357 = getelementptr inbounds [40 x i32], ptr %8, i64 0, i64 %356
  store i32 12344, ptr %357, align 4, !tbaa !9
  %358 = load i32, ptr %12, align 4, !tbaa !9
  %359 = add nsw i32 %358, 1
  store i32 %359, ptr %12, align 4, !tbaa !9
  %360 = sext i32 %358 to i64
  %361 = getelementptr inbounds [40 x i32], ptr %8, i64 0, i64 %360
  store i32 12344, ptr %361, align 4, !tbaa !9
  %362 = load ptr, ptr getelementptr inbounds (%struct.anon.9, ptr getelementptr inbounds (%struct._GLFWlibrary, ptr @_glfw, i32 0, i32 17), i32 0, i32 29), align 8, !tbaa !61
  %363 = load ptr, ptr getelementptr inbounds (%struct.anon.9, ptr getelementptr inbounds (%struct._GLFWlibrary, ptr @_glfw, i32 0, i32 17), i32 0, i32 1), align 8, !tbaa !11
  %364 = load ptr, ptr %9, align 8, !tbaa !5
  %365 = load ptr, ptr %10, align 8, !tbaa !5
  %366 = getelementptr inbounds [40 x i32], ptr %8, i64 0, i64 0
  %367 = call ptr %362(ptr noundef %363, ptr noundef %364, ptr noundef %365, ptr noundef %366)
  %368 = load ptr, ptr %5, align 8, !tbaa !5
  %369 = getelementptr inbounds %struct._GLFWwindow, ptr %368, i32 0, i32 30
  %370 = getelementptr inbounds %struct._GLFWcontext, ptr %369, i32 0, i32 20
  %371 = getelementptr inbounds %struct.anon.13, ptr %370, i32 0, i32 1
  store ptr %367, ptr %371, align 8, !tbaa !37
  %372 = load ptr, ptr %5, align 8, !tbaa !5
  %373 = getelementptr inbounds %struct._GLFWwindow, ptr %372, i32 0, i32 30
  %374 = getelementptr inbounds %struct._GLFWcontext, ptr %373, i32 0, i32 20
  %375 = getelementptr inbounds %struct.anon.13, ptr %374, i32 0, i32 1
  %376 = load ptr, ptr %375, align 8, !tbaa !37
  %377 = icmp eq ptr %376, null
  br i1 %377, label %378, label %382

378:                                              ; preds = %353
  %379 = load ptr, ptr getelementptr inbounds (%struct.anon.9, ptr getelementptr inbounds (%struct._GLFWlibrary, ptr @_glfw, i32 0, i32 17), i32 0, i32 25), align 8, !tbaa !49
  %380 = call i32 %379()
  %381 = call ptr @getEGLErrorString(i32 noundef %380)
  call void (i32, ptr, ...) @_glfwInputError(i32 noundef 65543, ptr noundef @.str.45, ptr noundef %381)
  store i32 0, ptr %4, align 4
  store i32 1, ptr %13, align 4
  br label %664

382:                                              ; preds = %353
  store i32 0, ptr %12, align 4, !tbaa !9
  %383 = load ptr, ptr %7, align 8, !tbaa !5
  %384 = getelementptr inbounds %struct._GLFWfbconfig, ptr %383, i32 0, i32 13
  %385 = load i32, ptr %384, align 4, !tbaa !62
  %386 = icmp ne i32 %385, 0
  br i1 %386, label %387, label %407

387:                                              ; preds = %382
  %388 = load i32, ptr getelementptr inbounds (%struct.anon.9, ptr getelementptr inbounds (%struct._GLFWlibrary, ptr @_glfw, i32 0, i32 17), i32 0, i32 7), align 4, !tbaa !63
  %389 = icmp ne i32 %388, 0
  br i1 %389, label %390, label %406

390:                                              ; preds = %387
  %391 = load i32, ptr %12, align 4, !tbaa !9
  %392 = sext i32 %391 to i64
  %393 = add i64 %392, 1
  %394 = icmp ult i64 %393, 40
  br i1 %394, label %395, label %396

395:                                              ; preds = %390
  br label %397

396:                                              ; preds = %390
  call void @__assert_fail(ptr noundef @.str.43, ptr noundef @.str.44, i32 noundef 708, ptr noundef @__PRETTY_FUNCTION__._glfwCreateContextEGL) #7
  unreachable

397:                                              ; preds = %395
  %398 = load i32, ptr %12, align 4, !tbaa !9
  %399 = add nsw i32 %398, 1
  store i32 %399, ptr %12, align 4, !tbaa !9
  %400 = sext i32 %398 to i64
  %401 = getelementptr inbounds [40 x i32], ptr %8, i64 0, i64 %400
  store i32 12445, ptr %401, align 4, !tbaa !9
  %402 = load i32, ptr %12, align 4, !tbaa !9
  %403 = add nsw i32 %402, 1
  store i32 %403, ptr %12, align 4, !tbaa !9
  %404 = sext i32 %402 to i64
  %405 = getelementptr inbounds [40 x i32], ptr %8, i64 0, i64 %404
  store i32 12425, ptr %405, align 4, !tbaa !9
  br label %406

406:                                              ; preds = %397, %387
  br label %407

407:                                              ; preds = %406, %382
  %408 = load ptr, ptr %7, align 8, !tbaa !5
  %409 = getelementptr inbounds %struct._GLFWfbconfig, ptr %408, i32 0, i32 14
  %410 = load i32, ptr %409, align 8, !tbaa !64
  %411 = icmp ne i32 %410, 0
  br i1 %411, label %428, label %412

412:                                              ; preds = %407
  %413 = load i32, ptr %12, align 4, !tbaa !9
  %414 = sext i32 %413 to i64
  %415 = add i64 %414, 1
  %416 = icmp ult i64 %415, 40
  br i1 %416, label %417, label %418

417:                                              ; preds = %412
  br label %419

418:                                              ; preds = %412
  call void @__assert_fail(ptr noundef @.str.43, ptr noundef @.str.44, i32 noundef 712, ptr noundef @__PRETTY_FUNCTION__._glfwCreateContextEGL) #7
  unreachable

419:                                              ; preds = %417
  %420 = load i32, ptr %12, align 4, !tbaa !9
  %421 = add nsw i32 %420, 1
  store i32 %421, ptr %12, align 4, !tbaa !9
  %422 = sext i32 %420 to i64
  %423 = getelementptr inbounds [40 x i32], ptr %8, i64 0, i64 %422
  store i32 12422, ptr %423, align 4, !tbaa !9
  %424 = load i32, ptr %12, align 4, !tbaa !9
  %425 = add nsw i32 %424, 1
  store i32 %425, ptr %12, align 4, !tbaa !9
  %426 = sext i32 %424 to i64
  %427 = getelementptr inbounds [40 x i32], ptr %8, i64 0, i64 %426
  store i32 12421, ptr %427, align 4, !tbaa !9
  br label %428

428:                                              ; preds = %419, %407
  %429 = load i32, ptr getelementptr inbounds (%struct._GLFWlibrary, ptr @_glfw, i32 0, i32 2), align 8, !tbaa !65
  %430 = icmp eq i32 %429, 393219
  br i1 %430, label %431, label %457

431:                                              ; preds = %428
  %432 = load i32, ptr getelementptr inbounds (%struct.anon.9, ptr getelementptr inbounds (%struct._GLFWlibrary, ptr @_glfw, i32 0, i32 17), i32 0, i32 14), align 8, !tbaa !66
  %433 = icmp ne i32 %432, 0
  br i1 %433, label %434, label %456

434:                                              ; preds = %431
  %435 = load i32, ptr %12, align 4, !tbaa !9
  %436 = sext i32 %435 to i64
  %437 = add i64 %436, 1
  %438 = icmp ult i64 %437, 40
  br i1 %438, label %439, label %440

439:                                              ; preds = %434
  br label %441

440:                                              ; preds = %434
  call void @__assert_fail(ptr noundef @.str.43, ptr noundef @.str.44, i32 noundef 717, ptr noundef @__PRETTY_FUNCTION__._glfwCreateContextEGL) #7
  unreachable

441:                                              ; preds = %439
  %442 = load i32, ptr %12, align 4, !tbaa !9
  %443 = add nsw i32 %442, 1
  store i32 %443, ptr %12, align 4, !tbaa !9
  %444 = sext i32 %442 to i64
  %445 = getelementptr inbounds [40 x i32], ptr %8, i64 0, i64 %444
  store i32 12767, ptr %445, align 4, !tbaa !9
  %446 = load ptr, ptr %7, align 8, !tbaa !5
  %447 = getelementptr inbounds %struct._GLFWfbconfig, ptr %446, i32 0, i32 15
  %448 = load i32, ptr %447, align 4, !tbaa !67
  %449 = icmp ne i32 %448, 0
  %450 = xor i1 %449, true
  %451 = zext i1 %450 to i32
  %452 = load i32, ptr %12, align 4, !tbaa !9
  %453 = add nsw i32 %452, 1
  store i32 %453, ptr %12, align 4, !tbaa !9
  %454 = sext i32 %452 to i64
  %455 = getelementptr inbounds [40 x i32], ptr %8, i64 0, i64 %454
  store i32 %451, ptr %455, align 4, !tbaa !9
  br label %456

456:                                              ; preds = %441, %431
  br label %457

457:                                              ; preds = %456, %428
  %458 = load i32, ptr getelementptr inbounds (%struct._GLFWlibrary, ptr @_glfw, i32 0, i32 17), align 8, !tbaa !68
  %459 = icmp eq i32 %458, 12765
  br i1 %459, label %460, label %495

460:                                              ; preds = %457
  call void @llvm.lifetime.start.p0(i64 4, ptr %16) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr %17) #6
  %461 = load ptr, ptr getelementptr inbounds (%struct._GLFWplatform, ptr getelementptr inbounds (%struct._GLFWlibrary, ptr @_glfw, i32 0, i32 2), i32 0, i32 39), align 8, !tbaa !69
  %462 = load ptr, ptr %5, align 8, !tbaa !5
  call void %461(ptr noundef %462, ptr noundef %16, ptr noundef %17)
  %463 = load i32, ptr %12, align 4, !tbaa !9
  %464 = sext i32 %463 to i64
  %465 = add i64 %464, 1
  %466 = icmp ult i64 %465, 40
  br i1 %466, label %467, label %468

467:                                              ; preds = %460
  br label %469

468:                                              ; preds = %460
  call void @__assert_fail(ptr noundef @.str.43, ptr noundef @.str.44, i32 noundef 725, ptr noundef @__PRETTY_FUNCTION__._glfwCreateContextEGL) #7
  unreachable

469:                                              ; preds = %467
  %470 = load i32, ptr %12, align 4, !tbaa !9
  %471 = add nsw i32 %470, 1
  store i32 %471, ptr %12, align 4, !tbaa !9
  %472 = sext i32 %470 to i64
  %473 = getelementptr inbounds [40 x i32], ptr %8, i64 0, i64 %472
  store i32 12375, ptr %473, align 4, !tbaa !9
  %474 = load i32, ptr %16, align 4, !tbaa !9
  %475 = load i32, ptr %12, align 4, !tbaa !9
  %476 = add nsw i32 %475, 1
  store i32 %476, ptr %12, align 4, !tbaa !9
  %477 = sext i32 %475 to i64
  %478 = getelementptr inbounds [40 x i32], ptr %8, i64 0, i64 %477
  store i32 %474, ptr %478, align 4, !tbaa !9
  %479 = load i32, ptr %12, align 4, !tbaa !9
  %480 = sext i32 %479 to i64
  %481 = add i64 %480, 1
  %482 = icmp ult i64 %481, 40
  br i1 %482, label %483, label %484

483:                                              ; preds = %469
  br label %485

484:                                              ; preds = %469
  call void @__assert_fail(ptr noundef @.str.43, ptr noundef @.str.44, i32 noundef 726, ptr noundef @__PRETTY_FUNCTION__._glfwCreateContextEGL) #7
  unreachable

485:                                              ; preds = %483
  %486 = load i32, ptr %12, align 4, !tbaa !9
  %487 = add nsw i32 %486, 1
  store i32 %487, ptr %12, align 4, !tbaa !9
  %488 = sext i32 %486 to i64
  %489 = getelementptr inbounds [40 x i32], ptr %8, i64 0, i64 %488
  store i32 12374, ptr %489, align 4, !tbaa !9
  %490 = load i32, ptr %17, align 4, !tbaa !9
  %491 = load i32, ptr %12, align 4, !tbaa !9
  %492 = add nsw i32 %491, 1
  store i32 %492, ptr %12, align 4, !tbaa !9
  %493 = sext i32 %491 to i64
  %494 = getelementptr inbounds [40 x i32], ptr %8, i64 0, i64 %493
  store i32 %490, ptr %494, align 4, !tbaa !9
  call void @llvm.lifetime.end.p0(i64 4, ptr %17) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %16) #6
  br label %495

495:                                              ; preds = %485, %457
  %496 = load i32, ptr %12, align 4, !tbaa !9
  %497 = sext i32 %496 to i64
  %498 = add i64 %497, 1
  %499 = icmp ult i64 %498, 40
  br i1 %499, label %500, label %501

500:                                              ; preds = %495
  br label %502

501:                                              ; preds = %495
  call void @__assert_fail(ptr noundef @.str.43, ptr noundef @.str.44, i32 noundef 729, ptr noundef @__PRETTY_FUNCTION__._glfwCreateContextEGL) #7
  unreachable

502:                                              ; preds = %500
  %503 = load i32, ptr %12, align 4, !tbaa !9
  %504 = add nsw i32 %503, 1
  store i32 %504, ptr %12, align 4, !tbaa !9
  %505 = sext i32 %503 to i64
  %506 = getelementptr inbounds [40 x i32], ptr %8, i64 0, i64 %505
  store i32 12344, ptr %506, align 4, !tbaa !9
  %507 = load i32, ptr %12, align 4, !tbaa !9
  %508 = add nsw i32 %507, 1
  store i32 %508, ptr %12, align 4, !tbaa !9
  %509 = sext i32 %507 to i64
  %510 = getelementptr inbounds [40 x i32], ptr %8, i64 0, i64 %509
  store i32 12344, ptr %510, align 4, !tbaa !9
  %511 = load ptr, ptr getelementptr inbounds (%struct._GLFWplatform, ptr getelementptr inbounds (%struct._GLFWlibrary, ptr @_glfw, i32 0, i32 2), i32 0, i32 68), align 8, !tbaa !70
  %512 = load ptr, ptr %5, align 8, !tbaa !5
  %513 = call ptr %511(ptr noundef %512)
  store ptr %513, ptr %11, align 8, !tbaa !5
  %514 = load i32, ptr getelementptr inbounds (%struct._GLFWlibrary, ptr @_glfw, i32 0, i32 17), align 8, !tbaa !68
  %515 = icmp ne i32 %514, 0
  br i1 %515, label %516, label %519

516:                                              ; preds = %502
  %517 = load i32, ptr getelementptr inbounds (%struct._GLFWlibrary, ptr @_glfw, i32 0, i32 17), align 8, !tbaa !68
  %518 = icmp eq i32 %517, 12802
  br i1 %518, label %519, label %530

519:                                              ; preds = %516, %502
  %520 = load ptr, ptr getelementptr inbounds (%struct.anon.9, ptr getelementptr inbounds (%struct._GLFWlibrary, ptr @_glfw, i32 0, i32 17), i32 0, i32 32), align 8, !tbaa !71
  %521 = load ptr, ptr getelementptr inbounds (%struct.anon.9, ptr getelementptr inbounds (%struct._GLFWlibrary, ptr @_glfw, i32 0, i32 17), i32 0, i32 1), align 8, !tbaa !11
  %522 = load ptr, ptr %9, align 8, !tbaa !5
  %523 = load ptr, ptr %11, align 8, !tbaa !5
  %524 = getelementptr inbounds [40 x i32], ptr %8, i64 0, i64 0
  %525 = call ptr %520(ptr noundef %521, ptr noundef %522, ptr noundef %523, ptr noundef %524)
  %526 = load ptr, ptr %5, align 8, !tbaa !5
  %527 = getelementptr inbounds %struct._GLFWwindow, ptr %526, i32 0, i32 30
  %528 = getelementptr inbounds %struct._GLFWcontext, ptr %527, i32 0, i32 20
  %529 = getelementptr inbounds %struct.anon.13, ptr %528, i32 0, i32 2
  store ptr %525, ptr %529, align 8, !tbaa !72
  br label %555

530:                                              ; preds = %516
  %531 = load i32, ptr getelementptr inbounds (%struct._GLFWlibrary, ptr @_glfw, i32 0, i32 17), align 8, !tbaa !68
  %532 = icmp eq i32 %531, 12765
  br i1 %532, label %533, label %543

533:                                              ; preds = %530
  %534 = load ptr, ptr getelementptr inbounds (%struct.anon.9, ptr getelementptr inbounds (%struct._GLFWlibrary, ptr @_glfw, i32 0, i32 17), i32 0, i32 33), align 8, !tbaa !73
  %535 = load ptr, ptr getelementptr inbounds (%struct.anon.9, ptr getelementptr inbounds (%struct._GLFWlibrary, ptr @_glfw, i32 0, i32 17), i32 0, i32 1), align 8, !tbaa !11
  %536 = load ptr, ptr %9, align 8, !tbaa !5
  %537 = getelementptr inbounds [40 x i32], ptr %8, i64 0, i64 0
  %538 = call ptr %534(ptr noundef %535, ptr noundef %536, ptr noundef %537)
  %539 = load ptr, ptr %5, align 8, !tbaa !5
  %540 = getelementptr inbounds %struct._GLFWwindow, ptr %539, i32 0, i32 30
  %541 = getelementptr inbounds %struct._GLFWcontext, ptr %540, i32 0, i32 20
  %542 = getelementptr inbounds %struct.anon.13, ptr %541, i32 0, i32 2
  store ptr %538, ptr %542, align 8, !tbaa !72
  br label %554

543:                                              ; preds = %530
  %544 = load ptr, ptr getelementptr inbounds (%struct.anon.9, ptr getelementptr inbounds (%struct._GLFWlibrary, ptr @_glfw, i32 0, i32 17), i32 0, i32 40), align 8, !tbaa !74
  %545 = load ptr, ptr getelementptr inbounds (%struct.anon.9, ptr getelementptr inbounds (%struct._GLFWlibrary, ptr @_glfw, i32 0, i32 17), i32 0, i32 1), align 8, !tbaa !11
  %546 = load ptr, ptr %9, align 8, !tbaa !5
  %547 = load ptr, ptr %11, align 8, !tbaa !5
  %548 = getelementptr inbounds [40 x i32], ptr %8, i64 0, i64 0
  %549 = call ptr %544(ptr noundef %545, ptr noundef %546, ptr noundef %547, ptr noundef %548)
  %550 = load ptr, ptr %5, align 8, !tbaa !5
  %551 = getelementptr inbounds %struct._GLFWwindow, ptr %550, i32 0, i32 30
  %552 = getelementptr inbounds %struct._GLFWcontext, ptr %551, i32 0, i32 20
  %553 = getelementptr inbounds %struct.anon.13, ptr %552, i32 0, i32 2
  store ptr %549, ptr %553, align 8, !tbaa !72
  br label %554

554:                                              ; preds = %543, %533
  br label %555

555:                                              ; preds = %554, %519
  %556 = load ptr, ptr %5, align 8, !tbaa !5
  %557 = getelementptr inbounds %struct._GLFWwindow, ptr %556, i32 0, i32 30
  %558 = getelementptr inbounds %struct._GLFWcontext, ptr %557, i32 0, i32 20
  %559 = getelementptr inbounds %struct.anon.13, ptr %558, i32 0, i32 2
  %560 = load ptr, ptr %559, align 8, !tbaa !72
  %561 = icmp eq ptr %560, null
  br i1 %561, label %562, label %566

562:                                              ; preds = %555
  %563 = load ptr, ptr getelementptr inbounds (%struct.anon.9, ptr getelementptr inbounds (%struct._GLFWlibrary, ptr @_glfw, i32 0, i32 17), i32 0, i32 25), align 8, !tbaa !49
  %564 = call i32 %563()
  %565 = call ptr @getEGLErrorString(i32 noundef %564)
  call void (i32, ptr, ...) @_glfwInputError(i32 noundef 65544, ptr noundef @.str.46, ptr noundef %565)
  store i32 0, ptr %4, align 4
  store i32 1, ptr %13, align 4
  br label %664

566:                                              ; preds = %555
  %567 = load ptr, ptr %9, align 8, !tbaa !5
  %568 = load ptr, ptr %5, align 8, !tbaa !5
  %569 = getelementptr inbounds %struct._GLFWwindow, ptr %568, i32 0, i32 30
  %570 = getelementptr inbounds %struct._GLFWcontext, ptr %569, i32 0, i32 20
  %571 = getelementptr inbounds %struct.anon.13, ptr %570, i32 0, i32 0
  store ptr %567, ptr %571, align 8, !tbaa !75
  %572 = load i32, ptr getelementptr inbounds (%struct.anon.9, ptr getelementptr inbounds (%struct._GLFWlibrary, ptr @_glfw, i32 0, i32 17), i32 0, i32 8), align 8, !tbaa !76
  %573 = icmp ne i32 %572, 0
  br i1 %573, label %645, label %574

574:                                              ; preds = %566
  call void @llvm.lifetime.start.p0(i64 4, ptr %18) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr %19) #6
  call void @llvm.lifetime.start.p0(i64 24, ptr %20) #6
  call void @llvm.memcpy.p0.p0.i64(ptr align 16 %20, ptr align 16 @__const._glfwCreateContextEGL.es1sonames, i64 24, i1 false)
  call void @llvm.lifetime.start.p0(i64 16, ptr %21) #6
  call void @llvm.memcpy.p0.p0.i64(ptr align 16 %21, ptr align 16 @__const._glfwCreateContextEGL.es2sonames, i64 16, i1 false)
  call void @llvm.lifetime.start.p0(i64 24, ptr %22) #6
  call void @llvm.memcpy.p0.p0.i64(ptr align 16 %22, ptr align 16 @__const._glfwCreateContextEGL.glsonames, i64 24, i1 false)
  %575 = load ptr, ptr %6, align 8, !tbaa !5
  %576 = getelementptr inbounds %struct._GLFWctxconfig, ptr %575, i32 0, i32 0
  %577 = load i32, ptr %576, align 8, !tbaa !47
  %578 = icmp eq i32 %577, 196610
  br i1 %578, label %579, label %589

579:                                              ; preds = %574
  %580 = load ptr, ptr %6, align 8, !tbaa !5
  %581 = getelementptr inbounds %struct._GLFWctxconfig, ptr %580, i32 0, i32 2
  %582 = load i32, ptr %581, align 8, !tbaa !55
  %583 = icmp eq i32 %582, 1
  br i1 %583, label %584, label %586

584:                                              ; preds = %579
  %585 = getelementptr inbounds [3 x ptr], ptr %20, i64 0, i64 0
  store ptr %585, ptr %19, align 8, !tbaa !5
  br label %588

586:                                              ; preds = %579
  %587 = getelementptr inbounds [2 x ptr], ptr %21, i64 0, i64 0
  store ptr %587, ptr %19, align 8, !tbaa !5
  br label %588

588:                                              ; preds = %586, %584
  br label %591

589:                                              ; preds = %574
  %590 = getelementptr inbounds [3 x ptr], ptr %22, i64 0, i64 0
  store ptr %590, ptr %19, align 8, !tbaa !5
  br label %591

591:                                              ; preds = %589, %588
  store i32 0, ptr %18, align 4, !tbaa !9
  br label %592

592:                                              ; preds = %630, %591
  %593 = load ptr, ptr %19, align 8, !tbaa !5
  %594 = load i32, ptr %18, align 4, !tbaa !9
  %595 = sext i32 %594 to i64
  %596 = getelementptr inbounds ptr, ptr %593, i64 %595
  %597 = load ptr, ptr %596, align 8, !tbaa !5
  %598 = icmp ne ptr %597, null
  br i1 %598, label %599, label %633

599:                                              ; preds = %592
  %600 = load i32, ptr getelementptr inbounds (%struct.anon.9, ptr getelementptr inbounds (%struct._GLFWlibrary, ptr @_glfw, i32 0, i32 17), i32 0, i32 4), align 8, !tbaa !77
  %601 = load ptr, ptr %19, align 8, !tbaa !5
  %602 = load i32, ptr %18, align 4, !tbaa !9
  %603 = sext i32 %602 to i64
  %604 = getelementptr inbounds ptr, ptr %601, i64 %603
  %605 = load ptr, ptr %604, align 8, !tbaa !5
  %606 = call i32 @strncmp(ptr noundef %605, ptr noundef @.str.2, i64 noundef 3) #8
  %607 = icmp eq i32 %606, 0
  %608 = zext i1 %607 to i32
  %609 = icmp ne i32 %600, %608
  br i1 %609, label %610, label %611

610:                                              ; preds = %599
  br label %630

611:                                              ; preds = %599
  %612 = load ptr, ptr %19, align 8, !tbaa !5
  %613 = load i32, ptr %18, align 4, !tbaa !9
  %614 = sext i32 %613 to i64
  %615 = getelementptr inbounds ptr, ptr %612, i64 %614
  %616 = load ptr, ptr %615, align 8, !tbaa !5
  %617 = call ptr @_glfwPlatformLoadModule(ptr noundef %616)
  %618 = load ptr, ptr %5, align 8, !tbaa !5
  %619 = getelementptr inbounds %struct._GLFWwindow, ptr %618, i32 0, i32 30
  %620 = getelementptr inbounds %struct._GLFWcontext, ptr %619, i32 0, i32 20
  %621 = getelementptr inbounds %struct.anon.13, ptr %620, i32 0, i32 3
  store ptr %617, ptr %621, align 8, !tbaa !78
  %622 = load ptr, ptr %5, align 8, !tbaa !5
  %623 = getelementptr inbounds %struct._GLFWwindow, ptr %622, i32 0, i32 30
  %624 = getelementptr inbounds %struct._GLFWcontext, ptr %623, i32 0, i32 20
  %625 = getelementptr inbounds %struct.anon.13, ptr %624, i32 0, i32 3
  %626 = load ptr, ptr %625, align 8, !tbaa !78
  %627 = icmp ne ptr %626, null
  br i1 %627, label %628, label %629

628:                                              ; preds = %611
  br label %633

629:                                              ; preds = %611
  br label %630

630:                                              ; preds = %629, %610
  %631 = load i32, ptr %18, align 4, !tbaa !9
  %632 = add nsw i32 %631, 1
  store i32 %632, ptr %18, align 4, !tbaa !9
  br label %592, !llvm.loop !79

633:                                              ; preds = %628, %592
  %634 = load ptr, ptr %5, align 8, !tbaa !5
  %635 = getelementptr inbounds %struct._GLFWwindow, ptr %634, i32 0, i32 30
  %636 = getelementptr inbounds %struct._GLFWcontext, ptr %635, i32 0, i32 20
  %637 = getelementptr inbounds %struct.anon.13, ptr %636, i32 0, i32 3
  %638 = load ptr, ptr %637, align 8, !tbaa !78
  %639 = icmp ne ptr %638, null
  br i1 %639, label %641, label %640

640:                                              ; preds = %633
  call void (i32, ptr, ...) @_glfwInputError(i32 noundef 65542, ptr noundef @.str.52)
  store i32 0, ptr %4, align 4
  store i32 1, ptr %13, align 4
  br label %642

641:                                              ; preds = %633
  store i32 0, ptr %13, align 4
  br label %642

642:                                              ; preds = %641, %640
  call void @llvm.lifetime.end.p0(i64 24, ptr %22) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr %21) #6
  call void @llvm.lifetime.end.p0(i64 24, ptr %20) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %19) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %18) #6
  %643 = load i32, ptr %13, align 4
  switch i32 %643, label %664 [
    i32 0, label %644
  ]

644:                                              ; preds = %642
  br label %645

645:                                              ; preds = %644, %566
  %646 = load ptr, ptr %5, align 8, !tbaa !5
  %647 = getelementptr inbounds %struct._GLFWwindow, ptr %646, i32 0, i32 30
  %648 = getelementptr inbounds %struct._GLFWcontext, ptr %647, i32 0, i32 14
  store ptr @makeContextCurrentEGL, ptr %648, align 8, !tbaa !81
  %649 = load ptr, ptr %5, align 8, !tbaa !5
  %650 = getelementptr inbounds %struct._GLFWwindow, ptr %649, i32 0, i32 30
  %651 = getelementptr inbounds %struct._GLFWcontext, ptr %650, i32 0, i32 15
  store ptr @swapBuffersEGL, ptr %651, align 8, !tbaa !82
  %652 = load ptr, ptr %5, align 8, !tbaa !5
  %653 = getelementptr inbounds %struct._GLFWwindow, ptr %652, i32 0, i32 30
  %654 = getelementptr inbounds %struct._GLFWcontext, ptr %653, i32 0, i32 16
  store ptr @swapIntervalEGL, ptr %654, align 8, !tbaa !83
  %655 = load ptr, ptr %5, align 8, !tbaa !5
  %656 = getelementptr inbounds %struct._GLFWwindow, ptr %655, i32 0, i32 30
  %657 = getelementptr inbounds %struct._GLFWcontext, ptr %656, i32 0, i32 17
  store ptr @extensionSupportedEGL, ptr %657, align 8, !tbaa !84
  %658 = load ptr, ptr %5, align 8, !tbaa !5
  %659 = getelementptr inbounds %struct._GLFWwindow, ptr %658, i32 0, i32 30
  %660 = getelementptr inbounds %struct._GLFWcontext, ptr %659, i32 0, i32 18
  store ptr @getProcAddressEGL, ptr %660, align 8, !tbaa !85
  %661 = load ptr, ptr %5, align 8, !tbaa !5
  %662 = getelementptr inbounds %struct._GLFWwindow, ptr %661, i32 0, i32 30
  %663 = getelementptr inbounds %struct._GLFWcontext, ptr %662, i32 0, i32 19
  store ptr @destroyContextEGL, ptr %663, align 8, !tbaa !86
  store i32 1, ptr %4, align 4
  store i32 1, ptr %13, align 4
  br label %664

664:                                              ; preds = %645, %642, %562, %378, %63, %54, %44, %25
  call void @llvm.lifetime.end.p0(i64 4, ptr %12) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %11) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %10) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %9) #6
  call void @llvm.lifetime.end.p0(i64 160, ptr %8) #6
  %665 = load i32, ptr %4, align 4
  ret i32 %665
}

; Function Attrs: nounwind uwtable
declare hidden i32 @chooseEGLConfig(ptr noundef, ptr noundef, ptr noundef) #4

; Function Attrs: noreturn nounwind
declare void @__assert_fail(ptr noundef, ptr noundef, i32 noundef, ptr noundef) #5

; Function Attrs: nounwind uwtable
declare hidden void @makeContextCurrentEGL(ptr noundef) #4

; Function Attrs: nounwind uwtable
declare hidden void @swapBuffersEGL(ptr noundef) #4

; Function Attrs: nounwind uwtable
declare hidden void @swapIntervalEGL(i32 noundef) #4

; Function Attrs: nounwind uwtable
declare hidden ptr @getProcAddressEGL(ptr noundef) #4

; Function Attrs: nounwind uwtable
declare hidden void @destroyContextEGL(ptr noundef) #4

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C/C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"int", !7, i64 0}
!11 = !{!12, !6, i64 5888}
!12 = !{!"_GLFWlibrary", !10, i64 0, !13, i64 8, !14, i64 40, !15, i64 616, !6, i64 1896, !6, i64 1904, !6, i64 1912, !6, i64 1920, !10, i64 1928, !10, i64 1932, !7, i64 1936, !6, i64 5776, !10, i64 5784, !25, i64 5788, !25, i64 5796, !27, i64 5808, !29, i64 5856, !31, i64 5880, !32, i64 6136, !33, i64 6200, !34, i64 6272, !35, i64 6288}
!13 = !{!"GLFWallocator", !6, i64 0, !6, i64 8, !6, i64 16, !6, i64 24}
!14 = !{!"_GLFWplatform", !10, i64 0, !6, i64 8, !6, i64 16, !6, i64 24, !6, i64 32, !6, i64 40, !6, i64 48, !6, i64 56, !6, i64 64, !6, i64 72, !6, i64 80, !6, i64 88, !6, i64 96, !6, i64 104, !6, i64 112, !6, i64 120, !6, i64 128, !6, i64 136, !6, i64 144, !6, i64 152, !6, i64 160, !6, i64 168, !6, i64 176, !6, i64 184, !6, i64 192, !6, i64 200, !6, i64 208, !6, i64 216, !6, i64 224, !6, i64 232, !6, i64 240, !6, i64 248, !6, i64 256, !6, i64 264, !6, i64 272, !6, i64 280, !6, i64 288, !6, i64 296, !6, i64 304, !6, i64 312, !6, i64 320, !6, i64 328, !6, i64 336, !6, i64 344, !6, i64 352, !6, i64 360, !6, i64 368, !6, i64 376, !6, i64 384, !6, i64 392, !6, i64 400, !6, i64 408, !6, i64 416, !6, i64 424, !6, i64 432, !6, i64 440, !6, i64 448, !6, i64 456, !6, i64 464, !6, i64 472, !6, i64 480, !6, i64 488, !6, i64 496, !6, i64 504, !6, i64 512, !6, i64 520, !6, i64 528, !6, i64 536, !6, i64 544, !6, i64 552, !6, i64 560, !6, i64 568}
!15 = !{!"", !16, i64 0, !19, i64 40, !21, i64 112, !24, i64 1216, !10, i64 1272}
!16 = !{!"_GLFWinitconfig", !10, i64 0, !10, i64 4, !10, i64 8, !6, i64 16, !17, i64 24, !18, i64 32, !18, i64 36}
!17 = !{!"", !10, i64 0, !10, i64 4}
!18 = !{!"", !10, i64 0}
!19 = !{!"_GLFWfbconfig", !10, i64 0, !10, i64 4, !10, i64 8, !10, i64 12, !10, i64 16, !10, i64 20, !10, i64 24, !10, i64 28, !10, i64 32, !10, i64 36, !10, i64 40, !10, i64 44, !10, i64 48, !10, i64 52, !10, i64 56, !10, i64 60, !20, i64 64}
!20 = !{!"long", !7, i64 0}
!21 = !{!"_GLFWwndconfig", !10, i64 0, !10, i64 4, !10, i64 8, !10, i64 12, !6, i64 16, !10, i64 24, !10, i64 28, !10, i64 32, !10, i64 36, !10, i64 40, !10, i64 44, !10, i64 48, !10, i64 52, !10, i64 56, !10, i64 60, !10, i64 64, !10, i64 68, !22, i64 72, !23, i64 328, !17, i64 840, !22, i64 848}
!22 = !{!"", !7, i64 0}
!23 = !{!"", !7, i64 0, !7, i64 256}
!24 = !{!"_GLFWctxconfig", !10, i64 0, !10, i64 4, !10, i64 8, !10, i64 12, !10, i64 16, !10, i64 20, !10, i64 24, !10, i64 28, !10, i64 32, !10, i64 36, !6, i64 40, !18, i64 48}
!25 = !{!"_GLFWtls", !26, i64 0}
!26 = !{!"_GLFWtlsPOSIX", !10, i64 0, !10, i64 4}
!27 = !{!"_GLFWmutex", !28, i64 0}
!28 = !{!"_GLFWmutexPOSIX", !10, i64 0, !7, i64 8}
!29 = !{!"", !20, i64 0, !30, i64 8}
!30 = !{!"_GLFWtimerPOSIX", !10, i64 0, !20, i64 8}
!31 = !{!"", !10, i64 0, !6, i64 8, !10, i64 16, !10, i64 20, !10, i64 24, !10, i64 28, !10, i64 32, !10, i64 36, !10, i64 40, !10, i64 44, !10, i64 48, !10, i64 52, !10, i64 56, !10, i64 60, !10, i64 64, !10, i64 68, !10, i64 72, !10, i64 76, !10, i64 80, !10, i64 84, !10, i64 88, !6, i64 96, !6, i64 104, !6, i64 112, !6, i64 120, !6, i64 128, !6, i64 136, !6, i64 144, !6, i64 152, !6, i64 160, !6, i64 168, !6, i64 176, !6, i64 184, !6, i64 192, !6, i64 200, !6, i64 208, !6, i64 216, !6, i64 224, !6, i64 232, !6, i64 240, !6, i64 248}
!32 = !{!"", !6, i64 0, !6, i64 8, !6, i64 16, !6, i64 24, !6, i64 32, !6, i64 40, !6, i64 48, !6, i64 56}
!33 = !{!"", !10, i64 0, !6, i64 8, !7, i64 16, !6, i64 32, !10, i64 40, !10, i64 44, !10, i64 48, !10, i64 52, !10, i64 56, !10, i64 60, !10, i64 64, !10, i64 68}
!34 = !{!"", !6, i64 0, !6, i64 8}
!35 = !{!"_GLFWlibraryNull", !10, i64 0, !10, i64 4, !6, i64 8, !6, i64 16, !7, i64 24, !7, i64 266}
!36 = !{!24, !6, i64 40}
!37 = !{!38, !6, i64 664}
!38 = !{!"_GLFWwindow", !6, i64 0, !10, i64 8, !10, i64 12, !10, i64 16, !10, i64 20, !10, i64 24, !10, i64 28, !10, i64 32, !6, i64 40, !10, i64 48, !39, i64 52, !6, i64 80, !6, i64 88, !6, i64 96, !10, i64 104, !10, i64 108, !10, i64 112, !10, i64 116, !10, i64 120, !10, i64 124, !10, i64 128, !10, i64 132, !10, i64 136, !10, i64 140, !10, i64 144, !7, i64 148, !7, i64 156, !40, i64 512, !40, i64 520, !10, i64 528, !41, i64 536, !44, i64 712, !45, i64 848}
!39 = !{!"GLFWvidmode", !10, i64 0, !10, i64 4, !10, i64 8, !10, i64 12, !10, i64 16, !10, i64 20}
!40 = !{!"double", !7, i64 0}
!41 = !{!"_GLFWcontext", !10, i64 0, !10, i64 4, !10, i64 8, !10, i64 12, !10, i64 16, !10, i64 20, !10, i64 24, !10, i64 28, !10, i64 32, !10, i64 36, !10, i64 40, !6, i64 48, !6, i64 56, !6, i64 64, !6, i64 72, !6, i64 80, !6, i64 88, !6, i64 96, !6, i64 104, !6, i64 112, !42, i64 120, !43, i64 152}
!42 = !{!"", !6, i64 0, !6, i64 8, !6, i64 16, !6, i64 24}
!43 = !{!"", !6, i64 0, !10, i64 8, !10, i64 12, !6, i64 16}
!44 = !{!"", !6, i64 0, !6, i64 8, !6, i64 16, !6, i64 24, !6, i64 32, !6, i64 40, !6, i64 48, !6, i64 56, !6, i64 64, !6, i64 72, !6, i64 80, !6, i64 88, !6, i64 96, !6, i64 104, !6, i64 112, !6, i64 120, !6, i64 128}
!45 = !{!"_GLFWwindowNull", !10, i64 0, !10, i64 4, !10, i64 8, !10, i64 12, !10, i64 16, !10, i64 20, !10, i64 24, !10, i64 28, !10, i64 32, !10, i64 36, !10, i64 40, !46, i64 44}
!46 = !{!"float", !7, i64 0}
!47 = !{!24, !10, i64 0}
!48 = !{!12, !6, i64 6032}
!49 = !{!12, !6, i64 6008}
!50 = !{!12, !10, i64 5908}
!51 = !{!24, !10, i64 16}
!52 = !{!24, !10, i64 28}
!53 = !{!24, !10, i64 20}
!54 = !{!24, !10, i64 32}
!55 = !{!24, !10, i64 8}
!56 = !{!24, !10, i64 12}
!57 = !{!24, !10, i64 24}
!58 = !{!12, !10, i64 5912}
!59 = !{!12, !10, i64 5924}
!60 = !{!24, !10, i64 36}
!61 = !{!12, !6, i64 6040}
!62 = !{!19, !10, i64 52}
!63 = !{!12, !10, i64 5916}
!64 = !{!19, !10, i64 56}
!65 = !{!12, !10, i64 40}
!66 = !{!12, !10, i64 5944}
!67 = !{!19, !10, i64 60}
!68 = !{!12, !10, i64 5880}
!69 = !{!12, !6, i64 352}
!70 = !{!12, !6, i64 584}
!71 = !{!12, !6, i64 6064}
!72 = !{!38, !6, i64 672}
!73 = !{!12, !6, i64 6072}
!74 = !{!12, !6, i64 6128}
!75 = !{!38, !6, i64 656}
!76 = !{!12, !10, i64 5920}
!77 = !{!12, !10, i64 5904}
!78 = !{!38, !6, i64 680}
!79 = distinct !{!79, !80}
!80 = !{!"llvm.loop.mustprogress"}
!81 = !{!38, !6, i64 608}
!82 = !{!38, !6, i64 616}
!83 = !{!38, !6, i64 624}
!84 = !{!38, !6, i64 632}
!85 = !{!38, !6, i64 640}
!86 = !{!38, !6, i64 648}


; 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._GLFWlibrary = type { i32, %struct.GLFWallocator, %struct._GLFWplatform, %struct.anon, ptr, ptr, ptr, ptr, i32, i32, [16 x %struct._GLFWjoystick], ptr, i32, %struct._GLFWtls, %struct._GLFWtls, %struct._GLFWmutex, %struct.anon.8, %struct.anon.9, %struct.anon.10, %struct.anon.11, %struct.anon.12, %struct._GLFWlibraryNull }
%struct.GLFWallocator = type { ptr, ptr, ptr, ptr }
%struct._GLFWplatform = type { i32, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr }
%struct.anon = type { %struct._GLFWinitconfig, %struct._GLFWfbconfig, %struct._GLFWwndconfig, %struct._GLFWctxconfig, i32 }
%struct._GLFWinitconfig = type { i32, i32, i32, ptr, %struct.anon.0, %struct.anon.1, %struct.anon.2 }
%struct.anon.0 = type { i32, i32 }
%struct.anon.1 = type { i32 }
%struct.anon.2 = type { i32 }
%struct._GLFWfbconfig = type { i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i64 }
%struct._GLFWwndconfig = type { i32, i32, i32, i32, ptr, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, %struct.anon.3, %struct.anon.4, %struct.anon.5, %struct.anon.6 }
%struct.anon.3 = type { [256 x i8] }
%struct.anon.4 = type { [256 x i8], [256 x i8] }
%struct.anon.5 = type { i32, i32 }
%struct.anon.6 = type { [256 x i8] }
%struct._GLFWctxconfig = type { i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, ptr, %struct.anon.7 }
%struct.anon.7 = type { i32 }
%struct._GLFWjoystick = type { i32, i32, ptr, i32, ptr, i32, ptr, i32, [128 x i8], ptr, [33 x i8], ptr }
%struct._GLFWtls = type { %struct._GLFWtlsPOSIX }
%struct._GLFWtlsPOSIX = type { i32, i32 }
%struct._GLFWmutex = type { %struct._GLFWmutexPOSIX }
%struct._GLFWmutexPOSIX = type { i32, %union.pthread_mutex_t }
%union.pthread_mutex_t = type { %struct.__pthread_mutex_s }
%struct.__pthread_mutex_s = type { i32, i32, i32, i32, i32, i16, i16, %struct.__pthread_internal_list }
%struct.__pthread_internal_list = type { ptr, ptr }
%struct.anon.8 = type { i64, %struct._GLFWtimerPOSIX }
%struct._GLFWtimerPOSIX = type { i32, i64 }
%struct.anon.9 = type { i32, ptr, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr }
%struct.anon.10 = type { ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr }
%struct.anon.11 = type { i32, ptr, [2 x ptr], ptr, i32, i32, i32, i32, i32, i32, i32, i32 }
%struct.anon.12 = type { ptr, ptr }
%struct._GLFWlibraryNull = type { i32, i32, ptr, ptr, [121 x i16], [349 x i8] }

@_glfw = external local_unnamed_addr global %struct._GLFWlibrary, align 8
@.str.2 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.40 = external hidden unnamed_addr constant [23 x i8], align 1
@.str.41 = external hidden unnamed_addr constant [34 x i8], align 1
@.str.42 = external hidden unnamed_addr constant [31 x i8], align 1
@.str.45 = external hidden unnamed_addr constant [34 x i8], align 1
@.str.46 = external hidden unnamed_addr constant [41 x i8], align 1
@__const._glfwCreateContextEGL.es1sonames = external hidden unnamed_addr constant [3 x ptr], align 16
@__const._glfwCreateContextEGL.es2sonames = external hidden unnamed_addr constant [2 x ptr], align 16
@__const._glfwCreateContextEGL.glsonames = external hidden unnamed_addr constant [3 x ptr], align 16
@.str.52 = external hidden unnamed_addr constant [35 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

declare ptr @_glfwPlatformLoadModule(ptr noundef) local_unnamed_addr #1

declare void @_glfwInputError(i32 noundef, ptr noundef, ...) local_unnamed_addr #1

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

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

; Function Attrs: nounwind uwtable
declare hidden i32 @extensionSupportedEGL(ptr noundef) #3

; 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
define dso_local range(i32 0, 2) i32 @_glfwCreateContextEGL(ptr noundef %0, ptr noundef %1, ptr noundef %2) local_unnamed_addr #3 {
  %4 = alloca [40 x i32], align 16
  %5 = alloca ptr, align 8
  %6 = alloca i32, align 4
  %7 = alloca i32, align 4
  call void @llvm.lifetime.start.p0(i64 160, ptr nonnull %4) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %5) #4
  %8 = load ptr, ptr getelementptr inbounds (i8, ptr @_glfw, i64 5888), align 8, !tbaa !5
  %.not = icmp eq ptr %8, null
  br i1 %.not, label %9, label %10

9:                                                ; preds = %3
  tail call void (i32, ptr, ...) @_glfwInputError(i32 noundef 65542, ptr noundef nonnull @.str.40) #4
  br label %253

10:                                               ; preds = %3
  %11 = getelementptr inbounds i8, ptr %1, i64 40
  %12 = load ptr, ptr %11, align 8, !tbaa !34
  %.not140 = icmp eq ptr %12, null
  br i1 %.not140, label %16, label %13

13:                                               ; preds = %10
  %14 = getelementptr inbounds i8, ptr %12, i64 664
  %15 = load ptr, ptr %14, align 8, !tbaa !35
  br label %16

16:                                               ; preds = %13, %10
  %.0133 = phi ptr [ %15, %13 ], [ null, %10 ]
  %17 = call i32 @chooseEGLConfig(ptr noundef nonnull %1, ptr noundef %2, ptr noundef nonnull %5)
  %.not141 = icmp eq i32 %17, 0
  br i1 %.not141, label %253, label %18

18:                                               ; preds = %16
  %19 = load i32, ptr %1, align 8, !tbaa !45
  %20 = icmp eq i32 %19, 196610
  %21 = load ptr, ptr getelementptr inbounds (i8, ptr @_glfw, i64 6032), align 8, !tbaa !46
  br i1 %20, label %22, label %28

22:                                               ; preds = %18
  %23 = call i32 %21(i32 noundef 12448) #4
  %.not143 = icmp eq i32 %23, 0
  br i1 %.not143, label %24, label %34

24:                                               ; preds = %22
  %25 = load ptr, ptr getelementptr inbounds (i8, ptr @_glfw, i64 6008), align 8, !tbaa !47
  %26 = call i32 %25() #4
  %27 = call ptr @getEGLErrorString(i32 noundef %26)
  call void (i32, ptr, ...) @_glfwInputError(i32 noundef 65542, ptr noundef nonnull @.str.41, ptr noundef %27) #4
  br label %253

28:                                               ; preds = %18
  %29 = call i32 %21(i32 noundef 12450) #4
  %.not142 = icmp eq i32 %29, 0
  br i1 %.not142, label %30, label %34

30:                                               ; preds = %28
  %31 = load ptr, ptr getelementptr inbounds (i8, ptr @_glfw, i64 6008), align 8, !tbaa !47
  %32 = call i32 %31() #4
  %33 = call ptr @getEGLErrorString(i32 noundef %32)
  call void (i32, ptr, ...) @_glfwInputError(i32 noundef 65542, ptr noundef nonnull @.str.42, ptr noundef %33) #4
  br label %253

34:                                               ; preds = %28, %22
  %35 = load i32, ptr getelementptr inbounds (i8, ptr @_glfw, i64 5908), align 4, !tbaa !48
  %.not144 = icmp eq i32 %35, 0
  %36 = load i32, ptr %1, align 8, !tbaa !45
  br i1 %.not144, label %101, label %37

37:                                               ; preds = %34
  %38 = icmp eq i32 %36, 196609
  br i1 %38, label %39, label %45

39:                                               ; preds = %37
  %40 = getelementptr inbounds i8, ptr %1, i64 16
  %41 = load i32, ptr %40, align 8, !tbaa !49
  %.not145 = icmp eq i32 %41, 0
  %spec.select = select i1 %.not145, i32 0, i32 2
  %42 = getelementptr inbounds i8, ptr %1, i64 28
  %43 = load i32, ptr %42, align 4, !tbaa !50
  switch i32 %43, label %.fold.split [
    i32 204801, label %45
    i32 204802, label %44
  ]

44:                                               ; preds = %39
  br label %45

.fold.split:                                      ; preds = %39
  br label %45

45:                                               ; preds = %39, %.fold.split, %44, %37
  %.not150 = phi i1 [ false, %44 ], [ true, %37 ], [ false, %39 ], [ true, %.fold.split ]
  %.0125 = phi i32 [ 2, %44 ], [ 0, %37 ], [ 1, %39 ], [ 0, %.fold.split ]
  %.1 = phi i32 [ %spec.select, %44 ], [ 0, %37 ], [ %spec.select, %39 ], [ %spec.select, %.fold.split ]
  %46 = getelementptr inbounds i8, ptr %1, i64 20
  %47 = load i32, ptr %46, align 4, !tbaa !51
  %.not146 = icmp ne i32 %47, 0
  %48 = zext i1 %.not146 to i32
  %spec.select160 = or disjoint i32 %.1, %48
  %49 = getelementptr inbounds i8, ptr %1, i64 32
  %50 = load i32, ptr %49, align 8, !tbaa !52
  switch i32 %50, label %53 [
    i32 0, label %55
    i32 200705, label %.sink.split
    i32 200706, label %51
  ]

51:                                               ; preds = %45
  br label %.sink.split

.sink.split:                                      ; preds = %45, %51
  %.sink = phi i32 [ 12735, %51 ], [ 12734, %45 ]
  store i32 12733, ptr %4, align 16, !tbaa !53
  %52 = getelementptr inbounds i8, ptr %4, i64 4
  store i32 %.sink, ptr %52, align 4, !tbaa !53
  br label %53

53:                                               ; preds = %.sink.split, %45
  %.0127 = phi i32 [ 0, %45 ], [ 2, %.sink.split ]
  %54 = or disjoint i32 %spec.select160, 4
  br label %55

55:                                               ; preds = %45, %53
  %.1128 = phi i32 [ %.0127, %53 ], [ %50, %45 ]
  %.3 = phi i32 [ %54, %53 ], [ %spec.select160, %45 ]
  %56 = getelementptr inbounds i8, ptr %1, i64 8
  %57 = load i32, ptr %56, align 8, !tbaa !54
  %.not148 = icmp eq i32 %57, 1
  %58 = getelementptr inbounds i8, ptr %1, i64 12
  %59 = load i32, ptr %58, align 4, !tbaa !55
  %.not149 = icmp eq i32 %59, 0
  %or.cond = select i1 %.not148, i1 %.not149, i1 false
  br i1 %or.cond, label %72, label %._crit_edge165

._crit_edge165:                                   ; preds = %55
  %60 = zext nneg i32 %.1128 to i64
  %61 = add nuw nsw i32 %.1128, 1
  %62 = getelementptr inbounds [40 x i32], ptr %4, i64 0, i64 %60
  store i32 12440, ptr %62, align 4, !tbaa !53
  %63 = zext nneg i32 %61 to i64
  %64 = getelementptr inbounds [40 x i32], ptr %4, i64 0, i64 %63
  store i32 %57, ptr %64, align 4, !tbaa !53
  %65 = add nuw nsw i32 %.1128, 2
  %66 = zext nneg i32 %65 to i64
  %67 = add nuw nsw i32 %.1128, 3
  %68 = getelementptr inbounds [40 x i32], ptr %4, i64 0, i64 %66
  store i32 12539, ptr %68, align 4, !tbaa !53
  %69 = add nuw nsw i32 %.1128, 4
  %70 = zext nneg i32 %67 to i64
  %71 = getelementptr inbounds [40 x i32], ptr %4, i64 0, i64 %70
  store i32 %59, ptr %71, align 4, !tbaa !53
  br label %72

72:                                               ; preds = %55, %._crit_edge165
  %.2129 = phi i32 [ %69, %._crit_edge165 ], [ %.1128, %55 ]
  %73 = getelementptr inbounds i8, ptr %1, i64 24
  %74 = load i32, ptr %73, align 8, !tbaa !56
  %75 = icmp ne i32 %74, 0
  %76 = load i32, ptr getelementptr inbounds (i8, ptr @_glfw, i64 5912), align 8
  %77 = icmp ne i32 %76, 0
  %or.cond3 = select i1 %75, i1 %77, i1 false
  br i1 %or.cond3, label %78, label %85

78:                                               ; preds = %72
  %79 = zext nneg i32 %.2129 to i64
  %80 = add nuw nsw i32 %.2129, 1
  %81 = getelementptr inbounds [40 x i32], ptr %4, i64 0, i64 %79
  store i32 12723, ptr %81, align 4, !tbaa !53
  %82 = add nuw nsw i32 %.2129, 2
  %83 = zext nneg i32 %80 to i64
  %84 = getelementptr inbounds [40 x i32], ptr %4, i64 0, i64 %83
  store i32 1, ptr %84, align 4, !tbaa !53
  br label %85

85:                                               ; preds = %78, %72
  %.3130 = phi i32 [ %82, %78 ], [ %.2129, %72 ]
  br i1 %.not150, label %93, label %86

86:                                               ; preds = %85
  %87 = zext nneg i32 %.3130 to i64
  %88 = add nuw nsw i32 %.3130, 1
  %89 = getelementptr inbounds [40 x i32], ptr %4, i64 0, i64 %87
  store i32 12541, ptr %89, align 4, !tbaa !53
  %90 = add nuw nsw i32 %.3130, 2
  %91 = zext nneg i32 %88 to i64
  %92 = getelementptr inbounds [40 x i32], ptr %4, i64 0, i64 %91
  store i32 %.0125, ptr %92, align 4, !tbaa !53
  br label %93

93:                                               ; preds = %86, %85
  %.4 = phi i32 [ %90, %86 ], [ %.3130, %85 ]
  %.not151 = icmp eq i32 %.3, 0
  br i1 %.not151, label %107, label %94

94:                                               ; preds = %93
  %95 = zext nneg i32 %.4 to i64
  %96 = add nuw nsw i32 %.4, 1
  %97 = getelementptr inbounds [40 x i32], ptr %4, i64 0, i64 %95
  store i32 12540, ptr %97, align 4, !tbaa !53
  %98 = add nuw nsw i32 %.4, 2
  %99 = zext nneg i32 %96 to i64
  %100 = getelementptr inbounds [40 x i32], ptr %4, i64 0, i64 %99
  store i32 %.3, ptr %100, align 4, !tbaa !53
  br label %107

101:                                              ; preds = %34
  %102 = icmp eq i32 %36, 196610
  br i1 %102, label %103, label %107

103:                                              ; preds = %101
  store i32 12440, ptr %4, align 16, !tbaa !53
  %104 = getelementptr inbounds i8, ptr %1, i64 8
  %105 = load i32, ptr %104, align 8, !tbaa !54
  %106 = getelementptr inbounds i8, ptr %4, i64 4
  store i32 %105, ptr %106, align 4, !tbaa !53
  br label %107

107:                                              ; preds = %93, %94, %101, %103
  %.6 = phi i32 [ 2, %103 ], [ 0, %101 ], [ %98, %94 ], [ %.4, %93 ]
  %108 = load i32, ptr getelementptr inbounds (i8, ptr @_glfw, i64 5924), align 4, !tbaa !57
  %.not152 = icmp eq i32 %108, 0
  br i1 %.not152, label %119, label %109

109:                                              ; preds = %107
  %110 = getelementptr inbounds i8, ptr %1, i64 36
  %111 = load i32, ptr %110, align 4, !tbaa !58
  switch i32 %111, label %119 [
    i32 217090, label %.sink.split169
    i32 217089, label %112
  ]

112:                                              ; preds = %109
  br label %.sink.split169

.sink.split169:                                   ; preds = %109, %112
  %.sink170 = phi i32 [ 8344, %112 ], [ 0, %109 ]
  %113 = zext nneg i32 %.6 to i64
  %114 = add nuw nsw i32 %.6, 1
  %115 = getelementptr inbounds [40 x i32], ptr %4, i64 0, i64 %113
  store i32 8343, ptr %115, align 4, !tbaa !53
  %116 = add nuw nsw i32 %.6, 2
  %117 = zext nneg i32 %114 to i64
  %118 = getelementptr inbounds [40 x i32], ptr %4, i64 0, i64 %117
  store i32 %.sink170, ptr %118, align 4, !tbaa !53
  br label %119

119:                                              ; preds = %.sink.split169, %109, %107
  %.7 = phi i32 [ %.6, %107 ], [ %.6, %109 ], [ %116, %.sink.split169 ]
  %120 = zext nneg i32 %.7 to i64
  %121 = add nuw nsw i32 %.7, 1
  %122 = getelementptr inbounds [40 x i32], ptr %4, i64 0, i64 %120
  store i32 12344, ptr %122, align 4, !tbaa !53
  %123 = zext nneg i32 %121 to i64
  %124 = getelementptr inbounds [40 x i32], ptr %4, i64 0, i64 %123
  store i32 12344, ptr %124, align 4, !tbaa !53
  %125 = load ptr, ptr getelementptr inbounds (i8, ptr @_glfw, i64 6040), align 8, !tbaa !59
  %126 = load ptr, ptr getelementptr inbounds (i8, ptr @_glfw, i64 5888), align 8, !tbaa !5
  %127 = load ptr, ptr %5, align 8, !tbaa !60
  %128 = call ptr %125(ptr noundef %126, ptr noundef %127, ptr noundef %.0133, ptr noundef nonnull %4) #4
  %129 = getelementptr inbounds i8, ptr %0, i64 656
  %130 = getelementptr inbounds i8, ptr %0, i64 664
  store ptr %128, ptr %130, align 8, !tbaa !35
  %131 = icmp eq ptr %128, null
  br i1 %131, label %132, label %136

132:                                              ; preds = %119
  %133 = load ptr, ptr getelementptr inbounds (i8, ptr @_glfw, i64 6008), align 8, !tbaa !47
  %134 = call i32 %133() #4
  %135 = call ptr @getEGLErrorString(i32 noundef %134)
  call void (i32, ptr, ...) @_glfwInputError(i32 noundef 65543, ptr noundef nonnull @.str.45, ptr noundef %135) #4
  br label %253

136:                                              ; preds = %119
  %137 = getelementptr inbounds i8, ptr %2, i64 52
  %138 = load i32, ptr %137, align 4, !tbaa !61
  %139 = icmp ne i32 %138, 0
  %140 = load i32, ptr getelementptr inbounds (i8, ptr @_glfw, i64 5916), align 4
  %141 = icmp ne i32 %140, 0
  %or.cond5 = select i1 %139, i1 %141, i1 false
  br i1 %or.cond5, label %142, label %144

142:                                              ; preds = %136
  store i32 12445, ptr %4, align 16, !tbaa !53
  %143 = getelementptr inbounds i8, ptr %4, i64 4
  store i32 12425, ptr %143, align 4, !tbaa !53
  br label %144

144:                                              ; preds = %142, %136
  %.8 = phi i32 [ 2, %142 ], [ 0, %136 ]
  %145 = getelementptr inbounds i8, ptr %2, i64 56
  %146 = load i32, ptr %145, align 8, !tbaa !62
  %.not153 = icmp eq i32 %146, 0
  br i1 %.not153, label %147, label %154

147:                                              ; preds = %144
  %148 = zext nneg i32 %.8 to i64
  %149 = or disjoint i32 %.8, 1
  %150 = getelementptr inbounds [40 x i32], ptr %4, i64 0, i64 %148
  store i32 12422, ptr %150, align 8, !tbaa !53
  %151 = add nuw nsw i32 %.8, 2
  %152 = zext nneg i32 %149 to i64
  %153 = getelementptr inbounds [40 x i32], ptr %4, i64 0, i64 %152
  store i32 12421, ptr %153, align 4, !tbaa !53
  br label %154

154:                                              ; preds = %147, %144
  %.9 = phi i32 [ %.8, %144 ], [ %151, %147 ]
  %155 = load i32, ptr getelementptr inbounds (i8, ptr @_glfw, i64 40), align 8, !tbaa !63
  %156 = icmp eq i32 %155, 393219
  %157 = load i32, ptr getelementptr inbounds (i8, ptr @_glfw, i64 5944), align 8
  %158 = icmp ne i32 %157, 0
  %or.cond7 = select i1 %156, i1 %158, i1 false
  br i1 %or.cond7, label %159, label %169

159:                                              ; preds = %154
  %160 = zext nneg i32 %.9 to i64
  %161 = add nuw nsw i32 %.9, 1
  %162 = getelementptr inbounds [40 x i32], ptr %4, i64 0, i64 %160
  store i32 12767, ptr %162, align 4, !tbaa !53
  %163 = getelementptr inbounds i8, ptr %2, i64 60
  %164 = load i32, ptr %163, align 4, !tbaa !64
  %.not154 = icmp eq i32 %164, 0
  %165 = zext i1 %.not154 to i32
  %166 = add nuw nsw i32 %.9, 2
  %167 = zext nneg i32 %161 to i64
  %168 = getelementptr inbounds [40 x i32], ptr %4, i64 0, i64 %167
  store i32 %165, ptr %168, align 4, !tbaa !53
  br label %169

169:                                              ; preds = %159, %154
  %.10 = phi i32 [ %166, %159 ], [ %.9, %154 ]
  %170 = load i32, ptr getelementptr inbounds (i8, ptr @_glfw, i64 5880), align 8, !tbaa !65
  %171 = icmp eq i32 %170, 12765
  br i1 %171, label %172, label %188

172:                                              ; preds = %169
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %6) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %7) #4
  %173 = load ptr, ptr getelementptr inbounds (i8, ptr @_glfw, i64 352), align 8, !tbaa !66
  call void %173(ptr noundef nonnull %0, ptr noundef nonnull %6, ptr noundef nonnull %7) #4
  %174 = zext nneg i32 %.10 to i64
  %175 = add nuw nsw i32 %.10, 1
  %176 = getelementptr inbounds [40 x i32], ptr %4, i64 0, i64 %174
  store i32 12375, ptr %176, align 4, !tbaa !53
  %177 = load i32, ptr %6, align 4, !tbaa !53
  %178 = add nuw nsw i32 %.10, 2
  %179 = zext nneg i32 %175 to i64
  %180 = getelementptr inbounds [40 x i32], ptr %4, i64 0, i64 %179
  store i32 %177, ptr %180, align 4, !tbaa !53
  %181 = zext nneg i32 %178 to i64
  %182 = add nuw nsw i32 %.10, 3
  %183 = getelementptr inbounds [40 x i32], ptr %4, i64 0, i64 %181
  store i32 12374, ptr %183, align 4, !tbaa !53
  %184 = load i32, ptr %7, align 4, !tbaa !53
  %185 = add nuw nsw i32 %.10, 4
  %186 = zext nneg i32 %182 to i64
  %187 = getelementptr inbounds [40 x i32], ptr %4, i64 0, i64 %186
  store i32 %184, ptr %187, align 4, !tbaa !53
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %7) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %6) #4
  br label %188

188:                                              ; preds = %172, %169
  %.11 = phi i32 [ %185, %172 ], [ %.10, %169 ]
  %189 = zext nneg i32 %.11 to i64
  %190 = add nuw nsw i32 %.11, 1
  %191 = getelementptr inbounds [40 x i32], ptr %4, i64 0, i64 %189
  store i32 12344, ptr %191, align 4, !tbaa !53
  %192 = zext nneg i32 %190 to i64
  %193 = getelementptr inbounds [40 x i32], ptr %4, i64 0, i64 %192
  store i32 12344, ptr %193, align 4, !tbaa !53
  %194 = load ptr, ptr getelementptr inbounds (i8, ptr @_glfw, i64 584), align 8, !tbaa !67
  %195 = call ptr %194(ptr noundef nonnull %0) #4
  %196 = load i32, ptr getelementptr inbounds (i8, ptr @_glfw, i64 5880), align 8
  switch i32 %196, label %207 [
    i32 12802, label %197
    i32 0, label %197
    i32 12765, label %202
  ]

197:                                              ; preds = %188, %188
  %198 = load ptr, ptr getelementptr inbounds (i8, ptr @_glfw, i64 6064), align 8, !tbaa !68
  %199 = load ptr, ptr getelementptr inbounds (i8, ptr @_glfw, i64 5888), align 8, !tbaa !5
  %200 = load ptr, ptr %5, align 8, !tbaa !60
  %201 = call ptr %198(ptr noundef %199, ptr noundef %200, ptr noundef %195, ptr noundef nonnull %4) #4
  br label %212

202:                                              ; preds = %188
  %203 = load ptr, ptr getelementptr inbounds (i8, ptr @_glfw, i64 6072), align 8, !tbaa !69
  %204 = load ptr, ptr getelementptr inbounds (i8, ptr @_glfw, i64 5888), align 8, !tbaa !5
  %205 = load ptr, ptr %5, align 8, !tbaa !60
  %206 = call ptr %203(ptr noundef %204, ptr noundef %205, ptr noundef nonnull %4) #4
  br label %212

207:                                              ; preds = %188
  %208 = load ptr, ptr getelementptr inbounds (i8, ptr @_glfw, i64 6128), align 8, !tbaa !70
  %209 = load ptr, ptr getelementptr inbounds (i8, ptr @_glfw, i64 5888), align 8, !tbaa !5
  %210 = load ptr, ptr %5, align 8, !tbaa !60
  %211 = call ptr %208(ptr noundef %209, ptr noundef %210, ptr noundef %195, ptr noundef nonnull %4) #4
  br label %212

212:                                              ; preds = %202, %207, %197
  %.sink176 = phi ptr [ %206, %202 ], [ %211, %207 ], [ %201, %197 ]
  %213 = getelementptr inbounds i8, ptr %0, i64 672
  store ptr %.sink176, ptr %213, align 8, !tbaa !71
  %214 = icmp eq ptr %.sink176, null
  br i1 %214, label %215, label %219

215:                                              ; preds = %212
  %216 = load ptr, ptr getelementptr inbounds (i8, ptr @_glfw, i64 6008), align 8, !tbaa !47
  %217 = call i32 %216() #4
  %218 = call ptr @getEGLErrorString(i32 noundef %217)
  call void (i32, ptr, ...) @_glfwInputError(i32 noundef 65544, ptr noundef nonnull @.str.46, ptr noundef %218) #4
  br label %253

219:                                              ; preds = %212
  %220 = load ptr, ptr %5, align 8, !tbaa !60
  store ptr %220, ptr %129, align 8, !tbaa !72
  %221 = load i32, ptr getelementptr inbounds (i8, ptr @_glfw, i64 5920), align 8, !tbaa !73
  %.not155 = icmp eq i32 %221, 0
  br i1 %.not155, label %222, label %.critedge

222:                                              ; preds = %219
  %223 = load i32, ptr %1, align 8, !tbaa !45
  %224 = icmp eq i32 %223, 196610
  br i1 %224, label %225, label %229

225:                                              ; preds = %222
  %226 = getelementptr inbounds i8, ptr %1, i64 8
  %227 = load i32, ptr %226, align 8, !tbaa !54
  %228 = icmp eq i32 %227, 1
  %__const._glfwCreateContextEGL.es1sonames.__const._glfwCreateContextEGL.es2sonames = select i1 %228, ptr @__const._glfwCreateContextEGL.es1sonames, ptr @__const._glfwCreateContextEGL.es2sonames
  br label %229

229:                                              ; preds = %222, %225
  %.0 = phi ptr [ %__const._glfwCreateContextEGL.es1sonames.__const._glfwCreateContextEGL.es2sonames, %225 ], [ @__const._glfwCreateContextEGL.glsonames, %222 ]
  %230 = load ptr, ptr %.0, align 8, !tbaa !60
  %.not156161 = icmp eq ptr %230, null
  br i1 %.not156161, label %._crit_edge, label %.lr.ph

.lr.ph:                                           ; preds = %229
  %231 = getelementptr inbounds i8, ptr %0, i64 680
  %.pre167 = load i32, ptr getelementptr inbounds (i8, ptr @_glfw, i64 5904), align 8, !tbaa !74
  br label %232

232:                                              ; preds = %.lr.ph, %240
  %233 = phi i32 [ %.pre167, %.lr.ph ], [ %241, %240 ]
  %indvars.iv = phi i64 [ 0, %.lr.ph ], [ %indvars.iv.next, %240 ]
  %234 = phi ptr [ %230, %.lr.ph ], [ %243, %240 ]
  %235 = call i32 @strncmp(ptr noundef nonnull dereferenceable(1) %234, ptr noundef nonnull dereferenceable(1) @.str.2, i64 noundef 3) #5
  %236 = icmp eq i32 %235, 0
  %237 = zext i1 %236 to i32
  %.not157 = icmp eq i32 %233, %237
  br i1 %.not157, label %238, label %240

238:                                              ; preds = %232
  %239 = call ptr @_glfwPlatformLoadModule(ptr noundef nonnull %234) #4
  store ptr %239, ptr %231, align 8, !tbaa !75
  %.not158 = icmp eq ptr %239, null
  %.pre166 = load i32, ptr getelementptr inbounds (i8, ptr @_glfw, i64 5904), align 8, !tbaa !74
  br i1 %.not158, label %240, label %._crit_edge

240:                                              ; preds = %238, %232
  %241 = phi i32 [ %.pre166, %238 ], [ %233, %232 ]
  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
  %242 = getelementptr inbounds ptr, ptr %.0, i64 %indvars.iv.next
  %243 = load ptr, ptr %242, align 8, !tbaa !60
  %.not156 = icmp eq ptr %243, null
  br i1 %.not156, label %._crit_edge, label %232, !llvm.loop !76

._crit_edge:                                      ; preds = %240, %238, %229
  %244 = getelementptr inbounds i8, ptr %0, i64 680
  %245 = load ptr, ptr %244, align 8, !tbaa !75
  %.not159.not = icmp eq ptr %245, null
  br i1 %.not159.not, label %246, label %.critedge

246:                                              ; preds = %._crit_edge
  call void (i32, ptr, ...) @_glfwInputError(i32 noundef 65542, ptr noundef nonnull @.str.52) #4
  br label %253

.critedge:                                        ; preds = %._crit_edge, %219
  %247 = getelementptr inbounds i8, ptr %0, i64 608
  store ptr @makeContextCurrentEGL, ptr %247, align 8, !tbaa !78
  %248 = getelementptr inbounds i8, ptr %0, i64 616
  store ptr @swapBuffersEGL, ptr %248, align 8, !tbaa !79
  %249 = getelementptr inbounds i8, ptr %0, i64 624
  store ptr @swapIntervalEGL, ptr %249, align 8, !tbaa !80
  %250 = getelementptr inbounds i8, ptr %0, i64 632
  store ptr @extensionSupportedEGL, ptr %250, align 8, !tbaa !81
  %251 = getelementptr inbounds i8, ptr %0, i64 640
  store ptr @getProcAddressEGL, ptr %251, align 8, !tbaa !82
  %252 = getelementptr inbounds i8, ptr %0, i64 648
  store ptr @destroyContextEGL, ptr %252, align 8, !tbaa !83
  br label %253

253:                                              ; preds = %246, %16, %.critedge, %215, %132, %30, %24, %9
  %.1132 = phi i32 [ 0, %132 ], [ 0, %215 ], [ 1, %.critedge ], [ 0, %246 ], [ 0, %24 ], [ 0, %30 ], [ 0, %9 ], [ 0, %16 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %5) #4
  call void @llvm.lifetime.end.p0(i64 160, ptr nonnull %4) #4
  ret i32 %.1132
}

; Function Attrs: nounwind uwtable
declare hidden i32 @chooseEGLConfig(ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #3

; Function Attrs: nounwind uwtable
declare hidden void @makeContextCurrentEGL(ptr noundef) #3

; Function Attrs: nounwind uwtable
declare hidden void @swapBuffersEGL(ptr noundef) #3

; Function Attrs: nounwind uwtable
declare hidden void @swapIntervalEGL(i32 noundef) #3

; Function Attrs: nounwind uwtable
declare hidden ptr @getProcAddressEGL(ptr noundef) #3

; Function Attrs: nounwind uwtable
declare hidden void @destroyContextEGL(ptr noundef) #3

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !11, i64 5888}
!6 = !{!"_GLFWlibrary", !7, i64 0, !10, i64 8, !12, i64 40, !13, i64 616, !11, i64 1896, !11, i64 1904, !11, i64 1912, !11, i64 1920, !7, i64 1928, !7, i64 1932, !8, i64 1936, !11, i64 5776, !7, i64 5784, !23, i64 5788, !23, i64 5796, !25, i64 5808, !27, i64 5856, !29, i64 5880, !30, i64 6136, !31, i64 6200, !32, i64 6272, !33, i64 6288}
!7 = !{!"int", !8, i64 0}
!8 = !{!"omnipotent char", !9, i64 0}
!9 = !{!"Simple C/C++ TBAA"}
!10 = !{!"GLFWallocator", !11, i64 0, !11, i64 8, !11, i64 16, !11, i64 24}
!11 = !{!"any pointer", !8, i64 0}
!12 = !{!"_GLFWplatform", !7, i64 0, !11, i64 8, !11, i64 16, !11, i64 24, !11, i64 32, !11, i64 40, !11, i64 48, !11, i64 56, !11, i64 64, !11, i64 72, !11, i64 80, !11, i64 88, !11, i64 96, !11, i64 104, !11, i64 112, !11, i64 120, !11, i64 128, !11, i64 136, !11, i64 144, !11, i64 152, !11, i64 160, !11, i64 168, !11, i64 176, !11, i64 184, !11, i64 192, !11, i64 200, !11, i64 208, !11, i64 216, !11, i64 224, !11, i64 232, !11, i64 240, !11, i64 248, !11, i64 256, !11, i64 264, !11, i64 272, !11, i64 280, !11, i64 288, !11, i64 296, !11, i64 304, !11, i64 312, !11, i64 320, !11, i64 328, !11, i64 336, !11, i64 344, !11, i64 352, !11, i64 360, !11, i64 368, !11, i64 376, !11, i64 384, !11, i64 392, !11, i64 400, !11, i64 408, !11, i64 416, !11, i64 424, !11, i64 432, !11, i64 440, !11, i64 448, !11, i64 456, !11, i64 464, !11, i64 472, !11, i64 480, !11, i64 488, !11, i64 496, !11, i64 504, !11, i64 512, !11, i64 520, !11, i64 528, !11, i64 536, !11, i64 544, !11, i64 552, !11, i64 560, !11, i64 568}
!13 = !{!"", !14, i64 0, !17, i64 40, !19, i64 112, !22, i64 1216, !7, i64 1272}
!14 = !{!"_GLFWinitconfig", !7, i64 0, !7, i64 4, !7, i64 8, !11, i64 16, !15, i64 24, !16, i64 32, !16, i64 36}
!15 = !{!"", !7, i64 0, !7, i64 4}
!16 = !{!"", !7, i64 0}
!17 = !{!"_GLFWfbconfig", !7, i64 0, !7, i64 4, !7, i64 8, !7, i64 12, !7, i64 16, !7, i64 20, !7, i64 24, !7, i64 28, !7, i64 32, !7, i64 36, !7, i64 40, !7, i64 44, !7, i64 48, !7, i64 52, !7, i64 56, !7, i64 60, !18, i64 64}
!18 = !{!"long", !8, i64 0}
!19 = !{!"_GLFWwndconfig", !7, i64 0, !7, i64 4, !7, i64 8, !7, i64 12, !11, i64 16, !7, i64 24, !7, i64 28, !7, i64 32, !7, i64 36, !7, i64 40, !7, i64 44, !7, i64 48, !7, i64 52, !7, i64 56, !7, i64 60, !7, i64 64, !7, i64 68, !20, i64 72, !21, i64 328, !15, i64 840, !20, i64 848}
!20 = !{!"", !8, i64 0}
!21 = !{!"", !8, i64 0, !8, i64 256}
!22 = !{!"_GLFWctxconfig", !7, i64 0, !7, i64 4, !7, i64 8, !7, i64 12, !7, i64 16, !7, i64 20, !7, i64 24, !7, i64 28, !7, i64 32, !7, i64 36, !11, i64 40, !16, i64 48}
!23 = !{!"_GLFWtls", !24, i64 0}
!24 = !{!"_GLFWtlsPOSIX", !7, i64 0, !7, i64 4}
!25 = !{!"_GLFWmutex", !26, i64 0}
!26 = !{!"_GLFWmutexPOSIX", !7, i64 0, !8, i64 8}
!27 = !{!"", !18, i64 0, !28, i64 8}
!28 = !{!"_GLFWtimerPOSIX", !7, i64 0, !18, i64 8}
!29 = !{!"", !7, i64 0, !11, i64 8, !7, i64 16, !7, i64 20, !7, i64 24, !7, i64 28, !7, i64 32, !7, i64 36, !7, i64 40, !7, i64 44, !7, i64 48, !7, i64 52, !7, i64 56, !7, i64 60, !7, i64 64, !7, i64 68, !7, i64 72, !7, i64 76, !7, i64 80, !7, i64 84, !7, i64 88, !11, i64 96, !11, i64 104, !11, i64 112, !11, i64 120, !11, i64 128, !11, i64 136, !11, i64 144, !11, i64 152, !11, i64 160, !11, i64 168, !11, i64 176, !11, i64 184, !11, i64 192, !11, i64 200, !11, i64 208, !11, i64 216, !11, i64 224, !11, i64 232, !11, i64 240, !11, i64 248}
!30 = !{!"", !11, i64 0, !11, i64 8, !11, i64 16, !11, i64 24, !11, i64 32, !11, i64 40, !11, i64 48, !11, i64 56}
!31 = !{!"", !7, i64 0, !11, i64 8, !8, i64 16, !11, i64 32, !7, i64 40, !7, i64 44, !7, i64 48, !7, i64 52, !7, i64 56, !7, i64 60, !7, i64 64, !7, i64 68}
!32 = !{!"", !11, i64 0, !11, i64 8}
!33 = !{!"_GLFWlibraryNull", !7, i64 0, !7, i64 4, !11, i64 8, !11, i64 16, !8, i64 24, !8, i64 266}
!34 = !{!22, !11, i64 40}
!35 = !{!36, !11, i64 664}
!36 = !{!"_GLFWwindow", !11, i64 0, !7, i64 8, !7, i64 12, !7, i64 16, !7, i64 20, !7, i64 24, !7, i64 28, !7, i64 32, !11, i64 40, !7, i64 48, !37, i64 52, !11, i64 80, !11, i64 88, !11, i64 96, !7, i64 104, !7, i64 108, !7, i64 112, !7, i64 116, !7, i64 120, !7, i64 124, !7, i64 128, !7, i64 132, !7, i64 136, !7, i64 140, !7, i64 144, !8, i64 148, !8, i64 156, !38, i64 512, !38, i64 520, !7, i64 528, !39, i64 536, !42, i64 712, !43, i64 848}
!37 = !{!"GLFWvidmode", !7, i64 0, !7, i64 4, !7, i64 8, !7, i64 12, !7, i64 16, !7, i64 20}
!38 = !{!"double", !8, i64 0}
!39 = !{!"_GLFWcontext", !7, i64 0, !7, i64 4, !7, i64 8, !7, i64 12, !7, i64 16, !7, i64 20, !7, i64 24, !7, i64 28, !7, i64 32, !7, i64 36, !7, i64 40, !11, i64 48, !11, i64 56, !11, i64 64, !11, i64 72, !11, i64 80, !11, i64 88, !11, i64 96, !11, i64 104, !11, i64 112, !40, i64 120, !41, i64 152}
!40 = !{!"", !11, i64 0, !11, i64 8, !11, i64 16, !11, i64 24}
!41 = !{!"", !11, i64 0, !7, i64 8, !7, i64 12, !11, i64 16}
!42 = !{!"", !11, i64 0, !11, i64 8, !11, i64 16, !11, i64 24, !11, i64 32, !11, i64 40, !11, i64 48, !11, i64 56, !11, i64 64, !11, i64 72, !11, i64 80, !11, i64 88, !11, i64 96, !11, i64 104, !11, i64 112, !11, i64 120, !11, i64 128}
!43 = !{!"_GLFWwindowNull", !7, i64 0, !7, i64 4, !7, i64 8, !7, i64 12, !7, i64 16, !7, i64 20, !7, i64 24, !7, i64 28, !7, i64 32, !7, i64 36, !7, i64 40, !44, i64 44}
!44 = !{!"float", !8, i64 0}
!45 = !{!22, !7, i64 0}
!46 = !{!6, !11, i64 6032}
!47 = !{!6, !11, i64 6008}
!48 = !{!6, !7, i64 5908}
!49 = !{!22, !7, i64 16}
!50 = !{!22, !7, i64 28}
!51 = !{!22, !7, i64 20}
!52 = !{!22, !7, i64 32}
!53 = !{!7, !7, i64 0}
!54 = !{!22, !7, i64 8}
!55 = !{!22, !7, i64 12}
!56 = !{!22, !7, i64 24}
!57 = !{!6, !7, i64 5924}
!58 = !{!22, !7, i64 36}
!59 = !{!6, !11, i64 6040}
!60 = !{!11, !11, i64 0}
!61 = !{!17, !7, i64 52}
!62 = !{!17, !7, i64 56}
!63 = !{!6, !7, i64 40}
!64 = !{!17, !7, i64 60}
!65 = !{!6, !7, i64 5880}
!66 = !{!6, !11, i64 352}
!67 = !{!6, !11, i64 584}
!68 = !{!6, !11, i64 6064}
!69 = !{!6, !11, i64 6072}
!70 = !{!6, !11, i64 6128}
!71 = !{!36, !11, i64 672}
!72 = !{!36, !11, i64 656}
!73 = !{!6, !7, i64 5920}
!74 = !{!6, !7, i64 5904}
!75 = !{!36, !11, i64 680}
!76 = distinct !{!76, !77}
!77 = !{!"llvm.loop.mustprogress"}
!78 = !{!36, !11, i64 608}
!79 = !{!36, !11, i64 616}
!80 = !{!36, !11, i64 624}
!81 = !{!36, !11, i64 632}
!82 = !{!36, !11, i64 640}
!83 = !{!36, !11, i64 648}


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