; LLVM IR from erwincoumans/tiny-differentiable-simulator :: examples (opengl_imgui_test)

; 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"

%"class.std::vector.26" = type { %"struct.std::_Vector_base.27" }
%"struct.std::_Vector_base.27" = type { %"struct.std::_Vector_base<const char *, std::allocator<const char *>>::_Vector_impl" }
%"struct.std::_Vector_base<const char *, std::allocator<const char *>>::_Vector_impl" = type { %"struct.std::_Vector_base<const char *, std::allocator<const char *>>::_Vector_impl_data" }
%"struct.std::_Vector_base<const char *, std::allocator<const char *>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.31" = type { %"struct.std::_Vector_base.32" }
%"struct.std::_Vector_base.32" = type { %"struct.std::_Vector_base<std::__cxx11::basic_string<char>, std::allocator<std::__cxx11::basic_string<char>>>::_Vector_impl" }
%"struct.std::_Vector_base<std::__cxx11::basic_string<char>, std::allocator<std::__cxx11::basic_string<char>>>::_Vector_impl" = type { %"struct.std::_Vector_base<std::__cxx11::basic_string<char>, std::allocator<std::__cxx11::basic_string<char>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<std::__cxx11::basic_string<char>, std::allocator<std::__cxx11::basic_string<char>>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%struct.ImGuiTextFilter = type <{ [256 x i8], %struct.ImVector.36, i32, [4 x i8] }>
%struct.ImVector.36 = type { i32, i32, ptr }
%struct.TinyOpenGL3App = type { %struct.TinyCommonGraphicsApp.base, ptr, ptr, ptr }
%struct.TinyCommonGraphicsApp.base = type <{ ptr, ptr, ptr, ptr, ptr, i8, i8, i8, i8, float, float, float, float, i8, [3 x i8], [3 x float] }>
%class.TinyClock = type { ptr }
%"struct.TINY::TinyVector3" = type { float, float, float, i32 }
%"struct.TINY::TinyQuaternion" = type { float, float, float, float }
%"class.std::vector.16" = type { %"struct.std::_Vector_base.17" }
%"struct.std::_Vector_base.17" = type { %"struct.std::_Vector_base<unsigned char, std::allocator<unsigned char>>::_Vector_impl" }
%"struct.std::_Vector_base<unsigned char, std::allocator<unsigned char>>::_Vector_impl" = type { %"struct.std::_Vector_base<unsigned char, std::allocator<unsigned char>>::_Vector_impl_data" }
%"struct.std::_Vector_base<unsigned char, std::allocator<unsigned char>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%struct.ImFontConfig = type { ptr, i32, i8, i32, float, i32, i32, i8, %struct.ImVec2, %struct.ImVec2, ptr, float, float, i8, i32, float, i16, [40 x i8], ptr }
%struct.ImVec2 = type { float, float }
%class.TinyProfileZone = type { i8 }
%struct.DrawGridData = type { i32, float, i32, i8, [4 x float] }
%struct.TinyCommonGraphicsApp = type <{ ptr, ptr, ptr, ptr, ptr, i8, i8, i8, i8, float, float, float, float, i8, [3 x i8], [3 x float], [4 x i8] }>
%struct.ImGuiIO = type { i32, i32, %struct.ImVec2, float, float, ptr, ptr, float, float, float, [22 x i32], float, float, ptr, ptr, float, i8, ptr, %struct.ImVec2, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, float, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, %struct.ImVec2, [5 x i8], float, float, i32, i8, i8, i8, i8, [512 x i8], [21 x float], i8, i8, i8, i8, i8, i8, i8, float, i32, i32, i32, i32, i32, %struct.ImVec2, i32, %struct.ImVec2, [5 x %struct.ImVec2], [5 x double], [5 x i8], [5 x i8], [5 x i8], [5 x i8], [5 x i8], [5 x float], [5 x float], [5 x %struct.ImVec2], [5 x float], [512 x float], [512 x float], [21 x float], [21 x float], float, i16, %struct.ImVector }
%struct.ImVector = type { i32, i32, ptr }
%struct.ImFont = type <{ %struct.ImVector.24, float, float, %struct.ImVector, %struct.ImVector.25, ptr, %struct.ImVec2, ptr, ptr, i16, i16, i16, i8, i8, float, float, float, i32, [2 x i8], [6 x i8] }>
%struct.ImVector.24 = type { i32, i32, ptr }
%struct.ImVector.25 = type { i32, i32, ptr }
%struct.ImGuiViewport = type <{ i32, i32, %struct.ImVec2, %struct.ImVec2, %struct.ImVec2, %struct.ImVec2, float, [4 x i8], ptr, i32, [4 x i8], ptr, ptr, ptr, ptr, i8, i8, i8, [5 x i8] }>

@__dso_handle = external hidden global i8
@default_keyboard_callback = external dso_local global ptr, align 8
@default_mouse_move_callback = external dso_local global ptr, align 8
@default_mouse_button_callback = external dso_local global ptr, align 8
@g_MouseWheel = external dso_local global float, align 4
@gMouseX = external dso_local global float, align 4
@gMouseY = external dso_local global float, align 4
@g_MousePressed = external dso_local global [3 x i32], align 4
@.str.15 = external hidden unnamed_addr constant [1 x i8], align 1
@.str.21 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.22 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.23 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.24 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.25 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.26 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.27 = external hidden unnamed_addr constant [3 x i8], align 1
@_ZZ4mainE7clicked = external hidden global i32, align 4
@.str.28 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.29 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.30 = external hidden unnamed_addr constant [4 x i8], align 1
@_ZZ4mainE7clicked_0 = external hidden global i32, align 4
@.str.31 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.32 = external hidden unnamed_addr constant [9 x i8], align 1
@_ZZ4mainE5items = external hidden global %"class.std::vector.26", align 8
@_ZGVZ4mainE5items = external hidden global i64, align 8
@_ZZ4mainE7samplesB5cxx11 = external hidden global %"class.std::vector.31", align 8
@_ZGVZ4mainE7samplesB5cxx11 = external hidden global i64, align 8
@_ZZ4mainE6Filter = external hidden global %struct.ImGuiTextFilter, align 8
@_ZGVZ4mainE6Filter = external hidden global i64, align 8
@_ZZ4mainE5count = external hidden global i32, align 4
@.str.33 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.34 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.35 = external hidden unnamed_addr constant [8 x i8], align 1
@_ZZ4mainE12item_current = external hidden global i32, align 4
@_ZZ4mainE8firstRun = external hidden global i8, align 1
@.str.36 = external hidden unnamed_addr constant [16 x i8], align 1
@.str.37 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.38 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.39 = external hidden unnamed_addr constant [13 x i8], align 1

; Function Attrs: nounwind
declare i32 @__cxa_atexit(ptr, ptr, ptr) #0

; Function Attrs: mustprogress uwtable
declare dso_local void @_Z19MyMouseMoveCallbackff(float noundef, float noundef) #1

; Function Attrs: mustprogress uwtable
declare dso_local void @_Z21MyMouseButtonCallbackiiff(i32 noundef, i32 noundef, float noundef, float noundef) #1

declare noundef nonnull align 8 dereferenceable(5464) ptr @_ZN5ImGui5GetIOEv() #2

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

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

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

declare i32 @__gxx_personality_v0(...)

; Function Attrs: mustprogress uwtable
declare dso_local void @_Z18MyKeyboardCallbackii(i32 noundef, i32 noundef) #1

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef i32 @_Z11MyDockSpacev() #5

declare noundef ptr @_ZN5ImGui15GetMainViewportEv() #2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8), float noundef, float noundef) unnamed_addr #6 align 2

declare void @_ZN5ImGui17SetNextWindowSizeERK6ImVec2i(ptr noundef nonnull align 4 dereferenceable(8), i32 noundef) #2

declare noundef zeroext i1 @_ZN5ImGui5BeginEPKcPbi(ptr noundef, ptr noundef, i32 noundef) #2

declare void @_ZN5ImGui3EndEv() #2

; Function Attrs: mustprogress norecurse uwtable
define dso_local noundef i32 @main(i32 noundef %0, ptr noundef %1) #7 personality ptr @__gxx_personality_v0 {
  %3 = alloca i32, align 4
  %4 = alloca i32, align 4
  %5 = alloca ptr, align 8
  %6 = alloca %struct.TinyOpenGL3App, align 8
  %7 = alloca ptr, align 8
  %8 = alloca i32, align 4
  %9 = alloca %class.TinyClock, align 8
  %10 = alloca double, align 8
  %11 = alloca %"struct.TINY::TinyVector3", align 4
  %12 = alloca %"struct.TINY::TinyQuaternion", align 4
  %13 = alloca %"struct.TINY::TinyVector3", align 4
  %14 = alloca %"struct.TINY::TinyVector3", align 4
  %15 = alloca i32, align 4
  %16 = alloca i32, align 4
  %17 = alloca i32, align 4
  %18 = alloca i32, align 4
  %19 = alloca i32, align 4
  %20 = alloca i32, align 4
  %21 = alloca %"class.std::vector.16", align 8
  %22 = alloca i32, align 4
  %23 = alloca i32, align 4
  %24 = alloca i32, align 4
  %25 = alloca i32, align 4
  %26 = alloca i32, align 4
  %27 = alloca i32, align 4
  %28 = alloca i32, align 4
  %29 = alloca float, align 4
  %30 = alloca float, align 4
  %31 = alloca float, align 4
  %32 = alloca ptr, align 8
  %33 = alloca float, align 4
  %34 = alloca %struct.ImFontConfig, align 8
  %35 = alloca ptr, align 8
  %36 = alloca i8, align 1
  %37 = alloca %class.TinyProfileZone, align 1
  %38 = alloca i32, align 4
  %39 = alloca %struct.DrawGridData, align 4
  %40 = alloca ptr, align 8
  %41 = alloca %class.TinyProfileZone, align 1
  %42 = alloca float, align 4
  %43 = alloca float, align 4
  %44 = alloca %struct.ImVec2, align 4
  %45 = alloca %struct.ImVec2, align 4
  %46 = alloca double, align 8
  %47 = alloca float, align 4
  %48 = alloca %struct.ImVec2, align 4
  %49 = alloca i32, align 4
  %50 = alloca i32, align 4
  %51 = alloca %struct.ImVec2, align 4
  %52 = alloca ptr, align 8
  %53 = alloca %struct.ImVec2, align 4
  %54 = alloca %struct.ImVec2, align 4
  %55 = alloca ptr, align 8
  %56 = alloca i32, align 4
  %57 = alloca %struct.ImVec2, align 4
  %58 = alloca %struct.ImVec2, align 4
  %59 = alloca %struct.ImVec2, align 4
  %60 = alloca i8, align 1
  %61 = alloca %struct.ImVec2, align 4
  %62 = alloca i32, align 4
  %63 = alloca ptr, align 8
  %64 = alloca i32, align 4
  %65 = alloca ptr, align 8
  %66 = alloca i8, align 1
  %67 = alloca i32, align 4
  %68 = alloca %struct.ImVec2, align 4
  %69 = alloca i32, align 4
  %70 = alloca i32, align 4
  %71 = alloca i32, align 4
  %72 = alloca i32, align 4
  store i32 0, ptr %3, align 4
  store i32 %0, ptr %4, align 4, !tbaa !5
  store ptr %1, ptr %5, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 104, ptr %6) #0
  call void @_ZN14TinyOpenGL3AppC1EPKciibiiii(ptr noundef nonnull align 8 dereferenceable(104) %6, ptr noundef @.str.21, i32 noundef 1024, i32 noundef 768, i1 noundef zeroext true, i32 noundef 0, i32 noundef -1, i32 noundef 131072, i32 noundef 134217728)
  %73 = getelementptr inbounds %struct.TinyCommonGraphicsApp, ptr %6, i32 0, i32 2
  %74 = load ptr, ptr %73, align 8, !tbaa !11
  %75 = load ptr, ptr %74, align 8, !tbaa !15
  %76 = getelementptr inbounds ptr, ptr %75, i64 2
  %77 = load ptr, ptr %76, align 8
  invoke void %77(ptr noundef nonnull align 8 dereferenceable(60) %74)
          to label %78 unwind label %175

78:                                               ; preds = %2
  invoke void @_Z27TinyChromeUtilsStartTimingsv()
          to label %79 unwind label %175

79:                                               ; preds = %78
  call void @llvm.lifetime.start.p0(i64 8, ptr %9) #0
  invoke void @_ZN9TinyClockC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %9)
          to label %80 unwind label %179

80:                                               ; preds = %79
  invoke void @_ZN9TinyClock5resetEv(ptr noundef nonnull align 8 dereferenceable(8) %9)
          to label %81 unwind label %183

81:                                               ; preds = %80
  call void @llvm.lifetime.start.p0(i64 8, ptr %10) #0
  %82 = invoke noundef double @_ZN9TinyClock16get_time_secondsEv(ptr noundef nonnull align 8 dereferenceable(8) %9)
          to label %83 unwind label %187

83:                                               ; preds = %81
  store double %82, ptr %10, align 8, !tbaa !17
  invoke void @_ZN14TinyOpenGL3App11set_up_axisEi(ptr noundef nonnull align 8 dereferenceable(104) %6, i32 noundef 2)
          to label %84 unwind label %187

84:                                               ; preds = %83
  %85 = getelementptr inbounds %struct.TinyCommonGraphicsApp, ptr %6, i32 0, i32 2
  %86 = load ptr, ptr %85, align 8, !tbaa !11
  %87 = load ptr, ptr %86, align 8, !tbaa !15
  %88 = getelementptr inbounds ptr, ptr %87, i64 38
  %89 = load ptr, ptr %88, align 8
  %90 = invoke noundef ptr %89(ptr noundef nonnull align 8 dereferenceable(60) %86)
          to label %91 unwind label %187

91:                                               ; preds = %84
  %92 = load ptr, ptr %90, align 8, !tbaa !15
  %93 = getelementptr inbounds ptr, ptr %92, i64 8
  %94 = load ptr, ptr %93, align 8
  invoke void %94(ptr noundef nonnull align 8 dereferenceable(16) %90, float noundef 4.000000e+00)
          to label %95 unwind label %187

95:                                               ; preds = %91
  %96 = getelementptr inbounds %struct.TinyCommonGraphicsApp, ptr %6, i32 0, i32 2
  %97 = load ptr, ptr %96, align 8, !tbaa !11
  %98 = load ptr, ptr %97, align 8, !tbaa !15
  %99 = getelementptr inbounds ptr, ptr %98, i64 38
  %100 = load ptr, ptr %99, align 8
  %101 = invoke noundef ptr %100(ptr noundef nonnull align 8 dereferenceable(60) %97)
          to label %102 unwind label %187

102:                                              ; preds = %95
  %103 = load ptr, ptr %101, align 8, !tbaa !15
  %104 = getelementptr inbounds ptr, ptr %103, i64 15
  %105 = load ptr, ptr %104, align 8
  invoke void %105(ptr noundef nonnull align 8 dereferenceable(16) %101, float noundef -3.000000e+01)
          to label %106 unwind label %187

106:                                              ; preds = %102
  %107 = getelementptr inbounds %struct.TinyCommonGraphicsApp, ptr %6, i32 0, i32 2
  %108 = load ptr, ptr %107, align 8, !tbaa !11
  %109 = load ptr, ptr %108, align 8, !tbaa !15
  %110 = getelementptr inbounds ptr, ptr %109, i64 38
  %111 = load ptr, ptr %110, align 8
  %112 = invoke noundef ptr %111(ptr noundef nonnull align 8 dereferenceable(60) %108)
          to label %113 unwind label %187

113:                                              ; preds = %106
  %114 = load ptr, ptr %112, align 8, !tbaa !15
  %115 = getelementptr inbounds ptr, ptr %114, i64 7
  %116 = load ptr, ptr %115, align 8
  invoke void %116(ptr noundef nonnull align 8 dereferenceable(16) %112, float noundef 0.000000e+00, float noundef 0.000000e+00, float noundef 0.000000e+00)
          to label %117 unwind label %187

117:                                              ; preds = %113
  %118 = getelementptr inbounds %struct.TinyCommonGraphicsApp, ptr %6, i32 0, i32 1
  %119 = load ptr, ptr %118, align 8, !tbaa !19
  %120 = load ptr, ptr %119, align 8, !tbaa !15
  %121 = getelementptr inbounds ptr, ptr %120, i64 13
  %122 = load ptr, ptr %121, align 8
  %123 = invoke noundef ptr %122(ptr noundef nonnull align 8 dereferenceable(8) %119)
          to label %124 unwind label %187

124:                                              ; preds = %117
  store ptr %123, ptr @default_mouse_move_callback, align 8, !tbaa !9
  %125 = getelementptr inbounds %struct.TinyCommonGraphicsApp, ptr %6, i32 0, i32 1
  %126 = load ptr, ptr %125, align 8, !tbaa !19
  %127 = load ptr, ptr %126, align 8, !tbaa !15
  %128 = getelementptr inbounds ptr, ptr %127, i64 12
  %129 = load ptr, ptr %128, align 8
  invoke void %129(ptr noundef nonnull align 8 dereferenceable(8) %126, ptr noundef @_Z19MyMouseMoveCallbackff)
          to label %130 unwind label %187

130:                                              ; preds = %124
  %131 = getelementptr inbounds %struct.TinyCommonGraphicsApp, ptr %6, i32 0, i32 1
  %132 = load ptr, ptr %131, align 8, !tbaa !19
  %133 = load ptr, ptr %132, align 8, !tbaa !15
  %134 = getelementptr inbounds ptr, ptr %133, i64 15
  %135 = load ptr, ptr %134, align 8
  %136 = invoke noundef ptr %135(ptr noundef nonnull align 8 dereferenceable(8) %132)
          to label %137 unwind label %187

137:                                              ; preds = %130
  store ptr %136, ptr @default_mouse_button_callback, align 8, !tbaa !9
  %138 = getelementptr inbounds %struct.TinyCommonGraphicsApp, ptr %6, i32 0, i32 1
  %139 = load ptr, ptr %138, align 8, !tbaa !19
  %140 = load ptr, ptr %139, align 8, !tbaa !15
  %141 = getelementptr inbounds ptr, ptr %140, i64 14
  %142 = load ptr, ptr %141, align 8
  invoke void %142(ptr noundef nonnull align 8 dereferenceable(8) %139, ptr noundef @_Z21MyMouseButtonCallbackiiff)
          to label %143 unwind label %187

143:                                              ; preds = %137
  %144 = getelementptr inbounds %struct.TinyCommonGraphicsApp, ptr %6, i32 0, i32 1
  %145 = load ptr, ptr %144, align 8, !tbaa !19
  %146 = load ptr, ptr %145, align 8, !tbaa !15
  %147 = getelementptr inbounds ptr, ptr %146, i64 21
  %148 = load ptr, ptr %147, align 8
  %149 = invoke noundef ptr %148(ptr noundef nonnull align 8 dereferenceable(8) %145)
          to label %150 unwind label %187

150:                                              ; preds = %143
  store ptr %149, ptr @default_keyboard_callback, align 8, !tbaa !9
  %151 = getelementptr inbounds %struct.TinyCommonGraphicsApp, ptr %6, i32 0, i32 1
  %152 = load ptr, ptr %151, align 8, !tbaa !19
  %153 = load ptr, ptr %152, align 8, !tbaa !15
  %154 = getelementptr inbounds ptr, ptr %153, i64 20
  %155 = load ptr, ptr %154, align 8
  invoke void %155(ptr noundef nonnull align 8 dereferenceable(8) %152, ptr noundef @_Z18MyKeyboardCallbackii)
          to label %156 unwind label %187

156:                                              ; preds = %150
  call void @llvm.lifetime.start.p0(i64 16, ptr %11) #0
  invoke void @_ZN4TINY11TinyVector3IfNS_10FloatUtilsEEC2Efff(ptr noundef nonnull align 4 dereferenceable(16) %11, float noundef 0.000000e+00, float noundef 0.000000e+00, float noundef 0xBF947AE140000000)
          to label %157 unwind label %191

157:                                              ; preds = %156
  call void @llvm.lifetime.start.p0(i64 16, ptr %12) #0
  invoke void @_ZN4TINY14TinyQuaternionIfNS_10FloatUtilsEEC2Effff(ptr noundef nonnull align 4 dereferenceable(16) %12, float noundef 0.000000e+00, float noundef 0.000000e+00, float noundef 0.000000e+00, float noundef 1.000000e+00)
          to label %158 unwind label %195

158:                                              ; preds = %157
  call void @llvm.lifetime.start.p0(i64 16, ptr %13) #0
  invoke void @_ZN4TINY11TinyVector3IfNS_10FloatUtilsEEC2Efff(ptr noundef nonnull align 4 dereferenceable(16) %13, float noundef 1.000000e+00, float noundef 1.000000e+00, float noundef 1.000000e+00)
          to label %159 unwind label %199

159:                                              ; preds = %158
  call void @llvm.lifetime.start.p0(i64 16, ptr %14) #0
  invoke void @_ZN4TINY11TinyVector3IfNS_10FloatUtilsEEC2Efff(ptr noundef nonnull align 4 dereferenceable(16) %14, float noundef 1.000000e+00, float noundef 1.000000e+00, float noundef 1.000000e+00)
          to label %160 unwind label %203

160:                                              ; preds = %159
  call void @llvm.lifetime.start.p0(i64 4, ptr %15) #0
  store i32 -1, ptr %15, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %16) #0
  store i32 0, ptr %16, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %17) #0
  store i32 128, ptr %17, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %18) #0
  store i32 255, ptr %18, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %19) #0
  store i32 1024, ptr %19, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %20) #0
  store i32 1024, ptr %20, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 24, ptr %21) #0
  call void @_ZNSt6vectorIhSaIhEEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %21) #0
  %161 = load i32, ptr %19, align 4, !tbaa !5
  %162 = load i32, ptr %20, align 4, !tbaa !5
  %163 = mul nsw i32 %161, %162
  %164 = mul nsw i32 %163, 3
  %165 = sext i32 %164 to i64
  invoke void @_ZNSt6vectorIhSaIhEE6resizeEm(ptr noundef nonnull align 8 dereferenceable(24) %21, i64 noundef %165)
          to label %166 unwind label %207

166:                                              ; preds = %160
  call void @llvm.lifetime.start.p0(i64 4, ptr %22) #0
  store i32 0, ptr %22, align 4, !tbaa !5
  br label %167

167:                                              ; preds = %215, %166
  %168 = load i32, ptr %22, align 4, !tbaa !5
  %169 = load i32, ptr %19, align 4, !tbaa !5
  %170 = load i32, ptr %20, align 4, !tbaa !5
  %171 = mul nsw i32 %169, %170
  %172 = mul nsw i32 %171, 3
  %173 = icmp slt i32 %168, %172
  br i1 %173, label %211, label %174

174:                                              ; preds = %167
  call void @llvm.lifetime.end.p0(i64 4, ptr %22) #0
  br label %218

175:                                              ; preds = %78, %2
  %176 = landingpad { ptr, i32 }
          cleanup
  %177 = extractvalue { ptr, i32 } %176, 0
  store ptr %177, ptr %7, align 8
  %178 = extractvalue { ptr, i32 } %176, 1
  store i32 %178, ptr %8, align 4
  br label %971

179:                                              ; preds = %79
  %180 = landingpad { ptr, i32 }
          cleanup
  %181 = extractvalue { ptr, i32 } %180, 0
  store ptr %181, ptr %7, align 8
  %182 = extractvalue { ptr, i32 } %180, 1
  store i32 %182, ptr %8, align 4
  br label %970

183:                                              ; preds = %80
  %184 = landingpad { ptr, i32 }
          cleanup
  %185 = extractvalue { ptr, i32 } %184, 0
  store ptr %185, ptr %7, align 8
  %186 = extractvalue { ptr, i32 } %184, 1
  store i32 %186, ptr %8, align 4
  br label %969

187:                                              ; preds = %150, %143, %137, %130, %124, %117, %113, %106, %102, %95, %91, %84, %83, %81
  %188 = landingpad { ptr, i32 }
          cleanup
  %189 = extractvalue { ptr, i32 } %188, 0
  store ptr %189, ptr %7, align 8
  %190 = extractvalue { ptr, i32 } %188, 1
  store i32 %190, ptr %8, align 4
  br label %968

191:                                              ; preds = %156
  %192 = landingpad { ptr, i32 }
          cleanup
  %193 = extractvalue { ptr, i32 } %192, 0
  store ptr %193, ptr %7, align 8
  %194 = extractvalue { ptr, i32 } %192, 1
  store i32 %194, ptr %8, align 4
  br label %967

195:                                              ; preds = %157
  %196 = landingpad { ptr, i32 }
          cleanup
  %197 = extractvalue { ptr, i32 } %196, 0
  store ptr %197, ptr %7, align 8
  %198 = extractvalue { ptr, i32 } %196, 1
  store i32 %198, ptr %8, align 4
  br label %966

199:                                              ; preds = %158
  %200 = landingpad { ptr, i32 }
          cleanup
  %201 = extractvalue { ptr, i32 } %200, 0
  store ptr %201, ptr %7, align 8
  %202 = extractvalue { ptr, i32 } %200, 1
  store i32 %202, ptr %8, align 4
  br label %965

203:                                              ; preds = %159
  %204 = landingpad { ptr, i32 }
          cleanup
  %205 = extractvalue { ptr, i32 } %204, 0
  store ptr %205, ptr %7, align 8
  %206 = extractvalue { ptr, i32 } %204, 1
  store i32 %206, ptr %8, align 4
  br label %964

