; LLVM IR from erincatto/box2d-lite :: extern/glfw/src/glx_context.ll (glfwCreateContextGLX)

; 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.anon, ptr, ptr, ptr, ptr, i32, [16 x %struct._GLFWjoystick], ptr, i32, %struct._GLFWtls, %struct._GLFWtls, %struct._GLFWmutex, %struct.anon.4, %struct.anon.5, %struct.anon.6, %struct._GLFWlibraryX11, %struct._GLFWlibraryGLX, %struct._GLFWlibraryLinux, %struct._GLFWlibraryEGL, %struct._GLFWlibraryOSMesa }
%struct.anon = type { %struct._GLFWinitconfig, %struct._GLFWfbconfig, %struct._GLFWwndconfig, %struct._GLFWctxconfig, i32 }
%struct._GLFWinitconfig = type { i32, %struct.anon.0 }
%struct.anon.0 = type { i32, 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, ptr, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, %struct.anon.1, %struct.anon.2 }
%struct.anon.1 = type { i32, [256 x i8] }
%struct.anon.2 = type { [256 x i8], [256 x i8] }
%struct._GLFWctxconfig = type { i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, ptr, %struct.anon.3 }
%struct.anon.3 = type { i32 }
%struct._GLFWjoystick = type { i32, ptr, i32, ptr, i32, ptr, i32, ptr, ptr, [33 x i8], ptr, %struct._GLFWjoystickLinux }
%struct._GLFWjoystickLinux = type { i32, [4096 x i8], [512 x i32], [64 x i32], [64 x %struct.input_absinfo], [4 x [2 x i32]] }
%struct.input_absinfo = type { i32, i32, i32, i32, i32, i32 }
%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.4 = type { i64, %struct._GLFWtimerPOSIX }
%struct._GLFWtimerPOSIX = type { i32, i64 }
%struct.anon.5 = type { i32, ptr, [2 x ptr], ptr, ptr, i32, i32, i32 }
%struct.anon.6 = type { ptr, ptr }
%struct._GLFWlibraryX11 = type { ptr, i32, i64, float, float, i64, i64, i32, ptr, i32, ptr, ptr, [5 x i8], [256 x i16], [349 x i16], double, double, ptr, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, %struct.anon.7, %struct.anon.8, %struct.anon.9, %struct.anon.10, %struct.anon.11, %struct.anon.12, %struct.anon.13, %struct.anon.14, %struct.anon.15, %struct.anon.16 }
%struct.anon.7 = type { i32, ptr, i32, i32, i32, i32, i32, i32, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr }
%struct.anon.8 = type { i32, i32, i32, i32, i32, i32, i32 }
%struct.anon.9 = type { i32, i32, i32, i32, i32 }
%struct.anon.10 = type { i32, i64, i64 }
%struct.anon.11 = type { ptr, ptr, ptr, ptr }
%struct.anon.12 = type { i32, ptr, i32, i32, ptr, ptr, ptr }
%struct.anon.13 = type { ptr, ptr }
%struct.anon.14 = type { i32, ptr, i32, i32, ptr, ptr, ptr, ptr }
%struct.anon.15 = type { i32, ptr, i32, i32, i32, i32, i32, ptr, ptr }
%struct.anon.16 = type { i32, ptr, i32, i32, i32, i32, ptr, ptr, ptr }
%struct._GLFWlibraryGLX = type { i32, i32, i32, i32, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32 }
%struct._GLFWlibraryLinux = type { i32, i32, %struct.re_pattern_buffer, i32 }
%struct.re_pattern_buffer = type { ptr, i64, i64, i64, ptr, ptr, i64, i8 }
%struct._GLFWlibraryEGL = type { ptr, 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 }
%struct._GLFWlibraryOSMesa = type { ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr }
%struct._GLFWwindow = type { ptr, i32, i32, i32, i32, i32, i32, ptr, %struct.GLFWvidmode, ptr, ptr, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, [8 x i8], [349 x i8], double, double, %struct._GLFWcontext, %struct.anon.17, %struct._GLFWwindowX11 }
%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._GLFWcontextGLX, %struct._GLFWcontextEGL, %struct._GLFWcontextOSMesa }
%struct._GLFWcontextGLX = type { ptr, i64 }
%struct._GLFWcontextEGL = type { ptr, ptr, ptr, ptr }
%struct._GLFWcontextOSMesa = type { ptr, i32, i32, ptr }
%struct.anon.17 = type { ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr }
%struct._GLFWwindowX11 = type { i64, i64, ptr, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i64 }

@_glfw = external global %struct._GLFWlibrary, align 8
@.str.38 = external hidden unnamed_addr constant [43 x i8], align 1
@.str.39 = external hidden unnamed_addr constant [79 x i8], align 1
@.str.40 = external hidden unnamed_addr constant [87 x i8], align 1
@.str.41 = external hidden unnamed_addr constant [83 x i8], align 1
@.str.42 = external hidden unnamed_addr constant [60 x i8], align 1
@.str.43 = external hidden unnamed_addr constant [84 x i8], align 1
@__PRETTY_FUNCTION__._glfwCreateContextGLX = external hidden unnamed_addr constant [93 x i8], align 1
@.str.44 = external hidden unnamed_addr constant [30 x i8], align 1
@.str.45 = external hidden unnamed_addr constant [29 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

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

; Function Attrs: nounwind uwtable
declare hidden i32 @extensionSupportedGLX(ptr noundef) #2

; Function Attrs: nounwind uwtable
declare hidden ptr @getProcAddressGLX(ptr noundef) #2

; 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 @_glfwCreateContextGLX(ptr noundef %0, ptr noundef %1, ptr noundef %2) #2 {
  %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 i32, align 4
  %12 = alloca i32, align 4
  %13 = alloca i32, align 4
  %14 = alloca i32, align 4
  store ptr %0, ptr %5, align 8, !tbaa !5
  store ptr %1, ptr %6, align 8, !tbaa !5
  store ptr %2, ptr %7, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 160, ptr %8) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %9) #4
  store ptr null, ptr %9, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %10) #4
  store ptr null, ptr %10, align 8, !tbaa !5
  %15 = load ptr, ptr %6, align 8, !tbaa !5
  %16 = getelementptr inbounds %struct._GLFWctxconfig, ptr %15, i32 0, i32 10
  %17 = load ptr, ptr %16, align 8, !tbaa !9
  %18 = icmp ne ptr %17, null
  br i1 %18, label %19, label %27

19:                                               ; preds = %3
  %20 = load ptr, ptr %6, align 8, !tbaa !5
  %21 = getelementptr inbounds %struct._GLFWctxconfig, ptr %20, i32 0, i32 10
  %22 = load ptr, ptr %21, align 8, !tbaa !9
  %23 = getelementptr inbounds %struct._GLFWwindow, ptr %22, i32 0, i32 25
  %24 = getelementptr inbounds %struct._GLFWcontext, ptr %23, i32 0, i32 20
  %25 = getelementptr inbounds %struct._GLFWcontextGLX, ptr %24, i32 0, i32 0
  %26 = load ptr, ptr %25, align 8, !tbaa !13
  store ptr %26, ptr %10, align 8, !tbaa !5
  br label %27

27:                                               ; preds = %19, %3
  %28 = load ptr, ptr %7, align 8, !tbaa !5
  %29 = call i32 @chooseGLXFBConfig(ptr noundef %28, ptr noundef %9)
  %30 = icmp ne i32 %29, 0
  br i1 %30, label %32, label %31

31:                                               ; preds = %27
  call void (i32, ptr, ...) @_glfwInputError(i32 noundef 65545, ptr noundef @.str.38)
  store i32 0, ptr %4, align 4
  store i32 1, ptr %11, align 4
  br label %455

32:                                               ; preds = %27
  %33 = load ptr, ptr %6, align 8, !tbaa !5
  %34 = getelementptr inbounds %struct._GLFWctxconfig, ptr %33, i32 0, i32 0
  %35 = load i32, ptr %34, align 8, !tbaa !24
  %36 = icmp eq i32 %35, 196610
  br i1 %36, label %37, label %48

37:                                               ; preds = %32
  %38 = load i32, ptr getelementptr inbounds (%struct._GLFWlibraryGLX, ptr getelementptr inbounds (%struct._GLFWlibrary, ptr @_glfw, i32 0, i32 17), i32 0, i32 30), align 8, !tbaa !25
  %39 = icmp ne i32 %38, 0
  br i1 %39, label %40, label %46

40:                                               ; preds = %37
  %41 = load i32, ptr getelementptr inbounds (%struct._GLFWlibraryGLX, ptr getelementptr inbounds (%struct._GLFWlibrary, ptr @_glfw, i32 0, i32 17), i32 0, i32 31), align 4, !tbaa !58
  %42 = icmp ne i32 %41, 0
  br i1 %42, label %43, label %46

43:                                               ; preds = %40
  %44 = load i32, ptr getelementptr inbounds (%struct._GLFWlibraryGLX, ptr getelementptr inbounds (%struct._GLFWlibrary, ptr @_glfw, i32 0, i32 17), i32 0, i32 33), align 4, !tbaa !59
  %45 = icmp ne i32 %44, 0
  br i1 %45, label %47, label %46

46:                                               ; preds = %43, %40, %37
  call void (i32, ptr, ...) @_glfwInputError(i32 noundef 65542, ptr noundef @.str.39)
  store i32 0, ptr %4, align 4
  store i32 1, ptr %11, align 4
  br label %455

47:                                               ; preds = %43
  br label %48

48:                                               ; preds = %47, %32
  %49 = load ptr, ptr %6, align 8, !tbaa !5
  %50 = getelementptr inbounds %struct._GLFWctxconfig, ptr %49, i32 0, i32 4
  %51 = load i32, ptr %50, align 8, !tbaa !60
  %52 = icmp ne i32 %51, 0
  br i1 %52, label %53, label %58

53:                                               ; preds = %48
  %54 = load i32, ptr getelementptr inbounds (%struct._GLFWlibraryGLX, ptr getelementptr inbounds (%struct._GLFWlibrary, ptr @_glfw, i32 0, i32 17), i32 0, i32 30), align 8, !tbaa !25
  %55 = icmp ne i32 %54, 0
  br i1 %55, label %57, label %56

56:                                               ; preds = %53
  call void (i32, ptr, ...) @_glfwInputError(i32 noundef 65543, ptr noundef @.str.40)
  store i32 0, ptr %4, align 4
  store i32 1, ptr %11, align 4
  br label %455

57:                                               ; preds = %53
  br label %58

58:                                               ; preds = %57, %48
  %59 = load ptr, ptr %6, align 8, !tbaa !5
  %60 = getelementptr inbounds %struct._GLFWctxconfig, ptr %59, i32 0, i32 7
  %61 = load i32, ptr %60, align 4, !tbaa !61
  %62 = icmp ne i32 %61, 0
  br i1 %62, label %63, label %71

63:                                               ; preds = %58
  %64 = load i32, ptr getelementptr inbounds (%struct._GLFWlibraryGLX, ptr getelementptr inbounds (%struct._GLFWlibrary, ptr @_glfw, i32 0, i32 17), i32 0, i32 30), align 8, !tbaa !25
  %65 = icmp ne i32 %64, 0
  br i1 %65, label %66, label %69

