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

; 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.2, ptr, ptr, ptr, ptr, i32, i32, [16 x %struct._GLFWjoystick], ptr, i32, %struct._GLFWtls, %struct._GLFWtls, %struct._GLFWmutex, %struct.anon.11, %struct.anon.12, %struct.anon.13, %struct.anon.14, %struct.anon.15, %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.2 = type { %struct._GLFWinitconfig, %struct._GLFWfbconfig, %struct._GLFWwndconfig, %struct._GLFWctxconfig, i32 }
%struct._GLFWinitconfig = type { i32, i32, i32, ptr, %struct.anon.3, %struct.anon.4, %struct.anon.5 }
%struct.anon.3 = type { i32, i32 }
%struct.anon.4 = type { i32 }
%struct.anon.5 = 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.6, %struct.anon.7, %struct.anon.8, %struct.anon.9 }
%struct.anon.6 = type { [256 x i8] }
%struct.anon.7 = type { [256 x i8], [256 x i8] }
%struct.anon.8 = type { i32, i32 }
%struct.anon.9 = type { [256 x i8] }
%struct._GLFWctxconfig = type { i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, ptr, %struct.anon.10 }
%struct.anon.10 = 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.11 = type { i64, %struct._GLFWtimerPOSIX }
%struct._GLFWtimerPOSIX = type { i32, i64 }
%struct.anon.12 = 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.13 = type { ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr }
%struct.anon.14 = type { i32, ptr, [2 x ptr], ptr, i32, i32, i32, i32, i32, i32, i32, i32 }
%struct.anon.15 = 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.1, %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, %struct.anon.0 }
%struct.anon = type { ptr, ptr, ptr, ptr }
%struct.anon.0 = type { ptr, i32, i32, ptr }
%struct.anon.1 = 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 }

@.str = external hidden unnamed_addr constant [15 x i8], align 1
@.str.1 = external hidden unnamed_addr constant [100 x i8], align 1
@_glfw = external global %struct._GLFWlibrary, align 8
@.str.30 = external hidden unnamed_addr constant [26 x i8], align 1
@__PRETTY_FUNCTION__.glfwSetInputMode = external hidden unnamed_addr constant [46 x i8], align 1
@.str.31 = external hidden unnamed_addr constant [27 x i8], align 1
@.str.32 = external hidden unnamed_addr constant [49 x i8], align 1

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

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

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

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

; Function Attrs: nounwind uwtable
define dso_local void @glfwSetInputMode(ptr noundef %0, i32 noundef %1, i32 noundef %2) #3 {
  %4 = alloca ptr, align 8
  %5 = alloca i32, align 4
  %6 = alloca i32, align 4
  %7 = alloca ptr, align 8
  %8 = alloca i32, align 4
  %9 = alloca i32, align 4
  %10 = alloca i32, align 4
  store ptr %0, ptr %4, align 8, !tbaa !5
  store i32 %1, ptr %5, align 4, !tbaa !9
  store i32 %2, ptr %6, align 4, !tbaa !9
  %11 = load i32, ptr @_glfw, align 8, !tbaa !11
  %12 = icmp ne i32 %11, 0
  br i1 %12, label %14, label %13

13:                                               ; preds = %3
  call void (i32, ptr, ...) @_glfwInputError(i32 noundef 65537, ptr noundef null)
  br label %181

14:                                               ; preds = %3
  call void @llvm.lifetime.start.p0(i64 8, ptr %7) #4
  %15 = load ptr, ptr %4, align 8, !tbaa !5
  store ptr %15, ptr %7, align 8, !tbaa !5
  %16 = load ptr, ptr %7, align 8, !tbaa !5
  %17 = icmp ne ptr %16, null
  br i1 %17, label %18, label %19

18:                                               ; preds = %14
  br label %20

19:                                               ; preds = %14
  call void @__assert_fail(ptr noundef @.str, ptr noundef @.str.1, i32 noundef 594, ptr noundef @__PRETTY_FUNCTION__.glfwSetInputMode) #5
  unreachable

20:                                               ; preds = %18
  %21 = load i32, ptr %5, align 4, !tbaa !9
  switch i32 %21, label %177 [
    i32 208897, label %22
    i32 208898, label %56
    i32 208899, label %98
    i32 208900, label %140
    i32 208901, label %147
    i32 208902, label %170
  ]

22:                                               ; preds = %20
  %23 = load i32, ptr %6, align 4, !tbaa !9
  %24 = icmp ne i32 %23, 212993
  br i1 %24, label %25, label %36

25:                                               ; preds = %22
  %26 = load i32, ptr %6, align 4, !tbaa !9
  %27 = icmp ne i32 %26, 212994
  br i1 %27, label %28, label %36

28:                                               ; preds = %25
  %29 = load i32, ptr %6, align 4, !tbaa !9
  %30 = icmp ne i32 %29, 212995
  br i1 %30, label %31, label %36

31:                                               ; preds = %28
  %32 = load i32, ptr %6, align 4, !tbaa !9
  %33 = icmp ne i32 %32, 212996
  br i1 %33, label %34, label %36

34:                                               ; preds = %31
  %35 = load i32, ptr %6, align 4, !tbaa !9
  call void (i32, ptr, ...) @_glfwInputError(i32 noundef 65539, ptr noundef @.str.31, i32 noundef %35)
  store i32 1, ptr %8, align 4
  br label %179

36:                                               ; preds = %31, %28, %25, %22
  %37 = load ptr, ptr %7, align 8, !tbaa !5
  %38 = getelementptr inbounds %struct._GLFWwindow, ptr %37, i32 0, i32 24
  %39 = load i32, ptr %38, align 8, !tbaa !36
  %40 = load i32, ptr %6, align 4, !tbaa !9
  %41 = icmp eq i32 %39, %40
  br i1 %41, label %42, label %43

42:                                               ; preds = %36
  store i32 1, ptr %8, align 4
  br label %179

43:                                               ; preds = %36
  %44 = load i32, ptr %6, align 4, !tbaa !9
  %45 = load ptr, ptr %7, align 8, !tbaa !5
  %46 = getelementptr inbounds %struct._GLFWwindow, ptr %45, i32 0, i32 24
  store i32 %44, ptr %46, align 8, !tbaa !36
  %47 = load ptr, ptr getelementptr inbounds (%struct._GLFWplatform, ptr getelementptr inbounds (%struct._GLFWlibrary, ptr @_glfw, i32 0, i32 2), i32 0, i32 3), align 8, !tbaa !46
  %48 = load ptr, ptr %7, align 8, !tbaa !5
  %49 = load ptr, ptr %7, align 8, !tbaa !5
  %50 = getelementptr inbounds %struct._GLFWwindow, ptr %49, i32 0, i32 27
  %51 = load ptr, ptr %7, align 8, !tbaa !5
  %52 = getelementptr inbounds %struct._GLFWwindow, ptr %51, i32 0, i32 28
  call void %47(ptr noundef %48, ptr noundef %50, ptr noundef %52)
  %53 = load ptr, ptr getelementptr inbounds (%struct._GLFWplatform, ptr getelementptr inbounds (%struct._GLFWlibrary, ptr @_glfw, i32 0, i32 2), i32 0, i32 5), align 8, !tbaa !47
  %54 = load ptr, ptr %7, align 8, !tbaa !5
  %55 = load i32, ptr %6, align 4, !tbaa !9
  call void %53(ptr noundef %54, i32 noundef %55)
  store i32 1, ptr %8, align 4
  br label %179

56:                                               ; preds = %20
  %57 = load i32, ptr %6, align 4, !tbaa !9
  %58 = icmp ne i32 %57, 0
  %59 = zext i1 %58 to i64
  %60 = select i1 %58, i32 1, i32 0
  store i32 %60, ptr %6, align 4, !tbaa !9
  %61 = load ptr, ptr %7, align 8, !tbaa !5
  %62 = getelementptr inbounds %struct._GLFWwindow, ptr %61, i32 0, i32 20
  %63 = load i32, ptr %62, align 8, !tbaa !48
  %64 = load i32, ptr %6, align 4, !tbaa !9
  %65 = icmp eq i32 %63, %64
  br i1 %65, label %66, label %67