207:                                              ; preds = %288, %160
  %208 = landingpad { ptr, i32 }
          cleanup
  %209 = extractvalue { ptr, i32 } %208, 0
  store ptr %209, ptr %7, align 8
  %210 = extractvalue { ptr, i32 } %208, 1
  store i32 %210, ptr %8, align 4
  br label %963

211:                                              ; preds = %167
  %212 = load i32, ptr %22, align 4, !tbaa !5
  %213 = sext i32 %212 to i64
  %214 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt6vectorIhSaIhEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %21, i64 noundef %213) #0
  store i8 -1, ptr %214, align 1, !tbaa !20
  br label %215

215:                                              ; preds = %211
  %216 = load i32, ptr %22, align 4, !tbaa !5
  %217 = add nsw i32 %216, 1
  store i32 %217, ptr %22, align 4, !tbaa !5
  br label %167, !llvm.loop !21

218:                                              ; preds = %174
  call void @llvm.lifetime.start.p0(i64 4, ptr %23) #0
  store i32 0, ptr %23, align 4, !tbaa !5
  br label %219

219:                                              ; preds = %285, %218
  %220 = load i32, ptr %23, align 4, !tbaa !5
  %221 = load i32, ptr %19, align 4, !tbaa !5
  %222 = icmp slt i32 %220, %221
  br i1 %222, label %224, label %223

223:                                              ; preds = %219
  store i32 5, ptr %24, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %23) #0
  br label %288

224:                                              ; preds = %219
  call void @llvm.lifetime.start.p0(i64 4, ptr %25) #0
  store i32 0, ptr %25, align 4, !tbaa !5
  br label %225

225:                                              ; preds = %281, %224
  %226 = load i32, ptr %25, align 4, !tbaa !5
  %227 = load i32, ptr %20, align 4, !tbaa !5
  %228 = icmp slt i32 %226, %227
  br i1 %228, label %230, label %229

229:                                              ; preds = %225
  store i32 8, ptr %24, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %25) #0
  br label %284

230:                                              ; preds = %225
  call void @llvm.lifetime.start.p0(i64 4, ptr %26) #0
  %231 = load i32, ptr %23, align 4, !tbaa !5
  %232 = load i32, ptr %19, align 4, !tbaa !5
  %233 = sdiv i32 %232, 2
  %234 = icmp slt i32 %231, %233
  %235 = zext i1 %234 to i64
  %236 = select i1 %234, i32 1, i32 0
  store i32 %236, ptr %26, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %27) #0
  %237 = load i32, ptr %25, align 4, !tbaa !5
  %238 = load i32, ptr %19, align 4, !tbaa !5
  %239 = sdiv i32 %238, 2
  %240 = icmp slt i32 %237, %239
  %241 = zext i1 %240 to i64
  %242 = select i1 %240, i32 1, i32 0
  store i32 %242, ptr %27, align 4, !tbaa !5
  %243 = load i32, ptr %26, align 4, !tbaa !5
  %244 = load i32, ptr %27, align 4, !tbaa !5
  %245 = icmp eq i32 %243, %244
  br i1 %245, label %246, label %280

246:                                              ; preds = %230
  %247 = load i32, ptr %16, align 4, !tbaa !5
  %248 = trunc i32 %247 to i8
  %249 = load i32, ptr %23, align 4, !tbaa !5
  %250 = load i32, ptr %25, align 4, !tbaa !5
  %251 = load i32, ptr %19, align 4, !tbaa !5
  %252 = mul nsw i32 %250, %251
  %253 = add nsw i32 %249, %252
  %254 = mul nsw i32 %253, 3
  %255 = add nsw i32 %254, 0
  %256 = sext i32 %255 to i64
  %257 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt6vectorIhSaIhEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %21, i64 noundef %256) #0
  store i8 %248, ptr %257, align 1, !tbaa !20
  %258 = load i32, ptr %17, align 4, !tbaa !5
  %259 = trunc i32 %258 to i8
  %260 = load i32, ptr %23, align 4, !tbaa !5
  %261 = load i32, ptr %25, align 4, !tbaa !5
  %262 = load i32, ptr %19, align 4, !tbaa !5
  %263 = mul nsw i32 %261, %262
  %264 = add nsw i32 %260, %263
  %265 = mul nsw i32 %264, 3
  %266 = add nsw i32 %265, 1
  %267 = sext i32 %266 to i64
  %268 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt6vectorIhSaIhEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %21, i64 noundef %267) #0
  store i8 %259, ptr %268, align 1, !tbaa !20
  %269 = load i32, ptr %18, align 4, !tbaa !5
  %270 = trunc i32 %269 to i8
  %271 = load i32, ptr %23, align 4, !tbaa !5
  %272 = load i32, ptr %25, align 4, !tbaa !5
  %273 = load i32, ptr %19, align 4, !tbaa !5
  %274 = mul nsw i32 %272, %273
  %275 = add nsw i32 %271, %274
  %276 = mul nsw i32 %275, 3
  %277 = add nsw i32 %276, 2
  %278 = sext i32 %277 to i64
  %279 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt6vectorIhSaIhEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %21, i64 noundef %278) #0
  store i8 %270, ptr %279, align 1, !tbaa !20
  br label %280

280:                                              ; preds = %246, %230
  call void @llvm.lifetime.end.p0(i64 4, ptr %27) #0
  call void @llvm.lifetime.end.p0(i64 4, ptr %26) #0
  br label %281

281:                                              ; preds = %280
  %282 = load i32, ptr %25, align 4, !tbaa !5
  %283 = add nsw i32 %282, 1
  store i32 %283, ptr %25, align 4, !tbaa !5
  br label %225, !llvm.loop !23

284:                                              ; preds = %229
  br label %285

285:                                              ; preds = %284
  %286 = load i32, ptr %23, align 4, !tbaa !5
  %287 = add nsw i32 %286, 1
  store i32 %287, ptr %23, align 4, !tbaa !5
  br label %219, !llvm.loop !24

288:                                              ; preds = %223
  %289 = getelementptr inbounds %struct.TinyOpenGL3App, ptr %6, i32 0, i32 3
  %290 = load ptr, ptr %289, align 8, !tbaa !25
  %291 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt6vectorIhSaIhEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %21, i64 noundef 0) #0
  %292 = load i32, ptr %19, align 4, !tbaa !5
  %293 = load i32, ptr %20, align 4, !tbaa !5
  %294 = load ptr, ptr %290, align 8, !tbaa !15
  %295 = getelementptr inbounds ptr, ptr %294, i64 11
  %296 = load ptr, ptr %295, align 8
  %297 = invoke noundef i32 %296(ptr noundef nonnull align 8 dereferenceable(60) %290, ptr noundef %291, i32 noundef %292, i32 noundef %293, i1 noundef zeroext true)
          to label %298 unwind label %207

298:                                              ; preds = %288
  store i32 %297, ptr %15, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %28) #0
  %299 = load i32, ptr %15, align 4, !tbaa !5
  %300 = invoke noundef i32 @_ZN14TinyOpenGL3App19register_cube_shapeEfffif(ptr noundef nonnull align 8 dereferenceable(104) %6, float noundef 1.000000e+01, float noundef 1.000000e+01, float noundef 0x3F847AE140000000, i32 noundef %299, float noundef 4.000000e+01)
          to label %301 unwind label %518

301:                                              ; preds = %298
  store i32 %300, ptr %28, align 4, !tbaa !5
  %302 = getelementptr inbounds %struct.TinyCommonGraphicsApp, ptr %6, i32 0, i32 2
  %303 = load ptr, ptr %302, align 8, !tbaa !11
  %304 = load i32, ptr %28, align 4, !tbaa !5
  %305 = load ptr, ptr %303, align 8, !tbaa !15
  %306 = getelementptr inbounds ptr, ptr %305, i64 17
  %307 = load ptr, ptr %306, align 8
  %308 = invoke noundef i32 %307(ptr noundef nonnull align 8 dereferenceable(60) %303, i32 noundef %304, ptr noundef nonnull align 4 dereferenceable(16) %11, ptr noundef nonnull align 4 dereferenceable(16) %12, ptr noundef nonnull align 4 dereferenceable(16) %13, ptr noundef nonnull align 4 dereferenceable(16) %14, float noundef 1.000000e+00, i1 noundef zeroext true)
          to label %309 unwind label %518

309:                                              ; preds = %301
  call void @llvm.lifetime.start.p0(i64 4, ptr %29) #0
  store float 0.000000e+00, ptr %29, align 4, !tbaa !27
  call void @llvm.lifetime.start.p0(i64 4, ptr %30) #0
  store float 0.000000e+00, ptr %30, align 4, !tbaa !27
  call void @llvm.lifetime.start.p0(i64 4, ptr %31) #0
  store float 2.000000e+00, ptr %31, align 4, !tbaa !27
  invoke void @_ZN4TINY11TinyVector3IfNS_10FloatUtilsEE8setValueERKfS4_S4_(ptr noundef nonnull align 4 dereferenceable(16) %11, ptr noundef nonnull align 4 dereferenceable(4) %29, ptr noundef nonnull align 4 dereferenceable(4) %30, ptr noundef nonnull align 4 dereferenceable(4) %31)
          to label %310 unwind label %522

310:                                              ; preds = %309
  call void @llvm.lifetime.end.p0(i64 4, ptr %31) #0
  call void @llvm.lifetime.end.p0(i64 4, ptr %30) #0
  call void @llvm.lifetime.end.p0(i64 4, ptr %29) #0
  %311 = invoke noundef i32 @_ZN14TinyOpenGL3App35register_graphics_unit_sphere_shapeE23EnumSphereLevelOfDetaili(ptr noundef nonnull align 8 dereferenceable(104) %6, i32 noundef 3, i32 noundef -1)
          to label %312 unwind label %518

312:                                              ; preds = %310
  store i32 %311, ptr %28, align 4, !tbaa !5
  %313 = getelementptr inbounds %struct.TinyCommonGraphicsApp, ptr %6, i32 0, i32 2
  %314 = load ptr, ptr %313, align 8, !tbaa !11
  %315 = load i32, ptr %28, align 4, !tbaa !5
  %316 = load ptr, ptr %314, align 8, !tbaa !15
  %317 = getelementptr inbounds ptr, ptr %316, i64 17
  %318 = load ptr, ptr %317, align 8
  %319 = invoke noundef i32 %318(ptr noundef nonnull align 8 dereferenceable(60) %314, i32 noundef %315, ptr noundef nonnull align 4 dereferenceable(16) %11, ptr noundef nonnull align 4 dereferenceable(16) %12, ptr noundef nonnull align 4 dereferenceable(16) %13, ptr noundef nonnull align 4 dereferenceable(16) %14, float noundef 1.000000e+00, i1 noundef zeroext true)
          to label %320 unwind label %518

320:                                              ; preds = %312
  %321 = getelementptr inbounds %struct.TinyCommonGraphicsApp, ptr %6, i32 0, i32 2
  %322 = load ptr, ptr %321, align 8, !tbaa !11
  invoke void @_ZN24TinyGLInstancingRenderer16write_transformsEv(ptr noundef nonnull align 8 dereferenceable(60) %322)
          to label %323 unwind label %518

323:                                              ; preds = %320
  %324 = invoke noundef zeroext i1 @_ZN5ImGui30DebugCheckVersionAndDataLayoutEPKcmmmmmm(ptr noundef @.str.22, i64 noundef 5464, i64 noundef 988, i64 noundef 8, i64 noundef 16, i64 noundef 20, i64 noundef 2)
          to label %325 unwind label %518

325:                                              ; preds = %323
  %326 = invoke noundef ptr @_ZN5ImGui13CreateContextEP11ImFontAtlas(ptr noundef null)
          to label %327 unwind label %518

327:                                              ; preds = %325
  call void @llvm.lifetime.start.p0(i64 8, ptr %32) #0
  %328 = invoke noundef nonnull align 8 dereferenceable(5464) ptr @_ZN5ImGui5GetIOEv()
          to label %329 unwind label %526

329:                                              ; preds = %327
  store ptr %328, ptr %32, align 8, !tbaa !9
  %330 = load ptr, ptr %32, align 8, !tbaa !9
  %331 = load ptr, ptr %32, align 8, !tbaa !9
  %332 = getelementptr inbounds %struct.ImGuiIO, ptr %331, i32 0, i32 0
  %333 = load i32, ptr %332, align 8, !tbaa !28
  %334 = or i32 %333, 1
  store i32 %334, ptr %332, align 8, !tbaa !28
  %335 = load ptr, ptr %32, align 8, !tbaa !9
  %336 = getelementptr inbounds %struct.ImGuiIO, ptr %335, i32 0, i32 0
  %337 = load i32, ptr %336, align 8, !tbaa !28
  %338 = or i32 %337, 64
  store i32 %338, ptr %336, align 8, !tbaa !28
  %339 = load ptr, ptr %32, align 8, !tbaa !9
  %340 = getelementptr inbounds %struct.ImGuiIO, ptr %339, i32 0, i32 10
  %341 = getelementptr inbounds [22 x i32], ptr %340, i64 0, i64 0
  store i32 158, ptr %341, align 4, !tbaa !5
  %342 = load ptr, ptr %32, align 8, !tbaa !9
  %343 = getelementptr inbounds %struct.ImGuiIO, ptr %342, i32 0, i32 10
  %344 = getelementptr inbounds [22 x i32], ptr %343, i64 0, i64 1
  store i32 143, ptr %344, align 4, !tbaa !5
  %345 = load ptr, ptr %32, align 8, !tbaa !9
  %346 = getelementptr inbounds %struct.ImGuiIO, ptr %345, i32 0, i32 10
  %347 = getelementptr inbounds [22 x i32], ptr %346, i64 0, i64 2
  store i32 144, ptr %347, align 4, !tbaa !5
  %348 = load ptr, ptr %32, align 8, !tbaa !9
  %349 = getelementptr inbounds %struct.ImGuiIO, ptr %348, i32 0, i32 10
  %350 = getelementptr inbounds [22 x i32], ptr %349, i64 0, i64 3
  store i32 145, ptr %350, align 4, !tbaa !5
  %351 = load ptr, ptr %32, align 8, !tbaa !9
  %352 = getelementptr inbounds %struct.ImGuiIO, ptr %351, i32 0, i32 10
  %353 = getelementptr inbounds [22 x i32], ptr %352, i64 0, i64 4
  store i32 146, ptr %353, align 4, !tbaa !5
  %354 = load ptr, ptr %32, align 8, !tbaa !9
  %355 = getelementptr inbounds %struct.ImGuiIO, ptr %354, i32 0, i32 10
  %356 = getelementptr inbounds [22 x i32], ptr %355, i64 0, i64 5
  store i32 147, ptr %356, align 4, !tbaa !5
  %357 = load ptr, ptr %32, align 8, !tbaa !9
  %358 = getelementptr inbounds %struct.ImGuiIO, ptr %357, i32 0, i32 10
  %359 = getelementptr inbounds [22 x i32], ptr %358, i64 0, i64 6
  store i32 148, ptr %359, align 4, !tbaa !5
  %360 = load ptr, ptr %32, align 8, !tbaa !9
  %361 = getelementptr inbounds %struct.ImGuiIO, ptr %360, i32 0, i32 10
  %362 = getelementptr inbounds [22 x i32], ptr %361, i64 0, i64 7
  store i32 150, ptr %362, align 4, !tbaa !5
  %363 = load ptr, ptr %32, align 8, !tbaa !9
  %364 = getelementptr inbounds %struct.ImGuiIO, ptr %363, i32 0, i32 10
  %365 = getelementptr inbounds [22 x i32], ptr %364, i64 0, i64 8
  store i32 149, ptr %365, align 4, !tbaa !5
  %366 = load ptr, ptr %32, align 8, !tbaa !9
  %367 = getelementptr inbounds %struct.ImGuiIO, ptr %366, i32 0, i32 10
  %368 = getelementptr inbounds [22 x i32], ptr %367, i64 0, i64 9
  store i32 151, ptr %368, align 4, !tbaa !5
  %369 = load ptr, ptr %32, align 8, !tbaa !9
  %370 = getelementptr inbounds %struct.ImGuiIO, ptr %369, i32 0, i32 10
  %371 = getelementptr inbounds [22 x i32], ptr %370, i64 0, i64 10
  store i32 152, ptr %371, align 4, !tbaa !5
  %372 = load ptr, ptr %32, align 8, !tbaa !9
  %373 = getelementptr inbounds %struct.ImGuiIO, ptr %372, i32 0, i32 10
  %374 = getelementptr inbounds [22 x i32], ptr %373, i64 0, i64 11
  store i32 153, ptr %374, align 4, !tbaa !5
  %375 = load ptr, ptr %32, align 8, !tbaa !9
  %376 = getelementptr inbounds %struct.ImGuiIO, ptr %375, i32 0, i32 10
  %377 = getelementptr inbounds [22 x i32], ptr %376, i64 0, i64 12
  store i32 96, ptr %377, align 4, !tbaa !5
  %378 = load ptr, ptr %32, align 8, !tbaa !9
  %379 = getelementptr inbounds %struct.ImGuiIO, ptr %378, i32 0, i32 10
  %380 = getelementptr inbounds [22 x i32], ptr %379, i64 0, i64 13
  store i32 157, ptr %380, align 4, !tbaa !5
  %381 = load ptr, ptr %32, align 8, !tbaa !9
  %382 = getelementptr inbounds %struct.ImGuiIO, ptr %381, i32 0, i32 10
  %383 = getelementptr inbounds [22 x i32], ptr %382, i64 0, i64 14
  store i32 27, ptr %383, align 4, !tbaa !5
  %384 = load ptr, ptr %32, align 8, !tbaa !9
  %385 = getelementptr inbounds %struct.ImGuiIO, ptr %384, i32 0, i32 10
  %386 = getelementptr inbounds [22 x i32], ptr %385, i64 0, i64 15
  store i32 0, ptr %386, align 4, !tbaa !5
  %387 = load ptr, ptr %32, align 8, !tbaa !9
  %388 = getelementptr inbounds %struct.ImGuiIO, ptr %387, i32 0, i32 10
  %389 = getelementptr inbounds [22 x i32], ptr %388, i64 0, i64 16
  store i32 97, ptr %389, align 4, !tbaa !5
  %390 = load ptr, ptr %32, align 8, !tbaa !9
  %391 = getelementptr inbounds %struct.ImGuiIO, ptr %390, i32 0, i32 10
  %392 = getelementptr inbounds [22 x i32], ptr %391, i64 0, i64 17
  store i32 99, ptr %392, align 4, !tbaa !5
  %393 = load ptr, ptr %32, align 8, !tbaa !9
  %394 = getelementptr inbounds %struct.ImGuiIO, ptr %393, i32 0, i32 10
  %395 = getelementptr inbounds [22 x i32], ptr %394, i64 0, i64 18
  store i32 118, ptr %395, align 4, !tbaa !5
  %396 = load ptr, ptr %32, align 8, !tbaa !9
  %397 = getelementptr inbounds %struct.ImGuiIO, ptr %396, i32 0, i32 10
  %398 = getelementptr inbounds [22 x i32], ptr %397, i64 0, i64 19
  store i32 120, ptr %398, align 4, !tbaa !5
  %399 = load ptr, ptr %32, align 8, !tbaa !9
  %400 = getelementptr inbounds %struct.ImGuiIO, ptr %399, i32 0, i32 10
  %401 = getelementptr inbounds [22 x i32], ptr %400, i64 0, i64 20
  store i32 121, ptr %401, align 4, !tbaa !5
  %402 = load ptr, ptr %32, align 8, !tbaa !9
  %403 = getelementptr inbounds %struct.ImGuiIO, ptr %402, i32 0, i32 10
  %404 = getelementptr inbounds [22 x i32], ptr %403, i64 0, i64 21
  store i32 122, ptr %404, align 4, !tbaa !5
  invoke void @_ZN5ImGui15StyleColorsDarkEP10ImGuiStyle(ptr noundef null)
          to label %405 unwind label %526

405:                                              ; preds = %329
  call void @llvm.lifetime.start.p0(i64 4, ptr %33) #0
  store float 2.000000e+00, ptr %33, align 4, !tbaa !27
  call void @llvm.lifetime.start.p0(i64 136, ptr %34) #0
  invoke void @_ZN12ImFontConfigC1Ev(ptr noundef nonnull align 8 dereferenceable(136) %34)
          to label %406 unwind label %530

406:                                              ; preds = %405
  %407 = load float, ptr %33, align 4, !tbaa !27
  %408 = fmul float 1.300000e+01, %407
  %409 = getelementptr inbounds %struct.ImFontConfig, ptr %34, i32 0, i32 4
  store float %408, ptr %409, align 4, !tbaa !33
  %410 = load float, ptr %33, align 4, !tbaa !27
  %411 = invoke noundef nonnull align 8 dereferenceable(5464) ptr @_ZN5ImGui5GetIOEv()
          to label %412 unwind label %530

412:                                              ; preds = %406
  %413 = getelementptr inbounds %struct.ImGuiIO, ptr %411, i32 0, i32 14
  %414 = load ptr, ptr %413, align 8, !tbaa !35
  %415 = invoke noundef ptr @_ZN11ImFontAtlas14AddFontDefaultEPK12ImFontConfig(ptr noundef nonnull align 8 dereferenceable(1144) %414, ptr noundef %34)
          to label %416 unwind label %530

416:                                              ; preds = %412
  %417 = getelementptr inbounds %struct.ImFont, ptr %415, i32 0, i32 6
  %418 = getelementptr inbounds %struct.ImVec2, ptr %417, i32 0, i32 1
  store float %410, ptr %418, align 4, !tbaa !36
  %419 = invoke noundef nonnull align 4 dereferenceable(988) ptr @_ZN5ImGui8GetStyleEv()
          to label %420 unwind label %530

420:                                              ; preds = %416
  invoke void @_ZN10ImGuiStyle13ScaleAllSizesEf(ptr noundef nonnull align 4 dereferenceable(988) %419, float noundef 2.000000e+00)
          to label %421 unwind label %530

421:                                              ; preds = %420
  call void @llvm.lifetime.end.p0(i64 136, ptr %34) #0
  call void @llvm.lifetime.end.p0(i64 4, ptr %33) #0
  call void @llvm.lifetime.start.p0(i64 8, ptr %35) #0
  store ptr @.str.23, ptr %35, align 8, !tbaa !9
  %422 = load ptr, ptr %35, align 8, !tbaa !9
  %423 = invoke noundef zeroext i1 @_Z22ImGui_ImplOpenGL3_InitPKc(ptr noundef %422)
          to label %424 unwind label %534

424:                                              ; preds = %421
  call void @llvm.lifetime.start.p0(i64 1, ptr %36) #0
  %425 = invoke noundef zeroext i1 @_Z37ImGui_ImplOpenGL3_CreateDeviceObjectsv()
          to label %426 unwind label %538

426:                                              ; preds = %424
  %427 = zext i1 %425 to i8
  store i8 %427, ptr %36, align 1, !tbaa !40
  invoke void @_ZN7imnodes10InitializeEv()
          to label %428 unwind label %538

428:                                              ; preds = %426
  invoke void @_ZN7imnodes15StyleColorsDarkEv()
          to label %429 unwind label %538

429:                                              ; preds = %428
  br label %430

430:                                              ; preds = %945, %429
  %431 = getelementptr inbounds %struct.TinyCommonGraphicsApp, ptr %6, i32 0, i32 1
  %432 = load ptr, ptr %431, align 8, !tbaa !19
  %433 = load ptr, ptr %432, align 8, !tbaa !15
  %434 = getelementptr inbounds ptr, ptr %433, i64 7
  %435 = load ptr, ptr %434, align 8
  %436 = invoke noundef zeroext i1 %435(ptr noundef nonnull align 8 dereferenceable(8) %432)
          to label %437 unwind label %538

437:                                              ; preds = %430
  %438 = xor i1 %436, true
  br i1 %438, label %439, label %956

439:                                              ; preds = %437
  call void @llvm.lifetime.start.p0(i64 1, ptr %37) #0
  invoke void @_ZN15TinyProfileZoneC2EPKc(ptr noundef nonnull align 1 dereferenceable(1) %37, ptr noundef @.str.24)
          to label %440 unwind label %542

440:                                              ; preds = %439
  call void @llvm.lifetime.start.p0(i64 4, ptr %38) #0
  store i32 2, ptr %38, align 4, !tbaa !5
  %441 = getelementptr inbounds %struct.TinyCommonGraphicsApp, ptr %6, i32 0, i32 2
  %442 = load ptr, ptr %441, align 8, !tbaa !11
  %443 = load i32, ptr %38, align 4, !tbaa !5
  %444 = load ptr, ptr %442, align 8, !tbaa !15
  %445 = getelementptr inbounds ptr, ptr %444, i64 36
  %446 = load ptr, ptr %445, align 8
  invoke void %446(ptr noundef nonnull align 8 dereferenceable(60) %442, i32 noundef %443)
          to label %447 unwind label %546

447:                                              ; preds = %440
  call void @llvm.lifetime.start.p0(i64 32, ptr %39) #0
  invoke void @_ZN12DrawGridDataC2Ei(ptr noundef nonnull align 4 dereferenceable(32) %39, i32 noundef 2)
          to label %448 unwind label %550

448:                                              ; preds = %447
  %449 = getelementptr inbounds %struct.DrawGridData, ptr %39, i32 0, i32 2
  store i32 2, ptr %449, align 4, !tbaa !41
  call void @llvm.lifetime.start.p0(i64 8, ptr %40) #0
  store ptr @.str.25, ptr %40, align 8, !tbaa !9
  %450 = load ptr, ptr %40, align 8, !tbaa !9
  invoke void @_ZN14TinyOpenGL3App12draw_text_3dEPKcffff(ptr noundef nonnull align 8 dereferenceable(104) %6, ptr noundef %450, float noundef 0.000000e+00, float noundef 0.000000e+00, float noundef 1.000000e+00, float noundef 1.000000e+00)
          to label %451 unwind label %554