66:                                               ; preds = %63
  %67 = load i32, ptr getelementptr inbounds (%struct._GLFWlibraryGLX, ptr getelementptr inbounds (%struct._GLFWlibrary, ptr @_glfw, i32 0, i32 17), i32 0, i32 31), align 4, !tbaa !58
  %68 = icmp ne i32 %67, 0
  br i1 %68, label %70, label %69

69:                                               ; preds = %66, %63
  call void (i32, ptr, ...) @_glfwInputError(i32 noundef 65543, ptr noundef @.str.41)
  store i32 0, ptr %4, align 4
  store i32 1, ptr %11, align 4
  br label %455

70:                                               ; preds = %66
  br label %71

71:                                               ; preds = %70, %58
  call void @_glfwGrabErrorHandlerX11()
  %72 = load i32, ptr getelementptr inbounds (%struct._GLFWlibraryGLX, ptr getelementptr inbounds (%struct._GLFWlibrary, ptr @_glfw, i32 0, i32 17), i32 0, i32 30), align 8, !tbaa !25
  %73 = icmp ne i32 %72, 0
  br i1 %73, label %74, label %399

74:                                               ; preds = %71
  call void @llvm.lifetime.start.p0(i64 4, ptr %12) #4
  store i32 0, ptr %12, align 4, !tbaa !62
  call void @llvm.lifetime.start.p0(i64 4, ptr %13) #4
  store i32 0, ptr %13, align 4, !tbaa !62
  call void @llvm.lifetime.start.p0(i64 4, ptr %14) #4
  store i32 0, ptr %14, align 4, !tbaa !62
  %75 = load ptr, ptr %6, align 8, !tbaa !5
  %76 = getelementptr inbounds %struct._GLFWctxconfig, ptr %75, i32 0, i32 0
  %77 = load i32, ptr %76, align 8, !tbaa !24
  %78 = icmp eq i32 %77, 196609
  br i1 %78, label %79, label %105

79:                                               ; preds = %74
  %80 = load ptr, ptr %6, align 8, !tbaa !5
  %81 = getelementptr inbounds %struct._GLFWctxconfig, ptr %80, i32 0, i32 4
  %82 = load i32, ptr %81, align 8, !tbaa !60
  %83 = icmp ne i32 %82, 0
  br i1 %83, label %84, label %87

84:                                               ; preds = %79
  %85 = load i32, ptr %14, align 4, !tbaa !62
  %86 = or i32 %85, 2
  store i32 %86, ptr %14, align 4, !tbaa !62
  br label %87

87:                                               ; preds = %84, %79
  %88 = load ptr, ptr %6, align 8, !tbaa !5
  %89 = getelementptr inbounds %struct._GLFWctxconfig, ptr %88, i32 0, i32 7
  %90 = load i32, ptr %89, align 4, !tbaa !61
  %91 = icmp eq i32 %90, 204801
  br i1 %91, label %92, label %95

92:                                               ; preds = %87
  %93 = load i32, ptr %13, align 4, !tbaa !62
  %94 = or i32 %93, 1
  store i32 %94, ptr %13, align 4, !tbaa !62
  br label %104

95:                                               ; preds = %87
  %96 = load ptr, ptr %6, align 8, !tbaa !5
  %97 = getelementptr inbounds %struct._GLFWctxconfig, ptr %96, i32 0, i32 7
  %98 = load i32, ptr %97, align 4, !tbaa !61
  %99 = icmp eq i32 %98, 204802
  br i1 %99, label %100, label %103

100:                                              ; preds = %95
  %101 = load i32, ptr %13, align 4, !tbaa !62
  %102 = or i32 %101, 2
  store i32 %102, ptr %13, align 4, !tbaa !62
  br label %103

103:                                              ; preds = %100, %95
  br label %104

104:                                              ; preds = %103, %92
  br label %108

105:                                              ; preds = %74
  %106 = load i32, ptr %13, align 4, !tbaa !62
  %107 = or i32 %106, 4
  store i32 %107, ptr %13, align 4, !tbaa !62
  br label %108

108:                                              ; preds = %105, %104
  %109 = load ptr, ptr %6, align 8, !tbaa !5
  %110 = getelementptr inbounds %struct._GLFWctxconfig, ptr %109, i32 0, i32 5
  %111 = load i32, ptr %110, align 4, !tbaa !63
  %112 = icmp ne i32 %111, 0
  br i1 %112, label %113, label %116

113:                                              ; preds = %108
  %114 = load i32, ptr %14, align 4, !tbaa !62
  %115 = or i32 %114, 1
  store i32 %115, ptr %14, align 4, !tbaa !62
  br label %116

116:                                              ; preds = %113, %108
  %117 = load ptr, ptr %6, align 8, !tbaa !5
  %118 = getelementptr inbounds %struct._GLFWctxconfig, ptr %117, i32 0, i32 8
  %119 = load i32, ptr %118, align 8, !tbaa !64
  %120 = icmp ne i32 %119, 0
  br i1 %120, label %121, label %171

121:                                              ; preds = %116
  %122 = load i32, ptr getelementptr inbounds (%struct._GLFWlibraryGLX, ptr getelementptr inbounds (%struct._GLFWlibrary, ptr @_glfw, i32 0, i32 17), i32 0, i32 32), align 8, !tbaa !65
  %123 = icmp ne i32 %122, 0
  br i1 %123, label %124, label %170

124:                                              ; preds = %121
  %125 = load ptr, ptr %6, align 8, !tbaa !5
  %126 = getelementptr inbounds %struct._GLFWctxconfig, ptr %125, i32 0, i32 8
  %127 = load i32, ptr %126, align 8, !tbaa !64
  %128 = icmp eq i32 %127, 200705
  br i1 %128, label %129, label %145

129:                                              ; preds = %124
  %130 = load i32, ptr %12, align 4, !tbaa !62
  %131 = add nsw i32 %130, 1
  %132 = sext i32 %131 to i64
  %133 = icmp ult i64 %132, 40
  br i1 %133, label %134, label %135

134:                                              ; preds = %129
  br label %136

135:                                              ; preds = %129
  call void @__assert_fail(ptr noundef @.str.42, ptr noundef @.str.43, i32 noundef 525, ptr noundef @__PRETTY_FUNCTION__._glfwCreateContextGLX) #5
  unreachable

136:                                              ; preds = %134
  %137 = load i32, ptr %12, align 4, !tbaa !62
  %138 = add nsw i32 %137, 1
  store i32 %138, ptr %12, align 4, !tbaa !62
  %139 = sext i32 %137 to i64
  %140 = getelementptr inbounds [40 x i32], ptr %8, i64 0, i64 %139
  store i32 33366, ptr %140, align 4, !tbaa !62
  %141 = load i32, ptr %12, align 4, !tbaa !62
  %142 = add nsw i32 %141, 1
  store i32 %142, ptr %12, align 4, !tbaa !62
  %143 = sext i32 %141 to i64
  %144 = getelementptr inbounds [40 x i32], ptr %8, i64 0, i64 %143
  store i32 33377, ptr %144, align 4, !tbaa !62
  br label %167

145:                                              ; preds = %124
  %146 = load ptr, ptr %6, align 8, !tbaa !5
  %147 = getelementptr inbounds %struct._GLFWctxconfig, ptr %146, i32 0, i32 8
  %148 = load i32, ptr %147, align 8, !tbaa !64
  %149 = icmp eq i32 %148, 200706
  br i1 %149, label %150, label %166

150:                                              ; preds = %145
  %151 = load i32, ptr %12, align 4, !tbaa !62
  %152 = add nsw i32 %151, 1
  %153 = sext i32 %152 to i64
  %154 = icmp ult i64 %153, 40
  br i1 %154, label %155, label %156

155:                                              ; preds = %150
  br label %157

156:                                              ; preds = %150
  call void @__assert_fail(ptr noundef @.str.42, ptr noundef @.str.43, i32 noundef 530, ptr noundef @__PRETTY_FUNCTION__._glfwCreateContextGLX) #5
  unreachable

157:                                              ; preds = %155
  %158 = load i32, ptr %12, align 4, !tbaa !62
  %159 = add nsw i32 %158, 1
  store i32 %159, ptr %12, align 4, !tbaa !62
  %160 = sext i32 %158 to i64
  %161 = getelementptr inbounds [40 x i32], ptr %8, i64 0, i64 %160
  store i32 33366, ptr %161, align 4, !tbaa !62
  %162 = load i32, ptr %12, align 4, !tbaa !62
  %163 = add nsw i32 %162, 1
  store i32 %163, ptr %12, align 4, !tbaa !62
  %164 = sext i32 %162 to i64
  %165 = getelementptr inbounds [40 x i32], ptr %8, i64 0, i64 %164
  store i32 33362, ptr %165, align 4, !tbaa !62
  br label %166

166:                                              ; preds = %157, %145
  br label %167

167:                                              ; preds = %166, %136
  %168 = load i32, ptr %14, align 4, !tbaa !62
  %169 = or i32 %168, 4
  store i32 %169, ptr %14, align 4, !tbaa !62
  br label %170

170:                                              ; preds = %167, %121
  br label %171

171:                                              ; preds = %170, %116
  %172 = load ptr, ptr %6, align 8, !tbaa !5
  %173 = getelementptr inbounds %struct._GLFWctxconfig, ptr %172, i32 0, i32 9
  %174 = load i32, ptr %173, align 4, !tbaa !66
  %175 = icmp ne i32 %174, 0
  br i1 %175, label %176, label %224

176:                                              ; preds = %171
  %177 = load i32, ptr getelementptr inbounds (%struct._GLFWlibraryGLX, ptr getelementptr inbounds (%struct._GLFWlibrary, ptr @_glfw, i32 0, i32 17), i32 0, i32 35), align 4, !tbaa !67
  %178 = icmp ne i32 %177, 0
  br i1 %178, label %179, label %223

179:                                              ; preds = %176
  %180 = load ptr, ptr %6, align 8, !tbaa !5
  %181 = getelementptr inbounds %struct._GLFWctxconfig, ptr %180, i32 0, i32 9
  %182 = load i32, ptr %181, align 4, !tbaa !66
  %183 = icmp eq i32 %182, 217090
  br i1 %183, label %184, label %200

184:                                              ; preds = %179
  %185 = load i32, ptr %12, align 4, !tbaa !62
  %186 = add nsw i32 %185, 1
  %187 = sext i32 %186 to i64
  %188 = icmp ult i64 %187, 40
  br i1 %188, label %189, label %190

189:                                              ; preds = %184
  br label %191

190:                                              ; preds = %184
  call void @__assert_fail(ptr noundef @.str.42, ptr noundef @.str.43, i32 noundef 544, ptr noundef @__PRETTY_FUNCTION__._glfwCreateContextGLX) #5
  unreachable

191:                                              ; preds = %189
  %192 = load i32, ptr %12, align 4, !tbaa !62
  %193 = add nsw i32 %192, 1
  store i32 %193, ptr %12, align 4, !tbaa !62
  %194 = sext i32 %192 to i64
  %195 = getelementptr inbounds [40 x i32], ptr %8, i64 0, i64 %194
  store i32 8343, ptr %195, align 4, !tbaa !62
  %196 = load i32, ptr %12, align 4, !tbaa !62
  %197 = add nsw i32 %196, 1
  store i32 %197, ptr %12, align 4, !tbaa !62
  %198 = sext i32 %196 to i64
  %199 = getelementptr inbounds [40 x i32], ptr %8, i64 0, i64 %198
  store i32 0, ptr %199, align 4, !tbaa !62
  br label %222