66:                                               ; preds = %56
  store i32 1, ptr %8, align 4
  br label %179

67:                                               ; preds = %56
  %68 = load i32, ptr %6, align 4, !tbaa !9
  %69 = icmp ne i32 %68, 0
  br i1 %69, label %94, label %70

70:                                               ; preds = %67
  call void @llvm.lifetime.start.p0(i64 4, ptr %9) #4
  store i32 0, ptr %9, align 4, !tbaa !9
  br label %71

71:                                               ; preds = %90, %70
  %72 = load i32, ptr %9, align 4, !tbaa !9
  %73 = icmp sle i32 %72, 348
  br i1 %73, label %74, label %93

74:                                               ; preds = %71
  %75 = load ptr, ptr %7, align 8, !tbaa !5
  %76 = getelementptr inbounds %struct._GLFWwindow, ptr %75, i32 0, i32 26
  %77 = load i32, ptr %9, align 4, !tbaa !9
  %78 = sext i32 %77 to i64
  %79 = getelementptr inbounds [349 x i8], ptr %76, i64 0, i64 %78
  %80 = load i8, ptr %79, align 1, !tbaa !49
  %81 = sext i8 %80 to i32
  %82 = icmp eq i32 %81, 3
  br i1 %82, label %83, label %89

83:                                               ; preds = %74
  %84 = load ptr, ptr %7, align 8, !tbaa !5
  %85 = getelementptr inbounds %struct._GLFWwindow, ptr %84, i32 0, i32 26
  %86 = load i32, ptr %9, align 4, !tbaa !9
  %87 = sext i32 %86 to i64
  %88 = getelementptr inbounds [349 x i8], ptr %85, i64 0, i64 %87
  store i8 0, ptr %88, align 1, !tbaa !49
  br label %89

89:                                               ; preds = %83, %74
  br label %90

90:                                               ; preds = %89
  %91 = load i32, ptr %9, align 4, !tbaa !9
  %92 = add nsw i32 %91, 1
  store i32 %92, ptr %9, align 4, !tbaa !9
  br label %71, !llvm.loop !50

93:                                               ; preds = %71
  call void @llvm.lifetime.end.p0(i64 4, ptr %9) #4
  br label %94

94:                                               ; preds = %93, %67
  %95 = load i32, ptr %6, align 4, !tbaa !9
  %96 = load ptr, ptr %7, align 8, !tbaa !5
  %97 = getelementptr inbounds %struct._GLFWwindow, ptr %96, i32 0, i32 20
  store i32 %95, ptr %97, align 8, !tbaa !48
  store i32 1, ptr %8, align 4
  br label %179

98:                                               ; preds = %20
  %99 = load i32, ptr %6, align 4, !tbaa !9
  %100 = icmp ne i32 %99, 0
  %101 = zext i1 %100 to i64
  %102 = select i1 %100, i32 1, i32 0
  store i32 %102, ptr %6, align 4, !tbaa !9
  %103 = load ptr, ptr %7, align 8, !tbaa !5
  %104 = getelementptr inbounds %struct._GLFWwindow, ptr %103, i32 0, i32 21
  %105 = load i32, ptr %104, align 4, !tbaa !52
  %106 = load i32, ptr %6, align 4, !tbaa !9
  %107 = icmp eq i32 %105, %106
  br i1 %107, label %108, label %109

108:                                              ; preds = %98
  store i32 1, ptr %8, align 4
  br label %179

109:                                              ; preds = %98
  %110 = load i32, ptr %6, align 4, !tbaa !9
  %111 = icmp ne i32 %110, 0
  br i1 %111, label %136, label %112

112:                                              ; preds = %109
  call void @llvm.lifetime.start.p0(i64 4, ptr %10) #4
  store i32 0, ptr %10, align 4, !tbaa !9
  br label %113

113:                                              ; preds = %132, %112
  %114 = load i32, ptr %10, align 4, !tbaa !9
  %115 = icmp sle i32 %114, 7
  br i1 %115, label %116, label %135

116:                                              ; preds = %113
  %117 = load ptr, ptr %7, align 8, !tbaa !5
  %118 = getelementptr inbounds %struct._GLFWwindow, ptr %117, i32 0, i32 25
  %119 = load i32, ptr %10, align 4, !tbaa !9
  %120 = sext i32 %119 to i64
  %121 = getelementptr inbounds [8 x i8], ptr %118, i64 0, i64 %120
  %122 = load i8, ptr %121, align 1, !tbaa !49
  %123 = sext i8 %122 to i32
  %124 = icmp eq i32 %123, 3
  br i1 %124, label %125, label %131

125:                                              ; preds = %116
  %126 = load ptr, ptr %7, align 8, !tbaa !5
  %127 = getelementptr inbounds %struct._GLFWwindow, ptr %126, i32 0, i32 25
  %128 = load i32, ptr %10, align 4, !tbaa !9
  %129 = sext i32 %128 to i64
  %130 = getelementptr inbounds [8 x i8], ptr %127, i64 0, i64 %129
  store i8 0, ptr %130, align 1, !tbaa !49
  br label %131

131:                                              ; preds = %125, %116
  br label %132

132:                                              ; preds = %131
  %133 = load i32, ptr %10, align 4, !tbaa !9
  %134 = add nsw i32 %133, 1
  store i32 %134, ptr %10, align 4, !tbaa !9
  br label %113, !llvm.loop !53

135:                                              ; preds = %113
  call void @llvm.lifetime.end.p0(i64 4, ptr %10) #4
  br label %136

136:                                              ; preds = %135, %109
  %137 = load i32, ptr %6, align 4, !tbaa !9
  %138 = load ptr, ptr %7, align 8, !tbaa !5
  %139 = getelementptr inbounds %struct._GLFWwindow, ptr %138, i32 0, i32 21
  store i32 %137, ptr %139, align 4, !tbaa !52
  store i32 1, ptr %8, align 4
  br label %179

140:                                              ; preds = %20
  %141 = load i32, ptr %6, align 4, !tbaa !9
  %142 = icmp ne i32 %141, 0
  %143 = zext i1 %142 to i64
  %144 = select i1 %142, i32 1, i32 0
  %145 = load ptr, ptr %7, align 8, !tbaa !5
  %146 = getelementptr inbounds %struct._GLFWwindow, ptr %145, i32 0, i32 22
  store i32 %144, ptr %146, align 8, !tbaa !54
  store i32 1, ptr %8, align 4
  br label %179

147:                                              ; preds = %20
  %148 = load ptr, ptr getelementptr inbounds (%struct._GLFWplatform, ptr getelementptr inbounds (%struct._GLFWlibrary, ptr @_glfw, i32 0, i32 2), i32 0, i32 7), align 8, !tbaa !55
  %149 = call i32 %148()
  %150 = icmp ne i32 %149, 0
  br i1 %150, label %152, label %151

151:                                              ; preds = %147
  call void (i32, ptr, ...) @_glfwInputError(i32 noundef 65544, ptr noundef @.str.32)
  store i32 1, ptr %8, align 4
  br label %179

152:                                              ; preds = %147
  %153 = load i32, ptr %6, align 4, !tbaa !9
  %154 = icmp ne i32 %153, 0
  %155 = zext i1 %154 to i64
  %156 = select i1 %154, i32 1, i32 0
  store i32 %156, ptr %6, align 4, !tbaa !9
  %157 = load ptr, ptr %7, align 8, !tbaa !5
  %158 = getelementptr inbounds %struct._GLFWwindow, ptr %157, i32 0, i32 29
  %159 = load i32, ptr %158, align 8, !tbaa !56
  %160 = load i32, ptr %6, align 4, !tbaa !9
  %161 = icmp eq i32 %159, %160
  br i1 %161, label %162, label %163

162:                                              ; preds = %152
  store i32 1, ptr %8, align 4
  br label %179