451:                                              ; preds = %448
  call void @llvm.lifetime.start.p0(i64 1, ptr %41) #0
  invoke void @_ZN15TinyProfileZoneC2EPKc(ptr noundef nonnull align 1 dereferenceable(1) %41, ptr noundef @.str.26)
          to label %452 unwind label %558

452:                                              ; preds = %451
  %453 = getelementptr inbounds %struct.TinyCommonGraphicsApp, ptr %6, i32 0, i32 2
  %454 = load ptr, ptr %453, align 8, !tbaa !11
  %455 = load ptr, ptr %454, align 8, !tbaa !15
  %456 = getelementptr inbounds ptr, ptr %455, i64 3
  %457 = load ptr, ptr %456, align 8
  invoke void %457(ptr noundef nonnull align 8 dereferenceable(60) %454)
          to label %458 unwind label %562

458:                                              ; preds = %452
  call void @_ZN15TinyProfileZoneD2Ev(ptr noundef nonnull align 1 dereferenceable(1) %41) #0
  call void @llvm.lifetime.end.p0(i64 1, ptr %41) #0
  call void @llvm.lifetime.start.p0(i64 4, ptr %42) #0
  %459 = getelementptr inbounds %struct.TinyCommonGraphicsApp, ptr %6, i32 0, i32 1
  %460 = load ptr, ptr %459, align 8, !tbaa !19
  %461 = load ptr, ptr %460, align 8, !tbaa !15
  %462 = getelementptr inbounds ptr, ptr %461, i64 26
  %463 = load ptr, ptr %462, align 8
  %464 = invoke noundef i32 %463(ptr noundef nonnull align 8 dereferenceable(8) %460)
          to label %465 unwind label %567

465:                                              ; preds = %458
  %466 = sitofp i32 %464 to float
  store float %466, ptr %42, align 4, !tbaa !27
  call void @llvm.lifetime.start.p0(i64 4, ptr %43) #0
  %467 = getelementptr inbounds %struct.TinyCommonGraphicsApp, ptr %6, i32 0, i32 1
  %468 = load ptr, ptr %467, align 8, !tbaa !19
  %469 = load ptr, ptr %468, align 8, !tbaa !15
  %470 = getelementptr inbounds ptr, ptr %469, i64 27
  %471 = load ptr, ptr %470, align 8
  %472 = invoke noundef i32 %471(ptr noundef nonnull align 8 dereferenceable(8) %468)
          to label %473 unwind label %571

473:                                              ; preds = %465
  %474 = sitofp i32 %472 to float
  store float %474, ptr %43, align 4, !tbaa !27
  call void @llvm.lifetime.start.p0(i64 8, ptr %44) #0
  %475 = load float, ptr %42, align 4, !tbaa !27
  %476 = load float, ptr %43, align 4, !tbaa !27
  invoke void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %44, float noundef %475, float noundef %476)
          to label %477 unwind label %575

477:                                              ; preds = %473
  %478 = load ptr, ptr %32, align 8, !tbaa !9
  %479 = getelementptr inbounds %struct.ImGuiIO, ptr %478, i32 0, i32 2
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %479, ptr align 4 %44, i64 8, i1 false), !tbaa.struct !43
  call void @llvm.lifetime.end.p0(i64 8, ptr %44) #0
  call void @llvm.lifetime.start.p0(i64 8, ptr %45) #0
  %480 = getelementptr inbounds %struct.TinyCommonGraphicsApp, ptr %6, i32 0, i32 1
  %481 = load ptr, ptr %480, align 8, !tbaa !19
  %482 = load ptr, ptr %481, align 8, !tbaa !15
  %483 = getelementptr inbounds ptr, ptr %482, i64 24
  %484 = load ptr, ptr %483, align 8
  %485 = invoke noundef float %484(ptr noundef nonnull align 8 dereferenceable(8) %481)
          to label %486 unwind label %579

486:                                              ; preds = %477
  %487 = getelementptr inbounds %struct.TinyCommonGraphicsApp, ptr %6, i32 0, i32 1
  %488 = load ptr, ptr %487, align 8, !tbaa !19
  %489 = load ptr, ptr %488, align 8, !tbaa !15
  %490 = getelementptr inbounds ptr, ptr %489, i64 24
  %491 = load ptr, ptr %490, align 8
  %492 = invoke noundef float %491(ptr noundef nonnull align 8 dereferenceable(8) %488)
          to label %493 unwind label %579

493:                                              ; preds = %486
  invoke void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %45, float noundef %485, float noundef %492)
          to label %494 unwind label %579

494:                                              ; preds = %493
  %495 = load ptr, ptr %32, align 8, !tbaa !9
  %496 = getelementptr inbounds %struct.ImGuiIO, ptr %495, i32 0, i32 18
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %496, ptr align 4 %45, i64 8, i1 false), !tbaa.struct !43
  call void @llvm.lifetime.end.p0(i64 8, ptr %45) #0
  call void @llvm.lifetime.start.p0(i64 8, ptr %46) #0
  %497 = invoke noundef double @_ZN9TinyClock16get_time_secondsEv(ptr noundef nonnull align 8 dereferenceable(8) %9)
          to label %498 unwind label %583

498:                                              ; preds = %494
  store double %497, ptr %46, align 8, !tbaa !17
  call void @llvm.lifetime.start.p0(i64 4, ptr %47) #0
  %499 = load double, ptr %46, align 8, !tbaa !17
  %500 = load double, ptr %10, align 8, !tbaa !17
  %501 = fsub double %499, %500
  %502 = fptrunc double %501 to float
  store float %502, ptr %47, align 4, !tbaa !27
  %503 = load double, ptr %46, align 8, !tbaa !17
  store double %503, ptr %10, align 8, !tbaa !17
  %504 = load float, ptr %47, align 4, !tbaa !27
  %505 = load ptr, ptr %32, align 8, !tbaa !9
  %506 = getelementptr inbounds %struct.ImGuiIO, ptr %505, i32 0, i32 3
  store float %504, ptr %506, align 8, !tbaa !44
  call void @llvm.lifetime.start.p0(i64 8, ptr %48) #0
  %507 = load float, ptr @gMouseX, align 4, !tbaa !27
  %508 = load float, ptr @gMouseY, align 4, !tbaa !27
  invoke void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %48, float noundef %507, float noundef %508)
          to label %509 unwind label %587

509:                                              ; preds = %498
  %510 = load ptr, ptr %32, align 8, !tbaa !9
  %511 = getelementptr inbounds %struct.ImGuiIO, ptr %510, i32 0, i32 42
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %511, ptr align 4 %48, i64 8, i1 false), !tbaa.struct !43
  call void @llvm.lifetime.end.p0(i64 8, ptr %48) #0
  %512 = load ptr, ptr %32, align 8, !tbaa !9
  %513 = getelementptr inbounds %struct.ImGuiIO, ptr %512, i32 0, i32 41
  store ptr @_Z32ImGui_ImplOpenGL3_RenderDrawDataP10ImDrawData, ptr %513, align 8, !tbaa !45
  call void @llvm.lifetime.start.p0(i64 4, ptr %49) #0
  store i32 0, ptr %49, align 4, !tbaa !5
  br label %514

514:                                              ; preds = %603, %509
  %515 = load i32, ptr %49, align 4, !tbaa !5
  %516 = icmp slt i32 %515, 3
  br i1 %516, label %591, label %517

517:                                              ; preds = %514
  store i32 13, ptr %24, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %49) #0
  br label %606

518:                                              ; preds = %325, %323, %320, %312, %310, %301, %298
  %519 = landingpad { ptr, i32 }
          cleanup
  %520 = extractvalue { ptr, i32 } %519, 0
  store ptr %520, ptr %7, align 8
  %521 = extractvalue { ptr, i32 } %519, 1
  store i32 %521, ptr %8, align 4
  br label %962

522:                                              ; preds = %309
  %523 = landingpad { ptr, i32 }
          cleanup
  %524 = extractvalue { ptr, i32 } %523, 0
  store ptr %524, ptr %7, align 8
  %525 = extractvalue { ptr, i32 } %523, 1
  store i32 %525, ptr %8, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %31) #0
  call void @llvm.lifetime.end.p0(i64 4, ptr %30) #0
  call void @llvm.lifetime.end.p0(i64 4, ptr %29) #0
  br label %962

526:                                              ; preds = %329, %327
  %527 = landingpad { ptr, i32 }
          cleanup
  %528 = extractvalue { ptr, i32 } %527, 0
  store ptr %528, ptr %7, align 8
  %529 = extractvalue { ptr, i32 } %527, 1
  store i32 %529, ptr %8, align 4
  br label %961

530:                                              ; preds = %420, %416, %412, %406, %405
  %531 = landingpad { ptr, i32 }
          cleanup
  %532 = extractvalue { ptr, i32 } %531, 0
  store ptr %532, ptr %7, align 8
  %533 = extractvalue { ptr, i32 } %531, 1
  store i32 %533, ptr %8, align 4
  call void @llvm.lifetime.end.p0(i64 136, ptr %34) #0
  call void @llvm.lifetime.end.p0(i64 4, ptr %33) #0
  br label %961

534:                                              ; preds = %421
  %535 = landingpad { ptr, i32 }
          cleanup
  %536 = extractvalue { ptr, i32 } %535, 0
  store ptr %536, ptr %7, align 8
  %537 = extractvalue { ptr, i32 } %535, 1
  store i32 %537, ptr %8, align 4
  br label %960

538:                                              ; preds = %956, %430, %428, %426, %424
  %539 = landingpad { ptr, i32 }
          cleanup
  %540 = extractvalue { ptr, i32 } %539, 0
  store ptr %540, ptr %7, align 8
  %541 = extractvalue { ptr, i32 } %539, 1
  store i32 %541, ptr %8, align 4
  br label %959

542:                                              ; preds = %439
  %543 = landingpad { ptr, i32 }
          cleanup
  %544 = extractvalue { ptr, i32 } %543, 0
  store ptr %544, ptr %7, align 8
  %545 = extractvalue { ptr, i32 } %543, 1
  store i32 %545, ptr %8, align 4
  br label %955

546:                                              ; preds = %440
  %547 = landingpad { ptr, i32 }
          cleanup
  %548 = extractvalue { ptr, i32 } %547, 0
  store ptr %548, ptr %7, align 8
  %549 = extractvalue { ptr, i32 } %547, 1
  store i32 %549, ptr %8, align 4
  br label %954

550:                                              ; preds = %447
  %551 = landingpad { ptr, i32 }
          cleanup
  %552 = extractvalue { ptr, i32 } %551, 0
  store ptr %552, ptr %7, align 8
  %553 = extractvalue { ptr, i32 } %551, 1
  store i32 %553, ptr %8, align 4
  br label %953

554:                                              ; preds = %448
  %555 = landingpad { ptr, i32 }
          cleanup
  %556 = extractvalue { ptr, i32 } %555, 0
  store ptr %556, ptr %7, align 8
  %557 = extractvalue { ptr, i32 } %555, 1
  store i32 %557, ptr %8, align 4
  br label %952

558:                                              ; preds = %451
  %559 = landingpad { ptr, i32 }
          cleanup
  %560 = extractvalue { ptr, i32 } %559, 0
  store ptr %560, ptr %7, align 8
  %561 = extractvalue { ptr, i32 } %559, 1
  store i32 %561, ptr %8, align 4
  br label %566

562:                                              ; preds = %452
  %563 = landingpad { ptr, i32 }
          cleanup
  %564 = extractvalue { ptr, i32 } %563, 0
  store ptr %564, ptr %7, align 8
  %565 = extractvalue { ptr, i32 } %563, 1
  store i32 %565, ptr %8, align 4
  call void @_ZN15TinyProfileZoneD2Ev(ptr noundef nonnull align 1 dereferenceable(1) %41) #0
  br label %566

566:                                              ; preds = %562, %558
  call void @llvm.lifetime.end.p0(i64 1, ptr %41) #0
  br label %952

567:                                              ; preds = %458
  %568 = landingpad { ptr, i32 }
          cleanup
  %569 = extractvalue { ptr, i32 } %568, 0
  store ptr %569, ptr %7, align 8
  %570 = extractvalue { ptr, i32 } %568, 1
  store i32 %570, ptr %8, align 4
  br label %951

571:                                              ; preds = %465
  %572 = landingpad { ptr, i32 }
          cleanup
  %573 = extractvalue { ptr, i32 } %572, 0
  store ptr %573, ptr %7, align 8
  %574 = extractvalue { ptr, i32 } %572, 1
  store i32 %574, ptr %8, align 4
  br label %950

575:                                              ; preds = %473
  %576 = landingpad { ptr, i32 }
          cleanup
  %577 = extractvalue { ptr, i32 } %576, 0
  store ptr %577, ptr %7, align 8
  %578 = extractvalue { ptr, i32 } %576, 1
  store i32 %578, ptr %8, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %44) #0
  br label %950

579:                                              ; preds = %493, %486, %477
  %580 = landingpad { ptr, i32 }
          cleanup
  %581 = extractvalue { ptr, i32 } %580, 0
  store ptr %581, ptr %7, align 8
  %582 = extractvalue { ptr, i32 } %580, 1
  store i32 %582, ptr %8, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %45) #0
  br label %950

583:                                              ; preds = %494
  %584 = landingpad { ptr, i32 }
          cleanup
  %585 = extractvalue { ptr, i32 } %584, 0
  store ptr %585, ptr %7, align 8
  %586 = extractvalue { ptr, i32 } %584, 1
  store i32 %586, ptr %8, align 4
  br label %949

587:                                              ; preds = %498
  %588 = landingpad { ptr, i32 }
          cleanup
  %589 = extractvalue { ptr, i32 } %588, 0
  store ptr %589, ptr %7, align 8
  %590 = extractvalue { ptr, i32 } %588, 1
  store i32 %590, ptr %8, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %48) #0
  br label %948

591:                                              ; preds = %514
  %592 = load i32, ptr %49, align 4, !tbaa !5
  %593 = sext i32 %592 to i64
  %594 = getelementptr inbounds [3 x i32], ptr @g_MousePressed, i64 0, i64 %593
  %595 = load i32, ptr %594, align 4, !tbaa !5
  %596 = icmp ne i32 %595, 0
  %597 = load ptr, ptr %32, align 8, !tbaa !9
  %598 = getelementptr inbounds %struct.ImGuiIO, ptr %597, i32 0, i32 43
  %599 = load i32, ptr %49, align 4, !tbaa !5
  %600 = sext i32 %599 to i64
  %601 = getelementptr inbounds [5 x i8], ptr %598, i64 0, i64 %600
  %602 = zext i1 %596 to i8
  store i8 %602, ptr %601, align 1, !tbaa !40
  br label %603

603:                                              ; preds = %591
  %604 = load i32, ptr %49, align 4, !tbaa !5
  %605 = add nsw i32 %604, 1
  store i32 %605, ptr %49, align 4, !tbaa !5
  br label %514, !llvm.loop !46

606:                                              ; preds = %517
  %607 = load float, ptr @g_MouseWheel, align 4, !tbaa !27
  %608 = load ptr, ptr %32, align 8, !tbaa !9
  %609 = getelementptr inbounds %struct.ImGuiIO, ptr %608, i32 0, i32 44
  store float %607, ptr %609, align 8, !tbaa !47
  invoke void @_ZN5ImGui8NewFrameEv()
          to label %610 unwind label %626

610:                                              ; preds = %606
  call void @llvm.lifetime.start.p0(i64 4, ptr %50) #0
  %611 = invoke noundef i32 @_Z11MyDockSpacev()
          to label %612 unwind label %630

612:                                              ; preds = %610
  store i32 %611, ptr %50, align 4, !tbaa !5
  invoke void @_ZN5ImGui14ShowDemoWindowEPb(ptr noundef null)
          to label %613 unwind label %630

613:                                              ; preds = %612
  call void @llvm.lifetime.start.p0(i64 8, ptr %51) #0
  invoke void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %51, float noundef 3.000000e+02, float noundef 3.000000e+02)
          to label %614 unwind label %634

614:                                              ; preds = %613
  invoke void @_ZN5ImGui17SetNextWindowSizeERK6ImVec2i(ptr noundef nonnull align 4 dereferenceable(8) %51, i32 noundef 0)
          to label %615 unwind label %634

615:                                              ; preds = %614
  call void @llvm.lifetime.end.p0(i64 8, ptr %51) #0
  call void @llvm.lifetime.start.p0(i64 8, ptr %52) #0
  store ptr @.str.27, ptr %52, align 8, !tbaa !9
  %616 = load ptr, ptr %52, align 8, !tbaa !9
  %617 = invoke noundef zeroext i1 @_ZN5ImGui5BeginEPKcPbi(ptr noundef %616, ptr noundef null, i32 noundef 0)
          to label %618 unwind label %638

618:                                              ; preds = %615
  br i1 %617, label %619, label %654

619:                                              ; preds = %618
  call void @llvm.lifetime.start.p0(i64 8, ptr %53) #0
  invoke void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %53, float noundef 0.000000e+00, float noundef 0.000000e+00)
          to label %620 unwind label %642

620:                                              ; preds = %619
  %621 = invoke noundef zeroext i1 @_ZN5ImGui6ButtonEPKcRK6ImVec2(ptr noundef @.str.28, ptr noundef nonnull align 4 dereferenceable(8) %53)
          to label %622 unwind label %642

622:                                              ; preds = %620
  call void @llvm.lifetime.end.p0(i64 8, ptr %53) #0
  br i1 %621, label %623, label %646

623:                                              ; preds = %622
  %624 = load i32, ptr @_ZZ4mainE7clicked, align 4, !tbaa !5
  %625 = add nsw i32 %624, 1
  store i32 %625, ptr @_ZZ4mainE7clicked, align 4, !tbaa !5
  br label %646

626:                                              ; preds = %606
  %627 = landingpad { ptr, i32 }
          cleanup
  %628 = extractvalue { ptr, i32 } %627, 0
  store ptr %628, ptr %7, align 8
  %629 = extractvalue { ptr, i32 } %627, 1
  store i32 %629, ptr %8, align 4
  br label %948

630:                                              ; preds = %612, %610
  %631 = landingpad { ptr, i32 }
          cleanup
  %632 = extractvalue { ptr, i32 } %631, 0
  store ptr %632, ptr %7, align 8
  %633 = extractvalue { ptr, i32 } %631, 1
  store i32 %633, ptr %8, align 4
  br label %947

634:                                              ; preds = %614, %613
  %635 = landingpad { ptr, i32 }
          cleanup
  %636 = extractvalue { ptr, i32 } %635, 0
  store ptr %636, ptr %7, align 8
  %637 = extractvalue { ptr, i32 } %635, 1
  store i32 %637, ptr %8, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %51) #0
  br label %947

638:                                              ; preds = %654, %651, %650, %615
  %639 = landingpad { ptr, i32 }
          cleanup
  %640 = extractvalue { ptr, i32 } %639, 0
  store ptr %640, ptr %7, align 8
  %641 = extractvalue { ptr, i32 } %639, 1
  store i32 %641, ptr %8, align 4
  br label %669

642:                                              ; preds = %620, %619
  %643 = landingpad { ptr, i32 }
          cleanup
  %644 = extractvalue { ptr, i32 } %643, 0
  store ptr %644, ptr %7, align 8
  %645 = extractvalue { ptr, i32 } %643, 1
  store i32 %645, ptr %8, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %53) #0
  br label %669

646:                                              ; preds = %623, %622
  %647 = load i32, ptr @_ZZ4mainE7clicked, align 4, !tbaa !5
  %648 = and i32 %647, 1
  %649 = icmp ne i32 %648, 0
  br i1 %649, label %650, label %653

650:                                              ; preds = %646
  invoke void @_ZN5ImGui8SameLineEff(float noundef 0.000000e+00, float noundef -1.000000e+00)
          to label %651 unwind label %638

651:                                              ; preds = %650
  invoke void (ptr, ...) @_ZN5ImGui4TextEPKcz(ptr noundef @.str.29)
          to label %652 unwind label %638

652:                                              ; preds = %651
  br label %653

653:                                              ; preds = %652, %646
  br label %654

654:                                              ; preds = %653, %618
  invoke void @_ZN5ImGui3EndEv()
          to label %655 unwind label %638

655:                                              ; preds = %654
  call void @llvm.lifetime.end.p0(i64 8, ptr %52) #0
  call void @llvm.lifetime.start.p0(i64 8, ptr %54) #0
  invoke void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %54, float noundef 3.000000e+02, float noundef 3.000000e+02)
          to label %656 unwind label %670

656:                                              ; preds = %655
  invoke void @_ZN5ImGui17SetNextWindowSizeERK6ImVec2i(ptr noundef nonnull align 4 dereferenceable(8) %54, i32 noundef 0)
          to label %657 unwind label %670

657:                                              ; preds = %656
  call void @llvm.lifetime.end.p0(i64 8, ptr %54) #0
  call void @llvm.lifetime.start.p0(i64 8, ptr %55) #0
  store ptr @.str.30, ptr %55, align 8, !tbaa !9
  %658 = load ptr, ptr %55, align 8, !tbaa !9
  %659 = invoke noundef zeroext i1 @_ZN5ImGui5BeginEPKcPbi(ptr noundef %658, ptr noundef null, i32 noundef 0)
          to label %660 unwind label %674

660:                                              ; preds = %657
  br i1 %659, label %661, label %713

661:                                              ; preds = %660
  call void @llvm.lifetime.start.p0(i64 4, ptr %56) #0
  %662 = load i32, ptr @_ZZ4mainE7clicked_0, align 4, !tbaa !5
  store i32 %662, ptr %56, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %57) #0
  invoke void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %57, float noundef 0.000000e+00, float noundef 0.000000e+00)
          to label %663 unwind label %678

663:                                              ; preds = %661
  %664 = invoke noundef zeroext i1 @_ZN5ImGui6ButtonEPKcRK6ImVec2(ptr noundef @.str.28, ptr noundef nonnull align 4 dereferenceable(8) %57)
          to label %665 unwind label %678

665:                                              ; preds = %663
  call void @llvm.lifetime.end.p0(i64 8, ptr %57) #0
  br i1 %664, label %666, label %682

666:                                              ; preds = %665
  %667 = load i32, ptr @_ZZ4mainE7clicked_0, align 4, !tbaa !5
  %668 = add nsw i32 %667, 1
  store i32 %668, ptr @_ZZ4mainE7clicked_0, align 4, !tbaa !5
  br label %682

669:                                              ; preds = %642, %638
  call void @llvm.lifetime.end.p0(i64 8, ptr %52) #0
  br label %947

670:                                              ; preds = %656, %655
  %671 = landingpad { ptr, i32 }
          cleanup
  %672 = extractvalue { ptr, i32 } %671, 0
  store ptr %672, ptr %7, align 8
  %673 = extractvalue { ptr, i32 } %671, 1
  store i32 %673, ptr %8, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %54) #0
  br label %947

674:                                              ; preds = %657
  %675 = landingpad { ptr, i32 }
          cleanup
  %676 = extractvalue { ptr, i32 } %675, 0
  store ptr %676, ptr %7, align 8
  %677 = extractvalue { ptr, i32 } %675, 1
  store i32 %677, ptr %8, align 4
  br label %918

678:                                              ; preds = %663, %661
  %679 = landingpad { ptr, i32 }
          cleanup
  %680 = extractvalue { ptr, i32 } %679, 0
  store ptr %680, ptr %7, align 8
  %681 = extractvalue { ptr, i32 } %679, 1
  store i32 %681, ptr %8, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %57) #0
  br label %712

682:                                              ; preds = %666, %665
  %683 = load i32, ptr %56, align 4, !tbaa !5
  %684 = load i32, ptr @_ZZ4mainE7clicked_0, align 4, !tbaa !5
  %685 = icmp ne i32 %683, %684
  br i1 %685, label %686, label %703

686:                                              ; preds = %682
  %687 = load i32, ptr @_ZZ4mainE7clicked_0, align 4, !tbaa !5
  %688 = and i32 %687, 1
  %689 = icmp ne i32 %688, 0
  br i1 %689, label %690, label %698

690:                                              ; preds = %686
  %691 = load i32, ptr @_ZZ4mainE7clicked_0, align 4, !tbaa !5
  %692 = invoke i32 (ptr, ...) @printf(ptr noundef @.str.31, i32 noundef %691)
          to label %693 unwind label %694

693:                                              ; preds = %690
  br label %702

694:                                              ; preds = %708, %707, %698, %690
  %695 = landingpad { ptr, i32 }
          cleanup
  %696 = extractvalue { ptr, i32 } %695, 0
  store ptr %696, ptr %7, align 8
  %697 = extractvalue { ptr, i32 } %695, 1
  store i32 %697, ptr %8, align 4
  br label %712

698:                                              ; preds = %686
  %699 = load i32, ptr @_ZZ4mainE7clicked_0, align 4, !tbaa !5
  %700 = invoke i32 (ptr, ...) @printf(ptr noundef @.str.32, i32 noundef %699)
          to label %701 unwind label %694

701:                                              ; preds = %698
  br label %702

702:                                              ; preds = %701, %693
  br label %703

703:                                              ; preds = %702, %682
  %704 = load i32, ptr @_ZZ4mainE7clicked_0, align 4, !tbaa !5
  %705 = and i32 %704, 1
  %706 = icmp ne i32 %705, 0
  br i1 %706, label %707, label %710

707:                                              ; preds = %703
  invoke void @_ZN5ImGui8SameLineEff(float noundef 0.000000e+00, float noundef -1.000000e+00)
          to label %708 unwind label %694