200:                                              ; preds = %179
  %201 = load ptr, ptr %6, align 8, !tbaa !5
  %202 = getelementptr inbounds %struct._GLFWctxconfig, ptr %201, i32 0, i32 9
  %203 = load i32, ptr %202, align 4, !tbaa !66
  %204 = icmp eq i32 %203, 217089
  br i1 %204, label %205, label %221

205:                                              ; preds = %200
  %206 = load i32, ptr %12, align 4, !tbaa !62
  %207 = add nsw i32 %206, 1
  %208 = sext i32 %207 to i64
  %209 = icmp ult i64 %208, 40
  br i1 %209, label %210, label %211

210:                                              ; preds = %205
  br label %212

211:                                              ; preds = %205
  call void @__assert_fail(ptr noundef @.str.42, ptr noundef @.str.43, i32 noundef 549, ptr noundef @__PRETTY_FUNCTION__._glfwCreateContextGLX) #5
  unreachable

212:                                              ; preds = %210
  %213 = load i32, ptr %12, align 4, !tbaa !62
  %214 = add nsw i32 %213, 1
  store i32 %214, ptr %12, align 4, !tbaa !62
  %215 = sext i32 %213 to i64
  %216 = getelementptr inbounds [40 x i32], ptr %8, i64 0, i64 %215
  store i32 8343, ptr %216, align 4, !tbaa !62
  %217 = load i32, ptr %12, align 4, !tbaa !62
  %218 = add nsw i32 %217, 1
  store i32 %218, ptr %12, align 4, !tbaa !62
  %219 = sext i32 %217 to i64
  %220 = getelementptr inbounds [40 x i32], ptr %8, i64 0, i64 %219
  store i32 8344, ptr %220, align 4, !tbaa !62
  br label %221

221:                                              ; preds = %212, %200
  br label %222

222:                                              ; preds = %221, %191
  br label %223

223:                                              ; preds = %222, %176
  br label %224

224:                                              ; preds = %223, %171
  %225 = load ptr, ptr %6, align 8, !tbaa !5
  %226 = getelementptr inbounds %struct._GLFWctxconfig, ptr %225, i32 0, i32 6
  %227 = load i32, ptr %226, align 8, !tbaa !68
  %228 = icmp ne i32 %227, 0
  br i1 %228, label %229, label %249

229:                                              ; preds = %224
  %230 = load i32, ptr getelementptr inbounds (%struct._GLFWlibraryGLX, ptr getelementptr inbounds (%struct._GLFWlibrary, ptr @_glfw, i32 0, i32 17), i32 0, i32 34), align 8, !tbaa !69
  %231 = icmp ne i32 %230, 0
  br i1 %231, label %232, label %248

232:                                              ; preds = %229
  %233 = load i32, ptr %12, align 4, !tbaa !62
  %234 = add nsw i32 %233, 1
  %235 = sext i32 %234 to i64
  %236 = icmp ult i64 %235, 40
  br i1 %236, label %237, label %238

237:                                              ; preds = %232
  br label %239

238:                                              ; preds = %232
  call void @__assert_fail(ptr noundef @.str.42, ptr noundef @.str.43, i32 noundef 557, ptr noundef @__PRETTY_FUNCTION__._glfwCreateContextGLX) #5
  unreachable

239:                                              ; preds = %237
  %240 = load i32, ptr %12, align 4, !tbaa !62
  %241 = add nsw i32 %240, 1
  store i32 %241, ptr %12, align 4, !tbaa !62
  %242 = sext i32 %240 to i64
  %243 = getelementptr inbounds [40 x i32], ptr %8, i64 0, i64 %242
  store i32 12723, ptr %243, align 4, !tbaa !62
  %244 = load i32, ptr %12, align 4, !tbaa !62
  %245 = add nsw i32 %244, 1
  store i32 %245, ptr %12, align 4, !tbaa !62
  %246 = sext i32 %244 to i64
  %247 = getelementptr inbounds [40 x i32], ptr %8, i64 0, i64 %246
  store i32 1, ptr %247, align 4, !tbaa !62
  br label %248

248:                                              ; preds = %239, %229
  br label %249

249:                                              ; preds = %248, %224
  %250 = load ptr, ptr %6, align 8, !tbaa !5
  %251 = getelementptr inbounds %struct._GLFWctxconfig, ptr %250, i32 0, i32 2
  %252 = load i32, ptr %251, align 8, !tbaa !70
  %253 = icmp ne i32 %252, 1
  br i1 %253, label %259, label %254

254:                                              ; preds = %249
  %255 = load ptr, ptr %6, align 8, !tbaa !5
  %256 = getelementptr inbounds %struct._GLFWctxconfig, ptr %255, i32 0, i32 3
  %257 = load i32, ptr %256, align 4, !tbaa !71
  %258 = icmp ne i32 %257, 0
  br i1 %258, label %259, label %296

259:                                              ; preds = %254, %249
  %260 = load i32, ptr %12, align 4, !tbaa !62
  %261 = add nsw i32 %260, 1
  %262 = sext i32 %261 to i64
  %263 = icmp ult i64 %262, 40
  br i1 %263, label %264, label %265

264:                                              ; preds = %259
  br label %266

265:                                              ; preds = %259
  call void @__assert_fail(ptr noundef @.str.42, ptr noundef @.str.43, i32 noundef 565, ptr noundef @__PRETTY_FUNCTION__._glfwCreateContextGLX) #5
  unreachable

266:                                              ; preds = %264
  %267 = load i32, ptr %12, align 4, !tbaa !62
  %268 = add nsw i32 %267, 1
  store i32 %268, ptr %12, align 4, !tbaa !62
  %269 = sext i32 %267 to i64
  %270 = getelementptr inbounds [40 x i32], ptr %8, i64 0, i64 %269
  store i32 8337, ptr %270, align 4, !tbaa !62
  %271 = load ptr, ptr %6, align 8, !tbaa !5
  %272 = getelementptr inbounds %struct._GLFWctxconfig, ptr %271, i32 0, i32 2
  %273 = load i32, ptr %272, align 8, !tbaa !70
  %274 = load i32, ptr %12, align 4, !tbaa !62
  %275 = add nsw i32 %274, 1
  store i32 %275, ptr %12, align 4, !tbaa !62
  %276 = sext i32 %274 to i64
  %277 = getelementptr inbounds [40 x i32], ptr %8, i64 0, i64 %276
  store i32 %273, ptr %277, align 4, !tbaa !62
  %278 = load i32, ptr %12, align 4, !tbaa !62
  %279 = add nsw i32 %278, 1
  %280 = sext i32 %279 to i64
  %281 = icmp ult i64 %280, 40
  br i1 %281, label %282, label %283

282:                                              ; preds = %266
  br label %284

283:                                              ; preds = %266
  call void @__assert_fail(ptr noundef @.str.42, ptr noundef @.str.43, i32 noundef 566, ptr noundef @__PRETTY_FUNCTION__._glfwCreateContextGLX) #5
  unreachable

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

296:                                              ; preds = %284, %254
  %297 = load i32, ptr %13, align 4, !tbaa !62
  %298 = icmp ne i32 %297, 0
  br i1 %298, label %299, label %316

299:                                              ; preds = %296
  %300 = load i32, ptr %12, align 4, !tbaa !62
  %301 = add nsw i32 %300, 1
  %302 = sext i32 %301 to i64
  %303 = icmp ult i64 %302, 40
  br i1 %303, label %304, label %305

304:                                              ; preds = %299
  br label %306

305:                                              ; preds = %299
  call void @__assert_fail(ptr noundef @.str.42, ptr noundef @.str.43, i32 noundef 570, ptr noundef @__PRETTY_FUNCTION__._glfwCreateContextGLX) #5
  unreachable

306:                                              ; preds = %304
  %307 = load i32, ptr %12, align 4, !tbaa !62
  %308 = add nsw i32 %307, 1
  store i32 %308, ptr %12, align 4, !tbaa !62
  %309 = sext i32 %307 to i64
  %310 = getelementptr inbounds [40 x i32], ptr %8, i64 0, i64 %309
  store i32 37158, ptr %310, align 4, !tbaa !62
  %311 = load i32, ptr %13, align 4, !tbaa !62
  %312 = load i32, ptr %12, align 4, !tbaa !62
  %313 = add nsw i32 %312, 1
  store i32 %313, ptr %12, align 4, !tbaa !62
  %314 = sext i32 %312 to i64
  %315 = getelementptr inbounds [40 x i32], ptr %8, i64 0, i64 %314
  store i32 %311, ptr %315, align 4, !tbaa !62
  br label %316

316:                                              ; preds = %306, %296
  %317 = load i32, ptr %14, align 4, !tbaa !62
  %318 = icmp ne i32 %317, 0
  br i1 %318, label %319, label %336

319:                                              ; preds = %316
  %320 = load i32, ptr %12, align 4, !tbaa !62
  %321 = add nsw i32 %320, 1
  %322 = sext i32 %321 to i64
  %323 = icmp ult i64 %322, 40
  br i1 %323, label %324, label %325

324:                                              ; preds = %319
  br label %326

325:                                              ; preds = %319
  call void @__assert_fail(ptr noundef @.str.42, ptr noundef @.str.43, i32 noundef 573, ptr noundef @__PRETTY_FUNCTION__._glfwCreateContextGLX) #5
  unreachable

326:                                              ; preds = %324
  %327 = load i32, ptr %12, align 4, !tbaa !62
  %328 = add nsw i32 %327, 1
  store i32 %328, ptr %12, align 4, !tbaa !62
  %329 = sext i32 %327 to i64
  %330 = getelementptr inbounds [40 x i32], ptr %8, i64 0, i64 %329
  store i32 8340, ptr %330, align 4, !tbaa !62
  %331 = load i32, ptr %14, align 4, !tbaa !62
  %332 = load i32, ptr %12, align 4, !tbaa !62
  %333 = add nsw i32 %332, 1
  store i32 %333, ptr %12, align 4, !tbaa !62
  %334 = sext i32 %332 to i64
  %335 = getelementptr inbounds [40 x i32], ptr %8, i64 0, i64 %334
  store i32 %331, ptr %335, align 4, !tbaa !62
  br label %336

336:                                              ; preds = %326, %316
  %337 = load i32, ptr %12, align 4, !tbaa !62
  %338 = add nsw i32 %337, 1
  %339 = sext i32 %338 to i64
  %340 = icmp ult i64 %339, 40
  br i1 %340, label %341, label %342

341:                                              ; preds = %336
  br label %343

342:                                              ; preds = %336
  call void @__assert_fail(ptr noundef @.str.42, ptr noundef @.str.43, i32 noundef 575, ptr noundef @__PRETTY_FUNCTION__._glfwCreateContextGLX) #5
  unreachable