163:                                              ; preds = %152
  %164 = load i32, ptr %6, align 4, !tbaa !9
  %165 = load ptr, ptr %7, align 8, !tbaa !5
  %166 = getelementptr inbounds %struct._GLFWwindow, ptr %165, i32 0, i32 29
  store i32 %164, ptr %166, align 8, !tbaa !56
  %167 = load ptr, ptr getelementptr inbounds (%struct._GLFWplatform, ptr getelementptr inbounds (%struct._GLFWlibrary, ptr @_glfw, i32 0, i32 2), i32 0, i32 6), align 8, !tbaa !57
  %168 = load ptr, ptr %7, align 8, !tbaa !5
  %169 = load i32, ptr %6, align 4, !tbaa !9
  call void %167(ptr noundef %168, i32 noundef %169)
  store i32 1, ptr %8, align 4
  br label %179

170:                                              ; preds = %20
  %171 = load i32, ptr %6, align 4, !tbaa !9
  %172 = icmp ne i32 %171, 0
  %173 = zext i1 %172 to i64
  %174 = select i1 %172, i32 1, i32 0
  %175 = load ptr, ptr %7, align 8, !tbaa !5
  %176 = getelementptr inbounds %struct._GLFWwindow, ptr %175, i32 0, i32 23
  store i32 %174, ptr %176, align 4, !tbaa !58
  store i32 1, ptr %8, align 4
  br label %179

177:                                              ; preds = %20
  %178 = load i32, ptr %5, align 4, !tbaa !9
  call void (i32, ptr, ...) @_glfwInputError(i32 noundef 65539, ptr noundef @.str.30, i32 noundef %178)
  store i32 0, ptr %8, align 4
  br label %179

179:                                              ; preds = %177, %170, %163, %162, %151, %140, %136, %108, %94, %66, %43, %42, %34
  call void @llvm.lifetime.end.p0(i64 8, ptr %7) #4
  %180 = load i32, ptr %8, align 4
  switch i32 %180, label %182 [
    i32 0, label %181
    i32 1, label %181
  ]

181:                                              ; preds = %179, %179, %13
  ret void

182:                                              ; preds = %179
  unreachable
}