708:                                              ; preds = %707
  invoke void (ptr, ...) @_ZN5ImGui4TextEPKcz(ptr noundef @.str.29)
          to label %709 unwind label %694

709:                                              ; preds = %708
  br label %711

710:                                              ; preds = %703
  br label %711

711:                                              ; preds = %710, %709
  call void @llvm.lifetime.end.p0(i64 4, ptr %56) #0
  br label %713

712:                                              ; preds = %694, %678
  call void @llvm.lifetime.end.p0(i64 4, ptr %56) #0
  br label %918

713:                                              ; preds = %711, %660
  %714 = load atomic i8, ptr @_ZGVZ4mainE5items acquire, align 8
  %715 = icmp eq i8 %714, 0
  br i1 %715, label %716, label %721, !prof !48

716:                                              ; preds = %713
  %717 = call i32 @__cxa_guard_acquire(ptr @_ZGVZ4mainE5items) #0
  %718 = icmp ne i32 %717, 0
  br i1 %718, label %719, label %721

719:                                              ; preds = %716
  call void @_ZNSt6vectorIPKcSaIS1_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) @_ZZ4mainE5items) #0
  %720 = call i32 @__cxa_atexit(ptr @_ZNSt6vectorIPKcSaIS1_EED2Ev, ptr @_ZZ4mainE5items, ptr @__dso_handle) #0
  call void @__cxa_guard_release(ptr @_ZGVZ4mainE5items) #0
  br label %721

721:                                              ; preds = %719, %716, %713
  %722 = load atomic i8, ptr @_ZGVZ4mainE7samplesB5cxx11 acquire, align 8
  %723 = icmp eq i8 %722, 0
  br i1 %723, label %724, label %729, !prof !48

724:                                              ; preds = %721
  %725 = call i32 @__cxa_guard_acquire(ptr @_ZGVZ4mainE7samplesB5cxx11) #0
  %726 = icmp ne i32 %725, 0
  br i1 %726, label %727, label %729

727:                                              ; preds = %724
  call void @_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) @_ZZ4mainE7samplesB5cxx11) #0
  %728 = call i32 @__cxa_atexit(ptr @_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EED2Ev, ptr @_ZZ4mainE7samplesB5cxx11, ptr @__dso_handle) #0
  call void @__cxa_guard_release(ptr @_ZGVZ4mainE7samplesB5cxx11) #0
  br label %729

729:                                              ; preds = %727, %724, %721
  %730 = load atomic i8, ptr @_ZGVZ4mainE6Filter acquire, align 8
  %731 = icmp eq i8 %730, 0
  br i1 %731, label %732, label %738, !prof !48

732:                                              ; preds = %729
  %733 = call i32 @__cxa_guard_acquire(ptr @_ZGVZ4mainE6Filter) #0
  %734 = icmp ne i32 %733, 0
  br i1 %734, label %735, label %738

735:                                              ; preds = %732
  invoke void @_ZN15ImGuiTextFilterC1EPKc(ptr noundef nonnull align 8 dereferenceable(276) @_ZZ4mainE6Filter, ptr noundef @.str.15)
          to label %736 unwind label %757

736:                                              ; preds = %735
  %737 = call i32 @__cxa_atexit(ptr @_ZN15ImGuiTextFilterD2Ev, ptr @_ZZ4mainE6Filter, ptr @__dso_handle) #0
  call void @__cxa_guard_release(ptr @_ZGVZ4mainE6Filter) #0
  br label %738

738:                                              ; preds = %736, %732, %729
  call void @llvm.lifetime.start.p0(i64 8, ptr %58) #0
  %739 = invoke <2 x float> @_ZN5ImGui25GetWindowContentRegionMinEv()
          to label %740 unwind label %761

740:                                              ; preds = %738
  store <2 x float> %739, ptr %58, align 4
  call void @llvm.lifetime.start.p0(i64 8, ptr %59) #0
  %741 = invoke <2 x float> @_ZN5ImGui25GetWindowContentRegionMaxEv()
          to label %742 unwind label %765

742:                                              ; preds = %740
  store <2 x float> %741, ptr %59, align 4
  %743 = getelementptr inbounds %struct.ImVec2, ptr %59, i32 0, i32 0
  %744 = load float, ptr %743, align 4, !tbaa !49
  %745 = getelementptr inbounds %struct.ImVec2, ptr %58, i32 0, i32 0
  %746 = load float, ptr %745, align 4, !tbaa !49
  %747 = fsub float %744, %746
  %748 = fsub float %747, 1.000000e+01
  invoke void @_ZN5ImGui13PushItemWidthEf(float noundef %748)
          to label %749 unwind label %765

749:                                              ; preds = %742
  call void @llvm.lifetime.start.p0(i64 1, ptr %60) #0
  store i8 0, ptr %60, align 1, !tbaa !40
  %750 = invoke noundef zeroext i1 @_ZN15ImGuiTextFilter4DrawEPKcf(ptr noundef nonnull align 8 dereferenceable(276) @_ZZ4mainE6Filter, ptr noundef @.str.33, float noundef -1.000000e+02)
          to label %751 unwind label %769

751:                                              ; preds = %749
  br i1 %750, label %752, label %773

752:                                              ; preds = %751
  store i8 1, ptr %60, align 1, !tbaa !40
  %753 = load i32, ptr @_ZZ4mainE5count, align 4, !tbaa !5
  %754 = add nsw i32 %753, 1
  store i32 %754, ptr @_ZZ4mainE5count, align 4, !tbaa !5
  %755 = invoke i32 (ptr, ...) @printf(ptr noundef @.str.34, i32 noundef %753)
          to label %756 unwind label %769

756:                                              ; preds = %752
  br label %773

757:                                              ; preds = %735
  %758 = landingpad { ptr, i32 }
          cleanup
  %759 = extractvalue { ptr, i32 } %758, 0
  store ptr %759, ptr %7, align 8
  %760 = extractvalue { ptr, i32 } %758, 1
  store i32 %760, ptr %8, align 4
  call void @__cxa_guard_abort(ptr @_ZGVZ4mainE6Filter) #0
  br label %918

761:                                              ; preds = %738
  %762 = landingpad { ptr, i32 }
          cleanup
  %763 = extractvalue { ptr, i32 } %762, 0
  store ptr %763, ptr %7, align 8
  %764 = extractvalue { ptr, i32 } %762, 1
  store i32 %764, ptr %8, align 4
  br label %917

765:                                              ; preds = %742, %740
  %766 = landingpad { ptr, i32 }
          cleanup
  %767 = extractvalue { ptr, i32 } %766, 0
  store ptr %767, ptr %7, align 8
  %768 = extractvalue { ptr, i32 } %766, 1
  store i32 %768, ptr %8, align 4
  br label %916

769:                                              ; preds = %869, %864, %851, %792, %752, %749
  %770 = landingpad { ptr, i32 }
          cleanup
  %771 = extractvalue { ptr, i32 } %770, 0
  store ptr %771, ptr %7, align 8
  %772 = extractvalue { ptr, i32 } %770, 1
  store i32 %772, ptr %8, align 4
  br label %915

773:                                              ; preds = %756, %751
  call void @llvm.lifetime.start.p0(i64 8, ptr %61) #0
  invoke void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %61, float noundef 0.000000e+00, float noundef 0.000000e+00)
          to label %774 unwind label %785

774:                                              ; preds = %773
  %775 = invoke noundef zeroext i1 @_ZN5ImGui6ButtonEPKcRK6ImVec2(ptr noundef @.str.35, ptr noundef nonnull align 4 dereferenceable(8) %61)
          to label %776 unwind label %785

776:                                              ; preds = %774
  br i1 %775, label %780, label %777

777:                                              ; preds = %776
  %778 = load i32, ptr @_ZZ4mainE5count, align 4, !tbaa !5
  %779 = icmp eq i32 %778, 0
  br label %780

780:                                              ; preds = %777, %776
  %781 = phi i1 [ true, %776 ], [ %779, %777 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr %61) #0
  br i1 %781, label %782, label %789

782:                                              ; preds = %780
  %783 = load i32, ptr @_ZZ4mainE5count, align 4, !tbaa !5
  %784 = add nsw i32 %783, 1
  store i32 %784, ptr @_ZZ4mainE5count, align 4, !tbaa !5
  call void @_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE5clearEv(ptr noundef nonnull align 8 dereferenceable(24) @_ZZ4mainE7samplesB5cxx11) #0
  store i8 1, ptr %60, align 1, !tbaa !40
  br label %789

785:                                              ; preds = %774, %773
  %786 = landingpad { ptr, i32 }
          cleanup
  %787 = extractvalue { ptr, i32 } %786, 0
  store ptr %787, ptr %7, align 8
  %788 = extractvalue { ptr, i32 } %786, 1
  store i32 %788, ptr %8, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %61) #0
  br label %915

789:                                              ; preds = %782, %780
  %790 = load i8, ptr %60, align 1, !tbaa !40, !range !50, !noundef !51
  %791 = trunc i8 %790 to i1
  br i1 %791, label %792, label %851

792:                                              ; preds = %789
  call void @_ZNSt6vectorIPKcSaIS1_EE5clearEv(ptr noundef nonnull align 8 dereferenceable(24) @_ZZ4mainE5items) #0
  %793 = invoke noundef zeroext i1 @_ZNK15ImGuiTextFilter8IsActiveEv(ptr noundef nonnull align 8 dereferenceable(276) @_ZZ4mainE6Filter)
          to label %794 unwind label %769

794:                                              ; preds = %792
  br i1 %793, label %795, label %829

795:                                              ; preds = %794
  call void @llvm.lifetime.start.p0(i64 4, ptr %62) #0
  store i32 0, ptr %62, align 4, !tbaa !5
  br label %796

796:                                              ; preds = %824, %795
  %797 = load i32, ptr %62, align 4, !tbaa !5
  %798 = sext i32 %797 to i64
  %799 = call noundef i64 @_ZNKSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) @_ZZ4mainE7samplesB5cxx11) #0
  %800 = icmp ult i64 %798, %799
  br i1 %800, label %802, label %801

801:                                              ; preds = %796
  store i32 16, ptr %24, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %62) #0
  br label %828

802:                                              ; preds = %796
  %803 = load i32, ptr %62, align 4, !tbaa !5
  %804 = sext i32 %803 to i64
  %805 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) @_ZZ4mainE7samplesB5cxx11, i64 noundef %804) #0
  %806 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %805) #0
  %807 = invoke noundef zeroext i1 @_ZNK15ImGuiTextFilter10PassFilterEPKcS1_(ptr noundef nonnull align 8 dereferenceable(276) @_ZZ4mainE6Filter, ptr noundef %806, ptr noundef null)
          to label %808 unwind label %815

808:                                              ; preds = %802
  br i1 %807, label %809, label %823

809:                                              ; preds = %808
  call void @llvm.lifetime.start.p0(i64 8, ptr %63) #0
  %810 = load i32, ptr %62, align 4, !tbaa !5
  %811 = sext i32 %810 to i64
  %812 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) @_ZZ4mainE7samplesB5cxx11, i64 noundef %811) #0
  %813 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %812) #0
  store ptr %813, ptr %63, align 8, !tbaa !9
  invoke void @_ZNSt6vectorIPKcSaIS1_EE9push_backEOS1_(ptr noundef nonnull align 8 dereferenceable(24) @_ZZ4mainE5items, ptr noundef nonnull align 8 dereferenceable(8) %63)
          to label %814 unwind label %819

814:                                              ; preds = %809
  call void @llvm.lifetime.end.p0(i64 8, ptr %63) #0
  br label %823

815:                                              ; preds = %802
  %816 = landingpad { ptr, i32 }
          cleanup
  %817 = extractvalue { ptr, i32 } %816, 0
  store ptr %817, ptr %7, align 8
  %818 = extractvalue { ptr, i32 } %816, 1
  store i32 %818, ptr %8, align 4
  br label %827

819:                                              ; preds = %809
  %820 = landingpad { ptr, i32 }
          cleanup
  %821 = extractvalue { ptr, i32 } %820, 0
  store ptr %821, ptr %7, align 8
  %822 = extractvalue { ptr, i32 } %820, 1
  store i32 %822, ptr %8, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %63) #0
  br label %827

823:                                              ; preds = %814, %808
  br label %824

824:                                              ; preds = %823
  %825 = load i32, ptr %62, align 4, !tbaa !5
  %826 = add nsw i32 %825, 1
  store i32 %826, ptr %62, align 4, !tbaa !5
  br label %796, !llvm.loop !52

827:                                              ; preds = %819, %815
  call void @llvm.lifetime.end.p0(i64 4, ptr %62) #0
  br label %915

828:                                              ; preds = %801
  br label %850

829:                                              ; preds = %794
  call void @llvm.lifetime.start.p0(i64 4, ptr %64) #0
  store i32 0, ptr %64, align 4, !tbaa !5
  br label %830

830:                                              ; preds = %842, %829
  %831 = load i32, ptr %64, align 4, !tbaa !5
  %832 = sext i32 %831 to i64
  %833 = call noundef i64 @_ZNKSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) @_ZZ4mainE7samplesB5cxx11) #0
  %834 = icmp ult i64 %832, %833
  br i1 %834, label %836, label %835

835:                                              ; preds = %830
  store i32 19, ptr %24, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %64) #0
  br label %849

836:                                              ; preds = %830
  call void @llvm.lifetime.start.p0(i64 8, ptr %65) #0
  %837 = load i32, ptr %64, align 4, !tbaa !5
  %838 = sext i32 %837 to i64
  %839 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) @_ZZ4mainE7samplesB5cxx11, i64 noundef %838) #0
  %840 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %839) #0
  store ptr %840, ptr %65, align 8, !tbaa !9
  invoke void @_ZNSt6vectorIPKcSaIS1_EE9push_backEOS1_(ptr noundef nonnull align 8 dereferenceable(24) @_ZZ4mainE5items, ptr noundef nonnull align 8 dereferenceable(8) %65)
          to label %841 unwind label %845

841:                                              ; preds = %836
  call void @llvm.lifetime.end.p0(i64 8, ptr %65) #0
  br label %842

842:                                              ; preds = %841
  %843 = load i32, ptr %64, align 4, !tbaa !5
  %844 = add nsw i32 %843, 1
  store i32 %844, ptr %64, align 4, !tbaa !5
  br label %830, !llvm.loop !53

845:                                              ; preds = %836
  %846 = landingpad { ptr, i32 }
          cleanup
  %847 = extractvalue { ptr, i32 } %846, 0
  store ptr %847, ptr %7, align 8
  %848 = extractvalue { ptr, i32 } %846, 1
  store i32 %848, ptr %8, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %65) #0
  call void @llvm.lifetime.end.p0(i64 4, ptr %64) #0
  br label %915

849:                                              ; preds = %835
  br label %850

850:                                              ; preds = %849, %828
  br label %851

851:                                              ; preds = %850, %789
  %852 = getelementptr inbounds %struct.ImVec2, ptr %59, i32 0, i32 0
  %853 = load float, ptr %852, align 4, !tbaa !49
  %854 = getelementptr inbounds %struct.ImVec2, ptr %58, i32 0, i32 0
  %855 = load float, ptr %854, align 4, !tbaa !49
  %856 = fsub float %853, %855
  %857 = fsub float %856, 1.000000e+01
  invoke void @_ZN5ImGui13PushItemWidthEf(float noundef %857)
          to label %858 unwind label %769

858:                                              ; preds = %851
  %859 = call noundef i64 @_ZNKSt6vectorIPKcSaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) @_ZZ4mainE5items) #0
  %860 = icmp ne i64 %859, 0
  br i1 %860, label %861, label %863

861:                                              ; preds = %858
  %862 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIPKcSaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) @_ZZ4mainE5items, i64 noundef 0) #0
  br label %864

863:                                              ; preds = %858
  br label %864

864:                                              ; preds = %863, %861
  %865 = phi ptr [ %862, %861 ], [ null, %863 ]
  %866 = call noundef i64 @_ZNKSt6vectorIPKcSaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) @_ZZ4mainE5items) #0
  %867 = trunc i64 %866 to i32
  %868 = invoke noundef zeroext i1 @_ZN5ImGui7ListBoxEPKcPiPKS1_ii(ptr noundef @.str.15, ptr noundef @_ZZ4mainE12item_current, ptr noundef %865, i32 noundef %867, i32 noundef 25)
          to label %869 unwind label %769

869:                                              ; preds = %864
  invoke void @_ZN5ImGui3EndEv()
          to label %870 unwind label %769

870:                                              ; preds = %869
  call void @llvm.lifetime.end.p0(i64 1, ptr %60) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %59) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %58) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %55) #0
  call void @llvm.lifetime.start.p0(i64 1, ptr %66) #0
  store i8 1, ptr %66, align 1, !tbaa !40
  invoke void @_ZL12ShowMyAppLogPb(ptr noundef %66)
          to label %871 unwind label %919

871:                                              ; preds = %870
  %872 = load i8, ptr @_ZZ4mainE8firstRun, align 1, !tbaa !40, !range !50, !noundef !51
  %873 = trunc i8 %872 to i1
  br i1 %873, label %874, label %942

874:                                              ; preds = %871
  %875 = load i32, ptr %50, align 4, !tbaa !5
  invoke void @_ZN5ImGui21DockBuilderRemoveNodeEj(i32 noundef %875)
          to label %876 unwind label %919

876:                                              ; preds = %874
  call void @llvm.lifetime.start.p0(i64 4, ptr %67) #0
  store i32 0, ptr %67, align 4, !tbaa !5
  %877 = load i32, ptr %67, align 4, !tbaa !5
  %878 = or i32 %877, 8
  store i32 %878, ptr %67, align 4, !tbaa !5
  %879 = load i32, ptr %67, align 4, !tbaa !5
  %880 = or i32 %879, 1024
  store i32 %880, ptr %67, align 4, !tbaa !5
  %881 = load i32, ptr %67, align 4, !tbaa !5
  %882 = or i32 %881, 32
  store i32 %882, ptr %67, align 4, !tbaa !5
  %883 = load i32, ptr %50, align 4, !tbaa !5
  %884 = load i32, ptr %67, align 4, !tbaa !5
  %885 = invoke noundef i32 @_ZN5ImGui18DockBuilderAddNodeEji(i32 noundef %883, i32 noundef %884)
          to label %886 unwind label %923

886:                                              ; preds = %876
  %887 = load i32, ptr %50, align 4, !tbaa !5
  %888 = invoke noundef ptr @_ZN5ImGui15GetMainViewportEv()
          to label %889 unwind label %923

889:                                              ; preds = %886
  %890 = getelementptr inbounds %struct.ImGuiViewport, ptr %888, i32 0, i32 3
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %68, ptr align 8 %890, i64 8, i1 false), !tbaa.struct !43
  %891 = load <2 x float>, ptr %68, align 4
  invoke void @_ZN5ImGui22DockBuilderSetNodeSizeEj6ImVec2(i32 noundef %887, <2 x float> %891)
          to label %892 unwind label %923

892:                                              ; preds = %889
  call void @llvm.lifetime.start.p0(i64 4, ptr %69) #0
  %893 = load i32, ptr %50, align 4, !tbaa !5
  store i32 %893, ptr %69, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %70) #0
  %894 = load i32, ptr %69, align 4, !tbaa !5
  %895 = invoke noundef i32 @_ZN5ImGui20DockBuilderSplitNodeEjifPjS0_(i32 noundef %894, i32 noundef 0, float noundef 0x3FC99999A0000000, ptr noundef null, ptr noundef %69)
          to label %896 unwind label %927

896:                                              ; preds = %892
  store i32 %895, ptr %70, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %71) #0
  %897 = load i32, ptr %69, align 4, !tbaa !5
  %898 = invoke noundef i32 @_ZN5ImGui20DockBuilderSplitNodeEjifPjS0_(i32 noundef %897, i32 noundef 1, float noundef 0x3FC99999A0000000, ptr noundef null, ptr noundef %69)
          to label %899 unwind label %931

899:                                              ; preds = %896
  store i32 %898, ptr %71, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %72) #0
  %900 = load i32, ptr %69, align 4, !tbaa !5
  %901 = invoke noundef i32 @_ZN5ImGui20DockBuilderSplitNodeEjifPjS0_(i32 noundef %900, i32 noundef 3, float noundef 0x3FC99999A0000000, ptr noundef null, ptr noundef %69)
          to label %902 unwind label %935

902:                                              ; preds = %899
  store i32 %901, ptr %72, align 4, !tbaa !5
  %903 = load i32, ptr %71, align 4, !tbaa !5
  invoke void @_ZN5ImGui21DockBuilderDockWindowEPKcj(ptr noundef @.str.27, i32 noundef %903)
          to label %904 unwind label %935

904:                                              ; preds = %902
  %905 = load i32, ptr %71, align 4, !tbaa !5
  invoke void @_ZN5ImGui21DockBuilderDockWindowEPKcj(ptr noundef @.str.36, i32 noundef %905)
          to label %906 unwind label %935

906:                                              ; preds = %904
  %907 = load i32, ptr %70, align 4, !tbaa !5
  invoke void @_ZN5ImGui21DockBuilderDockWindowEPKcj(ptr noundef @.str.30, i32 noundef %907)
          to label %908 unwind label %935

908:                                              ; preds = %906
  %909 = load i32, ptr %72, align 4, !tbaa !5
  invoke void @_ZN5ImGui21DockBuilderDockWindowEPKcj(ptr noundef @.str.37, i32 noundef %909)
          to label %910 unwind label %935

910:                                              ; preds = %908
  %911 = load i32, ptr %72, align 4, !tbaa !5
  invoke void @_ZN5ImGui21DockBuilderDockWindowEPKcj(ptr noundef @.str.38, i32 noundef %911)
          to label %912 unwind label %935

912:                                              ; preds = %910
  %913 = load i32, ptr %50, align 4, !tbaa !5
  invoke void @_ZN5ImGui17DockBuilderFinishEj(i32 noundef %913)
          to label %914 unwind label %935

914:                                              ; preds = %912
  store i8 0, ptr @_ZZ4mainE8firstRun, align 1, !tbaa !40
  call void @llvm.lifetime.end.p0(i64 4, ptr %72) #0
  call void @llvm.lifetime.end.p0(i64 4, ptr %71) #0
  call void @llvm.lifetime.end.p0(i64 4, ptr %70) #0
  call void @llvm.lifetime.end.p0(i64 4, ptr %69) #0
  call void @llvm.lifetime.end.p0(i64 4, ptr %67) #0
  br label %942

915:                                              ; preds = %845, %827, %785, %769
  call void @llvm.lifetime.end.p0(i64 1, ptr %60) #0
  br label %916

916:                                              ; preds = %915, %765
  call void @llvm.lifetime.end.p0(i64 8, ptr %59) #0
  br label %917

917:                                              ; preds = %916, %761
  call void @llvm.lifetime.end.p0(i64 8, ptr %58) #0
  br label %918

918:                                              ; preds = %917, %757, %712, %674
  call void @llvm.lifetime.end.p0(i64 8, ptr %55) #0
  br label %947

919:                                              ; preds = %944, %943, %942, %874, %870
  %920 = landingpad { ptr, i32 }
          cleanup
  %921 = extractvalue { ptr, i32 } %920, 0
  store ptr %921, ptr %7, align 8
  %922 = extractvalue { ptr, i32 } %920, 1
  store i32 %922, ptr %8, align 4
  br label %946

923:                                              ; preds = %889, %886, %876
  %924 = landingpad { ptr, i32 }
          cleanup
  %925 = extractvalue { ptr, i32 } %924, 0
  store ptr %925, ptr %7, align 8
  %926 = extractvalue { ptr, i32 } %924, 1
  store i32 %926, ptr %8, align 4
  br label %941

927:                                              ; preds = %892
  %928 = landingpad { ptr, i32 }
          cleanup
  %929 = extractvalue { ptr, i32 } %928, 0
  store ptr %929, ptr %7, align 8
  %930 = extractvalue { ptr, i32 } %928, 1
  store i32 %930, ptr %8, align 4
  br label %940

931:                                              ; preds = %896
  %932 = landingpad { ptr, i32 }
          cleanup
  %933 = extractvalue { ptr, i32 } %932, 0
  store ptr %933, ptr %7, align 8
  %934 = extractvalue { ptr, i32 } %932, 1
  store i32 %934, ptr %8, align 4
  br label %939

935:                                              ; preds = %912, %910, %908, %906, %904, %902, %899
  %936 = landingpad { ptr, i32 }
          cleanup
  %937 = extractvalue { ptr, i32 } %936, 0
  store ptr %937, ptr %7, align 8
  %938 = extractvalue { ptr, i32 } %936, 1
  store i32 %938, ptr %8, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %72) #0
  br label %939

939:                                              ; preds = %935, %931
  call void @llvm.lifetime.end.p0(i64 4, ptr %71) #0
  br label %940

940:                                              ; preds = %939, %927
  call void @llvm.lifetime.end.p0(i64 4, ptr %70) #0
  call void @llvm.lifetime.end.p0(i64 4, ptr %69) #0
  br label %941

941:                                              ; preds = %940, %923
  call void @llvm.lifetime.end.p0(i64 4, ptr %67) #0
  br label %946

942:                                              ; preds = %914, %871
  invoke void @_ZN5ImGui6RenderEv()
          to label %943 unwind label %919

943:                                              ; preds = %942
  invoke void @_ZN5ImGui8EndFrameEv()
          to label %944 unwind label %919

944:                                              ; preds = %943
  invoke void @_ZN14TinyOpenGL3App11swap_bufferEv(ptr noundef nonnull align 8 dereferenceable(104) %6)
          to label %945 unwind label %919