343:                                              ; preds = %341
  %344 = load i32, ptr %12, align 4, !tbaa !62
  %345 = add nsw i32 %344, 1
  store i32 %345, ptr %12, align 4, !tbaa !62
  %346 = sext i32 %344 to i64
  %347 = getelementptr inbounds [40 x i32], ptr %8, i64 0, i64 %346
  store i32 0, ptr %347, align 4, !tbaa !62
  %348 = load i32, ptr %12, align 4, !tbaa !62
  %349 = add nsw i32 %348, 1
  store i32 %349, ptr %12, align 4, !tbaa !62
  %350 = sext i32 %348 to i64
  %351 = getelementptr inbounds [40 x i32], ptr %8, i64 0, i64 %350
  store i32 0, ptr %351, align 4, !tbaa !62
  %352 = load ptr, ptr getelementptr inbounds (%struct._GLFWlibraryGLX, ptr getelementptr inbounds (%struct._GLFWlibrary, ptr @_glfw, i32 0, i32 17), i32 0, i32 23), align 8, !tbaa !72
  %353 = load ptr, ptr getelementptr inbounds (%struct._GLFWlibrary, ptr @_glfw, i32 0, i32 16), align 8, !tbaa !73
  %354 = load ptr, ptr %9, align 8, !tbaa !5
  %355 = load ptr, ptr %10, align 8, !tbaa !5
  %356 = getelementptr inbounds [40 x i32], ptr %8, i64 0, i64 0
  %357 = call ptr %352(ptr noundef %353, ptr noundef %354, ptr noundef %355, i32 noundef 1, ptr noundef %356)
  %358 = load ptr, ptr %5, align 8, !tbaa !5
  %359 = getelementptr inbounds %struct._GLFWwindow, ptr %358, i32 0, i32 25
  %360 = getelementptr inbounds %struct._GLFWcontext, ptr %359, i32 0, i32 20
  %361 = getelementptr inbounds %struct._GLFWcontextGLX, ptr %360, i32 0, i32 0
  store ptr %357, ptr %361, align 8, !tbaa !13
  %362 = load ptr, ptr %5, align 8, !tbaa !5
  %363 = getelementptr inbounds %struct._GLFWwindow, ptr %362, i32 0, i32 25
  %364 = getelementptr inbounds %struct._GLFWcontext, ptr %363, i32 0, i32 20
  %365 = getelementptr inbounds %struct._GLFWcontextGLX, ptr %364, i32 0, i32 0
  %366 = load ptr, ptr %365, align 8, !tbaa !13
  %367 = icmp ne ptr %366, null
  br i1 %367, label %398, label %368

368:                                              ; preds = %343
  %369 = load i32, ptr getelementptr inbounds (%struct._GLFWlibraryX11, ptr getelementptr inbounds (%struct._GLFWlibrary, ptr @_glfw, i32 0, i32 16), i32 0, i32 9), align 8, !tbaa !74
  %370 = load i32, ptr getelementptr inbounds (%struct._GLFWlibraryGLX, ptr getelementptr inbounds (%struct._GLFWlibrary, ptr @_glfw, i32 0, i32 17), i32 0, i32 3), align 4, !tbaa !75
  %371 = add nsw i32 %370, 13
  %372 = icmp eq i32 %369, %371
  br i1 %372, label %373, label %397

373:                                              ; preds = %368
  %374 = load ptr, ptr %6, align 8, !tbaa !5
  %375 = getelementptr inbounds %struct._GLFWctxconfig, ptr %374, i32 0, i32 0
  %376 = load i32, ptr %375, align 8, !tbaa !24
  %377 = icmp eq i32 %376, 196609
  br i1 %377, label %378, label %397

378:                                              ; preds = %373
  %379 = load ptr, ptr %6, align 8, !tbaa !5
  %380 = getelementptr inbounds %struct._GLFWctxconfig, ptr %379, i32 0, i32 7
  %381 = load i32, ptr %380, align 4, !tbaa !61
  %382 = icmp eq i32 %381, 0
  br i1 %382, label %383, label %397

383:                                              ; preds = %378
  %384 = load ptr, ptr %6, align 8, !tbaa !5
  %385 = getelementptr inbounds %struct._GLFWctxconfig, ptr %384, i32 0, i32 4
  %386 = load i32, ptr %385, align 8, !tbaa !60
  %387 = icmp eq i32 %386, 0
  br i1 %387, label %388, label %397

388:                                              ; preds = %383
  %389 = load ptr, ptr %5, align 8, !tbaa !5
  %390 = load ptr, ptr %9, align 8, !tbaa !5
  %391 = load ptr, ptr %10, align 8, !tbaa !5
  %392 = call ptr @createLegacyContextGLX(ptr noundef %389, ptr noundef %390, ptr noundef %391)
  %393 = load ptr, ptr %5, align 8, !tbaa !5
  %394 = getelementptr inbounds %struct._GLFWwindow, ptr %393, i32 0, i32 25
  %395 = getelementptr inbounds %struct._GLFWcontext, ptr %394, i32 0, i32 20
  %396 = getelementptr inbounds %struct._GLFWcontextGLX, ptr %395, i32 0, i32 0
  store ptr %392, ptr %396, align 8, !tbaa !13
  br label %397

397:                                              ; preds = %388, %383, %378, %373, %368
  br label %398

398:                                              ; preds = %397, %343
  call void @llvm.lifetime.end.p0(i64 4, ptr %14) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %13) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %12) #4
  br label %408

399:                                              ; preds = %71
  %400 = load ptr, ptr %5, align 8, !tbaa !5
  %401 = load ptr, ptr %9, align 8, !tbaa !5
  %402 = load ptr, ptr %10, align 8, !tbaa !5
  %403 = call ptr @createLegacyContextGLX(ptr noundef %400, ptr noundef %401, ptr noundef %402)
  %404 = load ptr, ptr %5, align 8, !tbaa !5
  %405 = getelementptr inbounds %struct._GLFWwindow, ptr %404, i32 0, i32 25
  %406 = getelementptr inbounds %struct._GLFWcontext, ptr %405, i32 0, i32 20
  %407 = getelementptr inbounds %struct._GLFWcontextGLX, ptr %406, i32 0, i32 0
  store ptr %403, ptr %407, align 8, !tbaa !13
  br label %408

408:                                              ; preds = %399, %398
  call void @_glfwReleaseErrorHandlerX11()
  %409 = load ptr, ptr %5, align 8, !tbaa !5
  %410 = getelementptr inbounds %struct._GLFWwindow, ptr %409, i32 0, i32 25
  %411 = getelementptr inbounds %struct._GLFWcontext, ptr %410, i32 0, i32 20
  %412 = getelementptr inbounds %struct._GLFWcontextGLX, ptr %411, i32 0, i32 0
  %413 = load ptr, ptr %412, align 8, !tbaa !13
  %414 = icmp ne ptr %413, null
  br i1 %414, label %416, label %415

415:                                              ; preds = %408
  call void @_glfwInputErrorX11(i32 noundef 65543, ptr noundef @.str.44)
  store i32 0, ptr %4, align 4
  store i32 1, ptr %11, align 4
  br label %455

416:                                              ; preds = %408
  %417 = load ptr, ptr getelementptr inbounds (%struct._GLFWlibraryGLX, ptr getelementptr inbounds (%struct._GLFWlibrary, ptr @_glfw, i32 0, i32 17), i32 0, i32 16), align 8, !tbaa !76
  %418 = load ptr, ptr getelementptr inbounds (%struct._GLFWlibrary, ptr @_glfw, i32 0, i32 16), align 8, !tbaa !73
  %419 = load ptr, ptr %9, align 8, !tbaa !5
  %420 = load ptr, ptr %5, align 8, !tbaa !5
  %421 = getelementptr inbounds %struct._GLFWwindow, ptr %420, i32 0, i32 27
  %422 = getelementptr inbounds %struct._GLFWwindowX11, ptr %421, i32 0, i32 1
  %423 = load i64, ptr %422, align 8, !tbaa !77
  %424 = call i64 %417(ptr noundef %418, ptr noundef %419, i64 noundef %423, ptr noundef null)
  %425 = load ptr, ptr %5, align 8, !tbaa !5
  %426 = getelementptr inbounds %struct._GLFWwindow, ptr %425, i32 0, i32 25
  %427 = getelementptr inbounds %struct._GLFWcontext, ptr %426, i32 0, i32 20
  %428 = getelementptr inbounds %struct._GLFWcontextGLX, ptr %427, i32 0, i32 1
  store i64 %424, ptr %428, align 8, !tbaa !78
  %429 = load ptr, ptr %5, align 8, !tbaa !5
  %430 = getelementptr inbounds %struct._GLFWwindow, ptr %429, i32 0, i32 25
  %431 = getelementptr inbounds %struct._GLFWcontext, ptr %430, i32 0, i32 20
  %432 = getelementptr inbounds %struct._GLFWcontextGLX, ptr %431, i32 0, i32 1
  %433 = load i64, ptr %432, align 8, !tbaa !78
  %434 = icmp ne i64 %433, 0
  br i1 %434, label %436, label %435

435:                                              ; preds = %416
  call void (i32, ptr, ...) @_glfwInputError(i32 noundef 65544, ptr noundef @.str.45)
  store i32 0, ptr %4, align 4
  store i32 1, ptr %11, align 4
  br label %455

436:                                              ; preds = %416
  %437 = load ptr, ptr %5, align 8, !tbaa !5
  %438 = getelementptr inbounds %struct._GLFWwindow, ptr %437, i32 0, i32 25
  %439 = getelementptr inbounds %struct._GLFWcontext, ptr %438, i32 0, i32 14
  store ptr @makeContextCurrentGLX, ptr %439, align 8, !tbaa !79
  %440 = load ptr, ptr %5, align 8, !tbaa !5
  %441 = getelementptr inbounds %struct._GLFWwindow, ptr %440, i32 0, i32 25
  %442 = getelementptr inbounds %struct._GLFWcontext, ptr %441, i32 0, i32 15
  store ptr @swapBuffersGLX, ptr %442, align 8, !tbaa !80
  %443 = load ptr, ptr %5, align 8, !tbaa !5
  %444 = getelementptr inbounds %struct._GLFWwindow, ptr %443, i32 0, i32 25
  %445 = getelementptr inbounds %struct._GLFWcontext, ptr %444, i32 0, i32 16
  store ptr @swapIntervalGLX, ptr %445, align 8, !tbaa !81
  %446 = load ptr, ptr %5, align 8, !tbaa !5
  %447 = getelementptr inbounds %struct._GLFWwindow, ptr %446, i32 0, i32 25
  %448 = getelementptr inbounds %struct._GLFWcontext, ptr %447, i32 0, i32 17
  store ptr @extensionSupportedGLX, ptr %448, align 8, !tbaa !82
  %449 = load ptr, ptr %5, align 8, !tbaa !5
  %450 = getelementptr inbounds %struct._GLFWwindow, ptr %449, i32 0, i32 25
  %451 = getelementptr inbounds %struct._GLFWcontext, ptr %450, i32 0, i32 18
  store ptr @getProcAddressGLX, ptr %451, align 8, !tbaa !83
  %452 = load ptr, ptr %5, align 8, !tbaa !5
  %453 = getelementptr inbounds %struct._GLFWwindow, ptr %452, i32 0, i32 25
  %454 = getelementptr inbounds %struct._GLFWcontext, ptr %453, i32 0, i32 19
  store ptr @destroyContextGLX, ptr %454, align 8, !tbaa !84
  store i32 1, ptr %4, align 4
  store i32 1, ptr %11, align 4
  br label %455

455:                                              ; preds = %436, %435, %415, %69, %56, %46, %31
  call void @llvm.lifetime.end.p0(i64 8, ptr %10) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %9) #4
  call void @llvm.lifetime.end.p0(i64 160, ptr %8) #4
  %456 = load i32, ptr %4, align 4
  ret i32 %456
}

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