attributes #0 = { 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 #1 = { nocallback nofree nosync 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 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 = { 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, !10, i64 0}
!10 = !{!"int", !7, i64 0}
!11 = !{!12, !10, i64 0}
!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 = !{!37, !10, i64 144}
!37 = !{!"_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, !38, 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, !39, i64 512, !39, i64 520, !10, i64 528, !40, i64 536, !43, i64 712, !44, i64 848}
!38 = !{!"GLFWvidmode", !10, i64 0, !10, i64 4, !10, i64 8, !10, i64 12, !10, i64 16, !10, i64 20}
!39 = !{!"double", !7, i64 0}
!40 = !{!"_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, !41, i64 120, !42, i64 152}
!41 = !{!"", !6, i64 0, !6, i64 8, !6, i64 16, !6, i64 24}
!42 = !{!"", !6, i64 0, !10, i64 8, !10, i64 12, !6, i64 16}
!43 = !{!"", !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}
!44 = !{!"_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, !45, i64 44}
!45 = !{!"float", !7, i64 0}
!46 = !{!12, !6, i64 64}
!47 = !{!12, !6, i64 80}
!48 = !{!37, !10, i64 128}
!49 = !{!7, !7, i64 0}
!50 = distinct !{!50, !51}
!51 = !{!"llvm.loop.mustprogress"}
!52 = !{!37, !10, i64 132}
!53 = distinct !{!53, !51}
!54 = !{!37, !10, i64 136}
!55 = !{!12, !6, i64 96}
!56 = !{!37, !10, i64 528}
!57 = !{!12, !6, i64 88}
!58 = !{!37, !10, i64 140}


; 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.2, ptr, ptr, ptr, ptr, i32, i32, [16 x %struct._GLFWjoystick], ptr, i32, %struct._GLFWtls, %struct._GLFWtls, %struct._GLFWmutex, %struct.anon.11, %struct.anon.12, %struct.anon.13, %struct.anon.14, %struct.anon.15, %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.2 = type { %struct._GLFWinitconfig, %struct._GLFWfbconfig, %struct._GLFWwndconfig, %struct._GLFWctxconfig, i32 }
%struct._GLFWinitconfig = type { i32, i32, i32, ptr, %struct.anon.3, %struct.anon.4, %struct.anon.5 }
%struct.anon.3 = type { i32, i32 }
%struct.anon.4 = type { i32 }
%struct.anon.5 = 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.6, %struct.anon.7, %struct.anon.8, %struct.anon.9 }
%struct.anon.6 = type { [256 x i8] }
%struct.anon.7 = type { [256 x i8], [256 x i8] }
%struct.anon.8 = type { i32, i32 }
%struct.anon.9 = type { [256 x i8] }
%struct._GLFWctxconfig = type { i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, ptr, %struct.anon.10 }
%struct.anon.10 = 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.11 = type { i64, %struct._GLFWtimerPOSIX }
%struct._GLFWtimerPOSIX = type { i32, i64 }
%struct.anon.12 = 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.13 = type { ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr }
%struct.anon.14 = type { i32, ptr, [2 x ptr], ptr, i32, i32, i32, i32, i32, i32, i32, i32 }
%struct.anon.15 = type { ptr, ptr }
%struct._GLFWlibraryNull = type { i32, i32, ptr, ptr, [121 x i16], [349 x i8] }

@.str = external hidden unnamed_addr constant [15 x i8], align 1
@.str.1 = external hidden unnamed_addr constant [100 x i8], align 1
@_glfw = external local_unnamed_addr global %struct._GLFWlibrary, align 8
@.str.30 = external hidden unnamed_addr constant [26 x i8], align 1
@__PRETTY_FUNCTION__.glfwSetInputMode = external hidden unnamed_addr constant [46 x i8], align 1
@.str.31 = external hidden unnamed_addr constant [27 x i8], align 1
@.str.32 = external hidden unnamed_addr constant [49 x i8], align 1

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

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

; Function Attrs: nounwind uwtable
define dso_local void @glfwSetInputMode(ptr noundef %0, i32 noundef %1, i32 noundef %2) local_unnamed_addr #2 {
  %4 = load i32, ptr @_glfw, align 8, !tbaa !5
  %.not = icmp eq i32 %4, 0
  br i1 %.not, label %5, label %6

5:                                                ; preds = %3
  tail call void (i32, ptr, ...) @_glfwInputError(i32 noundef 65537, ptr noundef null) #3
  br label %265

6:                                                ; preds = %3
  %.not63 = icmp eq ptr %0, null
  br i1 %.not63, label %7, label %8

7:                                                ; preds = %6
  tail call void @__assert_fail(ptr noundef nonnull @.str, ptr noundef nonnull @.str.1, i32 noundef 594, ptr noundef nonnull @__PRETTY_FUNCTION__.glfwSetInputMode) #4
  unreachable

8:                                                ; preds = %6
  switch i32 %1, label %264 [
    i32 208897, label %9
    i32 208898, label %21
    i32 208899, label %202
    i32 208900, label %247
    i32 208901, label %250
    i32 208902, label %261
  ]

9:                                                ; preds = %8
  %10 = add i32 %2, -212997
  %or.cond5 = icmp ult i32 %10, -4
  br i1 %or.cond5, label %11, label %12

11:                                               ; preds = %9
  tail call void (i32, ptr, ...) @_glfwInputError(i32 noundef 65539, ptr noundef nonnull @.str.31, i32 noundef %2) #3
  br label %265

12:                                               ; preds = %9
  %13 = getelementptr inbounds i8, ptr %0, i64 144
  %14 = load i32, ptr %13, align 8, !tbaa !34
  %15 = icmp eq i32 %14, %2
  br i1 %15, label %265, label %16

16:                                               ; preds = %12
  store i32 %2, ptr %13, align 8, !tbaa !34
  %17 = load ptr, ptr getelementptr inbounds (i8, ptr @_glfw, i64 64), align 8, !tbaa !44
  %18 = getelementptr inbounds i8, ptr %0, i64 512
  %19 = getelementptr inbounds i8, ptr %0, i64 520
  tail call void %17(ptr noundef nonnull %0, ptr noundef nonnull %18, ptr noundef nonnull %19) #3
  %20 = load ptr, ptr getelementptr inbounds (i8, ptr @_glfw, i64 80), align 8, !tbaa !45
  tail call void %20(ptr noundef nonnull %0, i32 noundef %2) #3
  br label %265

21:                                               ; preds = %8
  %.not69 = icmp ne i32 %2, 0
  %22 = zext i1 %.not69 to i32
  %23 = getelementptr inbounds i8, ptr %0, i64 128
  %24 = load i32, ptr %23, align 8, !tbaa !46
  %25 = icmp eq i32 %24, %22
  br i1 %25, label %265, label %26

26:                                               ; preds = %21
  br i1 %.not69, label %.loopexit, label %iter.check

iter.check:                                       ; preds = %26
  %27 = getelementptr inbounds i8, ptr %0, i64 156
  br label %vector.body

vector.body:                                      ; preds = %pred.store.continue138, %iter.check
  %index = phi i64 [ 0, %iter.check ], [ %index.next, %pred.store.continue138 ]
  %28 = or disjoint i64 %index, 16
  %29 = getelementptr inbounds [349 x i8], ptr %27, i64 0, i64 %index
  %30 = getelementptr inbounds i8, ptr %29, i64 16
  %wide.load = load <16 x i8>, ptr %29, align 1, !tbaa !47
  %wide.load76 = load <16 x i8>, ptr %30, align 1, !tbaa !47
  %31 = icmp eq <16 x i8> %wide.load, <i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3>
  %32 = icmp eq <16 x i8> %wide.load76, <i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3>
  %33 = extractelement <16 x i1> %31, i64 0
  br i1 %33, label %pred.store.if, label %pred.store.continue

pred.store.if:                                    ; preds = %vector.body
  %34 = getelementptr inbounds [349 x i8], ptr %27, i64 0, i64 %index
  store i8 0, ptr %34, align 1, !tbaa !47
  br label %pred.store.continue

pred.store.continue:                              ; preds = %pred.store.if, %vector.body
  %35 = extractelement <16 x i1> %31, i64 1
  br i1 %35, label %pred.store.if77, label %pred.store.continue78

pred.store.if77:                                  ; preds = %pred.store.continue
  %36 = or disjoint i64 %index, 1
  %37 = getelementptr inbounds [349 x i8], ptr %27, i64 0, i64 %36
  store i8 0, ptr %37, align 1, !tbaa !47
  br label %pred.store.continue78

pred.store.continue78:                            ; preds = %pred.store.if77, %pred.store.continue
  %38 = extractelement <16 x i1> %31, i64 2
  br i1 %38, label %pred.store.if79, label %pred.store.continue80

pred.store.if79:                                  ; preds = %pred.store.continue78
  %39 = or disjoint i64 %index, 2
  %40 = getelementptr inbounds [349 x i8], ptr %27, i64 0, i64 %39
  store i8 0, ptr %40, align 1, !tbaa !47
  br label %pred.store.continue80

pred.store.continue80:                            ; preds = %pred.store.if79, %pred.store.continue78
  %41 = extractelement <16 x i1> %31, i64 3
  br i1 %41, label %pred.store.if81, label %pred.store.continue82

pred.store.if81:                                  ; preds = %pred.store.continue80
  %42 = or disjoint i64 %index, 3
  %43 = getelementptr inbounds [349 x i8], ptr %27, i64 0, i64 %42
  store i8 0, ptr %43, align 1, !tbaa !47
  br label %pred.store.continue82

pred.store.continue82:                            ; preds = %pred.store.if81, %pred.store.continue80
  %44 = extractelement <16 x i1> %31, i64 4
  br i1 %44, label %pred.store.if83, label %pred.store.continue84

pred.store.if83:                                  ; preds = %pred.store.continue82
  %45 = or disjoint i64 %index, 4
  %46 = getelementptr inbounds [349 x i8], ptr %27, i64 0, i64 %45
  store i8 0, ptr %46, align 1, !tbaa !47
  br label %pred.store.continue84

pred.store.continue84:                            ; preds = %pred.store.if83, %pred.store.continue82
  %47 = extractelement <16 x i1> %31, i64 5
  br i1 %47, label %pred.store.if85, label %pred.store.continue86

pred.store.if85:                                  ; preds = %pred.store.continue84
  %48 = or disjoint i64 %index, 5
  %49 = getelementptr inbounds [349 x i8], ptr %27, i64 0, i64 %48
  store i8 0, ptr %49, align 1, !tbaa !47
  br label %pred.store.continue86

pred.store.continue86:                            ; preds = %pred.store.if85, %pred.store.continue84
  %50 = extractelement <16 x i1> %31, i64 6
  br i1 %50, label %pred.store.if87, label %pred.store.continue88

pred.store.if87:                                  ; preds = %pred.store.continue86
  %51 = or disjoint i64 %index, 6
  %52 = getelementptr inbounds [349 x i8], ptr %27, i64 0, i64 %51
  store i8 0, ptr %52, align 1, !tbaa !47
  br label %pred.store.continue88

pred.store.continue88:                            ; preds = %pred.store.if87, %pred.store.continue86
  %53 = extractelement <16 x i1> %31, i64 7
  br i1 %53, label %pred.store.if89, label %pred.store.continue90

pred.store.if89:                                  ; preds = %pred.store.continue88
  %54 = or disjoint i64 %index, 7
  %55 = getelementptr inbounds [349 x i8], ptr %27, i64 0, i64 %54
  store i8 0, ptr %55, align 1, !tbaa !47
  br label %pred.store.continue90

pred.store.continue90:                            ; preds = %pred.store.if89, %pred.store.continue88
  %56 = extractelement <16 x i1> %31, i64 8
  br i1 %56, label %pred.store.if91, label %pred.store.continue92

pred.store.if91:                                  ; preds = %pred.store.continue90
  %57 = or disjoint i64 %index, 8
  %58 = getelementptr inbounds [349 x i8], ptr %27, i64 0, i64 %57
  store i8 0, ptr %58, align 1, !tbaa !47
  br label %pred.store.continue92

pred.store.continue92:                            ; preds = %pred.store.if91, %pred.store.continue90
  %59 = extractelement <16 x i1> %31, i64 9
  br i1 %59, label %pred.store.if93, label %pred.store.continue94

pred.store.if93:                                  ; preds = %pred.store.continue92
  %60 = or disjoint i64 %index, 9
  %61 = getelementptr inbounds [349 x i8], ptr %27, i64 0, i64 %60
  store i8 0, ptr %61, align 1, !tbaa !47
  br label %pred.store.continue94

pred.store.continue94:                            ; preds = %pred.store.if93, %pred.store.continue92
  %62 = extractelement <16 x i1> %31, i64 10
  br i1 %62, label %pred.store.if95, label %pred.store.continue96

pred.store.if95:                                  ; preds = %pred.store.continue94
  %63 = or disjoint i64 %index, 10
  %64 = getelementptr inbounds [349 x i8], ptr %27, i64 0, i64 %63
  store i8 0, ptr %64, align 1, !tbaa !47
  br label %pred.store.continue96

pred.store.continue96:                            ; preds = %pred.store.if95, %pred.store.continue94
  %65 = extractelement <16 x i1> %31, i64 11
  br i1 %65, label %pred.store.if97, label %pred.store.continue98

pred.store.if97:                                  ; preds = %pred.store.continue96
  %66 = or disjoint i64 %index, 11
  %67 = getelementptr inbounds [349 x i8], ptr %27, i64 0, i64 %66
  store i8 0, ptr %67, align 1, !tbaa !47
  br label %pred.store.continue98

pred.store.continue98:                            ; preds = %pred.store.if97, %pred.store.continue96
  %68 = extractelement <16 x i1> %31, i64 12
  br i1 %68, label %pred.store.if99, label %pred.store.continue100

pred.store.if99:                                  ; preds = %pred.store.continue98
  %69 = or disjoint i64 %index, 12
  %70 = getelementptr inbounds [349 x i8], ptr %27, i64 0, i64 %69
  store i8 0, ptr %70, align 1, !tbaa !47
  br label %pred.store.continue100

pred.store.continue100:                           ; preds = %pred.store.if99, %pred.store.continue98
  %71 = extractelement <16 x i1> %31, i64 13
  br i1 %71, label %pred.store.if101, label %pred.store.continue102

pred.store.if101:                                 ; preds = %pred.store.continue100
  %72 = or disjoint i64 %index, 13
  %73 = getelementptr inbounds [349 x i8], ptr %27, i64 0, i64 %72
  store i8 0, ptr %73, align 1, !tbaa !47
  br label %pred.store.continue102

pred.store.continue102:                           ; preds = %pred.store.if101, %pred.store.continue100
  %74 = extractelement <16 x i1> %31, i64 14
  br i1 %74, label %pred.store.if103, label %pred.store.continue104

pred.store.if103:                                 ; preds = %pred.store.continue102
  %75 = or disjoint i64 %index, 14
  %76 = getelementptr inbounds [349 x i8], ptr %27, i64 0, i64 %75
  store i8 0, ptr %76, align 1, !tbaa !47
  br label %pred.store.continue104

pred.store.continue104:                           ; preds = %pred.store.if103, %pred.store.continue102
  %77 = extractelement <16 x i1> %31, i64 15
  br i1 %77, label %pred.store.if105, label %pred.store.continue106

pred.store.if105:                                 ; preds = %pred.store.continue104
  %78 = or disjoint i64 %index, 15
  %79 = getelementptr inbounds [349 x i8], ptr %27, i64 0, i64 %78
  store i8 0, ptr %79, align 1, !tbaa !47
  br label %pred.store.continue106

pred.store.continue106:                           ; preds = %pred.store.if105, %pred.store.continue104
  %80 = extractelement <16 x i1> %32, i64 0
  br i1 %80, label %pred.store.if107, label %pred.store.continue108

pred.store.if107:                                 ; preds = %pred.store.continue106
  %81 = getelementptr inbounds [349 x i8], ptr %27, i64 0, i64 %28
  store i8 0, ptr %81, align 1, !tbaa !47
  br label %pred.store.continue108

pred.store.continue108:                           ; preds = %pred.store.if107, %pred.store.continue106
  %82 = extractelement <16 x i1> %32, i64 1
  br i1 %82, label %pred.store.if109, label %pred.store.continue110

pred.store.if109:                                 ; preds = %pred.store.continue108
  %83 = or disjoint i64 %index, 17
  %84 = getelementptr inbounds [349 x i8], ptr %27, i64 0, i64 %83
  store i8 0, ptr %84, align 1, !tbaa !47
  br label %pred.store.continue110

pred.store.continue110:                           ; preds = %pred.store.if109, %pred.store.continue108
  %85 = extractelement <16 x i1> %32, i64 2
  br i1 %85, label %pred.store.if111, label %pred.store.continue112

pred.store.if111:                                 ; preds = %pred.store.continue110
  %86 = or disjoint i64 %index, 18
  %87 = getelementptr inbounds [349 x i8], ptr %27, i64 0, i64 %86
  store i8 0, ptr %87, align 1, !tbaa !47
  br label %pred.store.continue112

pred.store.continue112:                           ; preds = %pred.store.if111, %pred.store.continue110
  %88 = extractelement <16 x i1> %32, i64 3
  br i1 %88, label %pred.store.if113, label %pred.store.continue114

pred.store.if113:                                 ; preds = %pred.store.continue112
  %89 = or disjoint i64 %index, 19
  %90 = getelementptr inbounds [349 x i8], ptr %27, i64 0, i64 %89
  store i8 0, ptr %90, align 1, !tbaa !47
  br label %pred.store.continue114

pred.store.continue114:                           ; preds = %pred.store.if113, %pred.store.continue112
  %91 = extractelement <16 x i1> %32, i64 4
  br i1 %91, label %pred.store.if115, label %pred.store.continue116

pred.store.if115:                                 ; preds = %pred.store.continue114
  %92 = or disjoint i64 %index, 20
  %93 = getelementptr inbounds [349 x i8], ptr %27, i64 0, i64 %92
  store i8 0, ptr %93, align 1, !tbaa !47
  br label %pred.store.continue116

pred.store.continue116:                           ; preds = %pred.store.if115, %pred.store.continue114
  %94 = extractelement <16 x i1> %32, i64 5
  br i1 %94, label %pred.store.if117, label %pred.store.continue118

pred.store.if117:                                 ; preds = %pred.store.continue116
  %95 = or disjoint i64 %index, 21
  %96 = getelementptr inbounds [349 x i8], ptr %27, i64 0, i64 %95
  store i8 0, ptr %96, align 1, !tbaa !47
  br label %pred.store.continue118

pred.store.continue118:                           ; preds = %pred.store.if117, %pred.store.continue116
  %97 = extractelement <16 x i1> %32, i64 6
  br i1 %97, label %pred.store.if119, label %pred.store.continue120

pred.store.if119:                                 ; preds = %pred.store.continue118
  %98 = or disjoint i64 %index, 22
  %99 = getelementptr inbounds [349 x i8], ptr %27, i64 0, i64 %98
  store i8 0, ptr %99, align 1, !tbaa !47
  br label %pred.store.continue120

pred.store.continue120:                           ; preds = %pred.store.if119, %pred.store.continue118
  %100 = extractelement <16 x i1> %32, i64 7
  br i1 %100, label %pred.store.if121, label %pred.store.continue122

pred.store.if121:                                 ; preds = %pred.store.continue120
  %101 = or disjoint i64 %index, 23
  %102 = getelementptr inbounds [349 x i8], ptr %27, i64 0, i64 %101
  store i8 0, ptr %102, align 1, !tbaa !47
  br label %pred.store.continue122

pred.store.continue122:                           ; preds = %pred.store.if121, %pred.store.continue120
  %103 = extractelement <16 x i1> %32, i64 8
  br i1 %103, label %pred.store.if123, label %pred.store.continue124

pred.store.if123:                                 ; preds = %pred.store.continue122
  %104 = or disjoint i64 %index, 24
  %105 = getelementptr inbounds [349 x i8], ptr %27, i64 0, i64 %104
  store i8 0, ptr %105, align 1, !tbaa !47
  br label %pred.store.continue124

pred.store.continue124:                           ; preds = %pred.store.if123, %pred.store.continue122
  %106 = extractelement <16 x i1> %32, i64 9
  br i1 %106, label %pred.store.if125, label %pred.store.continue126

pred.store.if125:                                 ; preds = %pred.store.continue124
  %107 = or disjoint i64 %index, 25
  %108 = getelementptr inbounds [349 x i8], ptr %27, i64 0, i64 %107
  store i8 0, ptr %108, align 1, !tbaa !47
  br label %pred.store.continue126

pred.store.continue126:                           ; preds = %pred.store.if125, %pred.store.continue124
  %109 = extractelement <16 x i1> %32, i64 10
  br i1 %109, label %pred.store.if127, label %pred.store.continue128

pred.store.if127:                                 ; preds = %pred.store.continue126
  %110 = or disjoint i64 %index, 26
  %111 = getelementptr inbounds [349 x i8], ptr %27, i64 0, i64 %110
  store i8 0, ptr %111, align 1, !tbaa !47
  br label %pred.store.continue128

pred.store.continue128:                           ; preds = %pred.store.if127, %pred.store.continue126
  %112 = extractelement <16 x i1> %32, i64 11
  br i1 %112, label %pred.store.if129, label %pred.store.continue130

pred.store.if129:                                 ; preds = %pred.store.continue128
  %113 = or disjoint i64 %index, 27
  %114 = getelementptr inbounds [349 x i8], ptr %27, i64 0, i64 %113
  store i8 0, ptr %114, align 1, !tbaa !47
  br label %pred.store.continue130

pred.store.continue130:                           ; preds = %pred.store.if129, %pred.store.continue128
  %115 = extractelement <16 x i1> %32, i64 12
  br i1 %115, label %pred.store.if131, label %pred.store.continue132

pred.store.if131:                                 ; preds = %pred.store.continue130
  %116 = or disjoint i64 %index, 28
  %117 = getelementptr inbounds [349 x i8], ptr %27, i64 0, i64 %116
  store i8 0, ptr %117, align 1, !tbaa !47
  br label %pred.store.continue132

pred.store.continue132:                           ; preds = %pred.store.if131, %pred.store.continue130
  %118 = extractelement <16 x i1> %32, i64 13
  br i1 %118, label %pred.store.if133, label %pred.store.continue134

pred.store.if133:                                 ; preds = %pred.store.continue132
  %119 = or disjoint i64 %index, 29
  %120 = getelementptr inbounds [349 x i8], ptr %27, i64 0, i64 %119
  store i8 0, ptr %120, align 1, !tbaa !47
  br label %pred.store.continue134

pred.store.continue134:                           ; preds = %pred.store.if133, %pred.store.continue132
  %121 = extractelement <16 x i1> %32, i64 14
  br i1 %121, label %pred.store.if135, label %pred.store.continue136

pred.store.if135:                                 ; preds = %pred.store.continue134
  %122 = or disjoint i64 %index, 30
  %123 = getelementptr inbounds [349 x i8], ptr %27, i64 0, i64 %122
  store i8 0, ptr %123, align 1, !tbaa !47
  br label %pred.store.continue136

pred.store.continue136:                           ; preds = %pred.store.if135, %pred.store.continue134
  %124 = extractelement <16 x i1> %32, i64 15
  br i1 %124, label %pred.store.if137, label %pred.store.continue138

pred.store.if137:                                 ; preds = %pred.store.continue136
  %125 = or disjoint i64 %index, 31
  %126 = getelementptr inbounds [349 x i8], ptr %27, i64 0, i64 %125
  store i8 0, ptr %126, align 1, !tbaa !47
  br label %pred.store.continue138

pred.store.continue138:                           ; preds = %pred.store.if137, %pred.store.continue136
  %index.next = add nuw i64 %index, 32
  %127 = icmp eq i64 %index.next, 320
  br i1 %127, label %vec.epilog.vector.body, label %vector.body, !llvm.loop !48

vec.epilog.vector.body:                           ; preds = %pred.store.continue138
  %128 = getelementptr inbounds i8, ptr %0, i64 476
  %wide.load140 = load <8 x i8>, ptr %128, align 1, !tbaa !47
  %129 = icmp eq <8 x i8> %wide.load140, <i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3>
  %130 = extractelement <8 x i1> %129, i64 0
  br i1 %130, label %pred.store.if141, label %pred.store.continue142

pred.store.if141:                                 ; preds = %vec.epilog.vector.body
  %131 = getelementptr inbounds i8, ptr %0, i64 476
  store i8 0, ptr %131, align 1, !tbaa !47
  br label %pred.store.continue142

pred.store.continue142:                           ; preds = %pred.store.if141, %vec.epilog.vector.body
  %132 = extractelement <8 x i1> %129, i64 1
  br i1 %132, label %pred.store.if143, label %pred.store.continue144

pred.store.if143:                                 ; preds = %pred.store.continue142
  %133 = getelementptr inbounds i8, ptr %0, i64 477
  store i8 0, ptr %133, align 1, !tbaa !47
  br label %pred.store.continue144

pred.store.continue144:                           ; preds = %pred.store.if143, %pred.store.continue142
  %134 = extractelement <8 x i1> %129, i64 2
  br i1 %134, label %pred.store.if145, label %pred.store.continue146

pred.store.if145:                                 ; preds = %pred.store.continue144
  %135 = getelementptr inbounds i8, ptr %0, i64 478
  store i8 0, ptr %135, align 1, !tbaa !47
  br label %pred.store.continue146

pred.store.continue146:                           ; preds = %pred.store.if145, %pred.store.continue144
  %136 = extractelement <8 x i1> %129, i64 3
  br i1 %136, label %pred.store.if147, label %pred.store.continue148

pred.store.if147:                                 ; preds = %pred.store.continue146
  %137 = getelementptr inbounds i8, ptr %0, i64 479
  store i8 0, ptr %137, align 1, !tbaa !47
  br label %pred.store.continue148

pred.store.continue148:                           ; preds = %pred.store.if147, %pred.store.continue146
  %138 = extractelement <8 x i1> %129, i64 4
  br i1 %138, label %pred.store.if149, label %pred.store.continue150

pred.store.if149:                                 ; preds = %pred.store.continue148
  %139 = getelementptr inbounds i8, ptr %0, i64 480
  store i8 0, ptr %139, align 1, !tbaa !47
  br label %pred.store.continue150

pred.store.continue150:                           ; preds = %pred.store.if149, %pred.store.continue148
  %140 = extractelement <8 x i1> %129, i64 5
  br i1 %140, label %pred.store.if151, label %pred.store.continue152

pred.store.if151:                                 ; preds = %pred.store.continue150
  %141 = getelementptr inbounds i8, ptr %0, i64 481
  store i8 0, ptr %141, align 1, !tbaa !47
  br label %pred.store.continue152

pred.store.continue152:                           ; preds = %pred.store.if151, %pred.store.continue150
  %142 = extractelement <8 x i1> %129, i64 6
  br i1 %142, label %pred.store.if153, label %pred.store.continue154

pred.store.if153:                                 ; preds = %pred.store.continue152
  %143 = getelementptr inbounds i8, ptr %0, i64 482
  store i8 0, ptr %143, align 1, !tbaa !47
  br label %pred.store.continue154

pred.store.continue154:                           ; preds = %pred.store.if153, %pred.store.continue152
  %144 = extractelement <8 x i1> %129, i64 7
  br i1 %144, label %pred.store.if155, label %pred.store.continue156

pred.store.if155:                                 ; preds = %pred.store.continue154
  %145 = getelementptr inbounds i8, ptr %0, i64 483
  store i8 0, ptr %145, align 1, !tbaa !47
  br label %pred.store.continue156

pred.store.continue156:                           ; preds = %pred.store.if155, %pred.store.continue154
  %146 = getelementptr inbounds i8, ptr %0, i64 484
  %wide.load140.1 = load <8 x i8>, ptr %146, align 1, !tbaa !47
  %147 = icmp eq <8 x i8> %wide.load140.1, <i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3>
  %148 = extractelement <8 x i1> %147, i64 0
  br i1 %148, label %pred.store.if141.1, label %pred.store.continue142.1

pred.store.if141.1:                               ; preds = %pred.store.continue156
  %149 = getelementptr inbounds i8, ptr %0, i64 484
  store i8 0, ptr %149, align 1, !tbaa !47
  br label %pred.store.continue142.1

pred.store.continue142.1:                         ; preds = %pred.store.if141.1, %pred.store.continue156
  %150 = extractelement <8 x i1> %147, i64 1
  br i1 %150, label %pred.store.if143.1, label %pred.store.continue144.1

pred.store.if143.1:                               ; preds = %pred.store.continue142.1
  %151 = getelementptr inbounds i8, ptr %0, i64 485
  store i8 0, ptr %151, align 1, !tbaa !47
  br label %pred.store.continue144.1

pred.store.continue144.1:                         ; preds = %pred.store.if143.1, %pred.store.continue142.1
  %152 = extractelement <8 x i1> %147, i64 2
  br i1 %152, label %pred.store.if145.1, label %pred.store.continue146.1

pred.store.if145.1:                               ; preds = %pred.store.continue144.1
  %153 = getelementptr inbounds i8, ptr %0, i64 486
  store i8 0, ptr %153, align 1, !tbaa !47
  br label %pred.store.continue146.1

pred.store.continue146.1:                         ; preds = %pred.store.if145.1, %pred.store.continue144.1
  %154 = extractelement <8 x i1> %147, i64 3
  br i1 %154, label %pred.store.if147.1, label %pred.store.continue148.1

pred.store.if147.1:                               ; preds = %pred.store.continue146.1
  %155 = getelementptr inbounds i8, ptr %0, i64 487
  store i8 0, ptr %155, align 1, !tbaa !47
  br label %pred.store.continue148.1

pred.store.continue148.1:                         ; preds = %pred.store.if147.1, %pred.store.continue146.1
  %156 = extractelement <8 x i1> %147, i64 4
  br i1 %156, label %pred.store.if149.1, label %pred.store.continue150.1

pred.store.if149.1:                               ; preds = %pred.store.continue148.1
  %157 = getelementptr inbounds i8, ptr %0, i64 488
  store i8 0, ptr %157, align 1, !tbaa !47
  br label %pred.store.continue150.1

pred.store.continue150.1:                         ; preds = %pred.store.if149.1, %pred.store.continue148.1
  %158 = extractelement <8 x i1> %147, i64 5
  br i1 %158, label %pred.store.if151.1, label %pred.store.continue152.1

pred.store.if151.1:                               ; preds = %pred.store.continue150.1
  %159 = getelementptr inbounds i8, ptr %0, i64 489
  store i8 0, ptr %159, align 1, !tbaa !47
  br label %pred.store.continue152.1

pred.store.continue152.1:                         ; preds = %pred.store.if151.1, %pred.store.continue150.1
  %160 = extractelement <8 x i1> %147, i64 6
  br i1 %160, label %pred.store.if153.1, label %pred.store.continue154.1

pred.store.if153.1:                               ; preds = %pred.store.continue152.1
  %161 = getelementptr inbounds i8, ptr %0, i64 490
  store i8 0, ptr %161, align 1, !tbaa !47
  br label %pred.store.continue154.1

pred.store.continue154.1:                         ; preds = %pred.store.if153.1, %pred.store.continue152.1
  %162 = extractelement <8 x i1> %147, i64 7
  br i1 %162, label %pred.store.if155.1, label %pred.store.continue156.1

pred.store.if155.1:                               ; preds = %pred.store.continue154.1
  %163 = getelementptr inbounds i8, ptr %0, i64 491
  store i8 0, ptr %163, align 1, !tbaa !47
  br label %pred.store.continue156.1

pred.store.continue156.1:                         ; preds = %pred.store.if155.1, %pred.store.continue154.1
  %164 = getelementptr inbounds i8, ptr %0, i64 492
  %wide.load140.2 = load <8 x i8>, ptr %164, align 1, !tbaa !47
  %165 = icmp eq <8 x i8> %wide.load140.2, <i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3>
  %166 = extractelement <8 x i1> %165, i64 0
  br i1 %166, label %pred.store.if141.2, label %pred.store.continue142.2

pred.store.if141.2:                               ; preds = %pred.store.continue156.1
  %167 = getelementptr inbounds i8, ptr %0, i64 492
  store i8 0, ptr %167, align 1, !tbaa !47
  br label %pred.store.continue142.2

pred.store.continue142.2:                         ; preds = %pred.store.if141.2, %pred.store.continue156.1
  %168 = extractelement <8 x i1> %165, i64 1
  br i1 %168, label %pred.store.if143.2, label %pred.store.continue144.2

pred.store.if143.2:                               ; preds = %pred.store.continue142.2
  %169 = getelementptr inbounds i8, ptr %0, i64 493
  store i8 0, ptr %169, align 1, !tbaa !47
  br label %pred.store.continue144.2

pred.store.continue144.2:                         ; preds = %pred.store.if143.2, %pred.store.continue142.2
  %170 = extractelement <8 x i1> %165, i64 2
  br i1 %170, label %pred.store.if145.2, label %pred.store.continue146.2

pred.store.if145.2:                               ; preds = %pred.store.continue144.2
  %171 = getelementptr inbounds i8, ptr %0, i64 494
  store i8 0, ptr %171, align 1, !tbaa !47
  br label %pred.store.continue146.2

pred.store.continue146.2:                         ; preds = %pred.store.if145.2, %pred.store.continue144.2
  %172 = extractelement <8 x i1> %165, i64 3
  br i1 %172, label %pred.store.if147.2, label %pred.store.continue148.2

pred.store.if147.2:                               ; preds = %pred.store.continue146.2
  %173 = getelementptr inbounds i8, ptr %0, i64 495
  store i8 0, ptr %173, align 1, !tbaa !47
  br label %pred.store.continue148.2

pred.store.continue148.2:                         ; preds = %pred.store.if147.2, %pred.store.continue146.2
  %174 = extractelement <8 x i1> %165, i64 4
  br i1 %174, label %pred.store.if149.2, label %pred.store.continue150.2

pred.store.if149.2:                               ; preds = %pred.store.continue148.2
  %175 = getelementptr inbounds i8, ptr %0, i64 496
  store i8 0, ptr %175, align 1, !tbaa !47
  br label %pred.store.continue150.2

pred.store.continue150.2:                         ; preds = %pred.store.if149.2, %pred.store.continue148.2
  %176 = extractelement <8 x i1> %165, i64 5
  br i1 %176, label %pred.store.if151.2, label %pred.store.continue152.2

pred.store.if151.2:                               ; preds = %pred.store.continue150.2
  %177 = getelementptr inbounds i8, ptr %0, i64 497
  store i8 0, ptr %177, align 1, !tbaa !47
  br label %pred.store.continue152.2

pred.store.continue152.2:                         ; preds = %pred.store.if151.2, %pred.store.continue150.2
  %178 = extractelement <8 x i1> %165, i64 6
  br i1 %178, label %pred.store.if153.2, label %pred.store.continue154.2

pred.store.if153.2:                               ; preds = %pred.store.continue152.2
  %179 = getelementptr inbounds i8, ptr %0, i64 498
  store i8 0, ptr %179, align 1, !tbaa !47
  br label %pred.store.continue154.2

pred.store.continue154.2:                         ; preds = %pred.store.if153.2, %pred.store.continue152.2
  %180 = extractelement <8 x i1> %165, i64 7
  br i1 %180, label %pred.store.if155.2, label %vec.epilog.scalar.ph

pred.store.if155.2:                               ; preds = %pred.store.continue154.2
  %181 = getelementptr inbounds i8, ptr %0, i64 499
  store i8 0, ptr %181, align 1, !tbaa !47
  br label %vec.epilog.scalar.ph

vec.epilog.scalar.ph:                             ; preds = %pred.store.continue154.2, %pred.store.if155.2
  %182 = getelementptr inbounds i8, ptr %0, i64 500
  %183 = load i8, ptr %182, align 1, !tbaa !47
  %184 = icmp eq i8 %183, 3
  br i1 %184, label %185, label %vec.epilog.scalar.ph.1

185:                                              ; preds = %vec.epilog.scalar.ph
  store i8 0, ptr %182, align 1, !tbaa !47
  br label %vec.epilog.scalar.ph.1

vec.epilog.scalar.ph.1:                           ; preds = %vec.epilog.scalar.ph, %185
  %186 = getelementptr inbounds i8, ptr %0, i64 501
  %187 = load i8, ptr %186, align 1, !tbaa !47
  %188 = icmp eq i8 %187, 3
  br i1 %188, label %189, label %vec.epilog.scalar.ph.2

189:                                              ; preds = %vec.epilog.scalar.ph.1
  store i8 0, ptr %186, align 1, !tbaa !47
  br label %vec.epilog.scalar.ph.2

vec.epilog.scalar.ph.2:                           ; preds = %189, %vec.epilog.scalar.ph.1
  %190 = getelementptr inbounds i8, ptr %0, i64 502
  %191 = load i8, ptr %190, align 1, !tbaa !47
  %192 = icmp eq i8 %191, 3
  br i1 %192, label %193, label %vec.epilog.scalar.ph.3

193:                                              ; preds = %vec.epilog.scalar.ph.2
  store i8 0, ptr %190, align 1, !tbaa !47
  br label %vec.epilog.scalar.ph.3

vec.epilog.scalar.ph.3:                           ; preds = %193, %vec.epilog.scalar.ph.2
  %194 = getelementptr inbounds i8, ptr %0, i64 503
  %195 = load i8, ptr %194, align 1, !tbaa !47
  %196 = icmp eq i8 %195, 3
  br i1 %196, label %197, label %vec.epilog.scalar.ph.4

197:                                              ; preds = %vec.epilog.scalar.ph.3
  store i8 0, ptr %194, align 1, !tbaa !47
  br label %vec.epilog.scalar.ph.4

vec.epilog.scalar.ph.4:                           ; preds = %197, %vec.epilog.scalar.ph.3
  %198 = getelementptr inbounds i8, ptr %0, i64 504
  %199 = load i8, ptr %198, align 1, !tbaa !47
  %200 = icmp eq i8 %199, 3
  br i1 %200, label %201, label %.loopexit

201:                                              ; preds = %vec.epilog.scalar.ph.4
  store i8 0, ptr %198, align 1, !tbaa !47
  br label %.loopexit

.loopexit:                                        ; preds = %vec.epilog.scalar.ph.4, %201, %26
  store i32 %22, ptr %23, align 8, !tbaa !46
  br label %265

202:                                              ; preds = %8
  %.not68 = icmp ne i32 %2, 0
  %203 = zext i1 %.not68 to i32
  %204 = getelementptr inbounds i8, ptr %0, i64 132
  %205 = load i32, ptr %204, align 4, !tbaa !52
  %206 = icmp eq i32 %205, %203
  br i1 %206, label %265, label %207

207:                                              ; preds = %202
  br i1 %.not68, label %.loopexit71, label %.preheader70

.preheader70:                                     ; preds = %207
  %208 = getelementptr inbounds i8, ptr %0, i64 148
  %209 = load i8, ptr %208, align 1, !tbaa !47
  %210 = icmp eq i8 %209, 3
  br i1 %210, label %211, label %212

211:                                              ; preds = %.preheader70
  store i8 0, ptr %208, align 1, !tbaa !47
  br label %212

212:                                              ; preds = %.preheader70, %211
  %213 = getelementptr inbounds i8, ptr %0, i64 149
  %214 = load i8, ptr %213, align 1, !tbaa !47
  %215 = icmp eq i8 %214, 3
  br i1 %215, label %216, label %217

216:                                              ; preds = %212
  store i8 0, ptr %213, align 1, !tbaa !47
  br label %217

217:                                              ; preds = %216, %212
  %218 = getelementptr inbounds i8, ptr %0, i64 150
  %219 = load i8, ptr %218, align 1, !tbaa !47
  %220 = icmp eq i8 %219, 3
  br i1 %220, label %221, label %222

221:                                              ; preds = %217
  store i8 0, ptr %218, align 1, !tbaa !47
  br label %222

222:                                              ; preds = %221, %217
  %223 = getelementptr inbounds i8, ptr %0, i64 151
  %224 = load i8, ptr %223, align 1, !tbaa !47
  %225 = icmp eq i8 %224, 3
  br i1 %225, label %226, label %227

226:                                              ; preds = %222
  store i8 0, ptr %223, align 1, !tbaa !47
  br label %227

227:                                              ; preds = %226, %222
  %228 = getelementptr inbounds i8, ptr %0, i64 152
  %229 = load i8, ptr %228, align 1, !tbaa !47
  %230 = icmp eq i8 %229, 3
  br i1 %230, label %231, label %232

231:                                              ; preds = %227
  store i8 0, ptr %228, align 1, !tbaa !47
  br label %232

232:                                              ; preds = %231, %227
  %233 = getelementptr inbounds i8, ptr %0, i64 153
  %234 = load i8, ptr %233, align 1, !tbaa !47
  %235 = icmp eq i8 %234, 3
  br i1 %235, label %236, label %237

236:                                              ; preds = %232
  store i8 0, ptr %233, align 1, !tbaa !47
  br label %237

237:                                              ; preds = %236, %232
  %238 = getelementptr inbounds i8, ptr %0, i64 154
  %239 = load i8, ptr %238, align 1, !tbaa !47
  %240 = icmp eq i8 %239, 3
  br i1 %240, label %241, label %242

241:                                              ; preds = %237
  store i8 0, ptr %238, align 1, !tbaa !47
  br label %242

242:                                              ; preds = %241, %237
  %243 = getelementptr inbounds i8, ptr %0, i64 155
  %244 = load i8, ptr %243, align 1, !tbaa !47
  %245 = icmp eq i8 %244, 3
  br i1 %245, label %246, label %.loopexit71

246:                                              ; preds = %242
  store i8 0, ptr %243, align 1, !tbaa !47
  br label %.loopexit71

.loopexit71:                                      ; preds = %242, %246, %207
  store i32 %203, ptr %204, align 4, !tbaa !52
  br label %265

247:                                              ; preds = %8
  %.not67 = icmp ne i32 %2, 0
  %248 = zext i1 %.not67 to i32
  %249 = getelementptr inbounds i8, ptr %0, i64 136
  store i32 %248, ptr %249, align 8, !tbaa !53
  br label %265

250:                                              ; preds = %8
  %251 = load ptr, ptr getelementptr inbounds (i8, ptr @_glfw, i64 96), align 8, !tbaa !54
  %252 = tail call i32 %251() #3
  %.not65 = icmp eq i32 %252, 0
  br i1 %.not65, label %253, label %254

253:                                              ; preds = %250
  tail call void (i32, ptr, ...) @_glfwInputError(i32 noundef 65544, ptr noundef nonnull @.str.32) #3
  br label %265

254:                                              ; preds = %250
  %.not66 = icmp ne i32 %2, 0
  %255 = zext i1 %.not66 to i32
  %256 = getelementptr inbounds i8, ptr %0, i64 528
  %257 = load i32, ptr %256, align 8, !tbaa !55
  %258 = icmp eq i32 %257, %255
  br i1 %258, label %265, label %259

259:                                              ; preds = %254
  store i32 %255, ptr %256, align 8, !tbaa !55
  %260 = load ptr, ptr getelementptr inbounds (i8, ptr @_glfw, i64 88), align 8, !tbaa !56
  tail call void %260(ptr noundef nonnull %0, i32 noundef %255) #3
  br label %265

261:                                              ; preds = %8
  %.not64 = icmp ne i32 %2, 0
  %262 = zext i1 %.not64 to i32
  %263 = getelementptr inbounds i8, ptr %0, i64 140
  store i32 %262, ptr %263, align 4, !tbaa !57
  br label %265

264:                                              ; preds = %8
  tail call void (i32, ptr, ...) @_glfwInputError(i32 noundef 65539, ptr noundef nonnull @.str.30, i32 noundef %1) #3
  br label %265

265:                                              ; preds = %11, %16, %.loopexit, %.loopexit71, %247, %253, %259, %261, %264, %12, %21, %202, %254, %5
  ret void
}

attributes #0 = { 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 #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 }
attributes #4 = { 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, !7, i64 0}
!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 = !{!35, !7, i64 144}
!35 = !{!"_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, !36, 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, !37, i64 512, !37, i64 520, !7, i64 528, !38, i64 536, !41, i64 712, !42, i64 848}
!36 = !{!"GLFWvidmode", !7, i64 0, !7, i64 4, !7, i64 8, !7, i64 12, !7, i64 16, !7, i64 20}
!37 = !{!"double", !8, i64 0}
!38 = !{!"_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, !39, i64 120, !40, i64 152}
!39 = !{!"", !11, i64 0, !11, i64 8, !11, i64 16, !11, i64 24}
!40 = !{!"", !11, i64 0, !7, i64 8, !7, i64 12, !11, i64 16}
!41 = !{!"", !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}
!42 = !{!"_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, !43, i64 44}
!43 = !{!"float", !8, i64 0}
!44 = !{!6, !11, i64 64}
!45 = !{!6, !11, i64 80}
!46 = !{!35, !7, i64 128}
!47 = !{!8, !8, i64 0}
!48 = distinct !{!48, !49, !50, !51}
!49 = !{!"llvm.loop.mustprogress"}
!50 = !{!"llvm.loop.isvectorized", i32 1}
!51 = !{!"llvm.loop.unroll.runtime.disable"}
!52 = !{!35, !7, i64 132}
!53 = !{!35, !7, i64 136}
!54 = !{!6, !11, i64 96}
!55 = !{!35, !7, i64 528}
!56 = !{!6, !11, i64 88}
!57 = !{!35, !7, i64 140}


; Effective O3 passes: EarlyCSEPass,GVNPass,GlobalOptPass,IndVarSimplifyPass,InferFunctionAttrsPass,InstCombinePass,JumpThreadingPass,LICMPass,LoopLoadEliminationPass,LoopRotatePass,LoopSimplifyPass,LoopUnrollPass,LoopVectorizePass,SROAPass,SimplifyCFGPass,TailCallElimPass