945:                                              ; preds = %944
  call void @llvm.lifetime.end.p0(i64 1, ptr %66) #0
  call void @llvm.lifetime.end.p0(i64 4, ptr %50) #0
  call void @llvm.lifetime.end.p0(i64 4, ptr %47) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %46) #0
  call void @llvm.lifetime.end.p0(i64 4, ptr %43) #0
  call void @llvm.lifetime.end.p0(i64 4, ptr %42) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %40) #0
  call void @llvm.lifetime.end.p0(i64 32, ptr %39) #0
  call void @llvm.lifetime.end.p0(i64 4, ptr %38) #0
  call void @_ZN15TinyProfileZoneD2Ev(ptr noundef nonnull align 1 dereferenceable(1) %37) #0
  call void @llvm.lifetime.end.p0(i64 1, ptr %37) #0
  br label %430, !llvm.loop !54

946:                                              ; preds = %941, %919
  call void @llvm.lifetime.end.p0(i64 1, ptr %66) #0
  br label %947

947:                                              ; preds = %946, %918, %670, %669, %634, %630
  call void @llvm.lifetime.end.p0(i64 4, ptr %50) #0
  br label %948

948:                                              ; preds = %947, %626, %587
  call void @llvm.lifetime.end.p0(i64 4, ptr %47) #0
  br label %949

949:                                              ; preds = %948, %583
  call void @llvm.lifetime.end.p0(i64 8, ptr %46) #0
  br label %950

950:                                              ; preds = %949, %579, %575, %571
  call void @llvm.lifetime.end.p0(i64 4, ptr %43) #0
  br label %951

951:                                              ; preds = %950, %567
  call void @llvm.lifetime.end.p0(i64 4, ptr %42) #0
  br label %952

952:                                              ; preds = %951, %566, %554
  call void @llvm.lifetime.end.p0(i64 8, ptr %40) #0
  br label %953

953:                                              ; preds = %952, %550
  call void @llvm.lifetime.end.p0(i64 32, ptr %39) #0
  br label %954

954:                                              ; preds = %953, %546
  call void @llvm.lifetime.end.p0(i64 4, ptr %38) #0
  call void @_ZN15TinyProfileZoneD2Ev(ptr noundef nonnull align 1 dereferenceable(1) %37) #0
  br label %955

955:                                              ; preds = %954, %542
  call void @llvm.lifetime.end.p0(i64 1, ptr %37) #0
  br label %959

956:                                              ; preds = %437
  invoke void @_Z42TinyChromeUtilsStopTimingsAndWriteJsonFilePKc(ptr noundef @.str.39)
          to label %957 unwind label %538

957:                                              ; preds = %956
  store i32 0, ptr %3, align 4
  store i32 1, ptr %24, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %36) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %35) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %32) #0
  call void @llvm.lifetime.end.p0(i64 4, ptr %28) #0
  call void @_ZNSt6vectorIhSaIhEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %21) #0
  call void @llvm.lifetime.end.p0(i64 24, ptr %21) #0
  call void @llvm.lifetime.end.p0(i64 4, ptr %20) #0
  call void @llvm.lifetime.end.p0(i64 4, ptr %19) #0
  call void @llvm.lifetime.end.p0(i64 4, ptr %18) #0
  call void @llvm.lifetime.end.p0(i64 4, ptr %17) #0
  call void @llvm.lifetime.end.p0(i64 4, ptr %16) #0
  call void @llvm.lifetime.end.p0(i64 4, ptr %15) #0
  call void @llvm.lifetime.end.p0(i64 16, ptr %14) #0
  call void @llvm.lifetime.end.p0(i64 16, ptr %13) #0
  call void @llvm.lifetime.end.p0(i64 16, ptr %12) #0
  call void @llvm.lifetime.end.p0(i64 16, ptr %11) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %10) #0
  call void @_ZN9TinyClockD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %9) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %9) #0
  call void @_ZN14TinyOpenGL3AppD1Ev(ptr noundef nonnull align 8 dereferenceable(104) %6) #0
  call void @llvm.lifetime.end.p0(i64 104, ptr %6) #0
  %958 = load i32, ptr %3, align 4
  ret i32 %958

959:                                              ; preds = %955, %538
  call void @llvm.lifetime.end.p0(i64 1, ptr %36) #0
  br label %960

960:                                              ; preds = %959, %534
  call void @llvm.lifetime.end.p0(i64 8, ptr %35) #0
  br label %961

961:                                              ; preds = %960, %530, %526
  call void @llvm.lifetime.end.p0(i64 8, ptr %32) #0
  br label %962

962:                                              ; preds = %961, %522, %518
  call void @llvm.lifetime.end.p0(i64 4, ptr %28) #0
  br label %963

963:                                              ; preds = %962, %207
  call void @_ZNSt6vectorIhSaIhEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %21) #0
  call void @llvm.lifetime.end.p0(i64 24, ptr %21) #0
  call void @llvm.lifetime.end.p0(i64 4, ptr %20) #0
  call void @llvm.lifetime.end.p0(i64 4, ptr %19) #0
  call void @llvm.lifetime.end.p0(i64 4, ptr %18) #0
  call void @llvm.lifetime.end.p0(i64 4, ptr %17) #0
  call void @llvm.lifetime.end.p0(i64 4, ptr %16) #0
  call void @llvm.lifetime.end.p0(i64 4, ptr %15) #0
  br label %964

964:                                              ; preds = %963, %203
  call void @llvm.lifetime.end.p0(i64 16, ptr %14) #0
  br label %965

965:                                              ; preds = %964, %199
  call void @llvm.lifetime.end.p0(i64 16, ptr %13) #0
  br label %966

966:                                              ; preds = %965, %195
  call void @llvm.lifetime.end.p0(i64 16, ptr %12) #0
  br label %967

967:                                              ; preds = %966, %191
  call void @llvm.lifetime.end.p0(i64 16, ptr %11) #0
  br label %968

968:                                              ; preds = %967, %187
  call void @llvm.lifetime.end.p0(i64 8, ptr %10) #0
  br label %969

969:                                              ; preds = %968, %183
  call void @_ZN9TinyClockD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %9) #0
  br label %970

970:                                              ; preds = %969, %179
  call void @llvm.lifetime.end.p0(i64 8, ptr %9) #0
  br label %971

971:                                              ; preds = %970, %175
  call void @_ZN14TinyOpenGL3AppD1Ev(ptr noundef nonnull align 8 dereferenceable(104) %6) #0
  call void @llvm.lifetime.end.p0(i64 104, ptr %6) #0
  br label %972

972:                                              ; preds = %971
  %973 = load ptr, ptr %7, align 8
  %974 = load i32, ptr %8, align 4
  %975 = insertvalue { ptr, i32 } poison, ptr %973, 0
  %976 = insertvalue { ptr, i32 } %975, i32 %974, 1
  resume { ptr, i32 } %976
}

declare void @_ZN14TinyOpenGL3AppC1EPKciibiiii(ptr noundef nonnull align 8 dereferenceable(104), ptr noundef, i32 noundef, i32 noundef, i1 noundef zeroext, i32 noundef, i32 noundef, i32 noundef, i32 noundef) unnamed_addr #2

declare void @_Z27TinyChromeUtilsStartTimingsv() #2

declare void @_ZN9TinyClockC1Ev(ptr noundef nonnull align 8 dereferenceable(8)) unnamed_addr #2

declare void @_ZN9TinyClock5resetEv(ptr noundef nonnull align 8 dereferenceable(8)) #2

declare noundef double @_ZN9TinyClock16get_time_secondsEv(ptr noundef nonnull align 8 dereferenceable(8)) #2

declare void @_ZN14TinyOpenGL3App11set_up_axisEi(ptr noundef nonnull align 8 dereferenceable(104), i32 noundef) unnamed_addr #2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZN4TINY11TinyVector3IfNS_10FloatUtilsEEC2Efff(ptr noundef nonnull align 4 dereferenceable(16), float noundef, float noundef, float noundef) unnamed_addr #6 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN4TINY14TinyQuaternionIfNS_10FloatUtilsEEC2Effff(ptr noundef nonnull align 4 dereferenceable(16), float noundef, float noundef, float noundef, float noundef) unnamed_addr #1 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZNSt6vectorIhSaIhEEC2Ev(ptr noundef nonnull align 8 dereferenceable(24)) unnamed_addr #6 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNSt6vectorIhSaIhEE6resizeEm(ptr noundef nonnull align 8 dereferenceable(24), i64 noundef) #1 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt6vectorIhSaIhEEixEm(ptr noundef nonnull align 8 dereferenceable(24), i64 noundef) #6 align 2

declare noundef i32 @_ZN14TinyOpenGL3App19register_cube_shapeEfffif(ptr noundef nonnull align 8 dereferenceable(104), float noundef, float noundef, float noundef, i32 noundef, float noundef) unnamed_addr #2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZN4TINY11TinyVector3IfNS_10FloatUtilsEE8setValueERKfS4_S4_(ptr noundef nonnull align 4 dereferenceable(16), ptr noundef nonnull align 4 dereferenceable(4), ptr noundef nonnull align 4 dereferenceable(4), ptr noundef nonnull align 4 dereferenceable(4)) #6 align 2

declare noundef i32 @_ZN14TinyOpenGL3App35register_graphics_unit_sphere_shapeE23EnumSphereLevelOfDetaili(ptr noundef nonnull align 8 dereferenceable(104), i32 noundef, i32 noundef) unnamed_addr #2

declare void @_ZN24TinyGLInstancingRenderer16write_transformsEv(ptr noundef nonnull align 8 dereferenceable(60)) #2

declare noundef zeroext i1 @_ZN5ImGui30DebugCheckVersionAndDataLayoutEPKcmmmmmm(ptr noundef, i64 noundef, i64 noundef, i64 noundef, i64 noundef, i64 noundef, i64 noundef) #2

declare noundef ptr @_ZN5ImGui13CreateContextEP11ImFontAtlas(ptr noundef) #2

declare void @_ZN5ImGui15StyleColorsDarkEP10ImGuiStyle(ptr noundef) #2

declare void @_ZN12ImFontConfigC1Ev(ptr noundef nonnull align 8 dereferenceable(136)) unnamed_addr #2

declare noundef ptr @_ZN11ImFontAtlas14AddFontDefaultEPK12ImFontConfig(ptr noundef nonnull align 8 dereferenceable(1144), ptr noundef) #2

declare noundef nonnull align 4 dereferenceable(988) ptr @_ZN5ImGui8GetStyleEv() #2

declare void @_ZN10ImGuiStyle13ScaleAllSizesEf(ptr noundef nonnull align 4 dereferenceable(988), float noundef) #2

declare noundef zeroext i1 @_Z22ImGui_ImplOpenGL3_InitPKc(ptr noundef) #2

declare noundef zeroext i1 @_Z37ImGui_ImplOpenGL3_CreateDeviceObjectsv() #2

declare void @_ZN7imnodes10InitializeEv() #2

declare void @_ZN7imnodes15StyleColorsDarkEv() #2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN15TinyProfileZoneC2EPKc(ptr noundef nonnull align 1 dereferenceable(1), ptr noundef) unnamed_addr #1 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZN12DrawGridDataC2Ei(ptr noundef nonnull align 4 dereferenceable(32), i32 noundef) unnamed_addr #6 align 2

declare void @_ZN14TinyOpenGL3App12draw_text_3dEPKcffff(ptr noundef nonnull align 8 dereferenceable(104), ptr noundef, float noundef, float noundef, float noundef, float noundef) unnamed_addr #2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZN15TinyProfileZoneD2Ev(ptr noundef nonnull align 1 dereferenceable(1)) unnamed_addr #6 align 2

declare void @_Z32ImGui_ImplOpenGL3_RenderDrawDataP10ImDrawData(ptr noundef) #2

declare void @_ZN5ImGui8NewFrameEv() #2

declare void @_ZN5ImGui14ShowDemoWindowEPb(ptr noundef) #2

declare noundef zeroext i1 @_ZN5ImGui6ButtonEPKcRK6ImVec2(ptr noundef, ptr noundef nonnull align 4 dereferenceable(8)) #2

declare void @_ZN5ImGui8SameLineEff(float noundef, float noundef) #2

declare void @_ZN5ImGui4TextEPKcz(ptr noundef, ...) #2

; Function Attrs: nounwind
declare i32 @__cxa_guard_acquire(ptr) #0

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZNSt6vectorIPKcSaIS1_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24)) unnamed_addr #6 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZNSt6vectorIPKcSaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24)) unnamed_addr #6 align 2

; Function Attrs: nounwind
declare void @__cxa_guard_release(ptr) #0

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24)) unnamed_addr #6 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24)) unnamed_addr #6 align 2

declare void @_ZN15ImGuiTextFilterC1EPKc(ptr noundef nonnull align 8 dereferenceable(276), ptr noundef) unnamed_addr #2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local void @_ZN15ImGuiTextFilterD2Ev(ptr noundef nonnull align 8 dereferenceable(276)) unnamed_addr #8 align 2

; Function Attrs: nounwind
declare void @__cxa_guard_abort(ptr) #0

declare <2 x float> @_ZN5ImGui25GetWindowContentRegionMinEv() #2

declare <2 x float> @_ZN5ImGui25GetWindowContentRegionMaxEv() #2

declare void @_ZN5ImGui13PushItemWidthEf(float noundef) #2

declare noundef zeroext i1 @_ZN15ImGuiTextFilter4DrawEPKcf(ptr noundef nonnull align 8 dereferenceable(276), ptr noundef, float noundef) #2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE5clearEv(ptr noundef nonnull align 8 dereferenceable(24)) #6 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZNSt6vectorIPKcSaIS1_EE5clearEv(ptr noundef nonnull align 8 dereferenceable(24)) #6 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef zeroext i1 @_ZNK15ImGuiTextFilter8IsActiveEv(ptr noundef nonnull align 8 dereferenceable(276)) #1 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef i64 @_ZNKSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24)) #6 align 2

declare noundef zeroext i1 @_ZNK15ImGuiTextFilter10PassFilterEPKcS1_(ptr noundef nonnull align 8 dereferenceable(276), ptr noundef, ptr noundef) #2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EEixEm(ptr noundef nonnull align 8 dereferenceable(24), i64 noundef) #6 align 2

; Function Attrs: mustprogress nounwind uwtable
declare noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32)) #6 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNSt6vectorIPKcSaIS1_EE9push_backEOS1_(ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(8)) #1 align 2

declare noundef zeroext i1 @_ZN5ImGui7ListBoxEPKcPiPKS1_ii(ptr noundef, ptr noundef, ptr noundef, i32 noundef, i32 noundef) #2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef i64 @_ZNKSt6vectorIPKcSaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24)) #6 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIPKcSaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24), i64 noundef) #6 align 2

; Function Attrs: mustprogress uwtable
declare hidden void @_ZL12ShowMyAppLogPb(ptr noundef) #1

declare void @_ZN5ImGui21DockBuilderRemoveNodeEj(i32 noundef) #2

declare noundef i32 @_ZN5ImGui18DockBuilderAddNodeEji(i32 noundef, i32 noundef) #2

declare void @_ZN5ImGui22DockBuilderSetNodeSizeEj6ImVec2(i32 noundef, <2 x float>) #2

declare noundef i32 @_ZN5ImGui20DockBuilderSplitNodeEjifPjS0_(i32 noundef, i32 noundef, float noundef, ptr noundef, ptr noundef) #2

declare void @_ZN5ImGui21DockBuilderDockWindowEPKcj(ptr noundef, i32 noundef) #2

declare void @_ZN5ImGui17DockBuilderFinishEj(i32 noundef) #2

declare void @_ZN5ImGui6RenderEv() #2

declare void @_ZN5ImGui8EndFrameEv() #2

declare void @_ZN14TinyOpenGL3App11swap_bufferEv(ptr noundef nonnull align 8 dereferenceable(104)) unnamed_addr #2

declare void @_Z42TinyChromeUtilsStopTimingsAndWriteJsonFilePKc(ptr noundef) #2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZNSt6vectorIhSaIhEED2Ev(ptr noundef nonnull align 8 dereferenceable(24)) unnamed_addr #6 align 2

; Function Attrs: nounwind
declare void @_ZN9TinyClockD1Ev(ptr noundef nonnull align 8 dereferenceable(8)) unnamed_addr #9

; Function Attrs: nounwind
declare void @_ZN14TinyOpenGL3AppD1Ev(ptr noundef nonnull align 8 dereferenceable(104)) unnamed_addr #9

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"int", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"any pointer", !7, i64 0}
!11 = !{!12, !10, i64 16}
!12 = !{!"_ZTS21TinyCommonGraphicsApp", !10, i64 8, !10, i64 16, !10, i64 24, !10, i64 32, !13, i64 40, !13, i64 41, !13, i64 42, !14, i64 44, !14, i64 48, !14, i64 52, !14, i64 56, !13, i64 60, !7, i64 64}
!13 = !{!"bool", !7, i64 0}
!14 = !{!"float", !7, i64 0}
!15 = !{!16, !16, i64 0}
!16 = !{!"vtable pointer", !8, i64 0}
!17 = !{!18, !18, i64 0}
!18 = !{!"double", !7, i64 0}
!19 = !{!12, !10, i64 8}
!20 = !{!7, !7, i64 0}
!21 = distinct !{!21, !22}
!22 = !{!"llvm.loop.mustprogress"}
!23 = distinct !{!23, !22}
!24 = distinct !{!24, !22}
!25 = !{!26, !10, i64 96}
!26 = !{!"_ZTS14TinyOpenGL3App", !12, i64 0, !10, i64 80, !10, i64 88, !10, i64 96}
!27 = !{!14, !14, i64 0}
!28 = !{!29, !6, i64 0}
!29 = !{!"_ZTS7ImGuiIO", !6, i64 0, !6, i64 4, !30, i64 8, !14, i64 16, !14, i64 20, !10, i64 24, !10, i64 32, !14, i64 40, !14, i64 44, !14, i64 48, !7, i64 52, !14, i64 140, !14, i64 144, !10, i64 152, !10, i64 160, !14, i64 168, !13, i64 172, !10, i64 176, !30, i64 184, !13, i64 192, !13, i64 193, !13, i64 194, !13, i64 195, !13, i64 196, !13, i64 197, !13, i64 198, !13, i64 199, !13, i64 200, !13, i64 201, !13, i64 202, !13, i64 203, !13, i64 204, !14, i64 208, !10, i64 216, !10, i64 224, !10, i64 232, !10, i64 240, !10, i64 248, !10, i64 256, !10, i64 264, !10, i64 272, !10, i64 280, !30, i64 288, !7, i64 296, !14, i64 304, !14, i64 308, !6, i64 312, !13, i64 316, !13, i64 317, !13, i64 318, !13, i64 319, !7, i64 320, !7, i64 832, !13, i64 916, !13, i64 917, !13, i64 918, !13, i64 919, !13, i64 920, !13, i64 921, !13, i64 922, !14, i64 924, !6, i64 928, !6, i64 932, !6, i64 936, !6, i64 940, !6, i64 944, !30, i64 948, !6, i64 956, !30, i64 960, !7, i64 968, !7, i64 1008, !7, i64 1048, !7, i64 1053, !7, i64 1058, !7, i64 1063, !7, i64 1068, !7, i64 1076, !7, i64 1096, !7, i64 1116, !7, i64 1156, !7, i64 1176, !7, i64 3224, !7, i64 5272, !7, i64 5356, !14, i64 5440, !31, i64 5444, !32, i64 5448}
!30 = !{!"_ZTS6ImVec2", !14, i64 0, !14, i64 4}
!31 = !{!"short", !7, i64 0}
!32 = !{!"_ZTS8ImVectorItE", !6, i64 0, !6, i64 4, !10, i64 8}
!33 = !{!34, !14, i64 20}
!34 = !{!"_ZTS12ImFontConfig", !10, i64 0, !6, i64 8, !13, i64 12, !6, i64 16, !14, i64 20, !6, i64 24, !6, i64 28, !13, i64 32, !30, i64 36, !30, i64 44, !10, i64 56, !14, i64 64, !14, i64 68, !13, i64 72, !6, i64 76, !14, i64 80, !31, i64 84, !7, i64 86, !10, i64 128}
!35 = !{!29, !10, i64 160}
!36 = !{!37, !14, i64 68}
!37 = !{!"_ZTS6ImFont", !38, i64 0, !14, i64 16, !14, i64 20, !32, i64 24, !39, i64 40, !10, i64 56, !30, i64 64, !10, i64 72, !10, i64 80, !31, i64 88, !31, i64 90, !31, i64 92, !13, i64 94, !14, i64 96, !14, i64 100, !14, i64 104, !6, i64 108, !7, i64 112}
!38 = !{!"_ZTS8ImVectorIfE", !6, i64 0, !6, i64 4, !10, i64 8}
!39 = !{!"_ZTS8ImVectorI11ImFontGlyphE", !6, i64 0, !6, i64 4, !10, i64 8}
!40 = !{!13, !13, i64 0}
!41 = !{!42, !6, i64 8}
!42 = !{!"_ZTS12DrawGridData", !6, i64 0, !14, i64 4, !6, i64 8, !13, i64 12, !7, i64 16}
!43 = !{i64 0, i64 4, !27, i64 4, i64 4, !27}
!44 = !{!29, !14, i64 16}
!45 = !{!29, !10, i64 280}
!46 = distinct !{!46, !22}
!47 = !{!29, !14, i64 304}
!48 = !{!"branch_weights", i32 1, i32 1048575}
!49 = !{!30, !14, i64 0}
!50 = !{i8 0, i8 2}
!51 = !{}
!52 = distinct !{!52, !22}
!53 = distinct !{!53, !22}
!54 = distinct !{!54, !22}


; 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"