declare void @_glfwGrabErrorHandlerX11() #1

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

; Function Attrs: nounwind uwtable
declare hidden ptr @createLegacyContextGLX(ptr noundef, ptr noundef, ptr noundef) #2

declare void @_glfwReleaseErrorHandlerX11() #1

declare void @_glfwInputErrorX11(i32 noundef, ptr noundef) #1

; Function Attrs: nounwind uwtable
declare hidden void @makeContextCurrentGLX(ptr noundef) #2

; Function Attrs: nounwind uwtable
declare hidden void @swapBuffersGLX(ptr noundef) #2

; Function Attrs: nounwind uwtable
declare hidden void @swapIntervalGLX(i32 noundef) #2

; Function Attrs: nounwind uwtable
declare hidden void @destroyContextGLX(ptr noundef) #2

attributes #0 = { 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 = { nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #3 = { 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 #4 = { nounwind }
attributes #5 = { noreturn nounwind }

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C/C++ TBAA"}
!9 = !{!10, !6, i64 40}
!10 = !{!"_GLFWctxconfig", !11, i64 0, !11, i64 4, !11, i64 8, !11, i64 12, !11, i64 16, !11, i64 20, !11, i64 24, !11, i64 28, !11, i64 32, !11, i64 36, !6, i64 40, !12, i64 48}
!11 = !{!"int", !7, i64 0}
!12 = !{!"", !11, i64 0}
!13 = !{!14, !6, i64 616}
!14 = !{!"_GLFWwindow", !6, i64 0, !11, i64 8, !11, i64 12, !11, i64 16, !11, i64 20, !11, i64 24, !11, i64 28, !6, i64 32, !15, i64 40, !6, i64 64, !6, i64 72, !11, i64 80, !11, i64 84, !11, i64 88, !11, i64 92, !11, i64 96, !11, i64 100, !11, i64 104, !11, i64 108, !11, i64 112, !11, i64 116, !7, i64 120, !7, i64 128, !16, i64 480, !16, i64 488, !17, i64 496, !22, i64 688, !23, i64 824}
!15 = !{!"GLFWvidmode", !11, i64 0, !11, i64 4, !11, i64 8, !11, i64 12, !11, i64 16, !11, i64 20}
!16 = !{!"double", !7, i64 0}
!17 = !{!"_GLFWcontext", !11, i64 0, !11, i64 4, !11, i64 8, !11, i64 12, !11, i64 16, !11, i64 20, !11, i64 24, !11, i64 28, !11, i64 32, !11, i64 36, !11, 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, !18, i64 120, !20, i64 136, !21, i64 168}
!18 = !{!"_GLFWcontextGLX", !6, i64 0, !19, i64 8}
!19 = !{!"long", !7, i64 0}
!20 = !{!"_GLFWcontextEGL", !6, i64 0, !6, i64 8, !6, i64 16, !6, i64 24}
!21 = !{!"_GLFWcontextOSMesa", !6, i64 0, !11, i64 8, !11, i64 12, !6, i64 16}
!22 = !{!"", !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}
!23 = !{!"_GLFWwindowX11", !19, i64 0, !19, i64 8, !6, i64 16, !11, i64 24, !11, i64 28, !11, i64 32, !11, i64 36, !11, i64 40, !11, i64 44, !11, i64 48, !11, i64 52, !11, i64 56, !11, i64 60, !11, i64 64, !11, i64 68, !19, i64 72}
!24 = !{!10, !11, i64 0}
!25 = !{!26, !11, i64 133160}
!26 = !{!"_GLFWlibrary", !11, i64 0, !27, i64 8, !6, i64 992, !6, i64 1000, !6, i64 1008, !6, i64 1016, !11, i64 1024, !7, i64 1032, !6, i64 130568, !11, i64 130576, !34, i64 130580, !34, i64 130588, !36, i64 130600, !38, i64 130648, !40, i64 130672, !41, i64 130736, !42, i64 130752, !53, i64 132960, !54, i64 133184, !56, i64 133264, !57, i64 133440}
!27 = !{!"", !28, i64 0, !30, i64 16, !31, i64 88, !10, i64 920, !11, i64 976}
!28 = !{!"_GLFWinitconfig", !11, i64 0, !29, i64 4}
!29 = !{!"", !11, i64 0, !11, i64 4}
!30 = !{!"_GLFWfbconfig", !11, i64 0, !11, i64 4, !11, i64 8, !11, i64 12, !11, i64 16, !11, i64 20, !11, i64 24, !11, i64 28, !11, i64 32, !11, i64 36, !11, i64 40, !11, i64 44, !11, i64 48, !11, i64 52, !11, i64 56, !11, i64 60, !19, i64 64}
!31 = !{!"_GLFWwndconfig", !11, i64 0, !11, i64 4, !6, i64 8, !11, i64 16, !11, i64 20, !11, i64 24, !11, i64 28, !11, i64 32, !11, i64 36, !11, i64 40, !11, i64 44, !11, i64 48, !11, i64 52, !32, i64 56, !33, i64 316}
!32 = !{!"", !11, i64 0, !7, i64 4}
!33 = !{!"", !7, i64 0, !7, i64 256}
!34 = !{!"_GLFWtls", !35, i64 0}
!35 = !{!"_GLFWtlsPOSIX", !11, i64 0, !11, i64 4}
!36 = !{!"_GLFWmutex", !37, i64 0}
!37 = !{!"_GLFWmutexPOSIX", !11, i64 0, !7, i64 8}
!38 = !{!"", !19, i64 0, !39, i64 8}
!39 = !{!"_GLFWtimerPOSIX", !11, i64 0, !19, i64 8}
!40 = !{!"", !11, i64 0, !6, i64 8, !7, i64 16, !6, i64 32, !6, i64 40, !11, i64 48, !11, i64 52, !11, i64 56}
!41 = !{!"", !6, i64 0, !6, i64 8}
!42 = !{!"_GLFWlibraryX11", !6, i64 0, !11, i64 8, !19, i64 16, !43, i64 24, !43, i64 28, !19, i64 32, !19, i64 40, !11, i64 48, !6, i64 56, !11, i64 64, !6, i64 72, !6, i64 80, !7, i64 88, !7, i64 94, !7, i64 606, !16, i64 1304, !16, i64 1312, !6, i64 1320, !19, i64 1328, !19, i64 1336, !19, i64 1344, !19, i64 1352, !19, i64 1360, !19, i64 1368, !19, i64 1376, !19, i64 1384, !19, i64 1392, !19, i64 1400, !19, i64 1408, !19, i64 1416, !19, i64 1424, !19, i64 1432, !19, i64 1440, !19, i64 1448, !19, i64 1456, !19, i64 1464, !19, i64 1472, !19, i64 1480, !19, i64 1488, !19, i64 1496, !19, i64 1504, !19, i64 1512, !19, i64 1520, !19, i64 1528, !19, i64 1536, !19, i64 1544, !19, i64 1552, !19, i64 1560, !19, i64 1568, !19, i64 1576, !19, i64 1584, !19, i64 1592, !19, i64 1600, !19, i64 1608, !19, i64 1616, !19, i64 1624, !19, i64 1632, !19, i64 1640, !19, i64 1648, !19, i64 1656, !19, i64 1664, !19, i64 1672, !19, i64 1680, !19, i64 1688, !44, i64 1696, !45, i64 1872, !46, i64 1900, !47, i64 1920, !48, i64 1944, !49, i64 1976, !41, i64 2024, !50, i64 2040, !51, i64 2096, !52, i64 2152}
!43 = !{!"float", !7, i64 0}
!44 = !{!"", !11, i64 0, !6, i64 8, !11, i64 16, !11, i64 20, !11, i64 24, !11, i64 28, !11, i64 32, !11, i64 36, !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}
!45 = !{!"", !11, i64 0, !11, i64 4, !11, i64 8, !11, i64 12, !11, i64 16, !11, i64 20, !11, i64 24}
!46 = !{!"", !11, i64 0, !11, i64 4, !11, i64 8, !11, i64 12, !11, i64 16}
!47 = !{!"", !11, i64 0, !19, i64 8, !19, i64 16}
!48 = !{!"", !6, i64 0, !6, i64 8, !6, i64 16, !6, i64 24}
!49 = !{!"", !11, i64 0, !6, i64 8, !11, i64 16, !11, i64 20, !6, i64 24, !6, i64 32, !6, i64 40}
!50 = !{!"", !11, i64 0, !6, i64 8, !11, i64 16, !11, i64 20, !6, i64 24, !6, i64 32, !6, i64 40, !6, i64 48}
!51 = !{!"", !11, i64 0, !6, i64 8, !11, i64 16, !11, i64 20, !11, i64 24, !11, i64 28, !11, i64 32, !6, i64 40, !6, i64 48}
!52 = !{!"", !11, i64 0, !6, i64 8, !11, i64 16, !11, i64 20, !11, i64 24, !11, i64 28, !6, i64 32, !6, i64 40, !6, i64 48}
!53 = !{!"_GLFWlibraryGLX", !11, i64 0, !11, i64 4, !11, i64 8, !11, i64 12, !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, !11, i64 176, !11, i64 180, !11, i64 184, !11, i64 188, !11, i64 192, !11, i64 196, !11, i64 200, !11, i64 204, !11, i64 208, !11, i64 212, !11, i64 216, !11, i64 220}
!54 = !{!"_GLFWlibraryLinux", !11, i64 0, !11, i64 4, !55, i64 8, !11, i64 72}
!55 = !{!"re_pattern_buffer", !6, i64 0, !19, i64 8, !19, i64 16, !19, i64 24, !6, i64 32, !6, i64 40, !19, i64 48, !11, i64 56, !11, i64 56, !11, i64 56, !11, i64 56, !11, i64 56, !11, i64 56, !11, i64 56}
!56 = !{!"_GLFWlibraryEGL", !6, i64 0, !11, i64 8, !11, i64 12, !11, i64 16, !11, i64 20, !11, i64 24, !11, i64 28, !11, i64 32, !11, i64 36, !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}
!57 = !{!"_GLFWlibraryOSMesa", !6, i64 0, !6, i64 8, !6, i64 16, !6, i64 24, !6, i64 32, !6, i64 40, !6, i64 48, !6, i64 56}
!58 = !{!26, !11, i64 133164}
!59 = !{!26, !11, i64 133172}
!60 = !{!10, !11, i64 16}
!61 = !{!10, !11, i64 28}
!62 = !{!11, !11, i64 0}
!63 = !{!10, !11, i64 20}
!64 = !{!10, !11, i64 32}
!65 = !{!26, !11, i64 133168}
!66 = !{!10, !11, i64 36}
!67 = !{!26, !11, i64 133180}
!68 = !{!10, !11, i64 24}
!69 = !{!26, !11, i64 133176}
!70 = !{!10, !11, i64 8}
!71 = !{!10, !11, i64 12}
!72 = !{!26, !6, i64 133128}
!73 = !{!26, !6, i64 130752}
!74 = !{!26, !11, i64 130816}
!75 = !{!26, !11, i64 132972}
!76 = !{!26, !6, i64 133072}
!77 = !{!14, !19, i64 832}
!78 = !{!14, !19, i64 624}
!79 = !{!14, !6, i64 568}
!80 = !{!14, !6, i64 576}
!81 = !{!14, !6, i64 584}
!82 = !{!14, !6, i64 592}
!83 = !{!14, !6, i64 600}
!84 = !{!14, !6, i64 608}