%"class.std::vector.26" = type { %"struct.std::_Vector_base.27" }
%"struct.std::_Vector_base.27" = type { %"struct.std::_Vector_base<const char *, std::allocator<const char *>>::_Vector_impl" }
%"struct.std::_Vector_base<const char *, std::allocator<const char *>>::_Vector_impl" = type { %"struct.std::_Vector_base<const char *, std::allocator<const char *>>::_Vector_impl_data" }
%"struct.std::_Vector_base<const char *, std::allocator<const char *>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.31" = type { %"struct.std::_Vector_base.32" }
%"struct.std::_Vector_base.32" = type { %"struct.std::_Vector_base<std::__cxx11::basic_string<char>, std::allocator<std::__cxx11::basic_string<char>>>::_Vector_impl" }
%"struct.std::_Vector_base<std::__cxx11::basic_string<char>, std::allocator<std::__cxx11::basic_string<char>>>::_Vector_impl" = type { %"struct.std::_Vector_base<std::__cxx11::basic_string<char>, std::allocator<std::__cxx11::basic_string<char>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<std::__cxx11::basic_string<char>, std::allocator<std::__cxx11::basic_string<char>>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%struct.ImGuiTextFilter = type <{ [256 x i8], %struct.ImVector.36, i32, [4 x i8] }>
%struct.ImVector.36 = type { i32, i32, ptr }
%struct.TinyOpenGL3App = type { %struct.TinyCommonGraphicsApp.base, ptr, ptr, ptr }
%struct.TinyCommonGraphicsApp.base = type <{ ptr, ptr, ptr, ptr, ptr, i8, i8, i8, i8, float, float, float, float, i8, [3 x i8], [3 x float] }>
%class.TinyClock = type { ptr }
%"struct.TINY::TinyVector3" = type { float, float, float, i32 }
%"struct.TINY::TinyQuaternion" = type { float, float, float, float }
%"class.std::vector.16" = type { %"struct.std::_Vector_base.17" }
%"struct.std::_Vector_base.17" = type { %"struct.std::_Vector_base<unsigned char, std::allocator<unsigned char>>::_Vector_impl" }
%"struct.std::_Vector_base<unsigned char, std::allocator<unsigned char>>::_Vector_impl" = type { %"struct.std::_Vector_base<unsigned char, std::allocator<unsigned char>>::_Vector_impl_data" }
%"struct.std::_Vector_base<unsigned char, std::allocator<unsigned char>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%struct.ImFontConfig = type { ptr, i32, i8, i32, float, i32, i32, i8, %struct.ImVec2, %struct.ImVec2, ptr, float, float, i8, i32, float, i16, [40 x i8], ptr }
%struct.ImVec2 = type { float, float }
%class.TinyProfileZone = type { i8 }
%struct.DrawGridData = type { i32, float, i32, i8, [4 x float] }

@__dso_handle = external hidden global i8
@default_keyboard_callback = external dso_local local_unnamed_addr global ptr, align 8
@default_mouse_move_callback = external dso_local local_unnamed_addr global ptr, align 8
@default_mouse_button_callback = external dso_local local_unnamed_addr global ptr, align 8
@g_MouseWheel = external dso_local local_unnamed_addr global float, align 4
@gMouseX = external dso_local local_unnamed_addr global float, align 4
@gMouseY = external dso_local local_unnamed_addr global float, align 4
@g_MousePressed = external dso_local local_unnamed_addr global [3 x i32], align 4
@.str.15 = external hidden unnamed_addr constant [1 x i8], align 1
@.str.21 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.22 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.23 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.24 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.25 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.26 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.27 = external hidden unnamed_addr constant [3 x i8], align 1
@_ZZ4mainE7clicked = external hidden local_unnamed_addr global i32, align 4
@.str.28 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.29 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.30 = external hidden unnamed_addr constant [4 x i8], align 1
@_ZZ4mainE7clicked_0 = external hidden local_unnamed_addr global i32, align 4
@.str.31 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.32 = external hidden unnamed_addr constant [9 x i8], align 1
@_ZZ4mainE5items = external hidden global %"class.std::vector.26", align 8
@_ZGVZ4mainE5items = external hidden global i64, align 8
@_ZZ4mainE7samplesB5cxx11 = external hidden global %"class.std::vector.31", align 8
@_ZGVZ4mainE7samplesB5cxx11 = external hidden global i64, align 8
@_ZZ4mainE6Filter = external hidden global %struct.ImGuiTextFilter, align 8
@_ZGVZ4mainE6Filter = external hidden global i64, align 8
@_ZZ4mainE5count = external hidden local_unnamed_addr global i32, align 4
@.str.33 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.34 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.35 = external hidden unnamed_addr constant [8 x i8], align 1
@_ZZ4mainE12item_current = external hidden global i32, align 4
@_ZZ4mainE8firstRun = external hidden local_unnamed_addr global i8, align 1
@.str.36 = external hidden unnamed_addr constant [16 x i8], align 1
@.str.37 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.38 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.39 = external hidden unnamed_addr constant [13 x i8], align 1

; Function Attrs: nofree nounwind
declare i32 @__cxa_atexit(ptr, ptr, ptr) local_unnamed_addr #0

; Function Attrs: mustprogress uwtable
declare dso_local void @_Z19MyMouseMoveCallbackff(float noundef, float noundef) #1

; Function Attrs: mustprogress uwtable
declare dso_local void @_Z21MyMouseButtonCallbackiiff(i32 noundef, i32 noundef, float noundef, float noundef) #1

declare noundef nonnull align 8 dereferenceable(5464) ptr @_ZN5ImGui5GetIOEv() local_unnamed_addr #2

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

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

declare i32 @__gxx_personality_v0(...)

; Function Attrs: mustprogress uwtable
declare dso_local void @_Z18MyKeyboardCallbackii(i32 noundef, i32 noundef) #1

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef i32 @_Z11MyDockSpacev() local_unnamed_addr #5

declare noundef ptr @_ZN5ImGui15GetMainViewportEv() local_unnamed_addr #2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8), float noundef, float noundef) unnamed_addr #6 align 2

declare void @_ZN5ImGui17SetNextWindowSizeERK6ImVec2i(ptr noundef nonnull align 4 dereferenceable(8), i32 noundef) local_unnamed_addr #2

declare noundef zeroext i1 @_ZN5ImGui5BeginEPKcPbi(ptr noundef, ptr noundef, i32 noundef) local_unnamed_addr #2

declare void @_ZN5ImGui3EndEv() local_unnamed_addr #2

; Function Attrs: mustprogress norecurse uwtable
define dso_local noundef i32 @main(i32 noundef %0, ptr nocapture noundef readnone %1) local_unnamed_addr #7 personality ptr @__gxx_personality_v0 {
  %3 = alloca %struct.TinyOpenGL3App, align 8
  %4 = alloca %class.TinyClock, align 8
  %5 = alloca %"struct.TINY::TinyVector3", align 4
  %6 = alloca %"struct.TINY::TinyQuaternion", align 4
  %7 = alloca %"struct.TINY::TinyVector3", align 4
  %8 = alloca %"struct.TINY::TinyVector3", align 4
  %9 = alloca %"class.std::vector.16", align 8
  %10 = alloca float, align 4
  %11 = alloca float, align 4
  %12 = alloca float, align 4
  %13 = alloca %struct.ImFontConfig, align 8
  %14 = alloca %class.TinyProfileZone, align 1
  %15 = alloca %struct.DrawGridData, align 4
  %16 = alloca %class.TinyProfileZone, align 1
  %17 = alloca %struct.ImVec2, align 8
  %18 = alloca %struct.ImVec2, align 8
  %19 = alloca %struct.ImVec2, align 8
  %20 = alloca %struct.ImVec2, align 4
  %21 = alloca %struct.ImVec2, align 4
  %22 = alloca %struct.ImVec2, align 4
  %23 = alloca %struct.ImVec2, align 4
  %24 = alloca %struct.ImVec2, align 4
  %25 = alloca ptr, align 8
  %26 = alloca ptr, align 8
  %27 = alloca i8, align 1
  %28 = alloca i32, align 4
  call void @llvm.lifetime.start.p0(i64 104, ptr nonnull %3) #10
  call void @_ZN14TinyOpenGL3AppC1EPKciibiiii(ptr noundef nonnull align 8 dereferenceable(104) %3, ptr noundef nonnull @.str.21, i32 noundef 1024, i32 noundef 768, i1 noundef zeroext true, i32 noundef 0, i32 noundef -1, i32 noundef 131072, i32 noundef 134217728)
  %29 = getelementptr inbounds i8, ptr %3, i64 16
  %30 = load ptr, ptr %29, align 8, !tbaa !5
  %31 = load ptr, ptr %30, align 8, !tbaa !12
  %32 = getelementptr inbounds i8, ptr %31, i64 16
  %33 = load ptr, ptr %32, align 8
  invoke void %33(ptr noundef nonnull align 8 dereferenceable(60) %30)
          to label %34 unwind label %106

34:                                               ; preds = %2
  invoke void @_Z27TinyChromeUtilsStartTimingsv()
          to label %35 unwind label %106

35:                                               ; preds = %34
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %4) #10
  invoke void @_ZN9TinyClockC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %4)
          to label %36 unwind label %108

36:                                               ; preds = %35
  invoke void @_ZN9TinyClock5resetEv(ptr noundef nonnull align 8 dereferenceable(8) %4)
          to label %37 unwind label %110

37:                                               ; preds = %36
  %38 = invoke noundef double @_ZN9TinyClock16get_time_secondsEv(ptr noundef nonnull align 8 dereferenceable(8) %4)
          to label %39 unwind label %112

39:                                               ; preds = %37
  invoke void @_ZN14TinyOpenGL3App11set_up_axisEi(ptr noundef nonnull align 8 dereferenceable(104) %3, i32 noundef 2)
          to label %40 unwind label %112

40:                                               ; preds = %39
  %41 = load ptr, ptr %29, align 8, !tbaa !5
  %42 = load ptr, ptr %41, align 8, !tbaa !12
  %43 = getelementptr inbounds i8, ptr %42, i64 304
  %44 = load ptr, ptr %43, align 8
  %45 = invoke noundef ptr %44(ptr noundef nonnull align 8 dereferenceable(60) %41)
          to label %46 unwind label %112

46:                                               ; preds = %40
  %47 = load ptr, ptr %45, align 8, !tbaa !12
  %48 = getelementptr inbounds i8, ptr %47, i64 64
  %49 = load ptr, ptr %48, align 8
  invoke void %49(ptr noundef nonnull align 8 dereferenceable(16) %45, float noundef 4.000000e+00)
          to label %50 unwind label %112

50:                                               ; preds = %46
  %51 = load ptr, ptr %29, align 8, !tbaa !5
  %52 = load ptr, ptr %51, align 8, !tbaa !12
  %53 = getelementptr inbounds i8, ptr %52, i64 304
  %54 = load ptr, ptr %53, align 8
  %55 = invoke noundef ptr %54(ptr noundef nonnull align 8 dereferenceable(60) %51)
          to label %56 unwind label %112

56:                                               ; preds = %50
  %57 = load ptr, ptr %55, align 8, !tbaa !12
  %58 = getelementptr inbounds i8, ptr %57, i64 120
  %59 = load ptr, ptr %58, align 8
  invoke void %59(ptr noundef nonnull align 8 dereferenceable(16) %55, float noundef -3.000000e+01)
          to label %60 unwind label %112

60:                                               ; preds = %56
  %61 = load ptr, ptr %29, align 8, !tbaa !5
  %62 = load ptr, ptr %61, align 8, !tbaa !12
  %63 = getelementptr inbounds i8, ptr %62, i64 304
  %64 = load ptr, ptr %63, align 8
  %65 = invoke noundef ptr %64(ptr noundef nonnull align 8 dereferenceable(60) %61)
          to label %66 unwind label %112

66:                                               ; preds = %60
  %67 = load ptr, ptr %65, align 8, !tbaa !12
  %68 = getelementptr inbounds i8, ptr %67, i64 56
  %69 = load ptr, ptr %68, align 8
  invoke void %69(ptr noundef nonnull align 8 dereferenceable(16) %65, float noundef 0.000000e+00, float noundef 0.000000e+00, float noundef 0.000000e+00)
          to label %70 unwind label %112

70:                                               ; preds = %66
  %71 = getelementptr inbounds i8, ptr %3, i64 8
  %72 = load ptr, ptr %71, align 8, !tbaa !14
  %73 = load ptr, ptr %72, align 8, !tbaa !12
  %74 = getelementptr inbounds i8, ptr %73, i64 104
  %75 = load ptr, ptr %74, align 8
  %76 = invoke noundef ptr %75(ptr noundef nonnull align 8 dereferenceable(8) %72)
          to label %77 unwind label %112

77:                                               ; preds = %70
  store ptr %76, ptr @default_mouse_move_callback, align 8, !tbaa !15
  %78 = load ptr, ptr %71, align 8, !tbaa !14
  %79 = load ptr, ptr %78, align 8, !tbaa !12
  %80 = getelementptr inbounds i8, ptr %79, i64 96
  %81 = load ptr, ptr %80, align 8
  invoke void %81(ptr noundef nonnull align 8 dereferenceable(8) %78, ptr noundef nonnull @_Z19MyMouseMoveCallbackff)
          to label %82 unwind label %112

82:                                               ; preds = %77
  %83 = load ptr, ptr %71, align 8, !tbaa !14
  %84 = load ptr, ptr %83, align 8, !tbaa !12
  %85 = getelementptr inbounds i8, ptr %84, i64 120
  %86 = load ptr, ptr %85, align 8
  %87 = invoke noundef ptr %86(ptr noundef nonnull align 8 dereferenceable(8) %83)
          to label %88 unwind label %112

88:                                               ; preds = %82
  store ptr %87, ptr @default_mouse_button_callback, align 8, !tbaa !15
  %89 = load ptr, ptr %71, align 8, !tbaa !14
  %90 = load ptr, ptr %89, align 8, !tbaa !12
  %91 = getelementptr inbounds i8, ptr %90, i64 112
  %92 = load ptr, ptr %91, align 8
  invoke void %92(ptr noundef nonnull align 8 dereferenceable(8) %89, ptr noundef nonnull @_Z21MyMouseButtonCallbackiiff)
          to label %93 unwind label %112

93:                                               ; preds = %88
  %94 = load ptr, ptr %71, align 8, !tbaa !14
  %95 = load ptr, ptr %94, align 8, !tbaa !12
  %96 = getelementptr inbounds i8, ptr %95, i64 168
  %97 = load ptr, ptr %96, align 8
  %98 = invoke noundef ptr %97(ptr noundef nonnull align 8 dereferenceable(8) %94)
          to label %99 unwind label %112

99:                                               ; preds = %93
  store ptr %98, ptr @default_keyboard_callback, align 8, !tbaa !15
  %100 = load ptr, ptr %71, align 8, !tbaa !14
  %101 = load ptr, ptr %100, align 8, !tbaa !12
  %102 = getelementptr inbounds i8, ptr %101, i64 160
  %103 = load ptr, ptr %102, align 8
  invoke void %103(ptr noundef nonnull align 8 dereferenceable(8) %100, ptr noundef nonnull @_Z18MyKeyboardCallbackii)
          to label %104 unwind label %112

104:                                              ; preds = %99
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %5) #10
  call void @_ZN4TINY11TinyVector3IfNS_10FloatUtilsEEC2Efff(ptr noundef nonnull align 4 dereferenceable(16) %5, float noundef 0.000000e+00, float noundef 0.000000e+00, float noundef 0xBF947AE140000000)
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %6) #10
  invoke void @_ZN4TINY14TinyQuaternionIfNS_10FloatUtilsEEC2Effff(ptr noundef nonnull align 4 dereferenceable(16) %6, float noundef 0.000000e+00, float noundef 0.000000e+00, float noundef 0.000000e+00, float noundef 1.000000e+00)
          to label %105 unwind label %114

105:                                              ; preds = %104
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %7) #10
  call void @_ZN4TINY11TinyVector3IfNS_10FloatUtilsEEC2Efff(ptr noundef nonnull align 4 dereferenceable(16) %7, float noundef 1.000000e+00, float noundef 1.000000e+00, float noundef 1.000000e+00)
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %8) #10
  call void @_ZN4TINY11TinyVector3IfNS_10FloatUtilsEEC2Efff(ptr noundef nonnull align 4 dereferenceable(16) %8, float noundef 1.000000e+00, float noundef 1.000000e+00, float noundef 1.000000e+00)
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %9) #10
  call void @_ZNSt6vectorIhSaIhEEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %9) #10
  invoke void @_ZNSt6vectorIhSaIhEE6resizeEm(ptr noundef nonnull align 8 dereferenceable(24) %9, i64 noundef 3145728)
          to label %.preheader206 unwind label %116

106:                                              ; preds = %34, %2
  %107 = landingpad { ptr, i32 }
          cleanup
  br label %494

108:                                              ; preds = %35
  %109 = landingpad { ptr, i32 }
          cleanup
  br label %493

110:                                              ; preds = %36
  %111 = landingpad { ptr, i32 }
          cleanup
  br label %492

112:                                              ; preds = %99, %93, %88, %82, %77, %70, %66, %60, %56, %50, %46, %40, %39, %37
  %113 = landingpad { ptr, i32 }
          cleanup
  br label %492

114:                                              ; preds = %104
  %115 = landingpad { ptr, i32 }
          cleanup
  br label %491

116:                                              ; preds = %120, %105
  %117 = landingpad { ptr, i32 }
          cleanup
  br label %490

.preheader206:                                    ; preds = %105, %.preheader206
  %indvars.iv = phi i64 [ %indvars.iv.next, %.preheader206 ], [ 0, %105 ]
  %118 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt6vectorIhSaIhEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %9, i64 noundef %indvars.iv) #10
  store i8 -1, ptr %118, align 1, !tbaa !16
  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
  %exitcond.not = icmp eq i64 %indvars.iv.next, 3145728
  br i1 %exitcond.not, label %.preheader204, label %.preheader206, !llvm.loop !17

.preheader204:                                    ; preds = %.preheader206, %128
  %indvars.iv222 = phi i64 [ %indvars.iv.next223, %128 ], [ 0, %.preheader206 ]
  %119 = icmp ult i64 %indvars.iv222, 512
  br label %129

120:                                              ; preds = %128
  %121 = getelementptr inbounds i8, ptr %3, i64 96
  %122 = load ptr, ptr %121, align 8, !tbaa !19
  %123 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt6vectorIhSaIhEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %9, i64 noundef 0) #10
  %124 = load ptr, ptr %122, align 8, !tbaa !12
  %125 = getelementptr inbounds i8, ptr %124, i64 88
  %126 = load ptr, ptr %125, align 8
  %127 = invoke noundef i32 %126(ptr noundef nonnull align 8 dereferenceable(60) %122, ptr noundef nonnull %123, i32 noundef 1024, i32 noundef 1024, i1 noundef zeroext true)
          to label %142 unwind label %116

128:                                              ; preds = %141
  %indvars.iv.next223 = add nuw nsw i64 %indvars.iv222, 1
  %exitcond225.not = icmp eq i64 %indvars.iv.next223, 1024
  br i1 %exitcond225.not, label %120, label %.preheader204, !llvm.loop !21

129:                                              ; preds = %.preheader204, %141
  %indvars.iv218 = phi i64 [ 0, %.preheader204 ], [ %indvars.iv.next219, %141 ]
  %130 = icmp ugt i64 %indvars.iv218, 511
  %131 = xor i1 %119, %130
  br i1 %131, label %132, label %141

132:                                              ; preds = %129
  %133 = shl nuw nsw i64 %indvars.iv218, 10
  %134 = add nuw nsw i64 %133, %indvars.iv222
  %135 = mul nuw nsw i64 %134, 3
  %136 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt6vectorIhSaIhEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %9, i64 noundef %135) #10
  store i8 0, ptr %136, align 1, !tbaa !16
  %137 = add nuw nsw i64 %135, 1
  %138 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt6vectorIhSaIhEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %9, i64 noundef %137) #10
  store i8 -128, ptr %138, align 1, !tbaa !16
  %139 = add nuw nsw i64 %135, 2
  %140 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt6vectorIhSaIhEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %9, i64 noundef %139) #10
  store i8 -1, ptr %140, align 1, !tbaa !16
  br label %141

141:                                              ; preds = %132, %129
  %indvars.iv.next219 = add nuw nsw i64 %indvars.iv218, 1
  %exitcond221.not = icmp eq i64 %indvars.iv.next219, 1024
  br i1 %exitcond221.not, label %128, label %129, !llvm.loop !22

142:                                              ; preds = %120
  %143 = invoke noundef i32 @_ZN14TinyOpenGL3App19register_cube_shapeEfffif(ptr noundef nonnull align 8 dereferenceable(104) %3, float noundef 1.000000e+01, float noundef 1.000000e+01, float noundef 0x3F847AE140000000, i32 noundef %127, float noundef 4.000000e+01)
          to label %144 unwind label %270

144:                                              ; preds = %142
  %145 = load ptr, ptr %29, align 8, !tbaa !5
  %146 = load ptr, ptr %145, align 8, !tbaa !12
  %147 = getelementptr inbounds i8, ptr %146, i64 136
  %148 = load ptr, ptr %147, align 8
  %149 = invoke noundef i32 %148(ptr noundef nonnull align 8 dereferenceable(60) %145, i32 noundef %143, ptr noundef nonnull align 4 dereferenceable(16) %5, ptr noundef nonnull align 4 dereferenceable(16) %6, ptr noundef nonnull align 4 dereferenceable(16) %7, ptr noundef nonnull align 4 dereferenceable(16) %8, float noundef 1.000000e+00, i1 noundef zeroext true)
          to label %150 unwind label %270

150:                                              ; preds = %144
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %10) #10
  store float 0.000000e+00, ptr %10, align 4, !tbaa !23
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %11) #10
  store float 0.000000e+00, ptr %11, align 4, !tbaa !23
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %12) #10
  store float 2.000000e+00, ptr %12, align 4, !tbaa !23
  call void @_ZN4TINY11TinyVector3IfNS_10FloatUtilsEE8setValueERKfS4_S4_(ptr noundef nonnull align 4 dereferenceable(16) %5, ptr noundef nonnull align 4 dereferenceable(4) %10, ptr noundef nonnull align 4 dereferenceable(4) %11, ptr noundef nonnull align 4 dereferenceable(4) %12)
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %12) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %11) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %10) #10
  %151 = invoke noundef i32 @_ZN14TinyOpenGL3App35register_graphics_unit_sphere_shapeE23EnumSphereLevelOfDetaili(ptr noundef nonnull align 8 dereferenceable(104) %3, i32 noundef 3, i32 noundef -1)
          to label %152 unwind label %270

152:                                              ; preds = %150
  %153 = load ptr, ptr %29, align 8, !tbaa !5
  %154 = load ptr, ptr %153, align 8, !tbaa !12
  %155 = getelementptr inbounds i8, ptr %154, i64 136
  %156 = load ptr, ptr %155, align 8
  %157 = invoke noundef i32 %156(ptr noundef nonnull align 8 dereferenceable(60) %153, i32 noundef %151, ptr noundef nonnull align 4 dereferenceable(16) %5, ptr noundef nonnull align 4 dereferenceable(16) %6, ptr noundef nonnull align 4 dereferenceable(16) %7, ptr noundef nonnull align 4 dereferenceable(16) %8, float noundef 1.000000e+00, i1 noundef zeroext true)
          to label %158 unwind label %270

158:                                              ; preds = %152
  %159 = load ptr, ptr %29, align 8, !tbaa !5
  invoke void @_ZN24TinyGLInstancingRenderer16write_transformsEv(ptr noundef nonnull align 8 dereferenceable(60) %159)
          to label %160 unwind label %270

160:                                              ; preds = %158
  %161 = invoke noundef zeroext i1 @_ZN5ImGui30DebugCheckVersionAndDataLayoutEPKcmmmmmm(ptr noundef nonnull @.str.22, i64 noundef 5464, i64 noundef 988, i64 noundef 8, i64 noundef 16, i64 noundef 20, i64 noundef 2)
          to label %162 unwind label %270

162:                                              ; preds = %160
  %163 = invoke noundef ptr @_ZN5ImGui13CreateContextEP11ImFontAtlas(ptr noundef null)
          to label %164 unwind label %270

164:                                              ; preds = %162
  %165 = invoke noundef nonnull align 8 dereferenceable(5464) ptr @_ZN5ImGui5GetIOEv()
          to label %166 unwind label %272

166:                                              ; preds = %164
  %167 = load i32, ptr %165, align 8, !tbaa !24
  %168 = or i32 %167, 65
  store i32 %168, ptr %165, align 8, !tbaa !24
  %169 = getelementptr inbounds i8, ptr %165, i64 52
  store <4 x i32> <i32 158, i32 143, i32 144, i32 145>, ptr %169, align 4, !tbaa !30
  %170 = getelementptr inbounds i8, ptr %165, i64 68
  store <4 x i32> <i32 146, i32 147, i32 148, i32 150>, ptr %170, align 4, !tbaa !30
  %171 = getelementptr inbounds i8, ptr %165, i64 84
  store <4 x i32> <i32 149, i32 151, i32 152, i32 153>, ptr %171, align 4, !tbaa !30
  %172 = getelementptr inbounds i8, ptr %165, i64 100
  store <4 x i32> <i32 96, i32 157, i32 27, i32 0>, ptr %172, align 4, !tbaa !30
  %173 = getelementptr inbounds i8, ptr %165, i64 116
  store <4 x i32> <i32 97, i32 99, i32 118, i32 120>, ptr %173, align 4, !tbaa !30
  %174 = getelementptr inbounds i8, ptr %165, i64 132
  store i32 121, ptr %174, align 4, !tbaa !30
  %175 = getelementptr inbounds i8, ptr %165, i64 136
  store i32 122, ptr %175, align 8, !tbaa !30
  invoke void @_ZN5ImGui15StyleColorsDarkEP10ImGuiStyle(ptr noundef null)
          to label %176 unwind label %272

176:                                              ; preds = %166
  call void @llvm.lifetime.start.p0(i64 136, ptr nonnull %13) #10
  invoke void @_ZN12ImFontConfigC1Ev(ptr noundef nonnull align 8 dereferenceable(136) %13)
          to label %177 unwind label %274

177:                                              ; preds = %176
  %178 = getelementptr inbounds i8, ptr %13, i64 20
  store float 2.600000e+01, ptr %178, align 4, !tbaa !31
  %179 = invoke noundef nonnull align 8 dereferenceable(5464) ptr @_ZN5ImGui5GetIOEv()
          to label %180 unwind label %274

180:                                              ; preds = %177
  %181 = getelementptr inbounds i8, ptr %179, i64 160
  %182 = load ptr, ptr %181, align 8, !tbaa !33
  %183 = invoke noundef ptr @_ZN11ImFontAtlas14AddFontDefaultEPK12ImFontConfig(ptr noundef nonnull align 8 dereferenceable(1144) %182, ptr noundef nonnull %13)
          to label %184 unwind label %274

184:                                              ; preds = %180
  %185 = getelementptr inbounds i8, ptr %183, i64 68
  store float 2.000000e+00, ptr %185, align 4, !tbaa !34
  %186 = invoke noundef nonnull align 4 dereferenceable(988) ptr @_ZN5ImGui8GetStyleEv()
          to label %187 unwind label %274

187:                                              ; preds = %184
  invoke void @_ZN10ImGuiStyle13ScaleAllSizesEf(ptr noundef nonnull align 4 dereferenceable(988) %186, float noundef 2.000000e+00)
          to label %188 unwind label %274

188:                                              ; preds = %187
  call void @llvm.lifetime.end.p0(i64 136, ptr nonnull %13) #10
  %189 = invoke noundef zeroext i1 @_Z22ImGui_ImplOpenGL3_InitPKc(ptr noundef nonnull @.str.23)
          to label %190 unwind label %276

190:                                              ; preds = %188
  %191 = invoke noundef zeroext i1 @_Z37ImGui_ImplOpenGL3_CreateDeviceObjectsv()
          to label %192 unwind label %.loopexit.split-lp

192:                                              ; preds = %190
  invoke void @_ZN7imnodes10InitializeEv()
          to label %193 unwind label %.loopexit.split-lp

193:                                              ; preds = %192
  invoke void @_ZN7imnodes15StyleColorsDarkEv()
          to label %.preheader202 unwind label %.loopexit.split-lp

.preheader202:                                    ; preds = %193
  %194 = getelementptr inbounds i8, ptr %15, i64 8
  %195 = getelementptr inbounds i8, ptr %165, i64 8
  %196 = getelementptr inbounds i8, ptr %165, i64 184
  %197 = getelementptr inbounds i8, ptr %165, i64 16
  %198 = getelementptr inbounds i8, ptr %165, i64 288
  %199 = getelementptr inbounds i8, ptr %165, i64 280
  %200 = getelementptr inbounds i8, ptr %165, i64 296
  %201 = getelementptr inbounds i8, ptr %165, i64 304
  %202 = getelementptr inbounds i8, ptr %165, i64 297
  %203 = getelementptr inbounds i8, ptr %165, i64 298
  br label %204

204:                                              ; preds = %.preheader202, %483
  %.0146 = phi double [ %253, %483 ], [ %38, %.preheader202 ]
  %205 = load ptr, ptr %71, align 8, !tbaa !14
  %206 = load ptr, ptr %205, align 8, !tbaa !12
  %207 = getelementptr inbounds i8, ptr %206, i64 56
  %208 = load ptr, ptr %207, align 8
  %209 = invoke noundef zeroext i1 %208(ptr noundef nonnull align 8 dereferenceable(8) %205)
          to label %210 unwind label %.loopexit203

210:                                              ; preds = %204
  br i1 %209, label %488, label %211

211:                                              ; preds = %210
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %14) #10
  invoke void @_ZN15TinyProfileZoneC2EPKc(ptr noundef nonnull align 1 dereferenceable(1) %14, ptr noundef nonnull @.str.24)
          to label %212 unwind label %278

212:                                              ; preds = %211
  %213 = load ptr, ptr %29, align 8, !tbaa !5
  %214 = load ptr, ptr %213, align 8, !tbaa !12
  %215 = getelementptr inbounds i8, ptr %214, i64 288
  %216 = load ptr, ptr %215, align 8
  invoke void %216(ptr noundef nonnull align 8 dereferenceable(60) %213, i32 noundef 2)
          to label %217 unwind label %280

217:                                              ; preds = %212
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %15) #10
  call void @_ZN12DrawGridDataC2Ei(ptr noundef nonnull align 4 dereferenceable(32) %15, i32 noundef 2)
  store i32 2, ptr %194, align 4, !tbaa !38
  invoke void @_ZN14TinyOpenGL3App12draw_text_3dEPKcffff(ptr noundef nonnull align 8 dereferenceable(104) %3, ptr noundef nonnull @.str.25, float noundef 0.000000e+00, float noundef 0.000000e+00, float noundef 1.000000e+00, float noundef 1.000000e+00)
          to label %218 unwind label %282

218:                                              ; preds = %217
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %16) #10
  invoke void @_ZN15TinyProfileZoneC2EPKc(ptr noundef nonnull align 1 dereferenceable(1) %16, ptr noundef nonnull @.str.26)
          to label %219 unwind label %284

219:                                              ; preds = %218
  %220 = load ptr, ptr %29, align 8, !tbaa !5
  %221 = load ptr, ptr %220, align 8, !tbaa !12
  %222 = getelementptr inbounds i8, ptr %221, i64 24
  %223 = load ptr, ptr %222, align 8
  invoke void %223(ptr noundef nonnull align 8 dereferenceable(60) %220)
          to label %224 unwind label %286

224:                                              ; preds = %219
  call void @_ZN15TinyProfileZoneD2Ev(ptr noundef nonnull align 1 dereferenceable(1) %16) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %16) #10
  %225 = load ptr, ptr %71, align 8, !tbaa !14
  %226 = load ptr, ptr %225, align 8, !tbaa !12
  %227 = getelementptr inbounds i8, ptr %226, i64 208
  %228 = load ptr, ptr %227, align 8
  %229 = invoke noundef i32 %228(ptr noundef nonnull align 8 dereferenceable(8) %225)
          to label %230 unwind label %289

230:                                              ; preds = %224
  %231 = load ptr, ptr %71, align 8, !tbaa !14
  %232 = load ptr, ptr %231, align 8, !tbaa !12
  %233 = getelementptr inbounds i8, ptr %232, i64 216
  %234 = load ptr, ptr %233, align 8
  %235 = invoke noundef i32 %234(ptr noundef nonnull align 8 dereferenceable(8) %231)
          to label %236 unwind label %291

236:                                              ; preds = %230
  %237 = sitofp i32 %229 to float
  %238 = sitofp i32 %235 to float
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %17) #10
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %17, float noundef %237, float noundef %238)
  %239 = load i64, ptr %17, align 8
  store i64 %239, ptr %195, align 8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %17) #10
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %18) #10
  %240 = load ptr, ptr %71, align 8, !tbaa !14
  %241 = load ptr, ptr %240, align 8, !tbaa !12
  %242 = getelementptr inbounds i8, ptr %241, i64 192
  %243 = load ptr, ptr %242, align 8
  %244 = invoke noundef float %243(ptr noundef nonnull align 8 dereferenceable(8) %240)
          to label %245 unwind label %293

245:                                              ; preds = %236
  %246 = load ptr, ptr %71, align 8, !tbaa !14
  %247 = load ptr, ptr %246, align 8, !tbaa !12
  %248 = getelementptr inbounds i8, ptr %247, i64 192
  %249 = load ptr, ptr %248, align 8
  %250 = invoke noundef float %249(ptr noundef nonnull align 8 dereferenceable(8) %246)
          to label %251 unwind label %293

251:                                              ; preds = %245
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %18, float noundef %244, float noundef %250)
  %252 = load i64, ptr %18, align 8
  store i64 %252, ptr %196, align 8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %18) #10
  %253 = invoke noundef double @_ZN9TinyClock16get_time_secondsEv(ptr noundef nonnull align 8 dereferenceable(8) %4)
          to label %254 unwind label %295

254:                                              ; preds = %251
  %255 = fsub double %253, %.0146
  %256 = fptrunc double %255 to float
  store float %256, ptr %197, align 8, !tbaa !40
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %19) #10
  %257 = load float, ptr @gMouseX, align 4, !tbaa !23
  %258 = load float, ptr @gMouseY, align 4, !tbaa !23
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %19, float noundef %257, float noundef %258)
  %259 = load i64, ptr %19, align 8
  store i64 %259, ptr %198, align 8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %19) #10
  store ptr @_Z32ImGui_ImplOpenGL3_RenderDrawDataP10ImDrawData, ptr %199, align 8, !tbaa !41
  %260 = load i32, ptr @g_MousePressed, align 4, !tbaa !30
  %261 = icmp ne i32 %260, 0
  %262 = zext i1 %261 to i8
  store i8 %262, ptr %200, align 8, !tbaa !42
  %263 = load i32, ptr getelementptr inbounds (i8, ptr @g_MousePressed, i64 4), align 4, !tbaa !30
  %264 = icmp ne i32 %263, 0
  %265 = zext i1 %264 to i8
  store i8 %265, ptr %202, align 1, !tbaa !42
  %266 = load i32, ptr getelementptr inbounds (i8, ptr @g_MousePressed, i64 8), align 4, !tbaa !30
  %267 = icmp ne i32 %266, 0
  %268 = zext i1 %267 to i8
  store i8 %268, ptr %203, align 2, !tbaa !42
  %269 = load float, ptr @g_MouseWheel, align 4, !tbaa !23
  store float %269, ptr %201, align 8, !tbaa !43
  invoke void @_ZN5ImGui8NewFrameEv()
          to label %297 unwind label %309

270:                                              ; preds = %162, %160, %158, %152, %150, %144, %142
  %271 = landingpad { ptr, i32 }
          cleanup
  br label %490

272:                                              ; preds = %166, %164
  %273 = landingpad { ptr, i32 }
          cleanup
  br label %490

274:                                              ; preds = %187, %184, %180, %177, %176
  %275 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 136, ptr nonnull %13) #10
  br label %490

276:                                              ; preds = %188
  %277 = landingpad { ptr, i32 }
          cleanup
  br label %490

.loopexit203:                                     ; preds = %204
  %lpad.loopexit = landingpad { ptr, i32 }
          cleanup
  br label %490

.loopexit.split-lp:                               ; preds = %190, %192, %193, %488
  %lpad.loopexit.split-lp = landingpad { ptr, i32 }
          cleanup
  br label %490

278:                                              ; preds = %211
  %279 = landingpad { ptr, i32 }
          cleanup
  br label %487

280:                                              ; preds = %212
  %281 = landingpad { ptr, i32 }
          cleanup
  br label %486

282:                                              ; preds = %217
  %283 = landingpad { ptr, i32 }
          cleanup
  br label %485

284:                                              ; preds = %218
  %285 = landingpad { ptr, i32 }
          cleanup
  br label %288

286:                                              ; preds = %219
  %287 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN15TinyProfileZoneD2Ev(ptr noundef nonnull align 1 dereferenceable(1) %16) #10
  br label %288

288:                                              ; preds = %286, %284
  %.pn = phi { ptr, i32 } [ %287, %286 ], [ %285, %284 ]
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %16) #10
  br label %485

289:                                              ; preds = %224
  %290 = landingpad { ptr, i32 }
          cleanup
  br label %485

291:                                              ; preds = %230
  %292 = landingpad { ptr, i32 }
          cleanup
  br label %485

293:                                              ; preds = %245, %236
  %294 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %18) #10
  br label %485

295:                                              ; preds = %251
  %296 = landingpad { ptr, i32 }
          cleanup
  br label %485

297:                                              ; preds = %254
  %298 = invoke noundef i32 @_Z11MyDockSpacev()
          to label %299 unwind label %311

299:                                              ; preds = %297
  invoke void @_ZN5ImGui14ShowDemoWindowEPb(ptr noundef null)
          to label %300 unwind label %311

300:                                              ; preds = %299
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %20) #10
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %20, float noundef 3.000000e+02, float noundef 3.000000e+02)
  invoke void @_ZN5ImGui17SetNextWindowSizeERK6ImVec2i(ptr noundef nonnull align 4 dereferenceable(8) %20, i32 noundef 0)
          to label %301 unwind label %313

301:                                              ; preds = %300
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %20) #10
  %302 = invoke noundef zeroext i1 @_ZN5ImGui5BeginEPKcPbi(ptr noundef nonnull @.str.27, ptr noundef null, i32 noundef 0)
          to label %303 unwind label %315

303:                                              ; preds = %301
  br i1 %302, label %304, label %324

304:                                              ; preds = %303
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %21) #10
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %21, float noundef 0.000000e+00, float noundef 0.000000e+00)
  %305 = invoke noundef zeroext i1 @_ZN5ImGui6ButtonEPKcRK6ImVec2(ptr noundef nonnull @.str.28, ptr noundef nonnull align 4 dereferenceable(8) %21)
          to label %306 unwind label %317

306:                                              ; preds = %304
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %21) #10
  %.pre = load i32, ptr @_ZZ4mainE7clicked, align 4, !tbaa !30
  br i1 %305, label %307, label %319

307:                                              ; preds = %306
  %308 = add nsw i32 %.pre, 1
  store i32 %308, ptr @_ZZ4mainE7clicked, align 4, !tbaa !30
  br label %319

309:                                              ; preds = %254
  %310 = landingpad { ptr, i32 }
          cleanup
  br label %485

311:                                              ; preds = %299, %297
  %312 = landingpad { ptr, i32 }
          cleanup
  br label %485

313:                                              ; preds = %300
  %314 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %20) #10
  br label %485

315:                                              ; preds = %324, %323, %322, %301
  %316 = landingpad { ptr, i32 }
          cleanup
  br label %485

317:                                              ; preds = %304
  %318 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %21) #10
  br label %485

319:                                              ; preds = %307, %306
  %320 = phi i32 [ %308, %307 ], [ %.pre, %306 ]
  %321 = and i32 %320, 1
  %.not = icmp eq i32 %321, 0
  br i1 %.not, label %324, label %322

322:                                              ; preds = %319
  invoke void @_ZN5ImGui8SameLineEff(float noundef 0.000000e+00, float noundef -1.000000e+00)
          to label %323 unwind label %315

323:                                              ; preds = %322
  invoke void (ptr, ...) @_ZN5ImGui4TextEPKcz(ptr noundef nonnull @.str.29)
          to label %324 unwind label %315

324:                                              ; preds = %319, %323, %303
  invoke void @_ZN5ImGui3EndEv()
          to label %325 unwind label %315

325:                                              ; preds = %324
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %22) #10
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %22, float noundef 3.000000e+02, float noundef 3.000000e+02)
  invoke void @_ZN5ImGui17SetNextWindowSizeERK6ImVec2i(ptr noundef nonnull align 4 dereferenceable(8) %22, i32 noundef 0)
          to label %326 unwind label %335

326:                                              ; preds = %325
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %22) #10
  %327 = invoke noundef zeroext i1 @_ZN5ImGui5BeginEPKcPbi(ptr noundef nonnull @.str.30, ptr noundef null, i32 noundef 0)
          to label %328 unwind label %337

328:                                              ; preds = %326
  br i1 %327, label %329, label %352

329:                                              ; preds = %328
  %330 = load i32, ptr @_ZZ4mainE7clicked_0, align 4, !tbaa !30
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %23) #10
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %23, float noundef 0.000000e+00, float noundef 0.000000e+00)
  %331 = invoke noundef zeroext i1 @_ZN5ImGui6ButtonEPKcRK6ImVec2(ptr noundef nonnull @.str.28, ptr noundef nonnull align 4 dereferenceable(8) %23)
          to label %332 unwind label %339

332:                                              ; preds = %329
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %23) #10
  %.pre236 = load i32, ptr @_ZZ4mainE7clicked_0, align 4, !tbaa !30
  br i1 %331, label %333, label %341

333:                                              ; preds = %332
  %334 = add nsw i32 %.pre236, 1
  store i32 %334, ptr @_ZZ4mainE7clicked_0, align 4, !tbaa !30
  br label %341

335:                                              ; preds = %325
  %336 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %22) #10
  br label %485

337:                                              ; preds = %326
  %338 = landingpad { ptr, i32 }
          cleanup
  br label %485

339:                                              ; preds = %329
  %340 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %23) #10
  br label %485

341:                                              ; preds = %333, %332
  %342 = phi i32 [ %334, %333 ], [ %.pre236, %332 ]
  %.not161 = icmp eq i32 %330, %342
  br i1 %.not161, label %347, label %.sink.split

.sink.split:                                      ; preds = %341
  %343 = and i32 %342, 1
  %.not162 = icmp eq i32 %343, 0
  %.str.32..str.31 = select i1 %.not162, ptr @.str.32, ptr @.str.31
  %344 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) %.str.32..str.31, i32 noundef %342)
  br label %347

345:                                              ; preds = %351, %350
  %346 = landingpad { ptr, i32 }
          cleanup
  br label %485

347:                                              ; preds = %.sink.split, %341
  %348 = load i32, ptr @_ZZ4mainE7clicked_0, align 4, !tbaa !30
  %349 = and i32 %348, 1
  %.not163 = icmp eq i32 %349, 0
  br i1 %.not163, label %352, label %350

350:                                              ; preds = %347
  invoke void @_ZN5ImGui8SameLineEff(float noundef 0.000000e+00, float noundef -1.000000e+00)
          to label %351 unwind label %345

351:                                              ; preds = %350
  invoke void (ptr, ...) @_ZN5ImGui4TextEPKcz(ptr noundef nonnull @.str.29)
          to label %352 unwind label %345

352:                                              ; preds = %351, %347, %328
  %353 = load atomic i8, ptr @_ZGVZ4mainE5items acquire, align 8
  %354 = icmp eq i8 %353, 0
  br i1 %354, label %355, label %359, !prof !44

355:                                              ; preds = %352
  %356 = call i32 @__cxa_guard_acquire(ptr nonnull @_ZGVZ4mainE5items) #10
  %.not166 = icmp eq i32 %356, 0
  br i1 %.not166, label %359, label %357

357:                                              ; preds = %355
  call void @_ZNSt6vectorIPKcSaIS1_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) @_ZZ4mainE5items) #10
  %358 = call i32 @__cxa_atexit(ptr nonnull @_ZNSt6vectorIPKcSaIS1_EED2Ev, ptr nonnull @_ZZ4mainE5items, ptr nonnull @__dso_handle) #10
  call void @__cxa_guard_release(ptr nonnull @_ZGVZ4mainE5items) #10
  br label %359

359:                                              ; preds = %357, %355, %352
  %360 = load atomic i8, ptr @_ZGVZ4mainE7samplesB5cxx11 acquire, align 8
  %361 = icmp eq i8 %360, 0
  br i1 %361, label %362, label %366, !prof !44

362:                                              ; preds = %359
  %363 = call i32 @__cxa_guard_acquire(ptr nonnull @_ZGVZ4mainE7samplesB5cxx11) #10
  %.not167 = icmp eq i32 %363, 0
  br i1 %.not167, label %366, label %364

364:                                              ; preds = %362
  call void @_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) @_ZZ4mainE7samplesB5cxx11) #10
  %365 = call i32 @__cxa_atexit(ptr nonnull @_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EED2Ev, ptr nonnull @_ZZ4mainE7samplesB5cxx11, ptr nonnull @__dso_handle) #10
  call void @__cxa_guard_release(ptr nonnull @_ZGVZ4mainE7samplesB5cxx11) #10
  br label %366

366:                                              ; preds = %364, %362, %359
  %367 = load atomic i8, ptr @_ZGVZ4mainE6Filter acquire, align 8
  %368 = icmp eq i8 %367, 0
  br i1 %368, label %369, label %374, !prof !44

369:                                              ; preds = %366
  %370 = call i32 @__cxa_guard_acquire(ptr nonnull @_ZGVZ4mainE6Filter) #10
  %.not168 = icmp eq i32 %370, 0
  br i1 %.not168, label %374, label %371

371:                                              ; preds = %369
  invoke void @_ZN15ImGuiTextFilterC1EPKc(ptr noundef nonnull align 8 dereferenceable(276) @_ZZ4mainE6Filter, ptr noundef nonnull @.str.15)
          to label %372 unwind label %389

372:                                              ; preds = %371
  %373 = call i32 @__cxa_atexit(ptr nonnull @_ZN15ImGuiTextFilterD2Ev, ptr nonnull @_ZZ4mainE6Filter, ptr nonnull @__dso_handle) #10
  call void @__cxa_guard_release(ptr nonnull @_ZGVZ4mainE6Filter) #10
  br label %374

374:                                              ; preds = %372, %369, %366
  %375 = invoke <2 x float> @_ZN5ImGui25GetWindowContentRegionMinEv()
          to label %376 unwind label %391

376:                                              ; preds = %374
  %377 = invoke <2 x float> @_ZN5ImGui25GetWindowContentRegionMaxEv()
          to label %378 unwind label %393

378:                                              ; preds = %376
  %379 = fsub <2 x float> %377, %375
  %380 = extractelement <2 x float> %379, i64 0
  %381 = fadd float %380, -1.000000e+01
  invoke void @_ZN5ImGui13PushItemWidthEf(float noundef %381)
          to label %382 unwind label %393

382:                                              ; preds = %378
  %383 = invoke noundef zeroext i1 @_ZN15ImGuiTextFilter4DrawEPKcf(ptr noundef nonnull align 8 dereferenceable(276) @_ZZ4mainE6Filter, ptr noundef nonnull @.str.33, float noundef -1.000000e+02)
          to label %384 unwind label %395

384:                                              ; preds = %382
  br i1 %383, label %385, label %397

385:                                              ; preds = %384
  %386 = load i32, ptr @_ZZ4mainE5count, align 4, !tbaa !30
  %387 = add nsw i32 %386, 1
  store i32 %387, ptr @_ZZ4mainE5count, align 4, !tbaa !30
  %388 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.34, i32 noundef %386)
  br label %397

389:                                              ; preds = %371
  %390 = landingpad { ptr, i32 }
          cleanup
  call void @__cxa_guard_abort(ptr nonnull @_ZGVZ4mainE6Filter) #10
  br label %485

391:                                              ; preds = %374
  %392 = landingpad { ptr, i32 }
          cleanup
  br label %485

393:                                              ; preds = %378, %376
  %394 = landingpad { ptr, i32 }
          cleanup
  br label %485

395:                                              ; preds = %442, %437, %.loopexit, %407, %382
  %396 = landingpad { ptr, i32 }
          cleanup
  br label %485

397:                                              ; preds = %385, %384
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %24) #10
  call void @_ZN6ImVec2C2Eff(ptr noundef nonnull align 4 dereferenceable(8) %24, float noundef 0.000000e+00, float noundef 0.000000e+00)
  %398 = invoke noundef zeroext i1 @_ZN5ImGui6ButtonEPKcRK6ImVec2(ptr noundef nonnull @.str.35, ptr noundef nonnull align 4 dereferenceable(8) %24)
          to label %399 unwind label %404

399:                                              ; preds = %397
  %400 = load i32, ptr @_ZZ4mainE5count, align 4
  %401 = icmp eq i32 %400, 0
  %402 = select i1 %398, i1 true, i1 %401
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %24) #10
  br i1 %402, label %.critedge, label %406

.critedge:                                        ; preds = %399
  %403 = add nsw i32 %400, 1
  store i32 %403, ptr @_ZZ4mainE5count, align 4, !tbaa !30
  call void @_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE5clearEv(ptr noundef nonnull align 8 dereferenceable(24) @_ZZ4mainE7samplesB5cxx11) #10
  br label %407

404:                                              ; preds = %397
  %405 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %24) #10
  br label %485

406:                                              ; preds = %399
  br i1 %383, label %407, label %.loopexit

407:                                              ; preds = %.critedge, %406
  call void @_ZNSt6vectorIPKcSaIS1_EE5clearEv(ptr noundef nonnull align 8 dereferenceable(24) @_ZZ4mainE5items) #10
  %408 = invoke noundef zeroext i1 @_ZNK15ImGuiTextFilter8IsActiveEv(ptr noundef nonnull align 8 dereferenceable(276) @_ZZ4mainE6Filter)
          to label %409 unwind label %395

409:                                              ; preds = %407
  %410 = call noundef i64 @_ZNKSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) @_ZZ4mainE7samplesB5cxx11) #10
  %.not215 = icmp eq i64 %410, 0
  br i1 %408, label %.preheader, label %.preheader200

.preheader200:                                    ; preds = %409
  br i1 %.not215, label %.loopexit, label %.lr.ph

.preheader:                                       ; preds = %409
  br i1 %.not215, label %.loopexit, label %.lr.ph213

.lr.ph213:                                        ; preds = %.preheader, %423
  %indvars.iv233 = phi i64 [ %indvars.iv.next234, %423 ], [ 0, %.preheader ]
  %411 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) @_ZZ4mainE7samplesB5cxx11, i64 noundef %indvars.iv233) #10
  %412 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %411) #10
  %413 = invoke noundef zeroext i1 @_ZNK15ImGuiTextFilter10PassFilterEPKcS1_(ptr noundef nonnull align 8 dereferenceable(276) @_ZZ4mainE6Filter, ptr noundef %412, ptr noundef null)
          to label %414 unwind label %419

414:                                              ; preds = %.lr.ph213
  br i1 %413, label %415, label %423

415:                                              ; preds = %414
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %25) #10
  %416 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) @_ZZ4mainE7samplesB5cxx11, i64 noundef %indvars.iv233) #10
  %417 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %416) #10
  store ptr %417, ptr %25, align 8, !tbaa !15
  invoke void @_ZNSt6vectorIPKcSaIS1_EE9push_backEOS1_(ptr noundef nonnull align 8 dereferenceable(24) @_ZZ4mainE5items, ptr noundef nonnull align 8 dereferenceable(8) %25)
          to label %418 unwind label %421

418:                                              ; preds = %415
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %25) #10
  br label %423

419:                                              ; preds = %.lr.ph213
  %420 = landingpad { ptr, i32 }
          cleanup
  br label %485

421:                                              ; preds = %415
  %422 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %25) #10
  br label %485

423:                                              ; preds = %414, %418
  %indvars.iv.next234 = add nuw nsw i64 %indvars.iv233, 1
  %424 = call noundef i64 @_ZNKSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) @_ZZ4mainE7samplesB5cxx11) #10
  %425 = icmp ugt i64 %424, %indvars.iv.next234
  br i1 %425, label %.lr.ph213, label %.loopexit, !llvm.loop !45

.lr.ph:                                           ; preds = %.preheader200, %428
  %indvars.iv230 = phi i64 [ %indvars.iv.next231, %428 ], [ 0, %.preheader200 ]
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %26) #10
  %426 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) @_ZZ4mainE7samplesB5cxx11, i64 noundef %indvars.iv230) #10
  %427 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %426) #10
  store ptr %427, ptr %26, align 8, !tbaa !15
  invoke void @_ZNSt6vectorIPKcSaIS1_EE9push_backEOS1_(ptr noundef nonnull align 8 dereferenceable(24) @_ZZ4mainE5items, ptr noundef nonnull align 8 dereferenceable(8) %26)
          to label %428 unwind label %431

428:                                              ; preds = %.lr.ph
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %26) #10
  %indvars.iv.next231 = add nuw nsw i64 %indvars.iv230, 1
  %429 = call noundef i64 @_ZNKSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) @_ZZ4mainE7samplesB5cxx11) #10
  %430 = icmp ugt i64 %429, %indvars.iv.next231
  br i1 %430, label %.lr.ph, label %.loopexit, !llvm.loop !46

431:                                              ; preds = %.lr.ph
  %432 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %26) #10
  br label %485

.loopexit:                                        ; preds = %428, %423, %.preheader200, %.preheader, %406
  invoke void @_ZN5ImGui13PushItemWidthEf(float noundef %381)
          to label %433 unwind label %395

433:                                              ; preds = %.loopexit
  %434 = call noundef i64 @_ZNKSt6vectorIPKcSaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) @_ZZ4mainE5items) #10
  %.not169 = icmp eq i64 %434, 0
  br i1 %.not169, label %437, label %435

435:                                              ; preds = %433
  %436 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIPKcSaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) @_ZZ4mainE5items, i64 noundef 0) #10
  br label %437

437:                                              ; preds = %433, %435
  %438 = phi ptr [ %436, %435 ], [ null, %433 ]
  %439 = call noundef i64 @_ZNKSt6vectorIPKcSaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) @_ZZ4mainE5items) #10
  %440 = trunc i64 %439 to i32
  %441 = invoke noundef zeroext i1 @_ZN5ImGui7ListBoxEPKcPiPKS1_ii(ptr noundef nonnull @.str.15, ptr noundef nonnull @_ZZ4mainE12item_current, ptr noundef %438, i32 noundef %440, i32 noundef 25)
          to label %442 unwind label %395

442:                                              ; preds = %437
  invoke void @_ZN5ImGui3EndEv()
          to label %443 unwind label %395