; 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.anon, ptr, ptr, ptr, ptr, i32, [16 x %struct._GLFWjoystick], ptr, i32, %struct._GLFWtls, %struct._GLFWtls, %struct._GLFWmutex, %struct.anon.4, %struct.anon.5, %struct.anon.6, %struct._GLFWlibraryX11, %struct._GLFWlibraryGLX, %struct._GLFWlibraryLinux, %struct._GLFWlibraryEGL, %struct._GLFWlibraryOSMesa }
%struct.anon = type { %struct._GLFWinitconfig, %struct._GLFWfbconfig, %struct._GLFWwndconfig, %struct._GLFWctxconfig, i32 }
%struct._GLFWinitconfig = type { i32, %struct.anon.0 }
%struct.anon.0 = type { i32, 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, ptr, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, %struct.anon.1, %struct.anon.2 }
%struct.anon.1 = type { i32, [256 x i8] }
%struct.anon.2 = type { [256 x i8], [256 x i8] }
%struct._GLFWctxconfig = type { i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, ptr, %struct.anon.3 }
%struct.anon.3 = type { i32 }
%struct._GLFWjoystick = type { i32, ptr, i32, ptr, i32, ptr, i32, ptr, ptr, [33 x i8], ptr, %struct._GLFWjoystickLinux }
%struct._GLFWjoystickLinux = type { i32, [4096 x i8], [512 x i32], [64 x i32], [64 x %struct.input_absinfo], [4 x [2 x i32]] }
%struct.input_absinfo = type { i32, i32, i32, i32, i32, i32 }
%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.4 = type { i64, %struct._GLFWtimerPOSIX }
%struct._GLFWtimerPOSIX = type { i32, i64 }
%struct.anon.5 = type { i32, ptr, [2 x ptr], ptr, ptr, i32, i32, i32 }
%struct.anon.6 = type { ptr, ptr }
%struct._GLFWlibraryX11 = type { ptr, i32, i64, float, float, i64, i64, i32, ptr, i32, ptr, ptr, [5 x i8], [256 x i16], [349 x i16], double, double, ptr, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, %struct.anon.7, %struct.anon.8, %struct.anon.9, %struct.anon.10, %struct.anon.11, %struct.anon.12, %struct.anon.13, %struct.anon.14, %struct.anon.15, %struct.anon.16 }
%struct.anon.7 = type { i32, ptr, i32, i32, i32, i32, i32, i32, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr }
%struct.anon.8 = type { i32, i32, i32, i32, i32, i32, i32 }
%struct.anon.9 = type { i32, i32, i32, i32, i32 }
%struct.anon.10 = type { i32, i64, i64 }
%struct.anon.11 = type { ptr, ptr, ptr, ptr }
%struct.anon.12 = type { i32, ptr, i32, i32, ptr, ptr, ptr }
%struct.anon.13 = type { ptr, ptr }
%struct.anon.14 = type { i32, ptr, i32, i32, ptr, ptr, ptr, ptr }
%struct.anon.15 = type { i32, ptr, i32, i32, i32, i32, i32, ptr, ptr }
%struct.anon.16 = type { i32, ptr, i32, i32, i32, i32, ptr, ptr, ptr }
%struct._GLFWlibraryGLX = type { i32, i32, i32, i32, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32 }
%struct._GLFWlibraryLinux = type { i32, i32, %struct.re_pattern_buffer, i32 }
%struct.re_pattern_buffer = type { ptr, i64, i64, i64, ptr, ptr, i64, i8 }
%struct._GLFWlibraryEGL = type { ptr, 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 }
%struct._GLFWlibraryOSMesa = type { ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr }

@_glfw = external local_unnamed_addr global %struct._GLFWlibrary, align 8
@.str.38 = external hidden unnamed_addr constant [43 x i8], align 1
@.str.39 = external hidden unnamed_addr constant [79 x i8], align 1
@.str.40 = external hidden unnamed_addr constant [87 x i8], align 1
@.str.41 = external hidden unnamed_addr constant [83 x i8], align 1
@.str.44 = external hidden unnamed_addr constant [30 x i8], align 1
@.str.45 = external hidden unnamed_addr constant [29 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 void @_glfwInputError(i32 noundef, ptr noundef, ...) local_unnamed_addr #1

; Function Attrs: nounwind uwtable
declare hidden i32 @extensionSupportedGLX(ptr noundef) #2

; Function Attrs: nounwind uwtable
declare hidden ptr @getProcAddressGLX(ptr noundef) #2

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

8:                                                ; preds = %3
  %9 = getelementptr inbounds i8, ptr %7, i64 616
  %10 = load ptr, ptr %9, align 8, !tbaa !13
  br label %11

11:                                               ; preds = %8, %3
  %.0102 = phi ptr [ %10, %8 ], [ null, %3 ]
  %12 = call i32 @chooseGLXFBConfig(ptr noundef %2, ptr noundef nonnull %5)
  %.not116 = icmp eq i32 %12, 0
  br i1 %.not116, label %13, label %14

13:                                               ; preds = %11
  call void (i32, ptr, ...) @_glfwInputError(i32 noundef 65545, ptr noundef nonnull @.str.38) #3
  br label %175

14:                                               ; preds = %11
  %15 = load i32, ptr %1, align 8, !tbaa !24
  %16 = icmp eq i32 %15, 196610
  %.pre = load i32, ptr getelementptr inbounds (i8, ptr @_glfw, i64 133160), align 8
  br i1 %16, label %17, label %25

17:                                               ; preds = %14
  %18 = icmp ne i32 %.pre, 0
  %19 = load i32, ptr getelementptr inbounds (i8, ptr @_glfw, i64 133164), align 4
  %20 = icmp ne i32 %19, 0
  %or.cond = select i1 %18, i1 %20, i1 false
  %21 = load i32, ptr getelementptr inbounds (i8, ptr @_glfw, i64 133172), align 4
  %22 = icmp ne i32 %21, 0
  %or.cond3 = select i1 %or.cond, i1 %22, i1 false
  br i1 %or.cond3, label %.thread, label %24

.thread:                                          ; preds = %17
  %23 = getelementptr inbounds i8, ptr %1, i64 16
  br label %31

24:                                               ; preds = %17
  call void (i32, ptr, ...) @_glfwInputError(i32 noundef 65542, ptr noundef nonnull @.str.39) #3
  br label %175

25:                                               ; preds = %14
  %26 = getelementptr inbounds i8, ptr %1, i64 16
  %27 = load i32, ptr %26, align 8, !tbaa !25
  %28 = icmp eq i32 %27, 0
  %29 = icmp ne i32 %.pre, 0
  %or.cond7 = select i1 %28, i1 true, i1 %29
  br i1 %or.cond7, label %31, label %30

30:                                               ; preds = %25
  call void (i32, ptr, ...) @_glfwInputError(i32 noundef 65543, ptr noundef nonnull @.str.40) #3
  br label %175

31:                                               ; preds = %.thread, %25
  %32 = phi i1 [ true, %.thread ], [ %29, %25 ]
  %33 = phi ptr [ %23, %.thread ], [ %26, %25 ]
  %34 = getelementptr inbounds i8, ptr %1, i64 28
  %35 = load i32, ptr %34, align 4, !tbaa !26
  %.not117 = icmp eq i32 %35, 0
  br i1 %.not117, label %40, label %36

36:                                               ; preds = %31
  %37 = load i32, ptr getelementptr inbounds (i8, ptr @_glfw, i64 133164), align 4
  %38 = icmp ne i32 %37, 0
  %or.cond5 = select i1 %32, i1 %38, i1 false
  br i1 %or.cond5, label %40, label %39

39:                                               ; preds = %36
  call void (i32, ptr, ...) @_glfwInputError(i32 noundef 65543, ptr noundef nonnull @.str.41) #3
  br label %175

40:                                               ; preds = %36, %31
  call void @_glfwGrabErrorHandlerX11() #3
  %41 = load i32, ptr getelementptr inbounds (i8, ptr @_glfw, i64 133160), align 8, !tbaa !27
  %.not118 = icmp eq i32 %41, 0
  br i1 %.not118, label %151, label %42

42:                                               ; preds = %40
  %43 = load i32, ptr %1, align 8, !tbaa !24
  %44 = icmp eq i32 %43, 196609
  br i1 %44, label %45, label %49

45:                                               ; preds = %42
  %46 = load i32, ptr %33, align 8, !tbaa !25
  %.not119 = icmp eq i32 %46, 0
  %spec.select = select i1 %.not119, i32 0, i32 2
  %47 = load i32, ptr %34, align 4, !tbaa !26
  switch i32 %47, label %.fold.split [
    i32 204801, label %49
    i32 204802, label %48
  ]

48:                                               ; preds = %45
  br label %49

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

49:                                               ; preds = %42, %45, %.fold.split, %48
  %.not123 = phi i1 [ false, %48 ], [ false, %45 ], [ true, %.fold.split ], [ false, %42 ]
  %.097 = phi i32 [ 2, %48 ], [ 1, %45 ], [ 0, %.fold.split ], [ 4, %42 ]
  %.1 = phi i32 [ %spec.select, %48 ], [ %spec.select, %45 ], [ %spec.select, %.fold.split ], [ 0, %42 ]
  %50 = getelementptr inbounds i8, ptr %1, i64 20
  %51 = load i32, ptr %50, align 4, !tbaa !60
  %.not120 = icmp ne i32 %51, 0
  %52 = zext i1 %.not120 to i32
  %spec.select128 = or disjoint i32 %.1, %52
  %53 = getelementptr inbounds i8, ptr %1, i64 32
  %54 = load i32, ptr %53, align 8, !tbaa !61
  %55 = icmp ne i32 %54, 0
  %56 = load i32, ptr getelementptr inbounds (i8, ptr @_glfw, i64 133168), align 8
  %57 = icmp ne i32 %56, 0
  %or.cond9 = select i1 %55, i1 %57, i1 false
  br i1 %or.cond9, label %58, label %63

58:                                               ; preds = %49
  switch i32 %54, label %61 [
    i32 200705, label %.sink.split
    i32 200706, label %59
  ]

59:                                               ; preds = %58
  br label %.sink.split

.sink.split:                                      ; preds = %58, %59
  %.sink = phi i32 [ 33362, %59 ], [ 33377, %58 ]
  store i32 33366, ptr %4, align 16, !tbaa !62
  %60 = getelementptr inbounds i8, ptr %4, i64 4
  store i32 %.sink, ptr %60, align 4, !tbaa !62
  br label %61

61:                                               ; preds = %.sink.split, %58
  %.098 = phi i32 [ 0, %58 ], [ 2, %.sink.split ]
  %62 = or disjoint i32 %spec.select128, 4
  br label %63

63:                                               ; preds = %61, %49
  %.199 = phi i32 [ %.098, %61 ], [ 0, %49 ]
  %.3 = phi i32 [ %62, %61 ], [ %spec.select128, %49 ]
  %64 = getelementptr inbounds i8, ptr %1, i64 36
  %65 = load i32, ptr %64, align 4, !tbaa !63
  %66 = icmp ne i32 %65, 0
  %67 = load i32, ptr getelementptr inbounds (i8, ptr @_glfw, i64 133180), align 4
  %68 = icmp ne i32 %67, 0
  %or.cond11 = select i1 %66, i1 %68, i1 false
  br i1 %or.cond11, label %69, label %77

69:                                               ; preds = %63
  switch i32 %65, label %77 [
    i32 217090, label %.sink.split132
    i32 217089, label %70
  ]

70:                                               ; preds = %69
  br label %.sink.split132

.sink.split132:                                   ; preds = %69, %70
  %.sink133 = phi i32 [ 8344, %70 ], [ 0, %69 ]
  %71 = add nuw nsw i32 %.199, 1
  %72 = zext nneg i32 %71 to i64
  %73 = zext nneg i32 %.199 to i64
  %74 = getelementptr inbounds [40 x i32], ptr %4, i64 0, i64 %73
  store i32 8343, ptr %74, align 4, !tbaa !62
  %75 = add nuw nsw i32 %.199, 2
  %76 = getelementptr inbounds [40 x i32], ptr %4, i64 0, i64 %72
  store i32 %.sink133, ptr %76, align 4, !tbaa !62
  br label %77

77:                                               ; preds = %.sink.split132, %69, %63
  %.2100 = phi i32 [ %.199, %63 ], [ %.199, %69 ], [ %75, %.sink.split132 ]
  %78 = getelementptr inbounds i8, ptr %1, i64 24
  %79 = load i32, ptr %78, align 8, !tbaa !64
  %80 = icmp ne i32 %79, 0
  %81 = load i32, ptr getelementptr inbounds (i8, ptr @_glfw, i64 133176), align 8
  %82 = icmp ne i32 %81, 0
  %or.cond13 = select i1 %80, i1 %82, i1 false
  br i1 %or.cond13, label %83, label %90

83:                                               ; preds = %77
  %84 = add nuw nsw i32 %.2100, 1
  %85 = zext nneg i32 %84 to i64
  %86 = zext nneg i32 %.2100 to i64
  %87 = getelementptr inbounds [40 x i32], ptr %4, i64 0, i64 %86
  store i32 12723, ptr %87, align 4, !tbaa !62
  %88 = add nuw nsw i32 %.2100, 2
  %89 = getelementptr inbounds [40 x i32], ptr %4, i64 0, i64 %85
  store i32 1, ptr %89, align 4, !tbaa !62
  br label %90

90:                                               ; preds = %83, %77
  %.3101 = phi i32 [ %88, %83 ], [ %.2100, %77 ]
  %91 = getelementptr inbounds i8, ptr %1, i64 8
  %92 = load i32, ptr %91, align 8, !tbaa !65
  %.not121 = icmp eq i32 %92, 1
  %93 = getelementptr inbounds i8, ptr %1, i64 12
  %94 = load i32, ptr %93, align 4, !tbaa !66
  %.not122 = icmp eq i32 %94, 0
  %or.cond139 = select i1 %.not121, i1 %.not122, i1 false
  br i1 %or.cond139, label %107, label %._crit_edge

._crit_edge:                                      ; preds = %90
  %95 = add nuw nsw i32 %.3101, 1
  %96 = zext nneg i32 %95 to i64
  %97 = zext nneg i32 %.3101 to i64
  %98 = getelementptr inbounds [40 x i32], ptr %4, i64 0, i64 %97
  store i32 8337, ptr %98, align 4, !tbaa !62
  %99 = getelementptr inbounds [40 x i32], ptr %4, i64 0, i64 %96
  store i32 %92, ptr %99, align 4, !tbaa !62
  %100 = add nuw nsw i32 %.3101, 3
  %101 = zext nneg i32 %100 to i64
  %102 = add nuw nsw i32 %.3101, 2
  %103 = zext nneg i32 %102 to i64
  %104 = getelementptr inbounds [40 x i32], ptr %4, i64 0, i64 %103
  store i32 8338, ptr %104, align 4, !tbaa !62
  %105 = add nuw nsw i32 %.3101, 4
  %106 = getelementptr inbounds [40 x i32], ptr %4, i64 0, i64 %101
  store i32 %94, ptr %106, align 4, !tbaa !62
  br label %107

107:                                              ; preds = %90, %._crit_edge
  %.4 = phi i32 [ %105, %._crit_edge ], [ %.3101, %90 ]
  br i1 %.not123, label %115, label %108

108:                                              ; preds = %107
  %109 = add nuw nsw i32 %.4, 1
  %110 = zext nneg i32 %109 to i64
  %111 = zext nneg i32 %.4 to i64
  %112 = getelementptr inbounds [40 x i32], ptr %4, i64 0, i64 %111
  store i32 37158, ptr %112, align 4, !tbaa !62
  %113 = add nuw nsw i32 %.4, 2
  %114 = getelementptr inbounds [40 x i32], ptr %4, i64 0, i64 %110
  store i32 %.097, ptr %114, align 4, !tbaa !62
  br label %115

115:                                              ; preds = %108, %107
  %.5 = phi i32 [ %113, %108 ], [ %.4, %107 ]
  %.not124 = icmp eq i32 %.3, 0
  br i1 %.not124, label %123, label %116

116:                                              ; preds = %115
  %117 = add nuw nsw i32 %.5, 1
  %118 = zext nneg i32 %117 to i64
  %119 = zext nneg i32 %.5 to i64
  %120 = getelementptr inbounds [40 x i32], ptr %4, i64 0, i64 %119
  store i32 8340, ptr %120, align 4, !tbaa !62
  %121 = add nuw nsw i32 %.5, 2
  %122 = getelementptr inbounds [40 x i32], ptr %4, i64 0, i64 %118
  store i32 %.3, ptr %122, align 4, !tbaa !62
  br label %123

123:                                              ; preds = %116, %115
  %.6 = phi i32 [ %121, %116 ], [ %.5, %115 ]
  %124 = add nuw nsw i32 %.6, 1
  %125 = zext nneg i32 %124 to i64
  %126 = zext nneg i32 %.6 to i64
  %127 = getelementptr inbounds [40 x i32], ptr %4, i64 0, i64 %126
  store i32 0, ptr %127, align 4, !tbaa !62
  %128 = getelementptr inbounds [40 x i32], ptr %4, i64 0, i64 %125
  store i32 0, ptr %128, align 4, !tbaa !62
  %129 = load ptr, ptr getelementptr inbounds (i8, ptr @_glfw, i64 133128), align 8, !tbaa !67
  %130 = load ptr, ptr getelementptr inbounds (i8, ptr @_glfw, i64 130752), align 8, !tbaa !68
  %131 = load ptr, ptr %5, align 8, !tbaa !5
  %132 = call ptr %129(ptr noundef %130, ptr noundef %131, ptr noundef %.0102, i32 noundef 1, ptr noundef nonnull %4) #3
  %133 = getelementptr inbounds i8, ptr %0, i64 616
  store ptr %132, ptr %133, align 8, !tbaa !13
  %.not125 = icmp eq ptr %132, null
  br i1 %.not125, label %134, label %155

134:                                              ; preds = %123
  %135 = load i32, ptr getelementptr inbounds (i8, ptr @_glfw, i64 130816), align 8, !tbaa !69
  %136 = load i32, ptr getelementptr inbounds (i8, ptr @_glfw, i64 132972), align 4, !tbaa !70
  %137 = add nsw i32 %136, 13
  %138 = icmp eq i32 %135, %137
  br i1 %138, label %139, label %155

139:                                              ; preds = %134
  %140 = load i32, ptr %1, align 8, !tbaa !24
  %141 = icmp eq i32 %140, 196609
  br i1 %141, label %142, label %155

142:                                              ; preds = %139
  %143 = load i32, ptr %34, align 4, !tbaa !26
  %144 = icmp eq i32 %143, 0
  br i1 %144, label %145, label %155

145:                                              ; preds = %142
  %146 = load i32, ptr %33, align 8, !tbaa !25
  %147 = icmp eq i32 %146, 0
  br i1 %147, label %148, label %155

148:                                              ; preds = %145
  %149 = load ptr, ptr %5, align 8, !tbaa !5
  %150 = call ptr @createLegacyContextGLX(ptr noundef nonnull %0, ptr noundef %149, ptr noundef %.0102)
  store ptr %150, ptr %133, align 8, !tbaa !13
  br label %155

151:                                              ; preds = %40
  %152 = load ptr, ptr %5, align 8, !tbaa !5
  %153 = call ptr @createLegacyContextGLX(ptr noundef %0, ptr noundef %152, ptr noundef %.0102)
  %154 = getelementptr inbounds i8, ptr %0, i64 616
  store ptr %153, ptr %154, align 8, !tbaa !13
  br label %155

155:                                              ; preds = %123, %148, %145, %142, %139, %134, %151
  call void @_glfwReleaseErrorHandlerX11() #3
  %156 = getelementptr inbounds i8, ptr %0, i64 616
  %157 = load ptr, ptr %156, align 8, !tbaa !13
  %.not126 = icmp eq ptr %157, null
  br i1 %.not126, label %158, label %159

158:                                              ; preds = %155
  call void @_glfwInputErrorX11(i32 noundef 65543, ptr noundef nonnull @.str.44) #3
  br label %175

159:                                              ; preds = %155
  %160 = load ptr, ptr getelementptr inbounds (i8, ptr @_glfw, i64 133072), align 8, !tbaa !71
  %161 = load ptr, ptr getelementptr inbounds (i8, ptr @_glfw, i64 130752), align 8, !tbaa !68
  %162 = load ptr, ptr %5, align 8, !tbaa !5
  %163 = getelementptr inbounds i8, ptr %0, i64 832
  %164 = load i64, ptr %163, align 8, !tbaa !72
  %165 = call i64 %160(ptr noundef %161, ptr noundef %162, i64 noundef %164, ptr noundef null) #3
  %166 = getelementptr inbounds i8, ptr %0, i64 624
  store i64 %165, ptr %166, align 8, !tbaa !73
  %.not127 = icmp eq i64 %165, 0
  br i1 %.not127, label %167, label %168

167:                                              ; preds = %159
  call void (i32, ptr, ...) @_glfwInputError(i32 noundef 65544, ptr noundef nonnull @.str.45) #3
  br label %175

168:                                              ; preds = %159
  %169 = getelementptr inbounds i8, ptr %0, i64 568
  store ptr @makeContextCurrentGLX, ptr %169, align 8, !tbaa !74
  %170 = getelementptr inbounds i8, ptr %0, i64 576
  store ptr @swapBuffersGLX, ptr %170, align 8, !tbaa !75
  %171 = getelementptr inbounds i8, ptr %0, i64 584
  store ptr @swapIntervalGLX, ptr %171, align 8, !tbaa !76
  %172 = getelementptr inbounds i8, ptr %0, i64 592
  store ptr @extensionSupportedGLX, ptr %172, align 8, !tbaa !77
  %173 = getelementptr inbounds i8, ptr %0, i64 600
  store ptr @getProcAddressGLX, ptr %173, align 8, !tbaa !78
  %174 = getelementptr inbounds i8, ptr %0, i64 608
  store ptr @destroyContextGLX, ptr %174, align 8, !tbaa !79
  br label %175

175:                                              ; preds = %168, %167, %158, %39, %30, %24, %13
  %.0103 = phi i32 [ 1, %168 ], [ 0, %167 ], [ 0, %158 ], [ 0, %39 ], [ 0, %30 ], [ 0, %24 ], [ 0, %13 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %5) #3
  call void @llvm.lifetime.end.p0(i64 160, ptr nonnull %4) #3
  ret i32 %.0103
}

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