443:                                              ; preds = %442
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %27) #10
  store i8 1, ptr %27, align 1, !tbaa !42
  invoke void @_ZL12ShowMyAppLogPb(ptr noundef nonnull %27)
          to label %444 unwind label %469

444:                                              ; preds = %443
  %445 = load i8, ptr @_ZZ4mainE8firstRun, align 1, !tbaa !42, !range !47, !noundef !48
  %446 = trunc nuw i8 %445 to i1
  br i1 %446, label %447, label %480

447:                                              ; preds = %444
  invoke void @_ZN5ImGui21DockBuilderRemoveNodeEj(i32 noundef %298)
          to label %448 unwind label %469

448:                                              ; preds = %447
  %449 = invoke noundef i32 @_ZN5ImGui18DockBuilderAddNodeEji(i32 noundef %298, i32 noundef 1064)
          to label %450 unwind label %471

450:                                              ; preds = %448
  %451 = invoke noundef ptr @_ZN5ImGui15GetMainViewportEv()
          to label %452 unwind label %471

452:                                              ; preds = %450
  %453 = getelementptr inbounds i8, ptr %451, i64 16
  %.sroa.0.0.copyload = load <2 x float>, ptr %453, align 8
  invoke void @_ZN5ImGui22DockBuilderSetNodeSizeEj6ImVec2(i32 noundef %298, <2 x float> %.sroa.0.0.copyload)
          to label %454 unwind label %471

454:                                              ; preds = %452
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %28) #10
  store i32 %298, ptr %28, align 4, !tbaa !30
  %455 = invoke noundef i32 @_ZN5ImGui20DockBuilderSplitNodeEjifPjS0_(i32 noundef %298, i32 noundef 0, float noundef 0x3FC99999A0000000, ptr noundef null, ptr noundef nonnull %28)
          to label %456 unwind label %473

456:                                              ; preds = %454
  %457 = load i32, ptr %28, align 4, !tbaa !30
  %458 = invoke noundef i32 @_ZN5ImGui20DockBuilderSplitNodeEjifPjS0_(i32 noundef %457, i32 noundef 1, float noundef 0x3FC99999A0000000, ptr noundef null, ptr noundef nonnull %28)
          to label %459 unwind label %475

459:                                              ; preds = %456
  %460 = load i32, ptr %28, align 4, !tbaa !30
  %461 = invoke noundef i32 @_ZN5ImGui20DockBuilderSplitNodeEjifPjS0_(i32 noundef %460, i32 noundef 3, float noundef 0x3FC99999A0000000, ptr noundef null, ptr noundef nonnull %28)
          to label %462 unwind label %477

462:                                              ; preds = %459
  invoke void @_ZN5ImGui21DockBuilderDockWindowEPKcj(ptr noundef nonnull @.str.27, i32 noundef %458)
          to label %463 unwind label %477

463:                                              ; preds = %462
  invoke void @_ZN5ImGui21DockBuilderDockWindowEPKcj(ptr noundef nonnull @.str.36, i32 noundef %458)
          to label %464 unwind label %477

464:                                              ; preds = %463
  invoke void @_ZN5ImGui21DockBuilderDockWindowEPKcj(ptr noundef nonnull @.str.30, i32 noundef %455)
          to label %465 unwind label %477

465:                                              ; preds = %464
  invoke void @_ZN5ImGui21DockBuilderDockWindowEPKcj(ptr noundef nonnull @.str.37, i32 noundef %461)
          to label %466 unwind label %477

466:                                              ; preds = %465
  invoke void @_ZN5ImGui21DockBuilderDockWindowEPKcj(ptr noundef nonnull @.str.38, i32 noundef %461)
          to label %467 unwind label %477

467:                                              ; preds = %466
  invoke void @_ZN5ImGui17DockBuilderFinishEj(i32 noundef %298)
          to label %468 unwind label %477

468:                                              ; preds = %467
  store i8 0, ptr @_ZZ4mainE8firstRun, align 1, !tbaa !42
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %28) #10
  br label %480

469:                                              ; preds = %482, %481, %480, %447, %443
  %470 = landingpad { ptr, i32 }
          cleanup
  br label %484

471:                                              ; preds = %452, %450, %448
  %472 = landingpad { ptr, i32 }
          cleanup
  br label %484

473:                                              ; preds = %454
  %474 = landingpad { ptr, i32 }
          cleanup
  br label %479

475:                                              ; preds = %456
  %476 = landingpad { ptr, i32 }
          cleanup
  br label %479

477:                                              ; preds = %467, %466, %465, %464, %463, %462, %459
  %478 = landingpad { ptr, i32 }
          cleanup
  br label %479

479:                                              ; preds = %475, %477, %473
  %.pn170.pn = phi { ptr, i32 } [ %474, %473 ], [ %478, %477 ], [ %476, %475 ]
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %28) #10
  br label %484

480:                                              ; preds = %468, %444
  invoke void @_ZN5ImGui6RenderEv()
          to label %481 unwind label %469

481:                                              ; preds = %480
  invoke void @_ZN5ImGui8EndFrameEv()
          to label %482 unwind label %469

482:                                              ; preds = %481
  invoke void @_ZN14TinyOpenGL3App11swap_bufferEv(ptr noundef nonnull align 8 dereferenceable(104) %3)
          to label %483 unwind label %469

483:                                              ; preds = %482
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %27) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %15) #10
  call void @_ZN15TinyProfileZoneD2Ev(ptr noundef nonnull align 1 dereferenceable(1) %14) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %14) #10
  br label %204, !llvm.loop !49

484:                                              ; preds = %471, %479, %469
  %.pn174 = phi { ptr, i32 } [ %470, %469 ], [ %.pn170.pn, %479 ], [ %472, %471 ]
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %27) #10
  br label %485

485:                                              ; preds = %289, %295, %311, %313, %335, %484, %317, %315, %391, %395, %404, %431, %421, %419, %393, %339, %345, %389, %337, %309, %293, %291, %288, %282
  %.pn176.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn, %288 ], [ %283, %282 ], [ %290, %289 ], [ %294, %293 ], [ %292, %291 ], [ %296, %295 ], [ %310, %309 ], [ %.pn174, %484 ], [ %336, %335 ], [ %314, %313 ], [ %312, %311 ], [ %316, %315 ], [ %318, %317 ], [ %390, %389 ], [ %338, %337 ], [ %346, %345 ], [ %340, %339 ], [ %392, %391 ], [ %394, %393 ], [ %396, %395 ], [ %432, %431 ], [ %405, %404 ], [ %422, %421 ], [ %420, %419 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %15) #10
  br label %486

486:                                              ; preds = %485, %280
  %.pn176.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn176.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn, %485 ], [ %281, %280 ]
  call void @_ZN15TinyProfileZoneD2Ev(ptr noundef nonnull align 1 dereferenceable(1) %14) #10
  br label %487

487:                                              ; preds = %486, %278
  %.pn176.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn176.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn, %486 ], [ %279, %278 ]
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %14) #10
  br label %490

488:                                              ; preds = %210
  invoke void @_Z42TinyChromeUtilsStopTimingsAndWriteJsonFilePKc(ptr noundef nonnull @.str.39)
          to label %489 unwind label %.loopexit.split-lp

489:                                              ; preds = %488
  call void @_ZNSt6vectorIhSaIhEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %9) #10
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %9) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %8) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %7) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %6) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %5) #10
  call void @_ZN9TinyClockD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %4) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %4) #10
  call void @_ZN14TinyOpenGL3AppD1Ev(ptr noundef nonnull align 8 dereferenceable(104) %3) #10
  call void @llvm.lifetime.end.p0(i64 104, ptr nonnull %3) #10
  ret i32 0

490:                                              ; preds = %.loopexit203, %.loopexit.split-lp, %270, %276, %487, %274, %272, %116
  %.pn176.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %117, %116 ], [ %271, %270 ], [ %275, %274 ], [ %273, %272 ], [ %277, %276 ], [ %.pn176.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn, %487 ], [ %lpad.loopexit, %.loopexit203 ], [ %lpad.loopexit.split-lp, %.loopexit.split-lp ]
  call void @_ZNSt6vectorIhSaIhEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %9) #10
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %9) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %8) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %7) #10
  br label %491

491:                                              ; preds = %490, %114
  %.pn176.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn176.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn, %490 ], [ %115, %114 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %6) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %5) #10
  br label %492

492:                                              ; preds = %112, %491, %110
  %.pn176.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %111, %110 ], [ %.pn176.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn, %491 ], [ %113, %112 ]
  call void @_ZN9TinyClockD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %4) #10
  br label %493

493:                                              ; preds = %492, %108
  %.pn176.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn176.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn, %492 ], [ %109, %108 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %4) #10
  br label %494

494:                                              ; preds = %493, %106
  %.pn176.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn176.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn, %493 ], [ %107, %106 ]
  call void @_ZN14TinyOpenGL3AppD1Ev(ptr noundef nonnull align 8 dereferenceable(104) %3) #10
  call void @llvm.lifetime.end.p0(i64 104, ptr nonnull %3) #10
  resume { ptr, i32 } %.pn176.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn
}

declare void @_ZN14TinyOpenGL3AppC1EPKciibiiii(ptr noundef nonnull align 8 dereferenceable(104), ptr noundef, i32 noundef, i32 noundef, i1 noundef zeroext, i32 noundef, i32 noundef, i32 noundef, i32 noundef) unnamed_addr #2

declare void @_Z27TinyChromeUtilsStartTimingsv() local_unnamed_addr #2

declare void @_ZN9TinyClockC1Ev(ptr noundef nonnull align 8 dereferenceable(8)) unnamed_addr #2

declare void @_ZN9TinyClock5resetEv(ptr noundef nonnull align 8 dereferenceable(8)) local_unnamed_addr #2

declare noundef double @_ZN9TinyClock16get_time_secondsEv(ptr noundef nonnull align 8 dereferenceable(8)) local_unnamed_addr #2

declare void @_ZN14TinyOpenGL3App11set_up_axisEi(ptr noundef nonnull align 8 dereferenceable(104), i32 noundef) unnamed_addr #2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZN4TINY11TinyVector3IfNS_10FloatUtilsEEC2Efff(ptr noundef nonnull align 4 dereferenceable(16), float noundef, float noundef, float noundef) unnamed_addr #6 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN4TINY14TinyQuaternionIfNS_10FloatUtilsEEC2Effff(ptr noundef nonnull align 4 dereferenceable(16), float noundef, float noundef, float noundef, float noundef) unnamed_addr #1 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZNSt6vectorIhSaIhEEC2Ev(ptr noundef nonnull align 8 dereferenceable(24)) unnamed_addr #6 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNSt6vectorIhSaIhEE6resizeEm(ptr noundef nonnull align 8 dereferenceable(24), i64 noundef) local_unnamed_addr #1 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt6vectorIhSaIhEEixEm(ptr noundef nonnull align 8 dereferenceable(24), i64 noundef) local_unnamed_addr #6 align 2

declare noundef i32 @_ZN14TinyOpenGL3App19register_cube_shapeEfffif(ptr noundef nonnull align 8 dereferenceable(104), float noundef, float noundef, float noundef, i32 noundef, float noundef) unnamed_addr #2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZN4TINY11TinyVector3IfNS_10FloatUtilsEE8setValueERKfS4_S4_(ptr noundef nonnull align 4 dereferenceable(16), ptr noundef nonnull align 4 dereferenceable(4), ptr noundef nonnull align 4 dereferenceable(4), ptr noundef nonnull align 4 dereferenceable(4)) local_unnamed_addr #6 align 2

declare noundef i32 @_ZN14TinyOpenGL3App35register_graphics_unit_sphere_shapeE23EnumSphereLevelOfDetaili(ptr noundef nonnull align 8 dereferenceable(104), i32 noundef, i32 noundef) unnamed_addr #2

declare void @_ZN24TinyGLInstancingRenderer16write_transformsEv(ptr noundef nonnull align 8 dereferenceable(60)) local_unnamed_addr #2

declare noundef zeroext i1 @_ZN5ImGui30DebugCheckVersionAndDataLayoutEPKcmmmmmm(ptr noundef, i64 noundef, i64 noundef, i64 noundef, i64 noundef, i64 noundef, i64 noundef) local_unnamed_addr #2

declare noundef ptr @_ZN5ImGui13CreateContextEP11ImFontAtlas(ptr noundef) local_unnamed_addr #2

declare void @_ZN5ImGui15StyleColorsDarkEP10ImGuiStyle(ptr noundef) local_unnamed_addr #2

declare void @_ZN12ImFontConfigC1Ev(ptr noundef nonnull align 8 dereferenceable(136)) unnamed_addr #2

declare noundef ptr @_ZN11ImFontAtlas14AddFontDefaultEPK12ImFontConfig(ptr noundef nonnull align 8 dereferenceable(1144), ptr noundef) local_unnamed_addr #2

declare noundef nonnull align 4 dereferenceable(988) ptr @_ZN5ImGui8GetStyleEv() local_unnamed_addr #2

declare void @_ZN10ImGuiStyle13ScaleAllSizesEf(ptr noundef nonnull align 4 dereferenceable(988), float noundef) local_unnamed_addr #2

declare noundef zeroext i1 @_Z22ImGui_ImplOpenGL3_InitPKc(ptr noundef) local_unnamed_addr #2

declare noundef zeroext i1 @_Z37ImGui_ImplOpenGL3_CreateDeviceObjectsv() local_unnamed_addr #2

declare void @_ZN7imnodes10InitializeEv() local_unnamed_addr #2

declare void @_ZN7imnodes15StyleColorsDarkEv() local_unnamed_addr #2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN15TinyProfileZoneC2EPKc(ptr noundef nonnull align 1 dereferenceable(1), ptr noundef) unnamed_addr #1 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZN12DrawGridDataC2Ei(ptr noundef nonnull align 4 dereferenceable(32), i32 noundef) unnamed_addr #6 align 2

declare void @_ZN14TinyOpenGL3App12draw_text_3dEPKcffff(ptr noundef nonnull align 8 dereferenceable(104), ptr noundef, float noundef, float noundef, float noundef, float noundef) unnamed_addr #2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZN15TinyProfileZoneD2Ev(ptr noundef nonnull align 1 dereferenceable(1)) unnamed_addr #6 align 2

declare void @_Z32ImGui_ImplOpenGL3_RenderDrawDataP10ImDrawData(ptr noundef) #2

declare void @_ZN5ImGui8NewFrameEv() local_unnamed_addr #2

declare void @_ZN5ImGui14ShowDemoWindowEPb(ptr noundef) local_unnamed_addr #2

declare noundef zeroext i1 @_ZN5ImGui6ButtonEPKcRK6ImVec2(ptr noundef, ptr noundef nonnull align 4 dereferenceable(8)) local_unnamed_addr #2

declare void @_ZN5ImGui8SameLineEff(float noundef, float noundef) local_unnamed_addr #2

declare void @_ZN5ImGui4TextEPKcz(ptr noundef, ...) local_unnamed_addr #2

; Function Attrs: nofree nounwind
declare i32 @__cxa_guard_acquire(ptr) local_unnamed_addr #0

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZNSt6vectorIPKcSaIS1_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24)) unnamed_addr #6 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZNSt6vectorIPKcSaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24)) unnamed_addr #6 align 2

; Function Attrs: nofree nounwind
declare void @__cxa_guard_release(ptr) local_unnamed_addr #0

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24)) unnamed_addr #6 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24)) unnamed_addr #6 align 2

declare void @_ZN15ImGuiTextFilterC1EPKc(ptr noundef nonnull align 8 dereferenceable(276), ptr noundef) unnamed_addr #2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local void @_ZN15ImGuiTextFilterD2Ev(ptr noundef nonnull align 8 dereferenceable(276)) unnamed_addr #8 align 2

; Function Attrs: nofree nounwind
declare void @__cxa_guard_abort(ptr) local_unnamed_addr #0

declare <2 x float> @_ZN5ImGui25GetWindowContentRegionMinEv() local_unnamed_addr #2

declare <2 x float> @_ZN5ImGui25GetWindowContentRegionMaxEv() local_unnamed_addr #2

declare void @_ZN5ImGui13PushItemWidthEf(float noundef) local_unnamed_addr #2

declare noundef zeroext i1 @_ZN15ImGuiTextFilter4DrawEPKcf(ptr noundef nonnull align 8 dereferenceable(276), ptr noundef, float noundef) local_unnamed_addr #2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE5clearEv(ptr noundef nonnull align 8 dereferenceable(24)) local_unnamed_addr #6 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZNSt6vectorIPKcSaIS1_EE5clearEv(ptr noundef nonnull align 8 dereferenceable(24)) local_unnamed_addr #6 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef zeroext i1 @_ZNK15ImGuiTextFilter8IsActiveEv(ptr noundef nonnull align 8 dereferenceable(276)) local_unnamed_addr #1 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef i64 @_ZNKSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24)) local_unnamed_addr #6 align 2

declare noundef zeroext i1 @_ZNK15ImGuiTextFilter10PassFilterEPKcS1_(ptr noundef nonnull align 8 dereferenceable(276), ptr noundef, ptr noundef) local_unnamed_addr #2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EEixEm(ptr noundef nonnull align 8 dereferenceable(24), i64 noundef) local_unnamed_addr #6 align 2

; Function Attrs: mustprogress nounwind uwtable
declare noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32)) local_unnamed_addr #6 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNSt6vectorIPKcSaIS1_EE9push_backEOS1_(ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(8)) local_unnamed_addr #1 align 2

declare noundef zeroext i1 @_ZN5ImGui7ListBoxEPKcPiPKS1_ii(ptr noundef, ptr noundef, ptr noundef, i32 noundef, i32 noundef) local_unnamed_addr #2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef i64 @_ZNKSt6vectorIPKcSaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24)) local_unnamed_addr #6 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIPKcSaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24), i64 noundef) local_unnamed_addr #6 align 2

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

declare void @_ZN5ImGui21DockBuilderRemoveNodeEj(i32 noundef) local_unnamed_addr #2

declare noundef i32 @_ZN5ImGui18DockBuilderAddNodeEji(i32 noundef, i32 noundef) local_unnamed_addr #2

declare void @_ZN5ImGui22DockBuilderSetNodeSizeEj6ImVec2(i32 noundef, <2 x float>) local_unnamed_addr #2

declare noundef i32 @_ZN5ImGui20DockBuilderSplitNodeEjifPjS0_(i32 noundef, i32 noundef, float noundef, ptr noundef, ptr noundef) local_unnamed_addr #2

declare void @_ZN5ImGui21DockBuilderDockWindowEPKcj(ptr noundef, i32 noundef) local_unnamed_addr #2

declare void @_ZN5ImGui17DockBuilderFinishEj(i32 noundef) local_unnamed_addr #2

declare void @_ZN5ImGui6RenderEv() local_unnamed_addr #2

declare void @_ZN5ImGui8EndFrameEv() local_unnamed_addr #2

declare void @_ZN14TinyOpenGL3App11swap_bufferEv(ptr noundef nonnull align 8 dereferenceable(104)) unnamed_addr #2

declare void @_Z42TinyChromeUtilsStopTimingsAndWriteJsonFilePKc(ptr noundef) local_unnamed_addr #2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZNSt6vectorIhSaIhEED2Ev(ptr noundef nonnull align 8 dereferenceable(24)) unnamed_addr #6 align 2

; Function Attrs: nounwind
declare void @_ZN9TinyClockD1Ev(ptr noundef nonnull align 8 dereferenceable(8)) unnamed_addr #9

; Function Attrs: nounwind
declare void @_ZN14TinyOpenGL3AppD1Ev(ptr noundef nonnull align 8 dereferenceable(104)) unnamed_addr #9

attributes #0 = { nofree nounwind }
attributes #1 = { mustprogress uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #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 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #4 = { nofree nounwind "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #5 = { mustprogress uwtable "min-legal-vector-width"="64" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #6 = { mustprogress nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #7 = { mustprogress norecurse uwtable "min-legal-vector-width"="64" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #8 = { inlinehint mustprogress nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #9 = { nounwind "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #10 = { 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 16}
!6 = !{!"_ZTS21TinyCommonGraphicsApp", !7, i64 8, !7, i64 16, !7, i64 24, !7, i64 32, !10, i64 40, !10, i64 41, !10, i64 42, !11, i64 44, !11, i64 48, !11, i64 52, !11, i64 56, !10, i64 60, !8, i64 64}
!7 = !{!"any pointer", !8, i64 0}
!8 = !{!"omnipotent char", !9, i64 0}
!9 = !{!"Simple C++ TBAA"}
!10 = !{!"bool", !8, i64 0}
!11 = !{!"float", !8, i64 0}
!12 = !{!13, !13, i64 0}
!13 = !{!"vtable pointer", !9, i64 0}
!14 = !{!6, !7, i64 8}
!15 = !{!7, !7, i64 0}
!16 = !{!8, !8, i64 0}
!17 = distinct !{!17, !18}
!18 = !{!"llvm.loop.mustprogress"}
!19 = !{!20, !7, i64 96}
!20 = !{!"_ZTS14TinyOpenGL3App", !6, i64 0, !7, i64 80, !7, i64 88, !7, i64 96}
!21 = distinct !{!21, !18}
!22 = distinct !{!22, !18}
!23 = !{!11, !11, i64 0}
!24 = !{!25, !26, i64 0}
!25 = !{!"_ZTS7ImGuiIO", !26, i64 0, !26, i64 4, !27, i64 8, !11, i64 16, !11, i64 20, !7, i64 24, !7, i64 32, !11, i64 40, !11, i64 44, !11, i64 48, !8, i64 52, !11, i64 140, !11, i64 144, !7, i64 152, !7, i64 160, !11, i64 168, !10, i64 172, !7, i64 176, !27, i64 184, !10, i64 192, !10, i64 193, !10, i64 194, !10, i64 195, !10, i64 196, !10, i64 197, !10, i64 198, !10, i64 199, !10, i64 200, !10, i64 201, !10, i64 202, !10, i64 203, !10, i64 204, !11, i64 208, !7, i64 216, !7, i64 224, !7, i64 232, !7, i64 240, !7, i64 248, !7, i64 256, !7, i64 264, !7, i64 272, !7, i64 280, !27, i64 288, !8, i64 296, !11, i64 304, !11, i64 308, !26, i64 312, !10, i64 316, !10, i64 317, !10, i64 318, !10, i64 319, !8, i64 320, !8, i64 832, !10, i64 916, !10, i64 917, !10, i64 918, !10, i64 919, !10, i64 920, !10, i64 921, !10, i64 922, !11, i64 924, !26, i64 928, !26, i64 932, !26, i64 936, !26, i64 940, !26, i64 944, !27, i64 948, !26, i64 956, !27, i64 960, !8, i64 968, !8, i64 1008, !8, i64 1048, !8, i64 1053, !8, i64 1058, !8, i64 1063, !8, i64 1068, !8, i64 1076, !8, i64 1096, !8, i64 1116, !8, i64 1156, !8, i64 1176, !8, i64 3224, !8, i64 5272, !8, i64 5356, !11, i64 5440, !28, i64 5444, !29, i64 5448}
!26 = !{!"int", !8, i64 0}
!27 = !{!"_ZTS6ImVec2", !11, i64 0, !11, i64 4}
!28 = !{!"short", !8, i64 0}
!29 = !{!"_ZTS8ImVectorItE", !26, i64 0, !26, i64 4, !7, i64 8}
!30 = !{!26, !26, i64 0}
!31 = !{!32, !11, i64 20}
!32 = !{!"_ZTS12ImFontConfig", !7, i64 0, !26, i64 8, !10, i64 12, !26, i64 16, !11, i64 20, !26, i64 24, !26, i64 28, !10, i64 32, !27, i64 36, !27, i64 44, !7, i64 56, !11, i64 64, !11, i64 68, !10, i64 72, !26, i64 76, !11, i64 80, !28, i64 84, !8, i64 86, !7, i64 128}
!33 = !{!25, !7, i64 160}
!34 = !{!35, !11, i64 68}
!35 = !{!"_ZTS6ImFont", !36, i64 0, !11, i64 16, !11, i64 20, !29, i64 24, !37, i64 40, !7, i64 56, !27, i64 64, !7, i64 72, !7, i64 80, !28, i64 88, !28, i64 90, !28, i64 92, !10, i64 94, !11, i64 96, !11, i64 100, !11, i64 104, !26, i64 108, !8, i64 112}
!36 = !{!"_ZTS8ImVectorIfE", !26, i64 0, !26, i64 4, !7, i64 8}
!37 = !{!"_ZTS8ImVectorI11ImFontGlyphE", !26, i64 0, !26, i64 4, !7, i64 8}
!38 = !{!39, !26, i64 8}
!39 = !{!"_ZTS12DrawGridData", !26, i64 0, !11, i64 4, !26, i64 8, !10, i64 12, !8, i64 16}
!40 = !{!25, !11, i64 16}
!41 = !{!25, !7, i64 280}
!42 = !{!10, !10, i64 0}
!43 = !{!25, !11, i64 304}
!44 = !{!"branch_weights", i32 1, i32 1048575}
!45 = distinct !{!45, !18}
!46 = distinct !{!46, !18}
!47 = !{i8 0, i8 2}
!48 = !{}
!49 = distinct !{!49, !18}


; Effective O3 passes: EarlyCSEPass,GVNPass,GlobalOptPass,IPSCCPPass,IndVarSimplifyPass,InferAlignmentPass,InferFunctionAttrsPass,InstCombinePass,JumpThreadingPass,LICMPass,LoopRotatePass,LoopSimplifyPass,LoopUnrollPass,PostOrderFunctionAttrsPass,ReassociatePass,SLPVectorizerPass,SROAPass,SimplifyCFGPass,VectorCombinePass