declare void @_glfwGrabErrorHandlerX11() local_unnamed_addr #1

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

declare void @_glfwReleaseErrorHandlerX11() local_unnamed_addr #1

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

; Function Attrs: nounwind uwtable
declare hidden void @makeContextCurrentGLX(ptr noundef) #2

; Function Attrs: nounwind uwtable
declare hidden void @swapBuffersGLX(ptr noundef) #2

; Function Attrs: nounwind uwtable
declare hidden void @swapIntervalGLX(i32 noundef) #2

; Function Attrs: nounwind uwtable
declare hidden void @destroyContextGLX(ptr noundef) #2

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 = { nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #3 = { nounwind }

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C/C++ TBAA"}
!9 = !{!10, !6, i64 40}
!10 = !{!"_GLFWctxconfig", !11, i64 0, !11, i64 4, !11, i64 8, !11, i64 12, !11, i64 16, !11, i64 20, !11, i64 24, !11, i64 28, !11, i64 32, !11, i64 36, !6, i64 40, !12, i64 48}
!11 = !{!"int", !7, i64 0}
!12 = !{!"", !11, i64 0}
!13 = !{!14, !6, i64 616}
!14 = !{!"_GLFWwindow", !6, i64 0, !11, i64 8, !11, i64 12, !11, i64 16, !11, i64 20, !11, i64 24, !11, i64 28, !6, i64 32, !15, i64 40, !6, i64 64, !6, i64 72, !11, i64 80, !11, i64 84, !11, i64 88, !11, i64 92, !11, i64 96, !11, i64 100, !11, i64 104, !11, i64 108, !11, i64 112, !11, i64 116, !7, i64 120, !7, i64 128, !16, i64 480, !16, i64 488, !17, i64 496, !22, i64 688, !23, i64 824}
!15 = !{!"GLFWvidmode", !11, i64 0, !11, i64 4, !11, i64 8, !11, i64 12, !11, i64 16, !11, i64 20}
!16 = !{!"double", !7, i64 0}
!17 = !{!"_GLFWcontext", !11, i64 0, !11, i64 4, !11, i64 8, !11, i64 12, !11, i64 16, !11, i64 20, !11, i64 24, !11, i64 28, !11, i64 32, !11, i64 36, !11, 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, !18, i64 120, !20, i64 136, !21, i64 168}
!18 = !{!"_GLFWcontextGLX", !6, i64 0, !19, i64 8}
!19 = !{!"long", !7, i64 0}
!20 = !{!"_GLFWcontextEGL", !6, i64 0, !6, i64 8, !6, i64 16, !6, i64 24}
!21 = !{!"_GLFWcontextOSMesa", !6, i64 0, !11, i64 8, !11, i64 12, !6, i64 16}
!22 = !{!"", !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}
!23 = !{!"_GLFWwindowX11", !19, i64 0, !19, i64 8, !6, i64 16, !11, i64 24, !11, i64 28, !11, i64 32, !11, i64 36, !11, i64 40, !11, i64 44, !11, i64 48, !11, i64 52, !11, i64 56, !11, i64 60, !11, i64 64, !11, i64 68, !19, i64 72}
!24 = !{!10, !11, i64 0}
!25 = !{!10, !11, i64 16}
!26 = !{!10, !11, i64 28}
!27 = !{!28, !11, i64 133160}
!28 = !{!"_GLFWlibrary", !11, i64 0, !29, i64 8, !6, i64 992, !6, i64 1000, !6, i64 1008, !6, i64 1016, !11, i64 1024, !7, i64 1032, !6, i64 130568, !11, i64 130576, !36, i64 130580, !36, i64 130588, !38, i64 130600, !40, i64 130648, !42, i64 130672, !43, i64 130736, !44, i64 130752, !55, i64 132960, !56, i64 133184, !58, i64 133264, !59, i64 133440}
!29 = !{!"", !30, i64 0, !32, i64 16, !33, i64 88, !10, i64 920, !11, i64 976}
!30 = !{!"_GLFWinitconfig", !11, i64 0, !31, i64 4}
!31 = !{!"", !11, i64 0, !11, i64 4}
!32 = !{!"_GLFWfbconfig", !11, i64 0, !11, i64 4, !11, i64 8, !11, i64 12, !11, i64 16, !11, i64 20, !11, i64 24, !11, i64 28, !11, i64 32, !11, i64 36, !11, i64 40, !11, i64 44, !11, i64 48, !11, i64 52, !11, i64 56, !11, i64 60, !19, i64 64}
!33 = !{!"_GLFWwndconfig", !11, i64 0, !11, i64 4, !6, i64 8, !11, i64 16, !11, i64 20, !11, i64 24, !11, i64 28, !11, i64 32, !11, i64 36, !11, i64 40, !11, i64 44, !11, i64 48, !11, i64 52, !34, i64 56, !35, i64 316}
!34 = !{!"", !11, i64 0, !7, i64 4}
!35 = !{!"", !7, i64 0, !7, i64 256}
!36 = !{!"_GLFWtls", !37, i64 0}
!37 = !{!"_GLFWtlsPOSIX", !11, i64 0, !11, i64 4}
!38 = !{!"_GLFWmutex", !39, i64 0}
!39 = !{!"_GLFWmutexPOSIX", !11, i64 0, !7, i64 8}
!40 = !{!"", !19, i64 0, !41, i64 8}
!41 = !{!"_GLFWtimerPOSIX", !11, i64 0, !19, i64 8}
!42 = !{!"", !11, i64 0, !6, i64 8, !7, i64 16, !6, i64 32, !6, i64 40, !11, i64 48, !11, i64 52, !11, i64 56}
!43 = !{!"", !6, i64 0, !6, i64 8}
!44 = !{!"_GLFWlibraryX11", !6, i64 0, !11, i64 8, !19, i64 16, !45, i64 24, !45, i64 28, !19, i64 32, !19, i64 40, !11, i64 48, !6, i64 56, !11, i64 64, !6, i64 72, !6, i64 80, !7, i64 88, !7, i64 94, !7, i64 606, !16, i64 1304, !16, i64 1312, !6, i64 1320, !19, i64 1328, !19, i64 1336, !19, i64 1344, !19, i64 1352, !19, i64 1360, !19, i64 1368, !19, i64 1376, !19, i64 1384, !19, i64 1392, !19, i64 1400, !19, i64 1408, !19, i64 1416, !19, i64 1424, !19, i64 1432, !19, i64 1440, !19, i64 1448, !19, i64 1456, !19, i64 1464, !19, i64 1472, !19, i64 1480, !19, i64 1488, !19, i64 1496, !19, i64 1504, !19, i64 1512, !19, i64 1520, !19, i64 1528, !19, i64 1536, !19, i64 1544, !19, i64 1552, !19, i64 1560, !19, i64 1568, !19, i64 1576, !19, i64 1584, !19, i64 1592, !19, i64 1600, !19, i64 1608, !19, i64 1616, !19, i64 1624, !19, i64 1632, !19, i64 1640, !19, i64 1648, !19, i64 1656, !19, i64 1664, !19, i64 1672, !19, i64 1680, !19, i64 1688, !46, i64 1696, !47, i64 1872, !48, i64 1900, !49, i64 1920, !50, i64 1944, !51, i64 1976, !43, i64 2024, !52, i64 2040, !53, i64 2096, !54, i64 2152}
!45 = !{!"float", !7, i64 0}
!46 = !{!"", !11, i64 0, !6, i64 8, !11, i64 16, !11, i64 20, !11, i64 24, !11, i64 28, !11, i64 32, !11, i64 36, !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}
!47 = !{!"", !11, i64 0, !11, i64 4, !11, i64 8, !11, i64 12, !11, i64 16, !11, i64 20, !11, i64 24}
!48 = !{!"", !11, i64 0, !11, i64 4, !11, i64 8, !11, i64 12, !11, i64 16}
!49 = !{!"", !11, i64 0, !19, i64 8, !19, i64 16}
!50 = !{!"", !6, i64 0, !6, i64 8, !6, i64 16, !6, i64 24}
!51 = !{!"", !11, i64 0, !6, i64 8, !11, i64 16, !11, i64 20, !6, i64 24, !6, i64 32, !6, i64 40}
!52 = !{!"", !11, i64 0, !6, i64 8, !11, i64 16, !11, i64 20, !6, i64 24, !6, i64 32, !6, i64 40, !6, i64 48}
!53 = !{!"", !11, i64 0, !6, i64 8, !11, i64 16, !11, i64 20, !11, i64 24, !11, i64 28, !11, i64 32, !6, i64 40, !6, i64 48}
!54 = !{!"", !11, i64 0, !6, i64 8, !11, i64 16, !11, i64 20, !11, i64 24, !11, i64 28, !6, i64 32, !6, i64 40, !6, i64 48}
!55 = !{!"_GLFWlibraryGLX", !11, i64 0, !11, i64 4, !11, i64 8, !11, i64 12, !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, !11, i64 176, !11, i64 180, !11, i64 184, !11, i64 188, !11, i64 192, !11, i64 196, !11, i64 200, !11, i64 204, !11, i64 208, !11, i64 212, !11, i64 216, !11, i64 220}
!56 = !{!"_GLFWlibraryLinux", !11, i64 0, !11, i64 4, !57, i64 8, !11, i64 72}
!57 = !{!"re_pattern_buffer", !6, i64 0, !19, i64 8, !19, i64 16, !19, i64 24, !6, i64 32, !6, i64 40, !19, i64 48, !11, i64 56, !11, i64 56, !11, i64 56, !11, i64 56, !11, i64 56, !11, i64 56, !11, i64 56}
!58 = !{!"_GLFWlibraryEGL", !6, i64 0, !11, i64 8, !11, i64 12, !11, i64 16, !11, i64 20, !11, i64 24, !11, i64 28, !11, i64 32, !11, i64 36, !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}
!59 = !{!"_GLFWlibraryOSMesa", !6, i64 0, !6, i64 8, !6, i64 16, !6, i64 24, !6, i64 32, !6, i64 40, !6, i64 48, !6, i64 56}
!60 = !{!10, !11, i64 20}
!61 = !{!10, !11, i64 32}
!62 = !{!11, !11, i64 0}
!63 = !{!10, !11, i64 36}
!64 = !{!10, !11, i64 24}
!65 = !{!10, !11, i64 8}
!66 = !{!10, !11, i64 12}
!67 = !{!28, !6, i64 133128}
!68 = !{!28, !6, i64 130752}
!69 = !{!28, !11, i64 130816}
!70 = !{!28, !11, i64 132972}
!71 = !{!28, !6, i64 133072}
!72 = !{!14, !19, i64 832}
!73 = !{!14, !19, i64 624}
!74 = !{!14, !6, i64 568}
!75 = !{!14, !6, i64 576}
!76 = !{!14, !6, i64 584}
!77 = !{!14, !6, i64 592}
!78 = !{!14, !6, i64 600}
!79 = !{!14, !6, i64 608}


; Effective O3 passes: BDCEPass,CorrelatedValuePropagationPass,EarlyCSEPass,GVNPass,GlobalOptPass,IPSCCPPass,InferAlignmentPass,InferFunctionAttrsPass,InstCombinePass,JumpThreadingPass,PostOrderFunctionAttrsPass,ReassociatePass,SROAPass,SimplifyCFGPass