; LLVM IR from erwincoumans/tiny-differentiable-simulator :: src/visualizer/opengl (tiny_gl_instancing_renderer)

; Unoptimized IR (clang -disable-llvm-passes):
target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-i128:128-f80:128-n8:16:32:64-S128"
target triple = "x86_64-unknown-linux-gnu"

%"struct.TINY::TinyVector3" = type { float, float, float, i32 }
%"class.std::vector.26" = type { %"struct.std::_Vector_base.27" }
%"struct.std::_Vector_base.27" = type { %"struct.std::_Vector_base<SortableTransparentInstance, std::allocator<SortableTransparentInstance>>::_Vector_impl" }
%"struct.std::_Vector_base<SortableTransparentInstance, std::allocator<SortableTransparentInstance>>::_Vector_impl" = type { %"struct.std::_Vector_base<SortableTransparentInstance, std::allocator<SortableTransparentInstance>>::_Vector_impl_data" }
%"struct.std::_Vector_base<SortableTransparentInstance, std::allocator<SortableTransparentInstance>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%struct.SortableTransparentInstance = type { float, i32, i32 }
%struct.TransparentDistanceSortPredicate = type { i8 }
%"class.__gnu_cxx::__normal_iterator" = type { ptr }
%struct.PointerCaster = type { %union.anon.25 }
%union.anon.25 = type { ptr }
%class.TinyGLInstancingRenderer = type <{ ptr, %"class.std::vector", ptr, i8, i8, [2 x i8], i32, i32, i32, i32, [4 x i8] }>
%"class.std::vector" = type { %"struct.std::_Vector_base" }
%"struct.std::_Vector_base" = type { %"struct.std::_Vector_base<b3GraphicsInstance *, std::allocator<b3GraphicsInstance *>>::_Vector_impl" }
%"struct.std::_Vector_base<b3GraphicsInstance *, std::allocator<b3GraphicsInstance *>>::_Vector_impl" = type { %"struct.std::_Vector_base<b3GraphicsInstance *, std::allocator<b3GraphicsInstance *>>::_Vector_impl_data" }
%"struct.std::_Vector_base<b3GraphicsInstance *, std::allocator<b3GraphicsInstance *>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%struct.InternalDataRenderer = type <{ %struct.GLInstanceRendererInternalData.base, [4 x i8], %struct.TinyCamera, ptr, [16 x float], [16 x float], [16 x float], [16 x float], [16 x float], i8, [3 x i8], %"struct.TINY::TinyVector3", %"struct.TINY::TinyVector3", i32, %"class.std::vector.5", ptr, i32, i32, %class.TinyResizablePool, i32, i32, float, i8, [3 x i8] }>
%struct.GLInstanceRendererInternalData.base = type <{ %"class.std::vector.0", %"class.std::vector.0", %"class.std::vector.0", %"class.std::vector.0", i32, i32, i32, i32, i32 }>
%"class.std::vector.0" = type { %"struct.std::_Vector_base.1" }
%"struct.std::_Vector_base.1" = type { %"struct.std::_Vector_base<float, std::allocator<float>>::_Vector_impl" }
%"struct.std::_Vector_base<float, std::allocator<float>>::_Vector_impl" = type { %"struct.std::_Vector_base<float, std::allocator<float>>::_Vector_impl_data" }
%"struct.std::_Vector_base<float, std::allocator<float>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%struct.TinyCamera = type { ptr, ptr }
%"class.std::vector.5" = type { %"struct.std::_Vector_base.6" }
%"struct.std::_Vector_base.6" = type { %"struct.std::_Vector_base<InternalTextureHandle, std::allocator<InternalTextureHandle>>::_Vector_impl" }
%"struct.std::_Vector_base<InternalTextureHandle, std::allocator<InternalTextureHandle>>::_Vector_impl" = type { %"struct.std::_Vector_base<InternalTextureHandle, std::allocator<InternalTextureHandle>>::_Vector_impl_data" }
%"struct.std::_Vector_base<InternalTextureHandle, std::allocator<InternalTextureHandle>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%class.TinyResizablePool = type { ptr, %"class.std::vector.10", i32, i32 }
%"class.std::vector.10" = type { %"struct.std::_Vector_base.11" }
%"struct.std::_Vector_base.11" = type { %"struct.std::_Vector_base<TinyPoolBodyHandle<TinyPublicGraphicsInstanceData>, std::allocator<TinyPoolBodyHandle<TinyPublicGraphicsInstanceData>>>::_Vector_impl" }
%"struct.std::_Vector_base<TinyPoolBodyHandle<TinyPublicGraphicsInstanceData>, std::allocator<TinyPoolBodyHandle<TinyPublicGraphicsInstanceData>>>::_Vector_impl" = type { %"struct.std::_Vector_base<TinyPoolBodyHandle<TinyPublicGraphicsInstanceData>, std::allocator<TinyPoolBodyHandle<TinyPublicGraphicsInstanceData>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<TinyPoolBodyHandle<TinyPublicGraphicsInstanceData>, std::allocator<TinyPoolBodyHandle<TinyPublicGraphicsInstanceData>>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%struct.GLInstanceRendererInternalData = type <{ %"class.std::vector.0", %"class.std::vector.0", %"class.std::vector.0", %"class.std::vector.0", i32, i32, i32, i32, i32, [4 x i8] }>
%struct.b3GraphicsInstance = type <{ i32, i32, i32, i32, i32, i32, %"class.std::vector.15", i32, i32, i32, float, %"struct.TINY::TinyVector3", i32, [4 x i8] }>
%"class.std::vector.15" = type { %"struct.std::_Vector_base.16" }
%"struct.std::_Vector_base.16" = type { %"struct.std::_Vector_base<int, std::allocator<int>>::_Vector_impl" }
%"struct.std::_Vector_base<int, std::allocator<int>>::_Vector_impl" = type { %"struct.std::_Vector_base<int, std::allocator<int>>::_Vector_impl_data" }
%"struct.std::_Vector_base<int, std::allocator<int>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%struct.InternalTextureHandle = type { i32, i32, i32, i32 }

@useShadowMap = external dso_local global i8, align 1
@glad_glDeleteTextures = external global ptr, align 8
@.str.1 = external hidden unnamed_addr constant [130 x i8], align 1
@glad_glBindBuffer = external global ptr, align 8
@glad_glGetError = external global ptr, align 8
@.str.4 = external hidden unnamed_addr constant [28 x i8], align 1
@glad_glActiveTexture = external global ptr, align 8
@glad_glGenTextures = external global ptr, align 8
@glad_glBindTexture = external global ptr, align 8
@glad_glTexImage2D = external global ptr, align 8
@glad_glBindVertexArray = external global ptr, align 8
@glad_glUseProgram = external global ptr, align 8
@glad_glGetIntegerv = external global ptr, align 8
@_ZL33projectiveTextureInstancingShader = external hidden global i32, align 4
@_ZL40projectiveTexture_lightSpecularIntensity = external hidden global i32, align 4
@_ZL39projectiveTexture_materialSpecularColor = external hidden global i32, align 4
@_ZL21projectiveTexture_MVP = external hidden global i32, align 4
@_ZL34projectiveTexture_ProjectionMatrix = external hidden global i32, align 4
@_ZL28projectiveTexture_TextureMVP = external hidden global i32, align 4
@_ZL28projectiveTexture_lightPosIn = external hidden global i32, align 4
@_ZL34projectiveTexture_cameraPositionIn = external hidden global i32, align 4
@_ZL37projectiveTexture_materialShininessIn = external hidden global i32, align 4
@_ZL28useShadowMapInstancingShader = external hidden global i32, align 4
@_ZL32useShadow_lightSpecularIntensity = external hidden global i32, align 4
@_ZL31useShadow_materialSpecularColor = external hidden global i32, align 4
@_ZL13useShadow_MVP = external hidden global i32, align 4
@_ZL26useShadow_ProjectionMatrix = external hidden global i32, align 4
@_ZL34useShadow_DepthBiasModelViewMatrix = external hidden global i32, align 4
@_ZL19useShadow_shadowMap = external hidden global i32, align 4
@_ZL20useShadow_lightPosIn = external hidden global i32, align 4
@_ZL26useShadow_cameraPositionIn = external hidden global i32, align 4
@_ZL29useShadow_materialShininessIn = external hidden global i32, align 4
@_ZL31createShadowMapInstancingShader = external hidden global i32, align 4
@_ZL21createShadow_depthMVP = external hidden global i32, align 4
@_ZL32segmentationMaskInstancingShader = external hidden global i32, align 4
@_ZL31segmentationMaskModelViewMatrix = external hidden global i32, align 4
@_ZL32segmentationMaskProjectionMatrix = external hidden global i32, align 4
@_ZL16instancingShader = external hidden global i32, align 4
@_ZL15ModelViewMatrix = external hidden global i32, align 4
@_ZL16ProjectionMatrix = external hidden global i32, align 4
@_ZL23uniform_texture_diffuse = external hidden global i32, align 4
@_ZL17regularLightDirIn = external hidden global i32, align 4
@_ZL27instancingShaderPointSprite = external hidden global i32, align 4
@_ZL26ModelViewMatrixPointSprite = external hidden global i32, align 4
@_ZL27ProjectionMatrixPointSprite = external hidden global i32, align 4
@_ZL22screenWidthPointSprite = external hidden global i32, align 4
@glad_glEnable = external global ptr, align 8
@glad_glDisable = external global ptr, align 8
@glad_glUniformMatrix4fv = external global ptr, align 8
@glad_glUniform3f = external global ptr, align 8
@glad_glVertexAttribPointer = external global ptr, align 8
@glad_glEnableVertexAttribArray = external global ptr, align 8
@glad_glVertexAttribDivisor = external global ptr, align 8
@glad_glDrawElements = external global ptr, align 8
@glad_glPointSize = external global ptr, align 8
@__PRETTY_FUNCTION__._ZN24TinyGLInstancingRenderer21render_scene_internalEi = external hidden unnamed_addr constant [66 x i8], align 1
@glad_glCullFace = external global ptr, align 8
@glad_glTexParameteri = external global ptr, align 8
@__const._ZN24TinyGLInstancingRenderer21render_scene_internalEi.l_ClampColor = external hidden unnamed_addr constant [4 x float], align 16
@glad_glTexParameterfv = external global ptr, align 8
@glad_glViewport = external global ptr, align 8
@glad_glClear = external global ptr, align 8
@__const._ZN24TinyGLInstancingRenderer21render_scene_internalEi.biasMatrix = external hidden unnamed_addr constant [4 x [4 x float]], align 16
@glad_glUniform1f = external global ptr, align 8
@glad_glDrawElementsInstanced = external global ptr, align 8
@glad_glDepthMask = external global ptr, align 8
@glad_glBlendFunc = external global ptr, align 8
@glad_glUniform1i = external global ptr, align 8
@glad_glBindFramebuffer = external global ptr, align 8

; Function Attrs: nobuiltin allocsize(0)
declare noundef nonnull ptr @_Znwm(i64 noundef) #0

declare i32 @__gxx_personality_v0(...)

; Function Attrs: nobuiltin nounwind
declare void @_ZdlPvm(ptr noundef, i64 noundef) #1

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

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

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

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

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

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef nonnull align 4 dereferenceable(4) ptr @_ZN4TINY11TinyVector3IfNS_10FloatUtilsEEixEi(ptr noundef nonnull align 4 dereferenceable(16), i32 noundef) #5 align 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 #3 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 4 dereferenceable(16) ptr @_ZNSt6vectorI21InternalTextureHandleSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24), i64 noundef) #3 align 2

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

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

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN24TinyGLInstancingRenderer21render_scene_internalEi(ptr noundef nonnull align 8 dereferenceable(60) %0, i32 noundef %1) unnamed_addr #6 align 2 personality ptr @__gxx_personality_v0 {
  %3 = alloca ptr, align 8
  %4 = alloca i32, align 4
  %5 = alloca i32, align 4
  %6 = alloca i8, align 1
  %7 = alloca i8, align 1
  %8 = alloca [4 x i32], align 16
  %9 = alloca [4 x [4 x float]], align 16
  %10 = alloca [4 x [4 x float]], align 16
  %11 = alloca i32, align 4
  %12 = alloca i32, align 4
  %13 = alloca [4 x float], align 16
  %14 = alloca ptr, align 8
  %15 = alloca i32, align 4
  %16 = alloca [4 x [4 x float]], align 16
  %17 = alloca %"struct.TINY::TinyVector3", align 4
  %18 = alloca %"struct.TINY::TinyVector3", align 4
  %19 = alloca %"struct.TINY::TinyVector3", align 4
  %20 = alloca %"struct.TINY::TinyVector3", align 4
  %21 = alloca %"struct.TINY::TinyVector3", align 4
  %22 = alloca [4 x [4 x float]], align 16
  %23 = alloca [4 x [4 x float]], align 16
  %24 = alloca [4 x [4 x float]], align 16
  %25 = alloca [4 x [4 x float]], align 16
  %26 = alloca [16 x float], align 16
  %27 = alloca i32, align 4
  %28 = alloca i32, align 4
  %29 = alloca %"class.std::vector.26", align 8
  %30 = alloca i32, align 4
  %31 = alloca [3 x float], align 4
  %32 = alloca %"struct.TINY::TinyVector3", align 4
  %33 = alloca i32, align 4
  %34 = alloca i32, align 4
  %35 = alloca ptr, align 8
  %36 = alloca %struct.SortableTransparentInstance, align 4
  %37 = alloca %"struct.TINY::TinyVector3", align 4
  %38 = alloca i32, align 4
  %39 = alloca %"struct.TINY::TinyVector3", align 4
  %40 = alloca %struct.TransparentDistanceSortPredicate, align 1
  %41 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %42 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %43 = alloca %struct.TransparentDistanceSortPredicate, align 1
  %44 = alloca i32, align 4
  %45 = alloca i32, align 4
  %46 = alloca i32, align 4
  %47 = alloca ptr, align 8
  %48 = alloca i32, align 4
  %49 = alloca i32, align 4
  %50 = alloca i32, align 4
  %51 = alloca i32, align 4
  %52 = alloca i32, align 4
  %53 = alloca i32, align 4
  %54 = alloca %struct.PointerCaster, align 8
  %55 = alloca %struct.PointerCaster, align 8
  %56 = alloca %struct.PointerCaster, align 8
  %57 = alloca i32, align 4
  %58 = alloca ptr, align 8
  %59 = alloca %"struct.TINY::TinyVector3", align 4
  %60 = alloca i32, align 4
  %61 = alloca [16 x float], align 16
  %62 = alloca [16 x float], align 16
  %63 = alloca [16 x float], align 16
  %64 = alloca %"struct.TINY::TinyVector3", align 4
  %65 = alloca i32, align 4
  %66 = alloca [16 x float], align 16
  %67 = alloca [16 x float], align 16
  %68 = alloca [16 x float], align 16
  %69 = alloca %"struct.TINY::TinyVector3", align 4
  %70 = alloca i32, align 4
  store ptr %0, ptr %3, align 8, !tbaa !5
  store i32 %1, ptr %4, align 4, !tbaa !9
  %71 = load ptr, ptr %3, align 8
  call void @llvm.lifetime.start.p0(i64 4, ptr %5) #11
  %72 = load i32, ptr %4, align 4, !tbaa !9
  store i32 %72, ptr %5, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 1, ptr %6) #11
  store i8 0, ptr %6, align 1, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 1, ptr %7) #11
  store i8 0, ptr %7, align 1, !tbaa !11
  %73 = load i32, ptr %4, align 4, !tbaa !9
  %74 = icmp eq i32 %73, 5
  br i1 %74, label %75, label %76

75:                                               ; preds = %2
  store i8 1, ptr %7, align 1, !tbaa !11
  store i32 3, ptr %5, align 4, !tbaa !9
  br label %76

76:                                               ; preds = %75, %2
  %77 = load i32, ptr %4, align 4, !tbaa !9
  %78 = icmp eq i32 %77, 4
  br i1 %78, label %79, label %80

79:                                               ; preds = %76
  store i8 1, ptr %6, align 1, !tbaa !11
  store i32 3, ptr %5, align 4, !tbaa !9
  br label %80

80:                                               ; preds = %79, %76
  %81 = load i8, ptr @useShadowMap, align 1, !tbaa !11, !range !13, !noundef !14
  %82 = trunc i8 %81 to i1
  br i1 %82, label %85, label %83

83:                                               ; preds = %80
  %84 = load i32, ptr %4, align 4, !tbaa !9
  store i32 %84, ptr %5, align 4, !tbaa !9
  br label %85

85:                                               ; preds = %83, %80
  %86 = load i32, ptr %4, align 4, !tbaa !9
  %87 = icmp eq i32 %86, 6
  br i1 %87, label %88, label %89

88:                                               ; preds = %85
  store i32 6, ptr %5, align 4, !tbaa !9
  br label %89

89:                                               ; preds = %88, %85
  call void @llvm.lifetime.start.p0(i64 16, ptr %8) #11
  %90 = load ptr, ptr @glad_glGetIntegerv, align 8, !tbaa !5
  %91 = getelementptr inbounds [4 x i32], ptr %8, i64 0, i64 0
  call void %90(i32 noundef 2978, ptr noundef %91)
  %92 = load ptr, ptr @glad_glEnable, align 8, !tbaa !5
  call void %92(i32 noundef 2884)
  %93 = load ptr, ptr %71, align 8, !tbaa !15
  %94 = getelementptr inbounds ptr, ptr %93, i64 2
  %95 = load ptr, ptr %94, align 8
  call void %95(ptr noundef nonnull align 8 dereferenceable(60) %71)
  %96 = load ptr, ptr @glad_glGetError, align 8, !tbaa !5
  %97 = call i32 %96()
  %98 = icmp eq i32 %97, 0
  br i1 %98, label %99, label %100

99:                                               ; preds = %89
  br label %102

100:                                              ; preds = %89
  call void @__assert_fail(ptr noundef @.str.4, ptr noundef @.str.1, i32 noundef 2071, ptr noundef @__PRETTY_FUNCTION__._ZN24TinyGLInstancingRenderer21render_scene_internalEi) #12
  unreachable

101:                                              ; No predecessors!
  br label %102

102:                                              ; preds = %101, %99
  call void @llvm.lifetime.start.p0(i64 64, ptr %9) #11
  call void @llvm.lifetime.start.p0(i64 64, ptr %10) #11
  %103 = load i32, ptr %5, align 4, !tbaa !9
  %104 = icmp eq i32 %103, 2
  br i1 %104, label %105, label %278

105:                                              ; preds = %102
  %106 = load ptr, ptr @glad_glEnable, align 8, !tbaa !5
  call void %106(i32 noundef 2884)
  %107 = load ptr, ptr @glad_glCullFace, align 8, !tbaa !5
  call void %107(i32 noundef 1028)
  %108 = getelementptr inbounds %class.TinyGLInstancingRenderer, ptr %71, i32 0, i32 2
  %109 = load ptr, ptr %108, align 8, !tbaa !17
  %110 = getelementptr inbounds %struct.InternalDataRenderer, ptr %109, i32 0, i32 15
  %111 = load ptr, ptr %110, align 8, !tbaa !23
  %112 = icmp ne ptr %111, null
  br i1 %112, label %113, label %140

113:                                              ; preds = %105
  %114 = getelementptr inbounds %class.TinyGLInstancingRenderer, ptr %71, i32 0, i32 2
  %115 = load ptr, ptr %114, align 8, !tbaa !17
  %116 = getelementptr inbounds %struct.InternalDataRenderer, ptr %115, i32 0, i32 22
  %117 = load i8, ptr %116, align 4, !tbaa !42, !range !13, !noundef !14
  %118 = trunc i8 %117 to i1
  br i1 %118, label %119, label %140

119:                                              ; preds = %113
  %120 = getelementptr inbounds %class.TinyGLInstancingRenderer, ptr %71, i32 0, i32 2
  %121 = load ptr, ptr %120, align 8, !tbaa !17
  %122 = getelementptr inbounds %struct.InternalDataRenderer, ptr %121, i32 0, i32 22
  store i8 0, ptr %122, align 4, !tbaa !42
  %123 = load ptr, ptr @glad_glDeleteTextures, align 8, !tbaa !5
  %124 = getelementptr inbounds %class.TinyGLInstancingRenderer, ptr %71, i32 0, i32 2
  %125 = load ptr, ptr %124, align 8, !tbaa !17
  %126 = getelementptr inbounds %struct.InternalDataRenderer, ptr %125, i32 0, i32 16
  call void %123(i32 noundef 1, ptr noundef %126)
  %127 = getelementptr inbounds %class.TinyGLInstancingRenderer, ptr %71, i32 0, i32 2
  %128 = load ptr, ptr %127, align 8, !tbaa !17
  %129 = getelementptr inbounds %struct.InternalDataRenderer, ptr %128, i32 0, i32 15
  %130 = load ptr, ptr %129, align 8, !tbaa !23
  %131 = icmp eq ptr %130, null
  br i1 %131, label %136, label %132

132:                                              ; preds = %119
  %133 = load ptr, ptr %130, align 8, !tbaa !15
  %134 = getelementptr inbounds ptr, ptr %133, i64 1
  %135 = load ptr, ptr %134, align 8
  call void %135(ptr noundef nonnull align 8 dereferenceable(24) %130) #11
  br label %136

136:                                              ; preds = %132, %119
  %137 = getelementptr inbounds %class.TinyGLInstancingRenderer, ptr %71, i32 0, i32 2
  %138 = load ptr, ptr %137, align 8, !tbaa !17
  %139 = getelementptr inbounds %struct.InternalDataRenderer, ptr %138, i32 0, i32 15
  store ptr null, ptr %139, align 8, !tbaa !23
  br label %140

140:                                              ; preds = %136, %113, %105
  %141 = getelementptr inbounds %class.TinyGLInstancingRenderer, ptr %71, i32 0, i32 2
  %142 = load ptr, ptr %141, align 8, !tbaa !17
  %143 = getelementptr inbounds %struct.InternalDataRenderer, ptr %142, i32 0, i32 15
  %144 = load ptr, ptr %143, align 8, !tbaa !23
  %145 = icmp ne ptr %144, null
  br i1 %145, label %253, label %146

146:                                              ; preds = %140
  %147 = load ptr, ptr @glad_glActiveTexture, align 8, !tbaa !5
  call void %147(i32 noundef 33984)
  %148 = load ptr, ptr @glad_glGenTextures, align 8, !tbaa !5
  %149 = getelementptr inbounds %class.TinyGLInstancingRenderer, ptr %71, i32 0, i32 2
  %150 = load ptr, ptr %149, align 8, !tbaa !17
  %151 = getelementptr inbounds %struct.InternalDataRenderer, ptr %150, i32 0, i32 16
  call void %148(i32 noundef 1, ptr noundef %151)
  %152 = load ptr, ptr @glad_glBindTexture, align 8, !tbaa !5
  %153 = getelementptr inbounds %class.TinyGLInstancingRenderer, ptr %71, i32 0, i32 2
  %154 = load ptr, ptr %153, align 8, !tbaa !17
  %155 = getelementptr inbounds %struct.InternalDataRenderer, ptr %154, i32 0, i32 16
  %156 = load i32, ptr %155, align 8, !tbaa !43
  call void %152(i32 noundef 3553, i32 noundef %156)
  call void @llvm.lifetime.start.p0(i64 4, ptr %11) #11
  %157 = load ptr, ptr @glad_glGetIntegerv, align 8, !tbaa !5
  call void %157(i32 noundef 3379, ptr noundef %11)
  %158 = load i32, ptr %11, align 4, !tbaa !9
  %159 = getelementptr inbounds %class.TinyGLInstancingRenderer, ptr %71, i32 0, i32 2
  %160 = load ptr, ptr %159, align 8, !tbaa !17
  %161 = getelementptr inbounds %struct.InternalDataRenderer, ptr %160, i32 0, i32 19
  %162 = load i32, ptr %161, align 8, !tbaa !44
  %163 = icmp slt i32 %158, %162
  br i1 %163, label %164, label %169

164:                                              ; preds = %146
  %165 = load i32, ptr %11, align 4, !tbaa !9
  %166 = getelementptr inbounds %class.TinyGLInstancingRenderer, ptr %71, i32 0, i32 2
  %167 = load ptr, ptr %166, align 8, !tbaa !17
  %168 = getelementptr inbounds %struct.InternalDataRenderer, ptr %167, i32 0, i32 19
  store i32 %165, ptr %168, align 8, !tbaa !44
  br label %169

169:                                              ; preds = %164, %146
  %170 = load i32, ptr %11, align 4, !tbaa !9
  %171 = getelementptr inbounds %class.TinyGLInstancingRenderer, ptr %71, i32 0, i32 2
  %172 = load ptr, ptr %171, align 8, !tbaa !17
  %173 = getelementptr inbounds %struct.InternalDataRenderer, ptr %172, i32 0, i32 20
  %174 = load i32, ptr %173, align 4, !tbaa !45
  %175 = icmp slt i32 %170, %174
  br i1 %175, label %176, label %181

176:                                              ; preds = %169
  %177 = load i32, ptr %11, align 4, !tbaa !9
  %178 = getelementptr inbounds %class.TinyGLInstancingRenderer, ptr %71, i32 0, i32 2
  %179 = load ptr, ptr %178, align 8, !tbaa !17
  %180 = getelementptr inbounds %struct.InternalDataRenderer, ptr %179, i32 0, i32 20
  store i32 %177, ptr %180, align 4, !tbaa !45
  br label %181

181:                                              ; preds = %176, %169
  call void @llvm.lifetime.start.p0(i64 4, ptr %12) #11
  br label %182

182:                                              ; preds = %217, %181
  %183 = load ptr, ptr @glad_glTexImage2D, align 8, !tbaa !5
  %184 = getelementptr inbounds %class.TinyGLInstancingRenderer, ptr %71, i32 0, i32 2
  %185 = load ptr, ptr %184, align 8, !tbaa !17
  %186 = getelementptr inbounds %struct.InternalDataRenderer, ptr %185, i32 0, i32 19
  %187 = load i32, ptr %186, align 8, !tbaa !44
  %188 = getelementptr inbounds %class.TinyGLInstancingRenderer, ptr %71, i32 0, i32 2
  %189 = load ptr, ptr %188, align 8, !tbaa !17
  %190 = getelementptr inbounds %struct.InternalDataRenderer, ptr %189, i32 0, i32 20
  %191 = load i32, ptr %190, align 4, !tbaa !45
  call void %183(i32 noundef 3553, i32 noundef 0, i32 noundef 33189, i32 noundef %187, i32 noundef %191, i32 noundef 0, i32 noundef 6402, i32 noundef 5126, ptr noundef null)
  %192 = load ptr, ptr @glad_glGetError, align 8, !tbaa !5
  %193 = call i32 %192()
  store i32 %193, ptr %12, align 4, !tbaa !9
  %194 = load i32, ptr %12, align 4, !tbaa !9
  %195 = icmp ne i32 %194, 0
  br i1 %195, label %196, label %207

196:                                              ; preds = %182
  %197 = getelementptr inbounds %class.TinyGLInstancingRenderer, ptr %71, i32 0, i32 2
  %198 = load ptr, ptr %197, align 8, !tbaa !17
  %199 = getelementptr inbounds %struct.InternalDataRenderer, ptr %198, i32 0, i32 20
  %200 = load i32, ptr %199, align 4, !tbaa !45
  %201 = ashr i32 %200, 1
  store i32 %201, ptr %199, align 4, !tbaa !45
  %202 = getelementptr inbounds %class.TinyGLInstancingRenderer, ptr %71, i32 0, i32 2
  %203 = load ptr, ptr %202, align 8, !tbaa !17
  %204 = getelementptr inbounds %struct.InternalDataRenderer, ptr %203, i32 0, i32 19
  %205 = load i32, ptr %204, align 8, !tbaa !44
  %206 = ashr i32 %205, 1
  store i32 %206, ptr %204, align 8, !tbaa !44
  br label %207

207:                                              ; preds = %196, %182
  br label %208

208:                                              ; preds = %207
  %209 = load i32, ptr %12, align 4, !tbaa !9
  %210 = icmp ne i32 %209, 0
  br i1 %210, label %211, label %217

211:                                              ; preds = %208
  %212 = getelementptr inbounds %class.TinyGLInstancingRenderer, ptr %71, i32 0, i32 2
  %213 = load ptr, ptr %212, align 8, !tbaa !17
  %214 = getelementptr inbounds %struct.InternalDataRenderer, ptr %213, i32 0, i32 19
  %215 = load i32, ptr %214, align 8, !tbaa !44
  %216 = icmp sgt i32 %215, 0
  br label %217

217:                                              ; preds = %211, %208
  %218 = phi i1 [ false, %208 ], [ %216, %211 ]
  br i1 %218, label %182, label %219, !llvm.loop !46

219:                                              ; preds = %217
  %220 = load ptr, ptr @glad_glTexParameteri, align 8, !tbaa !5
  call void %220(i32 noundef 3553, i32 noundef 10240, i32 noundef 9729)
  %221 = load ptr, ptr @glad_glTexParameteri, align 8, !tbaa !5
  call void %221(i32 noundef 3553, i32 noundef 10241, i32 noundef 9729)
  call void @llvm.lifetime.start.p0(i64 16, ptr %13) #11
  call void @llvm.memcpy.p0.p0.i64(ptr align 16 %13, ptr align 16 @__const._ZN24TinyGLInstancingRenderer21render_scene_internalEi.l_ClampColor, i64 16, i1 false)
  %222 = load ptr, ptr @glad_glTexParameterfv, align 8, !tbaa !5
  %223 = getelementptr inbounds [4 x float], ptr %13, i64 0, i64 0
  call void %222(i32 noundef 3553, i32 noundef 4100, ptr noundef %223)
  %224 = load ptr, ptr @glad_glTexParameteri, align 8, !tbaa !5
  call void %224(i32 noundef 3553, i32 noundef 10242, i32 noundef 33069)
  %225 = load ptr, ptr @glad_glTexParameteri, align 8, !tbaa !5
  call void %225(i32 noundef 3553, i32 noundef 10243, i32 noundef 33069)
  %226 = load ptr, ptr @glad_glTexParameteri, align 8, !tbaa !5
  call void %226(i32 noundef 3553, i32 noundef 34893, i32 noundef 515)
  %227 = load ptr, ptr @glad_glTexParameteri, align 8, !tbaa !5
  call void %227(i32 noundef 3553, i32 noundef 34892, i32 noundef 34894)
  %228 = call noalias noundef nonnull ptr @_Znwm(i64 noundef 24) #13
  invoke void @_ZN17GLRenderToTextureC1Ev(ptr noundef nonnull align 8 dereferenceable(24) %228)
          to label %229 unwind label %249

229:                                              ; preds = %219
  %230 = getelementptr inbounds %class.TinyGLInstancingRenderer, ptr %71, i32 0, i32 2
  %231 = load ptr, ptr %230, align 8, !tbaa !17
  %232 = getelementptr inbounds %struct.InternalDataRenderer, ptr %231, i32 0, i32 15
  store ptr %228, ptr %232, align 8, !tbaa !23
  %233 = getelementptr inbounds %class.TinyGLInstancingRenderer, ptr %71, i32 0, i32 2
  %234 = load ptr, ptr %233, align 8, !tbaa !17
  %235 = getelementptr inbounds %struct.InternalDataRenderer, ptr %234, i32 0, i32 15
  %236 = load ptr, ptr %235, align 8, !tbaa !23
  %237 = getelementptr inbounds %class.TinyGLInstancingRenderer, ptr %71, i32 0, i32 2
  %238 = load ptr, ptr %237, align 8, !tbaa !17
  %239 = getelementptr inbounds %struct.InternalDataRenderer, ptr %238, i32 0, i32 19
  %240 = load i32, ptr %239, align 8, !tbaa !44
  %241 = getelementptr inbounds %class.TinyGLInstancingRenderer, ptr %71, i32 0, i32 2
  %242 = load ptr, ptr %241, align 8, !tbaa !17
  %243 = getelementptr inbounds %struct.InternalDataRenderer, ptr %242, i32 0, i32 20
  %244 = load i32, ptr %243, align 4, !tbaa !45
  %245 = getelementptr inbounds %class.TinyGLInstancingRenderer, ptr %71, i32 0, i32 2
  %246 = load ptr, ptr %245, align 8, !tbaa !17
  %247 = getelementptr inbounds %struct.InternalDataRenderer, ptr %246, i32 0, i32 16
  %248 = load i32, ptr %247, align 8, !tbaa !43
  call void @_ZN17GLRenderToTexture4initEiiji(ptr noundef nonnull align 8 dereferenceable(24) %236, i32 noundef %240, i32 noundef %244, i32 noundef %248, i32 noundef 2)
  call void @llvm.lifetime.end.p0(i64 16, ptr %13) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr %12) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr %11) #11
  br label %253

249:                                              ; preds = %219
  %250 = landingpad { ptr, i32 }
          cleanup
  %251 = extractvalue { ptr, i32 } %250, 0
  store ptr %251, ptr %14, align 8
  %252 = extractvalue { ptr, i32 } %250, 1
  store i32 %252, ptr %15, align 4
  call void @_ZdlPvm(ptr noundef %228, i64 noundef 24) #14
  call void @llvm.lifetime.end.p0(i64 16, ptr %13) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr %12) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr %11) #11
  br label %1826

253:                                              ; preds = %229, %140
  %254 = getelementptr inbounds %class.TinyGLInstancingRenderer, ptr %71, i32 0, i32 2
  %255 = load ptr, ptr %254, align 8, !tbaa !17
  %256 = getelementptr inbounds %struct.InternalDataRenderer, ptr %255, i32 0, i32 15
  %257 = load ptr, ptr %256, align 8, !tbaa !23
  %258 = call noundef zeroext i1 @_ZN17GLRenderToTexture6enableEv(ptr noundef nonnull align 8 dereferenceable(24) %257)
  %259 = load ptr, ptr @glad_glViewport, align 8, !tbaa !5
  %260 = getelementptr inbounds %class.TinyGLInstancingRenderer, ptr %71, i32 0, i32 2
  %261 = load ptr, ptr %260, align 8, !tbaa !17
  %262 = getelementptr inbounds %struct.InternalDataRenderer, ptr %261, i32 0, i32 19
  %263 = load i32, ptr %262, align 8, !tbaa !44
  %264 = getelementptr inbounds %class.TinyGLInstancingRenderer, ptr %71, i32 0, i32 2
  %265 = load ptr, ptr %264, align 8, !tbaa !17
  %266 = getelementptr inbounds %struct.InternalDataRenderer, ptr %265, i32 0, i32 20
  %267 = load i32, ptr %266, align 4, !tbaa !45
  call void %259(i32 noundef 0, i32 noundef 0, i32 noundef %263, i32 noundef %267)
  %268 = load ptr, ptr @glad_glClear, align 8, !tbaa !5
  call void %268(i32 noundef 256)
  %269 = load ptr, ptr @glad_glEnable, align 8, !tbaa !5
  call void %269(i32 noundef 2884)
  %270 = load ptr, ptr @glad_glCullFace, align 8, !tbaa !5
  call void %270(i32 noundef 1028)
  %271 = load ptr, ptr @glad_glGetError, align 8, !tbaa !5
  %272 = call i32 %271()
  %273 = icmp eq i32 %272, 0
  br i1 %273, label %274, label %275

274:                                              ; preds = %253
  br label %277

275:                                              ; preds = %253
  call void @__assert_fail(ptr noundef @.str.4, ptr noundef @.str.1, i32 noundef 2159, ptr noundef @__PRETTY_FUNCTION__._ZN24TinyGLInstancingRenderer21render_scene_internalEi) #12
  unreachable

276:                                              ; No predecessors!
  br label %277

277:                                              ; preds = %276, %274
  br label %281

278:                                              ; preds = %102
  %279 = load ptr, ptr @glad_glEnable, align 8, !tbaa !5
  call void %279(i32 noundef 2884)
  %280 = load ptr, ptr @glad_glCullFace, align 8, !tbaa !5
  call void %280(i32 noundef 1029)
  br label %281

281:                                              ; preds = %278, %277
  %282 = getelementptr inbounds %class.TinyGLInstancingRenderer, ptr %71, i32 0, i32 2
  %283 = load ptr, ptr %282, align 8, !tbaa !17
  %284 = getelementptr inbounds %struct.InternalDataRenderer, ptr %283, i32 0, i32 21
  %285 = load float, ptr %284, align 8, !tbaa !48
  %286 = fneg float %285
  %287 = getelementptr inbounds %class.TinyGLInstancingRenderer, ptr %71, i32 0, i32 2
  %288 = load ptr, ptr %287, align 8, !tbaa !17
  %289 = getelementptr inbounds %struct.InternalDataRenderer, ptr %288, i32 0, i32 21
  %290 = load float, ptr %289, align 8, !tbaa !48
  %291 = getelementptr inbounds %class.TinyGLInstancingRenderer, ptr %71, i32 0, i32 2
  %292 = load ptr, ptr %291, align 8, !tbaa !17
  %293 = getelementptr inbounds %struct.InternalDataRenderer, ptr %292, i32 0, i32 21
  %294 = load float, ptr %293, align 8, !tbaa !48
  %295 = fneg float %294
  %296 = getelementptr inbounds %class.TinyGLInstancingRenderer, ptr %71, i32 0, i32 2
  %297 = load ptr, ptr %296, align 8, !tbaa !17
  %298 = getelementptr inbounds %struct.InternalDataRenderer, ptr %297, i32 0, i32 21
  %299 = load float, ptr %298, align 8, !tbaa !48
  %300 = getelementptr inbounds [4 x [4 x float]], ptr %9, i64 0, i64 0
  call void @_ZL13b3CreateOrthoffffffPA4_f(float noundef %286, float noundef %290, float noundef %295, float noundef %299, float noundef 1.000000e+00, float noundef 3.000000e+02, ptr noundef %300)
  call void @llvm.lifetime.start.p0(i64 64, ptr %16) #11
  call void @llvm.lifetime.start.p0(i64 16, ptr %17) #11
  call void @_ZN4TINY11TinyVector3IfNS_10FloatUtilsEEC2Efff(ptr noundef nonnull align 4 dereferenceable(16) %17, float noundef 0.000000e+00, float noundef 0.000000e+00, float noundef 0.000000e+00)
  %301 = getelementptr inbounds %class.TinyGLInstancingRenderer, ptr %71, i32 0, i32 2
  %302 = load ptr, ptr %301, align 8, !tbaa !17
  %303 = getelementptr inbounds %struct.InternalDataRenderer, ptr %302, i32 0, i32 3
  %304 = load ptr, ptr %303, align 8, !tbaa !49
  %305 = load ptr, ptr %304, align 8, !tbaa !15
  %306 = getelementptr inbounds ptr, ptr %305, i64 4
  %307 = load ptr, ptr %306, align 8
  call void %307(ptr noundef nonnull align 8 dereferenceable(16) %304, ptr noundef nonnull align 4 dereferenceable(16) %17)
  call void @llvm.lifetime.start.p0(i64 16, ptr %18) #11
  call void @_ZN4TINY11TinyVector3IfNS_10FloatUtilsEEC2Ei(ptr noundef nonnull align 4 dereferenceable(16) %18, i32 noundef 0)
  call void @llvm.lifetime.start.p0(i64 16, ptr %19) #11
  call void @_ZN4TINY11TinyVector3IfNS_10FloatUtilsEEC2Ei(ptr noundef nonnull align 4 dereferenceable(16) %19, i32 noundef 0)
  call void @llvm.lifetime.start.p0(i64 16, ptr %20) #11
  %308 = getelementptr inbounds %class.TinyGLInstancingRenderer, ptr %71, i32 0, i32 2
  %309 = load ptr, ptr %308, align 8, !tbaa !17
  %310 = getelementptr inbounds %struct.InternalDataRenderer, ptr %309, i32 0, i32 11
  call void @_ZNK4TINY11TinyVector3IfNS_10FloatUtilsEE10normalizedEv(ptr dead_on_unwind writable sret(%"struct.TINY::TinyVector3") align 4 %20, ptr noundef nonnull align 4 dereferenceable(16) %310)
  call void @_ZNK4TINY11TinyVector3IfNS_10FloatUtilsEE11plane_spaceERS2_S3_(ptr noundef nonnull align 4 dereferenceable(16) %20, ptr noundef nonnull align 4 dereferenceable(16) %18, ptr noundef nonnull align 4 dereferenceable(16) %19)
  call void @llvm.lifetime.start.p0(i64 16, ptr %21) #11
  %311 = getelementptr inbounds %class.TinyGLInstancingRenderer, ptr %71, i32 0, i32 2
  %312 = load ptr, ptr %311, align 8, !tbaa !17
  %313 = getelementptr inbounds %struct.InternalDataRenderer, ptr %312, i32 0, i32 11
  call void @_ZN4TINYplIfNS_10FloatUtilsEEENS_11TinyVector3IT_T0_EERKS5_S7_(ptr dead_on_unwind writable sret(%"struct.TINY::TinyVector3") align 4 %21, ptr noundef nonnull align 4 dereferenceable(16) %313, ptr noundef nonnull align 4 dereferenceable(16) %17)
  %314 = getelementptr inbounds [4 x [4 x float]], ptr %16, i64 0, i64 0
  %315 = getelementptr inbounds [4 x float], ptr %314, i64 0, i64 0
  call void @_ZL14b3CreateLookAtRKN4TINY11TinyVector3IfNS_10FloatUtilsEEES4_S4_Pf(ptr noundef nonnull align 4 dereferenceable(16) %21, ptr noundef nonnull align 4 dereferenceable(16) %17, ptr noundef nonnull align 4 dereferenceable(16) %18, ptr noundef %315)
  call void @llvm.lifetime.end.p0(i64 16, ptr %21) #11
  call void @llvm.lifetime.start.p0(i64 64, ptr %22) #11
  %316 = getelementptr inbounds [4 x [4 x float]], ptr %22, i64 0, i64 0
  call void @_ZL22b3CreateDiagonalMatrixfPA4_f(float noundef 1.000000e+00, ptr noundef %316)
  %317 = getelementptr inbounds [4 x [4 x float]], ptr %16, i64 0, i64 0
  %318 = getelementptr inbounds [4 x [4 x float]], ptr %22, i64 0, i64 0
  %319 = getelementptr inbounds [4 x [4 x float]], ptr %10, i64 0, i64 0
  call void @_ZL14b3Matrix4x4MulPA4_fS0_S0_(ptr noundef %317, ptr noundef %318, ptr noundef %319)
  call void @llvm.lifetime.start.p0(i64 64, ptr %23) #11
  %320 = getelementptr inbounds [4 x [4 x float]], ptr %9, i64 0, i64 0
  %321 = getelementptr inbounds [4 x [4 x float]], ptr %10, i64 0, i64 0
  %322 = getelementptr inbounds [4 x [4 x float]], ptr %23, i64 0, i64 0
  call void @_ZL14b3Matrix4x4MulPA4_fS0_S0_(ptr noundef %320, ptr noundef %321, ptr noundef %322)
  call void @llvm.lifetime.start.p0(i64 64, ptr %24) #11
  call void @llvm.memcpy.p0.p0.i64(ptr align 16 %24, ptr align 16 @__const._ZN24TinyGLInstancingRenderer21render_scene_internalEi.biasMatrix, i64 64, i1 false)
  call void @llvm.lifetime.start.p0(i64 64, ptr %25) #11
  %323 = getelementptr inbounds [4 x [4 x float]], ptr %24, i64 0, i64 0
  %324 = getelementptr inbounds [4 x [4 x float]], ptr %23, i64 0, i64 0
  %325 = getelementptr inbounds [4 x [4 x float]], ptr %25, i64 0, i64 0
  call void @_ZL14b3Matrix4x4MulPA4_fS0_S0_(ptr noundef %323, ptr noundef %324, ptr noundef %325)
  call void @llvm.lifetime.start.p0(i64 64, ptr %26) #11
  %326 = getelementptr inbounds %class.TinyGLInstancingRenderer, ptr %71, i32 0, i32 2
  %327 = load ptr, ptr %326, align 8, !tbaa !17
  %328 = getelementptr inbounds %struct.InternalDataRenderer, ptr %327, i32 0, i32 6
  %329 = getelementptr inbounds [16 x float], ptr %328, i64 0, i64 0
  %330 = getelementptr inbounds %class.TinyGLInstancingRenderer, ptr %71, i32 0, i32 2
  %331 = load ptr, ptr %330, align 8, !tbaa !17
  %332 = getelementptr inbounds %struct.InternalDataRenderer, ptr %331, i32 0, i32 7
  %333 = getelementptr inbounds [16 x float], ptr %332, i64 0, i64 0
  %334 = getelementptr inbounds [16 x float], ptr %26, i64 0, i64 0
  call void @_ZL16b3Matrix4x4Mul16PfS_S_(ptr noundef %329, ptr noundef %333, ptr noundef %334)
  %335 = getelementptr inbounds %class.TinyGLInstancingRenderer, ptr %71, i32 0, i32 2
  %336 = load ptr, ptr %335, align 8, !tbaa !17
  %337 = getelementptr inbounds %struct.InternalDataRenderer, ptr %336, i32 0, i32 3
  %338 = load ptr, ptr %337, align 8, !tbaa !49
  %339 = getelementptr inbounds %class.TinyGLInstancingRenderer, ptr %71, i32 0, i32 2
  %340 = load ptr, ptr %339, align 8, !tbaa !17
  %341 = getelementptr inbounds %struct.InternalDataRenderer, ptr %340, i32 0, i32 4
  %342 = getelementptr inbounds [16 x float], ptr %341, i64 0, i64 0
  %343 = load ptr, ptr %338, align 8, !tbaa !15
  %344 = getelementptr inbounds ptr, ptr %343, i64 2
  %345 = load ptr, ptr %344, align 8
  call void %345(ptr noundef nonnull align 8 dereferenceable(16) %338, ptr noundef %342)
  %346 = getelementptr inbounds %class.TinyGLInstancingRenderer, ptr %71, i32 0, i32 2
  %347 = load ptr, ptr %346, align 8, !tbaa !17
  %348 = getelementptr inbounds %struct.InternalDataRenderer, ptr %347, i32 0, i32 3
  %349 = load ptr, ptr %348, align 8, !tbaa !49
  %350 = getelementptr inbounds %class.TinyGLInstancingRenderer, ptr %71, i32 0, i32 2
  %351 = load ptr, ptr %350, align 8, !tbaa !17
  %352 = getelementptr inbounds %struct.InternalDataRenderer, ptr %351, i32 0, i32 5
  %353 = getelementptr inbounds [16 x float], ptr %352, i64 0, i64 0
  %354 = load ptr, ptr %349, align 8, !tbaa !15
  %355 = getelementptr inbounds ptr, ptr %354, i64 3
  %356 = load ptr, ptr %355, align 8
  call void %356(ptr noundef nonnull align 8 dereferenceable(16) %349, ptr noundef %353)
  %357 = load ptr, ptr @glad_glGetError, align 8, !tbaa !5
  %358 = call i32 %357()
  %359 = icmp eq i32 %358, 0
  br i1 %359, label %360, label %361

360:                                              ; preds = %281
  br label %363

361:                                              ; preds = %281
  call void @__assert_fail(ptr noundef @.str.4, ptr noundef @.str.1, i32 noundef 2220, ptr noundef @__PRETTY_FUNCTION__._ZN24TinyGLInstancingRenderer21render_scene_internalEi) #12
  unreachable

362:                                              ; No predecessors!
  br label %363

363:                                              ; preds = %362, %360
  %364 = load ptr, ptr @glad_glBindBuffer, align 8, !tbaa !5
  %365 = getelementptr inbounds %class.TinyGLInstancingRenderer, ptr %71, i32 0, i32 2
  %366 = load ptr, ptr %365, align 8, !tbaa !17
  %367 = getelementptr inbounds %struct.GLInstanceRendererInternalData, ptr %366, i32 0, i32 5
  %368 = load i32, ptr %367, align 4, !tbaa !50
  call void %364(i32 noundef 34962, i32 noundef %368)
  %369 = load ptr, ptr @glad_glGetError, align 8, !tbaa !5
  %370 = call i32 %369()
  %371 = icmp eq i32 %370, 0
  br i1 %371, label %372, label %373

372:                                              ; preds = %363
  br label %375

373:                                              ; preds = %363
  call void @__assert_fail(ptr noundef @.str.4, ptr noundef @.str.1, i32 noundef 2227, ptr noundef @__PRETTY_FUNCTION__._ZN24TinyGLInstancingRenderer21render_scene_internalEi) #12
  unreachable

374:                                              ; No predecessors!
  br label %375

375:                                              ; preds = %374, %372
  call void @llvm.lifetime.start.p0(i64 4, ptr %27) #11
  store i32 0, ptr %27, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %28) #11
  store i32 0, ptr %28, align 4, !tbaa !9
  br label %376

376:                                              ; preds = %393, %375
  %377 = load i32, ptr %28, align 4, !tbaa !9
  %378 = sext i32 %377 to i64
  %379 = getelementptr inbounds %class.TinyGLInstancingRenderer, ptr %71, i32 0, i32 1
  %380 = call noundef i64 @_ZNKSt6vectorIP18b3GraphicsInstanceSaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %379) #11
  %381 = icmp ult i64 %378, %380
  br i1 %381, label %383, label %382

382:                                              ; preds = %376
  call void @llvm.lifetime.end.p0(i64 4, ptr %28) #11
  br label %396

383:                                              ; preds = %376
  %384 = getelementptr inbounds %class.TinyGLInstancingRenderer, ptr %71, i32 0, i32 1
  %385 = load i32, ptr %28, align 4, !tbaa !9
  %386 = sext i32 %385 to i64
  %387 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIP18b3GraphicsInstanceSaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %384, i64 noundef %386) #11
  %388 = load ptr, ptr %387, align 8, !tbaa !5
  %389 = getelementptr inbounds %struct.b3GraphicsInstance, ptr %388, i32 0, i32 5
  %390 = load i32, ptr %389, align 4, !tbaa !51
  %391 = load i32, ptr %27, align 4, !tbaa !9
  %392 = add nsw i32 %391, %390
  store i32 %392, ptr %27, align 4, !tbaa !9
  br label %393

393:                                              ; preds = %383
  %394 = load i32, ptr %28, align 4, !tbaa !9
  %395 = add nsw i32 %394, 1
  store i32 %395, ptr %28, align 4, !tbaa !9
  br label %376, !llvm.loop !57

396:                                              ; preds = %382
  call void @llvm.lifetime.start.p0(i64 24, ptr %29) #11
  call void @_ZNSt6vectorI27SortableTransparentInstanceSaIS0_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %29) #11
  call void @llvm.lifetime.start.p0(i64 4, ptr %30) #11
  store i32 0, ptr %30, align 4, !tbaa !9
  %397 = load i32, ptr %27, align 4, !tbaa !9
  %398 = sext i32 %397 to i64
  invoke void @_ZNSt6vectorI27SortableTransparentInstanceSaIS0_EE7reserveEm(ptr noundef nonnull align 8 dereferenceable(24) %29, i64 noundef %398)
          to label %399 unwind label %418

399:                                              ; preds = %396
  call void @llvm.lifetime.start.p0(i64 12, ptr %31) #11
  %400 = getelementptr inbounds %class.TinyGLInstancingRenderer, ptr %71, i32 0, i32 2
  %401 = load ptr, ptr %400, align 8, !tbaa !17
  %402 = getelementptr inbounds %struct.InternalDataRenderer, ptr %401, i32 0, i32 3
  %403 = load ptr, ptr %402, align 8, !tbaa !49
  %404 = getelementptr inbounds [3 x float], ptr %31, i64 0, i64 0
  invoke void @_ZNK10TinyCamera25get_camera_forward_vectorEPf(ptr noundef nonnull align 8 dereferenceable(16) %403, ptr noundef %404)
          to label %405 unwind label %422

405:                                              ; preds = %399
  call void @llvm.lifetime.start.p0(i64 16, ptr %32) #11
  invoke void @_ZN4TINY11TinyVector3IfNS_10FloatUtilsEEC2Ei(ptr noundef nonnull align 4 dereferenceable(16) %32, i32 noundef 0)
          to label %406 unwind label %426

406:                                              ; preds = %405
  %407 = getelementptr inbounds [3 x float], ptr %31, i64 0, i64 0
  %408 = getelementptr inbounds [3 x float], ptr %31, i64 0, i64 1
  %409 = getelementptr inbounds [3 x float], ptr %31, i64 0, i64 2
  invoke void @_ZN4TINY11TinyVector3IfNS_10FloatUtilsEE8setValueERKfS4_S4_(ptr noundef nonnull align 4 dereferenceable(16) %32, ptr noundef nonnull align 4 dereferenceable(4) %407, ptr noundef nonnull align 4 dereferenceable(4) %408, ptr noundef nonnull align 4 dereferenceable(4) %409)
          to label %410 unwind label %426

410:                                              ; preds = %406
  call void @llvm.lifetime.start.p0(i64 4, ptr %33) #11
  store i32 0, ptr %33, align 4, !tbaa !9
  br label %411

411:                                              ; preds = %552, %410
  %412 = load i32, ptr %33, align 4, !tbaa !9
  %413 = sext i32 %412 to i64
  %414 = getelementptr inbounds %class.TinyGLInstancingRenderer, ptr %71, i32 0, i32 1
  %415 = call noundef i64 @_ZNKSt6vectorIP18b3GraphicsInstanceSaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %414) #11
  %416 = icmp ult i64 %413, %415
  br i1 %416, label %430, label %417

417:                                              ; preds = %411
  store i32 7, ptr %34, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %33) #11
  br label %555

418:                                              ; preds = %396
  %419 = landingpad { ptr, i32 }
          cleanup
  %420 = extractvalue { ptr, i32 } %419, 0
  store ptr %420, ptr %14, align 8
  %421 = extractvalue { ptr, i32 } %419, 1
  store i32 %421, ptr %15, align 4
  br label %575

422:                                              ; preds = %399
  %423 = landingpad { ptr, i32 }
          cleanup
  %424 = extractvalue { ptr, i32 } %423, 0
  store ptr %424, ptr %14, align 8
  %425 = extractvalue { ptr, i32 } %423, 1
  store i32 %425, ptr %15, align 4
  br label %574

426:                                              ; preds = %406, %405
  %427 = landingpad { ptr, i32 }
          cleanup
  %428 = extractvalue { ptr, i32 } %427, 0
  store ptr %428, ptr %14, align 8
  %429 = extractvalue { ptr, i32 } %427, 1
  store i32 %429, ptr %15, align 4
  br label %573

430:                                              ; preds = %411
  call void @llvm.lifetime.start.p0(i64 8, ptr %35) #11
  %431 = getelementptr inbounds %class.TinyGLInstancingRenderer, ptr %71, i32 0, i32 1
  %432 = load i32, ptr %33, align 4, !tbaa !9
  %433 = sext i32 %432 to i64
  %434 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIP18b3GraphicsInstanceSaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %431, i64 noundef %433) #11
  %435 = load ptr, ptr %434, align 8, !tbaa !5
  store ptr %435, ptr %35, align 8, !tbaa !5
  %436 = load ptr, ptr %35, align 8, !tbaa !5
  %437 = getelementptr inbounds %struct.b3GraphicsInstance, ptr %436, i32 0, i32 5
  %438 = load i32, ptr %437, align 4, !tbaa !51
  %439 = icmp ne i32 %438, 0
  br i1 %439, label %440, label %551

440:                                              ; preds = %430
  call void @llvm.lifetime.start.p0(i64 12, ptr %36) #11
  %441 = load i32, ptr %33, align 4, !tbaa !9
  %442 = getelementptr inbounds %struct.SortableTransparentInstance, ptr %36, i32 0, i32 1
  store i32 %441, ptr %442, align 4, !tbaa !58
  %443 = load ptr, ptr %35, align 8, !tbaa !5
  %444 = getelementptr inbounds %struct.b3GraphicsInstance, ptr %443, i32 0, i32 12
  %445 = load i32, ptr %444, align 8, !tbaa !60
  %446 = and i32 %445, 1
  %447 = icmp eq i32 %446, 0
  br i1 %447, label %448, label %490

448:                                              ; preds = %440
  %449 = load i32, ptr %30, align 4, !tbaa !9
  %450 = getelementptr inbounds %struct.SortableTransparentInstance, ptr %36, i32 0, i32 2
  store i32 %449, ptr %450, align 4, !tbaa !61
  call void @llvm.lifetime.start.p0(i64 16, ptr %37) #11
  invoke void @_ZN4TINY11TinyVector3IfNS_10FloatUtilsEEC2Ei(ptr noundef nonnull align 4 dereferenceable(16) %37, i32 noundef 0)
          to label %451 unwind label %486

451:                                              ; preds = %448
  %452 = getelementptr inbounds %class.TinyGLInstancingRenderer, ptr %71, i32 0, i32 2
  %453 = load ptr, ptr %452, align 8, !tbaa !17
  %454 = getelementptr inbounds %struct.GLInstanceRendererInternalData, ptr %453, i32 0, i32 0
  %455 = getelementptr inbounds %struct.SortableTransparentInstance, ptr %36, i32 0, i32 2
  %456 = load i32, ptr %455, align 4, !tbaa !61
  %457 = mul nsw i32 %456, 4
  %458 = add nsw i32 %457, 0
  %459 = sext i32 %458 to i64
  %460 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIfSaIfEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %454, i64 noundef %459) #11
  %461 = getelementptr inbounds %class.TinyGLInstancingRenderer, ptr %71, i32 0, i32 2
  %462 = load ptr, ptr %461, align 8, !tbaa !17
  %463 = getelementptr inbounds %struct.GLInstanceRendererInternalData, ptr %462, i32 0, i32 0
  %464 = getelementptr inbounds %struct.SortableTransparentInstance, ptr %36, i32 0, i32 2
  %465 = load i32, ptr %464, align 4, !tbaa !61
  %466 = mul nsw i32 %465, 4
  %467 = add nsw i32 %466, 1
  %468 = sext i32 %467 to i64
  %469 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIfSaIfEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %463, i64 noundef %468) #11
  %470 = getelementptr inbounds %class.TinyGLInstancingRenderer, ptr %71, i32 0, i32 2
  %471 = load ptr, ptr %470, align 8, !tbaa !17
  %472 = getelementptr inbounds %struct.GLInstanceRendererInternalData, ptr %471, i32 0, i32 0
  %473 = getelementptr inbounds %struct.SortableTransparentInstance, ptr %36, i32 0, i32 2
  %474 = load i32, ptr %473, align 4, !tbaa !61
  %475 = mul nsw i32 %474, 4
  %476 = add nsw i32 %475, 2
  %477 = sext i32 %476 to i64
  %478 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIfSaIfEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %472, i64 noundef %477) #11
  invoke void @_ZN4TINY11TinyVector3IfNS_10FloatUtilsEE8setValueERKfS4_S4_(ptr noundef nonnull align 4 dereferenceable(16) %37, ptr noundef nonnull align 4 dereferenceable(4) %460, ptr noundef nonnull align 4 dereferenceable(4) %469, ptr noundef nonnull align 4 dereferenceable(4) %478)
          to label %479 unwind label %486

479:                                              ; preds = %451
  %480 = invoke noundef nonnull align 4 dereferenceable(16) ptr @_ZN4TINY11TinyVector3IfNS_10FloatUtilsEEmLEf(ptr noundef nonnull align 4 dereferenceable(16) %37, float noundef -1.000000e+00)
          to label %481 unwind label %486

481:                                              ; preds = %479
  %482 = invoke noundef float @_ZNK4TINY11TinyVector3IfNS_10FloatUtilsEE3dotERKS2_(ptr noundef nonnull align 4 dereferenceable(16) %37, ptr noundef nonnull align 4 dereferenceable(16) %32)
          to label %483 unwind label %486

483:                                              ; preds = %481
  %484 = getelementptr inbounds %struct.SortableTransparentInstance, ptr %36, i32 0, i32 0
  store float %482, ptr %484, align 4, !tbaa !62
  invoke void @_ZNSt6vectorI27SortableTransparentInstanceSaIS0_EE9push_backERKS0_(ptr noundef nonnull align 8 dereferenceable(24) %29, ptr noundef nonnull align 4 dereferenceable(12) %36)
          to label %485 unwind label %486

485:                                              ; preds = %483
  call void @llvm.lifetime.end.p0(i64 16, ptr %37) #11
  br label %544

486:                                              ; preds = %483, %481, %479, %451, %448
  %487 = landingpad { ptr, i32 }
          cleanup
  %488 = extractvalue { ptr, i32 } %487, 0
  store ptr %488, ptr %14, align 8
  %489 = extractvalue { ptr, i32 } %487, 1
  store i32 %489, ptr %15, align 4
  call void @llvm.lifetime.end.p0(i64 16, ptr %37) #11
  br label %550

490:                                              ; preds = %440
  call void @llvm.lifetime.start.p0(i64 4, ptr %38) #11
  store i32 0, ptr %38, align 4, !tbaa !9
  br label %491

491:                                              ; preds = %536, %490
  %492 = load i32, ptr %38, align 4, !tbaa !9
  %493 = load ptr, ptr %35, align 8, !tbaa !5
  %494 = getelementptr inbounds %struct.b3GraphicsInstance, ptr %493, i32 0, i32 5
  %495 = load i32, ptr %494, align 4, !tbaa !51
  %496 = icmp slt i32 %492, %495
  br i1 %496, label %498, label %497

497:                                              ; preds = %491
  store i32 10, ptr %34, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %38) #11
  br label %543

498:                                              ; preds = %491
  %499 = load i32, ptr %30, align 4, !tbaa !9
  %500 = load i32, ptr %38, align 4, !tbaa !9
  %501 = add nsw i32 %499, %500
  %502 = getelementptr inbounds %struct.SortableTransparentInstance, ptr %36, i32 0, i32 2
  store i32 %501, ptr %502, align 4, !tbaa !61
  call void @llvm.lifetime.start.p0(i64 16, ptr %39) #11
  invoke void @_ZN4TINY11TinyVector3IfNS_10FloatUtilsEEC2Ei(ptr noundef nonnull align 4 dereferenceable(16) %39, i32 noundef 0)
          to label %503 unwind label %539

503:                                              ; preds = %498
  %504 = getelementptr inbounds %class.TinyGLInstancingRenderer, ptr %71, i32 0, i32 2
  %505 = load ptr, ptr %504, align 8, !tbaa !17
  %506 = getelementptr inbounds %struct.GLInstanceRendererInternalData, ptr %505, i32 0, i32 0
  %507 = getelementptr inbounds %struct.SortableTransparentInstance, ptr %36, i32 0, i32 2
  %508 = load i32, ptr %507, align 4, !tbaa !61
  %509 = mul nsw i32 %508, 4
  %510 = add nsw i32 %509, 0
  %511 = sext i32 %510 to i64
  %512 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIfSaIfEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %506, i64 noundef %511) #11
  %513 = getelementptr inbounds %class.TinyGLInstancingRenderer, ptr %71, i32 0, i32 2
  %514 = load ptr, ptr %513, align 8, !tbaa !17
  %515 = getelementptr inbounds %struct.GLInstanceRendererInternalData, ptr %514, i32 0, i32 0
  %516 = getelementptr inbounds %struct.SortableTransparentInstance, ptr %36, i32 0, i32 2
  %517 = load i32, ptr %516, align 4, !tbaa !61
  %518 = mul nsw i32 %517, 4
  %519 = add nsw i32 %518, 1
  %520 = sext i32 %519 to i64
  %521 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIfSaIfEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %515, i64 noundef %520) #11
  %522 = getelementptr inbounds %class.TinyGLInstancingRenderer, ptr %71, i32 0, i32 2
  %523 = load ptr, ptr %522, align 8, !tbaa !17
  %524 = getelementptr inbounds %struct.GLInstanceRendererInternalData, ptr %523, i32 0, i32 0
  %525 = getelementptr inbounds %struct.SortableTransparentInstance, ptr %36, i32 0, i32 2
  %526 = load i32, ptr %525, align 4, !tbaa !61
  %527 = mul nsw i32 %526, 4
  %528 = add nsw i32 %527, 2
  %529 = sext i32 %528 to i64
  %530 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIfSaIfEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %524, i64 noundef %529) #11
  invoke void @_ZN4TINY11TinyVector3IfNS_10FloatUtilsEE8setValueERKfS4_S4_(ptr noundef nonnull align 4 dereferenceable(16) %39, ptr noundef nonnull align 4 dereferenceable(4) %512, ptr noundef nonnull align 4 dereferenceable(4) %521, ptr noundef nonnull align 4 dereferenceable(4) %530)
          to label %531 unwind label %539

531:                                              ; preds = %503
  %532 = invoke noundef float @_ZNK4TINY11TinyVector3IfNS_10FloatUtilsEE3dotERKS2_(ptr noundef nonnull align 4 dereferenceable(16) %39, ptr noundef nonnull align 4 dereferenceable(16) %32)
          to label %533 unwind label %539

533:                                              ; preds = %531
  %534 = getelementptr inbounds %struct.SortableTransparentInstance, ptr %36, i32 0, i32 0
  store float %532, ptr %534, align 4, !tbaa !62
  invoke void @_ZNSt6vectorI27SortableTransparentInstanceSaIS0_EE9push_backERKS0_(ptr noundef nonnull align 8 dereferenceable(24) %29, ptr noundef nonnull align 4 dereferenceable(12) %36)
          to label %535 unwind label %539

535:                                              ; preds = %533
  call void @llvm.lifetime.end.p0(i64 16, ptr %39) #11
  br label %536

536:                                              ; preds = %535
  %537 = load i32, ptr %38, align 4, !tbaa !9
  %538 = add nsw i32 %537, 1
  store i32 %538, ptr %38, align 4, !tbaa !9
  br label %491, !llvm.loop !63

539:                                              ; preds = %533, %531, %503, %498
  %540 = landingpad { ptr, i32 }
          cleanup
  %541 = extractvalue { ptr, i32 } %540, 0
  store ptr %541, ptr %14, align 8
  %542 = extractvalue { ptr, i32 } %540, 1
  store i32 %542, ptr %15, align 4
  call void @llvm.lifetime.end.p0(i64 16, ptr %39) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr %38) #11
  br label %550

543:                                              ; preds = %497
  br label %544

544:                                              ; preds = %543, %485
  %545 = load ptr, ptr %35, align 8, !tbaa !5
  %546 = getelementptr inbounds %struct.b3GraphicsInstance, ptr %545, i32 0, i32 5
  %547 = load i32, ptr %546, align 4, !tbaa !51
  %548 = load i32, ptr %30, align 4, !tbaa !9
  %549 = add nsw i32 %548, %547
  store i32 %549, ptr %30, align 4, !tbaa !9
  call void @llvm.lifetime.end.p0(i64 12, ptr %36) #11
  br label %551

550:                                              ; preds = %539, %486
  call void @llvm.lifetime.end.p0(i64 12, ptr %36) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %35) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr %33) #11
  br label %573

551:                                              ; preds = %544, %430
  call void @llvm.lifetime.end.p0(i64 8, ptr %35) #11
  br label %552

552:                                              ; preds = %551
  %553 = load i32, ptr %33, align 4, !tbaa !9
  %554 = add nsw i32 %553, 1
  store i32 %554, ptr %33, align 4, !tbaa !9
  br label %411, !llvm.loop !64

555:                                              ; preds = %417
  call void @llvm.lifetime.start.p0(i64 1, ptr %40) #11
  %556 = call ptr @_ZNSt6vectorI27SortableTransparentInstanceSaIS0_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %29) #11
  %557 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %41, i32 0, i32 0
  store ptr %556, ptr %557, align 8
  %558 = call ptr @_ZNSt6vectorI27SortableTransparentInstanceSaIS0_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %29) #11
  %559 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %42, i32 0, i32 0
  store ptr %558, ptr %559, align 8
  %560 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %41, i32 0, i32 0
  %561 = load ptr, ptr %560, align 8
  %562 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %42, i32 0, i32 0
  %563 = load ptr, ptr %562, align 8
  invoke void @_ZSt4sortIN9__gnu_cxx17__normal_iteratorIP27SortableTransparentInstanceSt6vectorIS2_SaIS2_EEEE32TransparentDistanceSortPredicateEvT_S9_T0_(ptr %561, ptr %563)
          to label %564 unwind label %569

564:                                              ; preds = %555
  call void @llvm.lifetime.end.p0(i64 1, ptr %40) #11
  call void @llvm.lifetime.end.p0(i64 16, ptr %32) #11
  call void @llvm.lifetime.end.p0(i64 12, ptr %31) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr %30) #11
  call void @llvm.lifetime.start.p0(i64 4, ptr %44) #11
  store i32 0, ptr %44, align 4, !tbaa !9
  br label %565

565:                                              ; preds = %1768, %564
  %566 = load i32, ptr %44, align 4, !tbaa !9
  %567 = icmp slt i32 %566, 2
  br i1 %567, label %576, label %568

568:                                              ; preds = %565
  store i32 13, ptr %34, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %44) #11
  br label %1771

569:                                              ; preds = %555
  %570 = landingpad { ptr, i32 }
          cleanup
  %571 = extractvalue { ptr, i32 } %570, 0
  store ptr %571, ptr %14, align 8
  %572 = extractvalue { ptr, i32 } %570, 1
  store i32 %572, ptr %15, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %40) #11
  br label %573

573:                                              ; preds = %569, %550, %426
  call void @llvm.lifetime.end.p0(i64 16, ptr %32) #11
  br label %574

574:                                              ; preds = %573, %422
  call void @llvm.lifetime.end.p0(i64 12, ptr %31) #11
  br label %575

575:                                              ; preds = %574, %418
  call void @llvm.lifetime.end.p0(i64 4, ptr %30) #11
  br label %1825

576:                                              ; preds = %565
  call void @llvm.lifetime.start.p0(i64 4, ptr %45) #11
  store i32 0, ptr %45, align 4, !tbaa !9
  br label %577

577:                                              ; preds = %1763, %576
  %578 = load i32, ptr %45, align 4, !tbaa !9
  %579 = sext i32 %578 to i64
  %580 = call noundef i64 @_ZNKSt6vectorI27SortableTransparentInstanceSaIS0_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %29) #11
  %581 = icmp ult i64 %579, %580
  br i1 %581, label %583, label %582

582:                                              ; preds = %577
  store i32 16, ptr %34, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %45) #11
  br label %1767

583:                                              ; preds = %577
  call void @llvm.lifetime.start.p0(i64 4, ptr %46) #11
  %584 = load i32, ptr %45, align 4, !tbaa !9
  %585 = sext i32 %584 to i64
  %586 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZNSt6vectorI27SortableTransparentInstanceSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %29, i64 noundef %585) #11
  %587 = getelementptr inbounds %struct.SortableTransparentInstance, ptr %586, i32 0, i32 1
  %588 = load i32, ptr %587, align 4, !tbaa !58
  store i32 %588, ptr %46, align 4, !tbaa !9
  %589 = load i8, ptr %7, align 1, !tbaa !11, !range !13, !noundef !14
  %590 = trunc i8 %589 to i1
  br i1 %590, label %591, label %598

591:                                              ; preds = %583
  %592 = load i32, ptr %46, align 4, !tbaa !9
  %593 = getelementptr inbounds %class.TinyGLInstancingRenderer, ptr %71, i32 0, i32 9
  %594 = load i32, ptr %593, align 8, !tbaa !65
  %595 = icmp ne i32 %592, %594
  br i1 %595, label %596, label %597

596:                                              ; preds = %591
  store i32 18, ptr %34, align 4
  br label %1760

597:                                              ; preds = %591
  br label %598

598:                                              ; preds = %597, %583
  call void @llvm.lifetime.start.p0(i64 8, ptr %47) #11
  %599 = getelementptr inbounds %class.TinyGLInstancingRenderer, ptr %71, i32 0, i32 1
  %600 = load i32, ptr %46, align 4, !tbaa !9
  %601 = sext i32 %600 to i64
  %602 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIP18b3GraphicsInstanceSaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %599, i64 noundef %601) #11
  %603 = load ptr, ptr %602, align 8, !tbaa !5
  store ptr %603, ptr %47, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %48) #11
  %604 = load i32, ptr %44, align 4, !tbaa !9
  %605 = icmp eq i32 %604, 0
  %606 = zext i1 %605 to i32
  %607 = load ptr, ptr %47, align 8, !tbaa !5
  %608 = getelementptr inbounds %struct.b3GraphicsInstance, ptr %607, i32 0, i32 12
  %609 = load i32, ptr %608, align 8, !tbaa !60
  %610 = and i32 %609, 1
  %611 = icmp eq i32 %610, 0
  %612 = zext i1 %611 to i32
  %613 = icmp eq i32 %606, %612
  %614 = zext i1 %613 to i32
  store i32 %614, ptr %48, align 4, !tbaa !9
  %615 = load ptr, ptr %47, align 8, !tbaa !5
  %616 = getelementptr inbounds %struct.b3GraphicsInstance, ptr %615, i32 0, i32 12
  %617 = load i32, ptr %616, align 8, !tbaa !60
  %618 = and i32 %617, 1
  %619 = icmp ne i32 %618, 0
  br i1 %619, label %620, label %625

620:                                              ; preds = %598
  %621 = load i32, ptr %5, align 4, !tbaa !9
  %622 = icmp eq i32 %621, 2
  br i1 %622, label %623, label %624

623:                                              ; preds = %620
  store i32 0, ptr %48, align 4, !tbaa !9
  br label %624

624:                                              ; preds = %623, %620
  br label %625

625:                                              ; preds = %624, %598
  %626 = load i32, ptr %48, align 4, !tbaa !9
  %627 = icmp ne i32 %626, 0
  br i1 %627, label %628, label %1759

628:                                              ; preds = %625
  %629 = load ptr, ptr %47, align 8, !tbaa !5
  %630 = getelementptr inbounds %struct.b3GraphicsInstance, ptr %629, i32 0, i32 5
  %631 = load i32, ptr %630, align 4, !tbaa !51
  %632 = icmp ne i32 %631, 0
  br i1 %632, label %633, label %1759

633:                                              ; preds = %628
  %634 = load ptr, ptr @glad_glActiveTexture, align 8, !tbaa !5
  invoke void %634(i32 noundef 33984)
          to label %635 unwind label %670

635:                                              ; preds = %633
  call void @llvm.lifetime.start.p0(i64 4, ptr %49) #11
  store i32 0, ptr %49, align 4, !tbaa !9
  %636 = load ptr, ptr %47, align 8, !tbaa !5
  %637 = getelementptr inbounds %struct.b3GraphicsInstance, ptr %636, i32 0, i32 12
  %638 = load i32, ptr %637, align 8, !tbaa !60
  %639 = and i32 %638, 2
  %640 = icmp ne i32 %639, 0
  br i1 %640, label %641, label %684

641:                                              ; preds = %635
  %642 = getelementptr inbounds %class.TinyGLInstancingRenderer, ptr %71, i32 0, i32 2
  %643 = load ptr, ptr %642, align 8, !tbaa !17
  %644 = getelementptr inbounds %struct.InternalDataRenderer, ptr %643, i32 0, i32 14
  %645 = load ptr, ptr %47, align 8, !tbaa !5
  %646 = getelementptr inbounds %struct.b3GraphicsInstance, ptr %645, i32 0, i32 2
  %647 = load i32, ptr %646, align 8, !tbaa !66
  %648 = zext i32 %647 to i64
  %649 = call noundef nonnull align 4 dereferenceable(16) ptr @_ZNSt6vectorI21InternalTextureHandleSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %644, i64 noundef %648) #11
  %650 = getelementptr inbounds %struct.InternalTextureHandle, ptr %649, i32 0, i32 0
  %651 = load i32, ptr %650, align 4, !tbaa !67
  store i32 %651, ptr %49, align 4, !tbaa !9
  %652 = load ptr, ptr @glad_glTexParameteri, align 8, !tbaa !5
  invoke void %652(i32 noundef 3553, i32 noundef 33084, i32 noundef 0)
          to label %653 unwind label %674

653:                                              ; preds = %641
  %654 = getelementptr inbounds %class.TinyGLInstancingRenderer, ptr %71, i32 0, i32 2
  %655 = load ptr, ptr %654, align 8, !tbaa !17
  %656 = getelementptr inbounds %struct.InternalDataRenderer, ptr %655, i32 0, i32 14
  %657 = load ptr, ptr %47, align 8, !tbaa !5
  %658 = getelementptr inbounds %struct.b3GraphicsInstance, ptr %657, i32 0, i32 2
  %659 = load i32, ptr %658, align 8, !tbaa !66
  %660 = zext i32 %659 to i64
  %661 = call noundef nonnull align 4 dereferenceable(16) ptr @_ZNSt6vectorI21InternalTextureHandleSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %656, i64 noundef %660) #11
  %662 = getelementptr inbounds %struct.InternalTextureHandle, ptr %661, i32 0, i32 3
  %663 = load i32, ptr %662, align 4, !tbaa !69
  %664 = icmp ne i32 %663, 0
  br i1 %664, label %665, label %678

665:                                              ; preds = %653
  %666 = load ptr, ptr @glad_glTexParameteri, align 8, !tbaa !5
  invoke void %666(i32 noundef 3553, i32 noundef 10241, i32 noundef 9729)
          to label %667 unwind label %674

667:                                              ; preds = %665
  %668 = load ptr, ptr @glad_glTexParameteri, align 8, !tbaa !5
  invoke void %668(i32 noundef 3553, i32 noundef 10240, i32 noundef 9729)
          to label %669 unwind label %674

669:                                              ; preds = %667
  br label %683

670:                                              ; preds = %633
  %671 = landingpad { ptr, i32 }
          cleanup
  %672 = extractvalue { ptr, i32 } %671, 0
  store ptr %672, ptr %14, align 8
  %673 = extractvalue { ptr, i32 } %671, 1
  store i32 %673, ptr %15, align 4
  br label %1766

674:                                              ; preds = %692, %689, %680, %678, %667, %665, %641
  %675 = landingpad { ptr, i32 }
          cleanup
  %676 = extractvalue { ptr, i32 } %675, 0
  store ptr %676, ptr %14, align 8
  %677 = extractvalue { ptr, i32 } %675, 1
  store i32 %677, ptr %15, align 4
  br label %1758

678:                                              ; preds = %653
  %679 = load ptr, ptr @glad_glTexParameteri, align 8, !tbaa !5
  invoke void %679(i32 noundef 3553, i32 noundef 10241, i32 noundef 9728)
          to label %680 unwind label %674

680:                                              ; preds = %678
  %681 = load ptr, ptr @glad_glTexParameteri, align 8, !tbaa !5
  invoke void %681(i32 noundef 3553, i32 noundef 10240, i32 noundef 9728)
          to label %682 unwind label %674

682:                                              ; preds = %680
  br label %683

683:                                              ; preds = %682, %669
  br label %689

684:                                              ; preds = %635
  %685 = getelementptr inbounds %class.TinyGLInstancingRenderer, ptr %71, i32 0, i32 2
  %686 = load ptr, ptr %685, align 8, !tbaa !17
  %687 = getelementptr inbounds %struct.InternalDataRenderer, ptr %686, i32 0, i32 13
  %688 = load i32, ptr %687, align 4, !tbaa !70
  store i32 %688, ptr %49, align 4, !tbaa !9
  br label %689

689:                                              ; preds = %684, %683
  %690 = load ptr, ptr @glad_glBindTexture, align 8, !tbaa !5
  %691 = load i32, ptr %49, align 4, !tbaa !9
  invoke void %690(i32 noundef 3553, i32 noundef %691)
          to label %692 unwind label %674

692:                                              ; preds = %689
  %693 = load ptr, ptr @glad_glGetError, align 8, !tbaa !5
  %694 = invoke i32 %693()
          to label %695 unwind label %674

695:                                              ; preds = %692
  %696 = icmp eq i32 %694, 0
  br i1 %696, label %697, label %698

697:                                              ; preds = %695
  br label %700

698:                                              ; preds = %695
  call void @__assert_fail(ptr noundef @.str.4, ptr noundef @.str.1, i32 noundef 2334, ptr noundef @__PRETTY_FUNCTION__._ZN24TinyGLInstancingRenderer21render_scene_internalEi) #12
  unreachable

699:                                              ; No predecessors!
  br label %700

700:                                              ; preds = %699, %697
  call void @llvm.lifetime.start.p0(i64 4, ptr %50) #11
  %701 = load i32, ptr %27, align 4, !tbaa !9
  %702 = sext i32 %701 to i64
  %703 = mul i64 %702, 4
  %704 = mul i64 %703, 4
  %705 = trunc i64 %704 to i32
  store i32 %705, ptr %50, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %51) #11
  %706 = load i32, ptr %27, align 4, !tbaa !9
  %707 = sext i32 %706 to i64
  %708 = mul i64 %707, 4
  %709 = mul i64 %708, 4
  %710 = trunc i64 %709 to i32
  store i32 %710, ptr %51, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %52) #11
  %711 = load i32, ptr %27, align 4, !tbaa !9
  %712 = sext i32 %711 to i64
  %713 = mul i64 %712, 4
  %714 = mul i64 %713, 4
  %715 = trunc i64 %714 to i32
  store i32 %715, ptr %52, align 4, !tbaa !9
  %716 = load ptr, ptr @glad_glBindVertexArray, align 8, !tbaa !5
  %717 = load ptr, ptr %47, align 8, !tbaa !5
  %718 = getelementptr inbounds %struct.b3GraphicsInstance, ptr %717, i32 0, i32 0
  %719 = load i32, ptr %718, align 8, !tbaa !71
  invoke void %716(i32 noundef %719)
          to label %720 unwind label %910

720:                                              ; preds = %700
  call void @llvm.lifetime.start.p0(i64 4, ptr %53) #11
  store i32 36, ptr %53, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %54) #11
  invoke void @_ZN13PointerCasterC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %54)
          to label %721 unwind label %914

721:                                              ; preds = %720
  %722 = load ptr, ptr %47, align 8, !tbaa !5
  %723 = getelementptr inbounds %struct.b3GraphicsInstance, ptr %722, i32 0, i32 8
  %724 = load i32, ptr %723, align 4, !tbaa !72
  %725 = load i32, ptr %53, align 4, !tbaa !9
  %726 = mul nsw i32 %724, %725
  %727 = getelementptr inbounds %struct.PointerCaster, ptr %54, i32 0, i32 0
  store i32 %726, ptr %727, align 8, !tbaa !73
  %728 = load ptr, ptr @glad_glVertexAttribPointer, align 8, !tbaa !5
  %729 = getelementptr inbounds %struct.PointerCaster, ptr %54, i32 0, i32 0
  %730 = load ptr, ptr %729, align 8, !tbaa !73
  invoke void %728(i32 noundef 0, i32 noundef 4, i32 noundef 5126, i8 noundef zeroext 0, i32 noundef 36, ptr noundef %730)
          to label %731 unwind label %914

731:                                              ; preds = %721
  %732 = load ptr, ptr @glad_glVertexAttribPointer, align 8, !tbaa !5
  %733 = load i32, ptr %45, align 4, !tbaa !9
  %734 = sext i32 %733 to i64
  %735 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZNSt6vectorI27SortableTransparentInstanceSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %29, i64 noundef %734) #11
  %736 = getelementptr inbounds %struct.SortableTransparentInstance, ptr %735, i32 0, i32 2
  %737 = load i32, ptr %736, align 4, !tbaa !61
  %738 = mul nsw i32 %737, 4
  %739 = sext i32 %738 to i64
  %740 = mul i64 %739, 4
  %741 = getelementptr inbounds %class.TinyGLInstancingRenderer, ptr %71, i32 0, i32 2
  %742 = load ptr, ptr %741, align 8, !tbaa !17
  %743 = getelementptr inbounds %struct.GLInstanceRendererInternalData, ptr %742, i32 0, i32 8
  %744 = load i32, ptr %743, align 8, !tbaa !74
  %745 = sext i32 %744 to i64
  %746 = add i64 %740, %745
  %747 = inttoptr i64 %746 to ptr
  invoke void %732(i32 noundef 1, i32 noundef 4, i32 noundef 5126, i8 noundef zeroext 0, i32 noundef 0, ptr noundef %747)
          to label %748 unwind label %914

748:                                              ; preds = %731
  %749 = load ptr, ptr @glad_glVertexAttribPointer, align 8, !tbaa !5
  %750 = load i32, ptr %45, align 4, !tbaa !9
  %751 = sext i32 %750 to i64
  %752 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZNSt6vectorI27SortableTransparentInstanceSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %29, i64 noundef %751) #11
  %753 = getelementptr inbounds %struct.SortableTransparentInstance, ptr %752, i32 0, i32 2
  %754 = load i32, ptr %753, align 4, !tbaa !61
  %755 = mul nsw i32 %754, 4
  %756 = sext i32 %755 to i64
  %757 = mul i64 %756, 4
  %758 = getelementptr inbounds %class.TinyGLInstancingRenderer, ptr %71, i32 0, i32 2
  %759 = load ptr, ptr %758, align 8, !tbaa !17
  %760 = getelementptr inbounds %struct.GLInstanceRendererInternalData, ptr %759, i32 0, i32 8
  %761 = load i32, ptr %760, align 8, !tbaa !74
  %762 = sext i32 %761 to i64
  %763 = add i64 %757, %762
  %764 = load i32, ptr %50, align 4, !tbaa !9
  %765 = sext i32 %764 to i64
  %766 = add i64 %763, %765
  %767 = inttoptr i64 %766 to ptr
  invoke void %749(i32 noundef 2, i32 noundef 4, i32 noundef 5126, i8 noundef zeroext 0, i32 noundef 0, ptr noundef %767)
          to label %768 unwind label %914

768:                                              ; preds = %748
  call void @llvm.lifetime.start.p0(i64 8, ptr %55) #11
  invoke void @_ZN13PointerCasterC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %55)
          to label %769 unwind label %918

769:                                              ; preds = %768
  %770 = getelementptr inbounds %struct.PointerCaster, ptr %54, i32 0, i32 0
  %771 = load i32, ptr %770, align 8, !tbaa !73
  %772 = sext i32 %771 to i64
  %773 = add i64 28, %772
  %774 = trunc i64 %773 to i32
  %775 = getelementptr inbounds %struct.PointerCaster, ptr %55, i32 0, i32 0
  store i32 %774, ptr %775, align 8, !tbaa !73
  call void @llvm.lifetime.start.p0(i64 8, ptr %56) #11
  invoke void @_ZN13PointerCasterC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %56)
          to label %776 unwind label %922

776:                                              ; preds = %769
  %777 = getelementptr inbounds %struct.PointerCaster, ptr %54, i32 0, i32 0
  %778 = load i32, ptr %777, align 8, !tbaa !73
  %779 = sext i32 %778 to i64
  %780 = add i64 16, %779
  %781 = trunc i64 %780 to i32
  %782 = getelementptr inbounds %struct.PointerCaster, ptr %56, i32 0, i32 0
  store i32 %781, ptr %782, align 8, !tbaa !73
  %783 = load ptr, ptr @glad_glVertexAttribPointer, align 8, !tbaa !5
  %784 = getelementptr inbounds %struct.PointerCaster, ptr %55, i32 0, i32 0
  %785 = load ptr, ptr %784, align 8, !tbaa !73
  invoke void %783(i32 noundef 3, i32 noundef 2, i32 noundef 5126, i8 noundef zeroext 0, i32 noundef 36, ptr noundef %785)
          to label %786 unwind label %922

786:                                              ; preds = %776
  %787 = load ptr, ptr @glad_glVertexAttribPointer, align 8, !tbaa !5
  %788 = getelementptr inbounds %struct.PointerCaster, ptr %56, i32 0, i32 0
  %789 = load ptr, ptr %788, align 8, !tbaa !73
  invoke void %787(i32 noundef 4, i32 noundef 3, i32 noundef 5126, i8 noundef zeroext 0, i32 noundef 36, ptr noundef %789)
          to label %790 unwind label %922

790:                                              ; preds = %786
  %791 = load ptr, ptr @glad_glVertexAttribPointer, align 8, !tbaa !5
  %792 = load i32, ptr %45, align 4, !tbaa !9
  %793 = sext i32 %792 to i64
  %794 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZNSt6vectorI27SortableTransparentInstanceSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %29, i64 noundef %793) #11
  %795 = getelementptr inbounds %struct.SortableTransparentInstance, ptr %794, i32 0, i32 2
  %796 = load i32, ptr %795, align 4, !tbaa !61
  %797 = mul nsw i32 %796, 4
  %798 = sext i32 %797 to i64
  %799 = mul i64 %798, 4
  %800 = getelementptr inbounds %class.TinyGLInstancingRenderer, ptr %71, i32 0, i32 2
  %801 = load ptr, ptr %800, align 8, !tbaa !17
  %802 = getelementptr inbounds %struct.GLInstanceRendererInternalData, ptr %801, i32 0, i32 8
  %803 = load i32, ptr %802, align 8, !tbaa !74
  %804 = sext i32 %803 to i64
  %805 = add i64 %799, %804
  %806 = load i32, ptr %50, align 4, !tbaa !9
  %807 = sext i32 %806 to i64
  %808 = add i64 %805, %807
  %809 = load i32, ptr %51, align 4, !tbaa !9
  %810 = sext i32 %809 to i64
  %811 = add i64 %808, %810
  %812 = inttoptr i64 %811 to ptr
  invoke void %791(i32 noundef 5, i32 noundef 4, i32 noundef 5126, i8 noundef zeroext 0, i32 noundef 0, ptr noundef %812)
          to label %813 unwind label %922

813:                                              ; preds = %790
  %814 = load ptr, ptr @glad_glVertexAttribPointer, align 8, !tbaa !5
  %815 = load i32, ptr %45, align 4, !tbaa !9
  %816 = sext i32 %815 to i64
  %817 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZNSt6vectorI27SortableTransparentInstanceSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %29, i64 noundef %816) #11
  %818 = getelementptr inbounds %struct.SortableTransparentInstance, ptr %817, i32 0, i32 2
  %819 = load i32, ptr %818, align 4, !tbaa !61
  %820 = mul nsw i32 %819, 4
  %821 = sext i32 %820 to i64
  %822 = mul i64 %821, 4
  %823 = getelementptr inbounds %class.TinyGLInstancingRenderer, ptr %71, i32 0, i32 2
  %824 = load ptr, ptr %823, align 8, !tbaa !17
  %825 = getelementptr inbounds %struct.GLInstanceRendererInternalData, ptr %824, i32 0, i32 8
  %826 = load i32, ptr %825, align 8, !tbaa !74
  %827 = sext i32 %826 to i64
  %828 = add i64 %822, %827
  %829 = load i32, ptr %50, align 4, !tbaa !9
  %830 = sext i32 %829 to i64
  %831 = add i64 %828, %830
  %832 = load i32, ptr %51, align 4, !tbaa !9
  %833 = sext i32 %832 to i64
  %834 = add i64 %831, %833
  %835 = load i32, ptr %52, align 4, !tbaa !9
  %836 = sext i32 %835 to i64
  %837 = add i64 %834, %836
  %838 = inttoptr i64 %837 to ptr
  invoke void %814(i32 noundef 6, i32 noundef 4, i32 noundef 5126, i8 noundef zeroext 0, i32 noundef 0, ptr noundef %838)
          to label %839 unwind label %922

839:                                              ; preds = %813
  %840 = load ptr, ptr @glad_glEnableVertexAttribArray, align 8, !tbaa !5
  invoke void %840(i32 noundef 0)
          to label %841 unwind label %922

841:                                              ; preds = %839
  %842 = load ptr, ptr @glad_glEnableVertexAttribArray, align 8, !tbaa !5
  invoke void %842(i32 noundef 1)
          to label %843 unwind label %922

843:                                              ; preds = %841
  %844 = load ptr, ptr @glad_glEnableVertexAttribArray, align 8, !tbaa !5
  invoke void %844(i32 noundef 2)
          to label %845 unwind label %922

845:                                              ; preds = %843
  %846 = load ptr, ptr @glad_glEnableVertexAttribArray, align 8, !tbaa !5
  invoke void %846(i32 noundef 3)
          to label %847 unwind label %922

847:                                              ; preds = %845
  %848 = load ptr, ptr @glad_glEnableVertexAttribArray, align 8, !tbaa !5
  invoke void %848(i32 noundef 4)
          to label %849 unwind label %922

849:                                              ; preds = %847
  %850 = load ptr, ptr @glad_glEnableVertexAttribArray, align 8, !tbaa !5
  invoke void %850(i32 noundef 5)
          to label %851 unwind label %922

851:                                              ; preds = %849
  %852 = load ptr, ptr @glad_glEnableVertexAttribArray, align 8, !tbaa !5
  invoke void %852(i32 noundef 6)
          to label %853 unwind label %922

853:                                              ; preds = %851
  %854 = load ptr, ptr @glad_glVertexAttribDivisor, align 8, !tbaa !5
  invoke void %854(i32 noundef 0, i32 noundef 0)
          to label %855 unwind label %922

855:                                              ; preds = %853
  %856 = load ptr, ptr @glad_glVertexAttribDivisor, align 8, !tbaa !5
  invoke void %856(i32 noundef 1, i32 noundef 1)
          to label %857 unwind label %922

857:                                              ; preds = %855
  %858 = load ptr, ptr @glad_glVertexAttribDivisor, align 8, !tbaa !5
  invoke void %858(i32 noundef 2, i32 noundef 1)
          to label %859 unwind label %922

859:                                              ; preds = %857
  %860 = load ptr, ptr @glad_glVertexAttribDivisor, align 8, !tbaa !5
  invoke void %860(i32 noundef 3, i32 noundef 0)
          to label %861 unwind label %922

861:                                              ; preds = %859
  %862 = load ptr, ptr @glad_glVertexAttribDivisor, align 8, !tbaa !5
  invoke void %862(i32 noundef 4, i32 noundef 0)
          to label %863 unwind label %922

863:                                              ; preds = %861
  %864 = load ptr, ptr @glad_glVertexAttribDivisor, align 8, !tbaa !5
  invoke void %864(i32 noundef 5, i32 noundef 1)
          to label %865 unwind label %922

865:                                              ; preds = %863
  %866 = load ptr, ptr @glad_glVertexAttribDivisor, align 8, !tbaa !5
  invoke void %866(i32 noundef 6, i32 noundef 1)
          to label %867 unwind label %922

867:                                              ; preds = %865
  call void @llvm.lifetime.start.p0(i64 4, ptr %57) #11
  %868 = load ptr, ptr %47, align 8, !tbaa !5
  %869 = getelementptr inbounds %struct.b3GraphicsInstance, ptr %868, i32 0, i32 3
  %870 = load i32, ptr %869, align 4, !tbaa !75
  store i32 %870, ptr %57, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %58) #11
  store ptr null, ptr %58, align 8, !tbaa !5
  %871 = load ptr, ptr @glad_glBindBuffer, align 8, !tbaa !5
  %872 = load ptr, ptr %47, align 8, !tbaa !5
  %873 = getelementptr inbounds %struct.b3GraphicsInstance, ptr %872, i32 0, i32 1
  %874 = load i32, ptr %873, align 4, !tbaa !76
  invoke void %871(i32 noundef 34963, i32 noundef %874)
          to label %875 unwind label %926

875:                                              ; preds = %867
  %876 = load ptr, ptr %47, align 8, !tbaa !5
  %877 = getelementptr inbounds %struct.b3GraphicsInstance, ptr %876, i32 0, i32 9
  %878 = load i32, ptr %877, align 8, !tbaa !77
  %879 = icmp eq i32 %878, 2
  br i1 %879, label %880, label %945

880:                                              ; preds = %875
  %881 = load ptr, ptr @glad_glUseProgram, align 8, !tbaa !5
  %882 = load i32, ptr @_ZL27instancingShaderPointSprite, align 4, !tbaa !9
  invoke void %881(i32 noundef %882)
          to label %883 unwind label %926

883:                                              ; preds = %880
  %884 = load ptr, ptr @glad_glUniformMatrix4fv, align 8, !tbaa !5
  %885 = load i32, ptr @_ZL27ProjectionMatrixPointSprite, align 4, !tbaa !9
  %886 = getelementptr inbounds %class.TinyGLInstancingRenderer, ptr %71, i32 0, i32 2
  %887 = load ptr, ptr %886, align 8, !tbaa !17
  %888 = getelementptr inbounds %struct.InternalDataRenderer, ptr %887, i32 0, i32 4
  %889 = getelementptr inbounds [16 x float], ptr %888, i64 0, i64 0
  invoke void %884(i32 noundef %885, i32 noundef 1, i8 noundef zeroext 0, ptr noundef %889)
          to label %890 unwind label %926

890:                                              ; preds = %883
  %891 = load ptr, ptr @glad_glUniformMatrix4fv, align 8, !tbaa !5
  %892 = load i32, ptr @_ZL26ModelViewMatrixPointSprite, align 4, !tbaa !9
  %893 = getelementptr inbounds %class.TinyGLInstancingRenderer, ptr %71, i32 0, i32 2
  %894 = load ptr, ptr %893, align 8, !tbaa !17
  %895 = getelementptr inbounds %struct.InternalDataRenderer, ptr %894, i32 0, i32 5
  %896 = getelementptr inbounds [16 x float], ptr %895, i64 0, i64 0
  invoke void %891(i32 noundef %892, i32 noundef 1, i8 noundef zeroext 0, ptr noundef %896)
          to label %897 unwind label %926

897:                                              ; preds = %890
  %898 = load ptr, ptr @glad_glUniform1f, align 8, !tbaa !5
  %899 = load i32, ptr @_ZL22screenWidthPointSprite, align 4, !tbaa !9
  %900 = getelementptr inbounds %class.TinyGLInstancingRenderer, ptr %71, i32 0, i32 6
  %901 = load i32, ptr %900, align 4, !tbaa !78
  %902 = sitofp i32 %901 to float
  invoke void %898(i32 noundef %899, float noundef %902)
          to label %903 unwind label %926

903:                                              ; preds = %897
  %904 = load ptr, ptr @glad_glGetError, align 8, !tbaa !5
  %905 = invoke i32 %904()
          to label %906 unwind label %926

906:                                              ; preds = %903
  %907 = icmp eq i32 %905, 0
  br i1 %907, label %908, label %909

908:                                              ; preds = %906
  br label %931

909:                                              ; preds = %906
  call void @__assert_fail(ptr noundef @.str.4, ptr noundef @.str.1, i32 noundef 2416, ptr noundef @__PRETTY_FUNCTION__._ZN24TinyGLInstancingRenderer21render_scene_internalEi) #12
  unreachable

910:                                              ; preds = %700
  %911 = landingpad { ptr, i32 }
          cleanup
  %912 = extractvalue { ptr, i32 } %911, 0
  store ptr %912, ptr %14, align 8
  %913 = extractvalue { ptr, i32 } %911, 1
  store i32 %913, ptr %15, align 4
  br label %1757

914:                                              ; preds = %748, %731, %721, %720
  %915 = landingpad { ptr, i32 }
          cleanup
  %916 = extractvalue { ptr, i32 } %915, 0
  store ptr %916, ptr %14, align 8
  %917 = extractvalue { ptr, i32 } %915, 1
  store i32 %917, ptr %15, align 4
  br label %1756

918:                                              ; preds = %768
  %919 = landingpad { ptr, i32 }
          cleanup
  %920 = extractvalue { ptr, i32 } %919, 0
  store ptr %920, ptr %14, align 8
  %921 = extractvalue { ptr, i32 } %919, 1
  store i32 %921, ptr %15, align 4
  br label %1755

922:                                              ; preds = %865, %863, %861, %859, %857, %855, %853, %851, %849, %847, %845, %843, %841, %839, %813, %790, %786, %776, %769
  %923 = landingpad { ptr, i32 }
          cleanup
  %924 = extractvalue { ptr, i32 } %923, 0
  store ptr %924, ptr %14, align 8
  %925 = extractvalue { ptr, i32 } %923, 1
  store i32 %925, ptr %15, align 4
  br label %1754

926:                                              ; preds = %1748, %1519, %1514, %1509, %1503, %1501, %1495, %1489, %1482, %1475, %1472, %1469, %1467, %1465, %1221, %1216, %1211, %1205, %1203, %1197, %1191, %1184, %1177, %1174, %1171, %1169, %1167, %1153, %1148, %1145, %1004, %997, %994, %991, %989, %987, %973, %966, %959, %956, %951, %937, %935, %933, %931, %903, %897, %890, %883, %880, %867
  %927 = landingpad { ptr, i32 }
          cleanup
  %928 = extractvalue { ptr, i32 } %927, 0
  store ptr %928, ptr %14, align 8
  %929 = extractvalue { ptr, i32 } %927, 1
  store i32 %929, ptr %15, align 4
  br label %1753

930:                                              ; No predecessors!
  br label %931

931:                                              ; preds = %930, %908
  %932 = load ptr, ptr @glad_glPointSize, align 8, !tbaa !5
  invoke void %932(float noundef 2.000000e+01)
          to label %933 unwind label %926

933:                                              ; preds = %931
  %934 = load ptr, ptr @glad_glEnable, align 8, !tbaa !5
  invoke void %934(i32 noundef 34913)
          to label %935 unwind label %926

935:                                              ; preds = %933
  %936 = load ptr, ptr @glad_glEnable, align 8, !tbaa !5
  invoke void %936(i32 noundef 34370)
          to label %937 unwind label %926

937:                                              ; preds = %935
  %938 = load ptr, ptr @glad_glDrawElementsInstanced, align 8, !tbaa !5
  %939 = load i32, ptr %57, align 4, !tbaa !9
  %940 = load ptr, ptr %58, align 8, !tbaa !5
  %941 = load ptr, ptr %47, align 8, !tbaa !5
  %942 = getelementptr inbounds %struct.b3GraphicsInstance, ptr %941, i32 0, i32 5
  %943 = load i32, ptr %942, align 4, !tbaa !51
  invoke void %938(i32 noundef 0, i32 noundef %939, i32 noundef 5125, ptr noundef %940, i32 noundef %943)
          to label %944 unwind label %926

944:                                              ; preds = %937
  br label %1752

945:                                              ; preds = %875
  %946 = load ptr, ptr %47, align 8, !tbaa !5
  %947 = getelementptr inbounds %struct.b3GraphicsInstance, ptr %946, i32 0, i32 12
  %948 = load i32, ptr %947, align 8, !tbaa !60
  %949 = and i32 %948, 4
  %950 = icmp ne i32 %949, 0
  br i1 %950, label %951, label %954

951:                                              ; preds = %945
  %952 = load ptr, ptr @glad_glDisable, align 8, !tbaa !5
  invoke void %952(i32 noundef 2884)
          to label %953 unwind label %926

953:                                              ; preds = %951
  br label %954

954:                                              ; preds = %953, %945
  %955 = load i32, ptr %5, align 4, !tbaa !9
  switch i32 %955, label %1741 [
    i32 7, label %956
    i32 1, label %981
    i32 2, label %1145
    i32 3, label %1161
    i32 6, label %1459
  ]

956:                                              ; preds = %954
  %957 = load ptr, ptr @glad_glUseProgram, align 8, !tbaa !5
  %958 = load i32, ptr @_ZL32segmentationMaskInstancingShader, align 4, !tbaa !9
  invoke void %957(i32 noundef %958)
          to label %959 unwind label %926

959:                                              ; preds = %956
  %960 = load ptr, ptr @glad_glUniformMatrix4fv, align 8, !tbaa !5
  %961 = load i32, ptr @_ZL32segmentationMaskProjectionMatrix, align 4, !tbaa !9
  %962 = getelementptr inbounds %class.TinyGLInstancingRenderer, ptr %71, i32 0, i32 2
  %963 = load ptr, ptr %962, align 8, !tbaa !17
  %964 = getelementptr inbounds %struct.InternalDataRenderer, ptr %963, i32 0, i32 4
  %965 = getelementptr inbounds [16 x float], ptr %964, i64 0, i64 0
  invoke void %960(i32 noundef %961, i32 noundef 1, i8 noundef zeroext 0, ptr noundef %965)
          to label %966 unwind label %926

966:                                              ; preds = %959
  %967 = load ptr, ptr @glad_glUniformMatrix4fv, align 8, !tbaa !5
  %968 = load i32, ptr @_ZL31segmentationMaskModelViewMatrix, align 4, !tbaa !9
  %969 = getelementptr inbounds %class.TinyGLInstancingRenderer, ptr %71, i32 0, i32 2
  %970 = load ptr, ptr %969, align 8, !tbaa !17
  %971 = getelementptr inbounds %struct.InternalDataRenderer, ptr %970, i32 0, i32 5
  %972 = getelementptr inbounds [16 x float], ptr %971, i64 0, i64 0
  invoke void %967(i32 noundef %968, i32 noundef 1, i8 noundef zeroext 0, ptr noundef %972)
          to label %973 unwind label %926

973:                                              ; preds = %966
  %974 = load ptr, ptr @glad_glDrawElementsInstanced, align 8, !tbaa !5
  %975 = load i32, ptr %57, align 4, !tbaa !9
  %976 = load ptr, ptr %58, align 8, !tbaa !5
  %977 = load ptr, ptr %47, align 8, !tbaa !5
  %978 = getelementptr inbounds %struct.b3GraphicsInstance, ptr %977, i32 0, i32 5
  %979 = load i32, ptr %978, align 4, !tbaa !51
  invoke void %974(i32 noundef 4, i32 noundef %975, i32 noundef 5125, ptr noundef %976, i32 noundef %979)
          to label %980 unwind label %926

980:                                              ; preds = %973
  br label %1742

981:                                              ; preds = %954
  %982 = load ptr, ptr %47, align 8, !tbaa !5
  %983 = getelementptr inbounds %struct.b3GraphicsInstance, ptr %982, i32 0, i32 12
  %984 = load i32, ptr %983, align 8, !tbaa !60
  %985 = and i32 %984, 1
  %986 = icmp ne i32 %985, 0
  br i1 %986, label %987, label %994

987:                                              ; preds = %981
  %988 = load ptr, ptr @glad_glDepthMask, align 8, !tbaa !5
  invoke void %988(i8 noundef zeroext 0)
          to label %989 unwind label %926

989:                                              ; preds = %987
  %990 = load ptr, ptr @glad_glEnable, align 8, !tbaa !5
  invoke void %990(i32 noundef 3042)
          to label %991 unwind label %926

991:                                              ; preds = %989
  %992 = load ptr, ptr @glad_glBlendFunc, align 8, !tbaa !5
  invoke void %992(i32 noundef 770, i32 noundef 771)
          to label %993 unwind label %926

993:                                              ; preds = %991
  br label %994

994:                                              ; preds = %993, %981
  %995 = load ptr, ptr @glad_glUseProgram, align 8, !tbaa !5
  %996 = load i32, ptr @_ZL16instancingShader, align 4, !tbaa !9
  invoke void %995(i32 noundef %996)
          to label %997 unwind label %926

997:                                              ; preds = %994
  %998 = load ptr, ptr @glad_glUniformMatrix4fv, align 8, !tbaa !5
  %999 = load i32, ptr @_ZL16ProjectionMatrix, align 4, !tbaa !9
  %1000 = getelementptr inbounds %class.TinyGLInstancingRenderer, ptr %71, i32 0, i32 2
  %1001 = load ptr, ptr %1000, align 8, !tbaa !17
  %1002 = getelementptr inbounds %struct.InternalDataRenderer, ptr %1001, i32 0, i32 4
  %1003 = getelementptr inbounds [16 x float], ptr %1002, i64 0, i64 0
  invoke void %998(i32 noundef %999, i32 noundef 1, i8 noundef zeroext 0, ptr noundef %1003)
          to label %1004 unwind label %926

1004:                                             ; preds = %997
  %1005 = load ptr, ptr @glad_glUniformMatrix4fv, align 8, !tbaa !5
  %1006 = load i32, ptr @_ZL15ModelViewMatrix, align 4, !tbaa !9
  %1007 = getelementptr inbounds %class.TinyGLInstancingRenderer, ptr %71, i32 0, i32 2
  %1008 = load ptr, ptr %1007, align 8, !tbaa !17
  %1009 = getelementptr inbounds %struct.InternalDataRenderer, ptr %1008, i32 0, i32 5
  %1010 = getelementptr inbounds [16 x float], ptr %1009, i64 0, i64 0
  invoke void %1005(i32 noundef %1006, i32 noundef 1, i8 noundef zeroext 0, ptr noundef %1010)
          to label %1011 unwind label %926

1011:                                             ; preds = %1004
  call void @llvm.lifetime.start.p0(i64 16, ptr %59) #11
  %1012 = getelementptr inbounds %class.TinyGLInstancingRenderer, ptr %71, i32 0, i32 2
  %1013 = load ptr, ptr %1012, align 8, !tbaa !17
  %1014 = getelementptr inbounds %struct.InternalDataRenderer, ptr %1013, i32 0, i32 11
  invoke void @_ZN4TINY11TinyVector3IfNS_10FloatUtilsEEC2ERKS2_(ptr noundef nonnull align 4 dereferenceable(16) %59, ptr noundef nonnull align 4 dereferenceable(16) %1014)
          to label %1015 unwind label %1116

1015:                                             ; preds = %1011
  invoke void @_ZN4TINY11TinyVector3IfNS_10FloatUtilsEE9normalizeEv(ptr noundef nonnull align 4 dereferenceable(16) %59)
          to label %1016 unwind label %1116

1016:                                             ; preds = %1015
  %1017 = load ptr, ptr @glad_glUniform3f, align 8, !tbaa !5
  %1018 = load i32, ptr @_ZL17regularLightDirIn, align 4, !tbaa !9
  %1019 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN4TINY11TinyVector3IfNS_10FloatUtilsEEixEi(ptr noundef nonnull align 4 dereferenceable(16) %59, i32 noundef 0)
          to label %1020 unwind label %1116

1020:                                             ; preds = %1016
  %1021 = load float, ptr %1019, align 4, !tbaa !79
  %1022 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN4TINY11TinyVector3IfNS_10FloatUtilsEEixEi(ptr noundef nonnull align 4 dereferenceable(16) %59, i32 noundef 1)
          to label %1023 unwind label %1116

1023:                                             ; preds = %1020
  %1024 = load float, ptr %1022, align 4, !tbaa !79
  %1025 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN4TINY11TinyVector3IfNS_10FloatUtilsEEixEi(ptr noundef nonnull align 4 dereferenceable(16) %59, i32 noundef 2)
          to label %1026 unwind label %1116

1026:                                             ; preds = %1023
  %1027 = load float, ptr %1025, align 4, !tbaa !79
  invoke void %1017(i32 noundef %1018, float noundef %1021, float noundef %1024, float noundef %1027)
          to label %1028 unwind label %1116

1028:                                             ; preds = %1026
  %1029 = load ptr, ptr @glad_glUniform1i, align 8, !tbaa !5
  %1030 = load i32, ptr @_ZL23uniform_texture_diffuse, align 4, !tbaa !9
  invoke void %1029(i32 noundef %1030, i32 noundef 0)
          to label %1031 unwind label %1116

1031:                                             ; preds = %1028
  %1032 = load ptr, ptr %47, align 8, !tbaa !5
  %1033 = getelementptr inbounds %struct.b3GraphicsInstance, ptr %1032, i32 0, i32 12
  %1034 = load i32, ptr %1033, align 8, !tbaa !60
  %1035 = and i32 %1034, 1
  %1036 = icmp ne i32 %1035, 0
  br i1 %1036, label %1037, label %1124

1037:                                             ; preds = %1031
  call void @llvm.lifetime.start.p0(i64 4, ptr %60) #11
  %1038 = load i32, ptr %45, align 4, !tbaa !9
  %1039 = sext i32 %1038 to i64
  %1040 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZNSt6vectorI27SortableTransparentInstanceSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %29, i64 noundef %1039) #11
  %1041 = getelementptr inbounds %struct.SortableTransparentInstance, ptr %1040, i32 0, i32 2
  %1042 = load i32, ptr %1041, align 4, !tbaa !61
  store i32 %1042, ptr %60, align 4, !tbaa !9
  %1043 = load ptr, ptr @glad_glVertexAttribPointer, align 8, !tbaa !5
  %1044 = load i32, ptr %60, align 4, !tbaa !9
  %1045 = mul nsw i32 %1044, 4
  %1046 = sext i32 %1045 to i64
  %1047 = mul i64 %1046, 4
  %1048 = getelementptr inbounds %class.TinyGLInstancingRenderer, ptr %71, i32 0, i32 2
  %1049 = load ptr, ptr %1048, align 8, !tbaa !17
  %1050 = getelementptr inbounds %struct.GLInstanceRendererInternalData, ptr %1049, i32 0, i32 8
  %1051 = load i32, ptr %1050, align 8, !tbaa !74
  %1052 = sext i32 %1051 to i64
  %1053 = add i64 %1047, %1052
  %1054 = inttoptr i64 %1053 to ptr
  invoke void %1043(i32 noundef 1, i32 noundef 4, i32 noundef 5126, i8 noundef zeroext 0, i32 noundef 0, ptr noundef %1054)
          to label %1055 unwind label %1120

1055:                                             ; preds = %1037
  %1056 = load ptr, ptr @glad_glVertexAttribPointer, align 8, !tbaa !5
  %1057 = load i32, ptr %60, align 4, !tbaa !9
  %1058 = mul nsw i32 %1057, 4
  %1059 = sext i32 %1058 to i64
  %1060 = mul i64 %1059, 4
  %1061 = getelementptr inbounds %class.TinyGLInstancingRenderer, ptr %71, i32 0, i32 2
  %1062 = load ptr, ptr %1061, align 8, !tbaa !17
  %1063 = getelementptr inbounds %struct.GLInstanceRendererInternalData, ptr %1062, i32 0, i32 8
  %1064 = load i32, ptr %1063, align 8, !tbaa !74
  %1065 = sext i32 %1064 to i64
  %1066 = add i64 %1060, %1065
  %1067 = load i32, ptr %50, align 4, !tbaa !9
  %1068 = sext i32 %1067 to i64
  %1069 = add i64 %1066, %1068
  %1070 = inttoptr i64 %1069 to ptr
  invoke void %1056(i32 noundef 2, i32 noundef 4, i32 noundef 5126, i8 noundef zeroext 0, i32 noundef 0, ptr noundef %1070)
          to label %1071 unwind label %1120

1071:                                             ; preds = %1055
  %1072 = load ptr, ptr @glad_glVertexAttribPointer, align 8, !tbaa !5
  %1073 = load i32, ptr %60, align 4, !tbaa !9
  %1074 = mul nsw i32 %1073, 4
  %1075 = sext i32 %1074 to i64
  %1076 = mul i64 %1075, 4
  %1077 = getelementptr inbounds %class.TinyGLInstancingRenderer, ptr %71, i32 0, i32 2
  %1078 = load ptr, ptr %1077, align 8, !tbaa !17
  %1079 = getelementptr inbounds %struct.GLInstanceRendererInternalData, ptr %1078, i32 0, i32 8
  %1080 = load i32, ptr %1079, align 8, !tbaa !74
  %1081 = sext i32 %1080 to i64
  %1082 = add i64 %1076, %1081
  %1083 = load i32, ptr %50, align 4, !tbaa !9
  %1084 = sext i32 %1083 to i64
  %1085 = add i64 %1082, %1084
  %1086 = load i32, ptr %51, align 4, !tbaa !9
  %1087 = sext i32 %1086 to i64
  %1088 = add i64 %1085, %1087
  %1089 = inttoptr i64 %1088 to ptr
  invoke void %1072(i32 noundef 5, i32 noundef 4, i32 noundef 5126, i8 noundef zeroext 0, i32 noundef 0, ptr noundef %1089)
          to label %1090 unwind label %1120

1090:                                             ; preds = %1071
  %1091 = load ptr, ptr @glad_glVertexAttribPointer, align 8, !tbaa !5
  %1092 = load i32, ptr %60, align 4, !tbaa !9
  %1093 = mul nsw i32 %1092, 4
  %1094 = sext i32 %1093 to i64
  %1095 = mul i64 %1094, 4
  %1096 = getelementptr inbounds %class.TinyGLInstancingRenderer, ptr %71, i32 0, i32 2
  %1097 = load ptr, ptr %1096, align 8, !tbaa !17
  %1098 = getelementptr inbounds %struct.GLInstanceRendererInternalData, ptr %1097, i32 0, i32 8
  %1099 = load i32, ptr %1098, align 8, !tbaa !74
  %1100 = sext i32 %1099 to i64
  %1101 = add i64 %1095, %1100
  %1102 = load i32, ptr %50, align 4, !tbaa !9
  %1103 = sext i32 %1102 to i64
  %1104 = add i64 %1101, %1103
  %1105 = load i32, ptr %51, align 4, !tbaa !9
  %1106 = sext i32 %1105 to i64
  %1107 = add i64 %1104, %1106
  %1108 = load i32, ptr %52, align 4, !tbaa !9
  %1109 = sext i32 %1108 to i64
  %1110 = add i64 %1107, %1109
  %1111 = inttoptr i64 %1110 to ptr
  invoke void %1091(i32 noundef 6, i32 noundef 4, i32 noundef 5126, i8 noundef zeroext 0, i32 noundef 0, ptr noundef %1111)
          to label %1112 unwind label %1120

1112:                                             ; preds = %1090
  %1113 = load ptr, ptr @glad_glDrawElements, align 8, !tbaa !5
  %1114 = load i32, ptr %57, align 4, !tbaa !9
  invoke void %1113(i32 noundef 4, i32 noundef %1114, i32 noundef 5125, ptr noundef null)
          to label %1115 unwind label %1120

1115:                                             ; preds = %1112
  call void @llvm.lifetime.end.p0(i64 4, ptr %60) #11
  br label %1132

1116:                                             ; preds = %1140, %1138, %1124, %1028, %1026, %1023, %1020, %1016, %1015, %1011
  %1117 = landingpad { ptr, i32 }
          cleanup
  %1118 = extractvalue { ptr, i32 } %1117, 0
  store ptr %1118, ptr %14, align 8
  %1119 = extractvalue { ptr, i32 } %1117, 1
  store i32 %1119, ptr %15, align 4
  br label %1144

1120:                                             ; preds = %1112, %1090, %1071, %1055, %1037
  %1121 = landingpad { ptr, i32 }
          cleanup
  %1122 = extractvalue { ptr, i32 } %1121, 0
  store ptr %1122, ptr %14, align 8
  %1123 = extractvalue { ptr, i32 } %1121, 1
  store i32 %1123, ptr %15, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %60) #11
  br label %1144

1124:                                             ; preds = %1031
  %1125 = load ptr, ptr @glad_glDrawElementsInstanced, align 8, !tbaa !5
  %1126 = load i32, ptr %57, align 4, !tbaa !9
  %1127 = load ptr, ptr %58, align 8, !tbaa !5
  %1128 = load ptr, ptr %47, align 8, !tbaa !5
  %1129 = getelementptr inbounds %struct.b3GraphicsInstance, ptr %1128, i32 0, i32 5
  %1130 = load i32, ptr %1129, align 4, !tbaa !51
  invoke void %1125(i32 noundef 4, i32 noundef %1126, i32 noundef 5125, ptr noundef %1127, i32 noundef %1130)
          to label %1131 unwind label %1116

1131:                                             ; preds = %1124
  br label %1132

1132:                                             ; preds = %1131, %1115
  %1133 = load ptr, ptr %47, align 8, !tbaa !5
  %1134 = getelementptr inbounds %struct.b3GraphicsInstance, ptr %1133, i32 0, i32 12
  %1135 = load i32, ptr %1134, align 8, !tbaa !60
  %1136 = and i32 %1135, 1
  %1137 = icmp ne i32 %1136, 0
  br i1 %1137, label %1138, label %1143

1138:                                             ; preds = %1132
  %1139 = load ptr, ptr @glad_glDisable, align 8, !tbaa !5
  invoke void %1139(i32 noundef 3042)
          to label %1140 unwind label %1116

1140:                                             ; preds = %1138
  %1141 = load ptr, ptr @glad_glDepthMask, align 8, !tbaa !5
  invoke void %1141(i8 noundef zeroext 1)
          to label %1142 unwind label %1116

1142:                                             ; preds = %1140
  br label %1143

1143:                                             ; preds = %1142, %1132
  store i32 19, ptr %34, align 4
  call void @llvm.lifetime.end.p0(i64 16, ptr %59) #11
  br label %1742

1144:                                             ; preds = %1120, %1116
  call void @llvm.lifetime.end.p0(i64 16, ptr %59) #11
  br label %1753

1145:                                             ; preds = %954
  %1146 = load ptr, ptr @glad_glUseProgram, align 8, !tbaa !5
  %1147 = load i32, ptr @_ZL31createShadowMapInstancingShader, align 4, !tbaa !9
  invoke void %1146(i32 noundef %1147)
          to label %1148 unwind label %926

1148:                                             ; preds = %1145
  %1149 = load ptr, ptr @glad_glUniformMatrix4fv, align 8, !tbaa !5
  %1150 = load i32, ptr @_ZL21createShadow_depthMVP, align 4, !tbaa !9
  %1151 = getelementptr inbounds [4 x [4 x float]], ptr %23, i64 0, i64 0
  %1152 = getelementptr inbounds [4 x float], ptr %1151, i64 0, i64 0
  invoke void %1149(i32 noundef %1150, i32 noundef 1, i8 noundef zeroext 0, ptr noundef %1152)
          to label %1153 unwind label %926

1153:                                             ; preds = %1148
  %1154 = load ptr, ptr @glad_glDrawElementsInstanced, align 8, !tbaa !5
  %1155 = load i32, ptr %57, align 4, !tbaa !9
  %1156 = load ptr, ptr %58, align 8, !tbaa !5
  %1157 = load ptr, ptr %47, align 8, !tbaa !5
  %1158 = getelementptr inbounds %struct.b3GraphicsInstance, ptr %1157, i32 0, i32 5
  %1159 = load i32, ptr %1158, align 4, !tbaa !51
  invoke void %1154(i32 noundef 4, i32 noundef %1155, i32 noundef 5125, ptr noundef %1156, i32 noundef %1159)
          to label %1160 unwind label %926

1160:                                             ; preds = %1153
  br label %1742

1161:                                             ; preds = %954
  %1162 = load ptr, ptr %47, align 8, !tbaa !5
  %1163 = getelementptr inbounds %struct.b3GraphicsInstance, ptr %1162, i32 0, i32 12
  %1164 = load i32, ptr %1163, align 8, !tbaa !60
  %1165 = and i32 %1164, 1
  %1166 = icmp ne i32 %1165, 0
  br i1 %1166, label %1167, label %1174

1167:                                             ; preds = %1161
  %1168 = load ptr, ptr @glad_glDepthMask, align 8, !tbaa !5
  invoke void %1168(i8 noundef zeroext 0)
          to label %1169 unwind label %926

1169:                                             ; preds = %1167
  %1170 = load ptr, ptr @glad_glEnable, align 8, !tbaa !5
  invoke void %1170(i32 noundef 3042)
          to label %1171 unwind label %926

1171:                                             ; preds = %1169
  %1172 = load ptr, ptr @glad_glBlendFunc, align 8, !tbaa !5
  invoke void %1172(i32 noundef 770, i32 noundef 771)
          to label %1173 unwind label %926

1173:                                             ; preds = %1171
  br label %1174

1174:                                             ; preds = %1173, %1161
  %1175 = load ptr, ptr @glad_glUseProgram, align 8, !tbaa !5
  %1176 = load i32, ptr @_ZL28useShadowMapInstancingShader, align 4, !tbaa !9
  invoke void %1175(i32 noundef %1176)
          to label %1177 unwind label %926

1177:                                             ; preds = %1174
  %1178 = load ptr, ptr @glad_glUniformMatrix4fv, align 8, !tbaa !5
  %1179 = load i32, ptr @_ZL26useShadow_ProjectionMatrix, align 4, !tbaa !9
  %1180 = getelementptr inbounds %class.TinyGLInstancingRenderer, ptr %71, i32 0, i32 2
  %1181 = load ptr, ptr %1180, align 8, !tbaa !17
  %1182 = getelementptr inbounds %struct.InternalDataRenderer, ptr %1181, i32 0, i32 4
  %1183 = getelementptr inbounds [16 x float], ptr %1182, i64 0, i64 0
  invoke void %1178(i32 noundef %1179, i32 noundef 1, i8 noundef zeroext 0, ptr noundef %1183)
          to label %1184 unwind label %926

1184:                                             ; preds = %1177
  %1185 = load ptr, ptr @glad_glUniform3f, align 8, !tbaa !5
  %1186 = load i32, ptr @_ZL32useShadow_lightSpecularIntensity, align 4, !tbaa !9
  %1187 = getelementptr inbounds %class.TinyGLInstancingRenderer, ptr %71, i32 0, i32 2
  %1188 = load ptr, ptr %1187, align 8, !tbaa !17
  %1189 = getelementptr inbounds %struct.InternalDataRenderer, ptr %1188, i32 0, i32 12
  %1190 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN4TINY11TinyVector3IfNS_10FloatUtilsEEixEi(ptr noundef nonnull align 4 dereferenceable(16) %1189, i32 noundef 0)
          to label %1191 unwind label %926

1191:                                             ; preds = %1184
  %1192 = load float, ptr %1190, align 4, !tbaa !79
  %1193 = getelementptr inbounds %class.TinyGLInstancingRenderer, ptr %71, i32 0, i32 2
  %1194 = load ptr, ptr %1193, align 8, !tbaa !17
  %1195 = getelementptr inbounds %struct.InternalDataRenderer, ptr %1194, i32 0, i32 12
  %1196 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN4TINY11TinyVector3IfNS_10FloatUtilsEEixEi(ptr noundef nonnull align 4 dereferenceable(16) %1195, i32 noundef 1)
          to label %1197 unwind label %926

1197:                                             ; preds = %1191
  %1198 = load float, ptr %1196, align 4, !tbaa !79
  %1199 = getelementptr inbounds %class.TinyGLInstancingRenderer, ptr %71, i32 0, i32 2
  %1200 = load ptr, ptr %1199, align 8, !tbaa !17
  %1201 = getelementptr inbounds %struct.InternalDataRenderer, ptr %1200, i32 0, i32 12
  %1202 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN4TINY11TinyVector3IfNS_10FloatUtilsEEixEi(ptr noundef nonnull align 4 dereferenceable(16) %1201, i32 noundef 2)
          to label %1203 unwind label %926

1203:                                             ; preds = %1197
  %1204 = load float, ptr %1202, align 4, !tbaa !79
  invoke void %1185(i32 noundef %1186, float noundef %1192, float noundef %1198, float noundef %1204)
          to label %1205 unwind label %926

1205:                                             ; preds = %1203
  %1206 = load ptr, ptr @glad_glUniform3f, align 8, !tbaa !5
  %1207 = load i32, ptr @_ZL31useShadow_materialSpecularColor, align 4, !tbaa !9
  %1208 = load ptr, ptr %47, align 8, !tbaa !5
  %1209 = getelementptr inbounds %struct.b3GraphicsInstance, ptr %1208, i32 0, i32 11
  %1210 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN4TINY11TinyVector3IfNS_10FloatUtilsEEixEi(ptr noundef nonnull align 4 dereferenceable(16) %1209, i32 noundef 0)
          to label %1211 unwind label %926

1211:                                             ; preds = %1205
  %1212 = load float, ptr %1210, align 4, !tbaa !79
  %1213 = load ptr, ptr %47, align 8, !tbaa !5
  %1214 = getelementptr inbounds %struct.b3GraphicsInstance, ptr %1213, i32 0, i32 11
  %1215 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN4TINY11TinyVector3IfNS_10FloatUtilsEEixEi(ptr noundef nonnull align 4 dereferenceable(16) %1214, i32 noundef 1)
          to label %1216 unwind label %926

1216:                                             ; preds = %1211
  %1217 = load float, ptr %1215, align 4, !tbaa !79
  %1218 = load ptr, ptr %47, align 8, !tbaa !5
  %1219 = getelementptr inbounds %struct.b3GraphicsInstance, ptr %1218, i32 0, i32 11
  %1220 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN4TINY11TinyVector3IfNS_10FloatUtilsEEixEi(ptr noundef nonnull align 4 dereferenceable(16) %1219, i32 noundef 2)
          to label %1221 unwind label %926

1221:                                             ; preds = %1216
  %1222 = load float, ptr %1220, align 4, !tbaa !79
  invoke void %1206(i32 noundef %1207, float noundef %1212, float noundef %1217, float noundef %1222)
          to label %1223 unwind label %926

1223:                                             ; preds = %1221
  call void @llvm.lifetime.start.p0(i64 64, ptr %61) #11
  %1224 = load i8, ptr %6, align 1, !tbaa !11, !range !13, !noundef !14
  %1225 = trunc i8 %1224 to i1
  br i1 %1225, label %1226, label %1251

1226:                                             ; preds = %1223
  call void @llvm.lifetime.start.p0(i64 64, ptr %62) #11
  call void @llvm.lifetime.start.p0(i64 64, ptr %63) #11
  call void @llvm.memset.p0.i64(ptr align 16 %63, i8 0, i64 64, i1 false)
  %1227 = getelementptr inbounds [16 x float], ptr %63, i32 0, i32 0
  store float 1.000000e+00, ptr %1227, align 16
  %1228 = getelementptr inbounds [16 x float], ptr %63, i32 0, i32 5
  store float 1.000000e+00, ptr %1228, align 4
  %1229 = getelementptr inbounds [16 x float], ptr %63, i32 0, i32 10
  store float -1.000000e+00, ptr %1229, align 8
  %1230 = getelementptr inbounds [16 x float], ptr %63, i32 0, i32 15
  store float 1.000000e+00, ptr %1230, align 4
  %1231 = load ptr, ptr @glad_glCullFace, align 8, !tbaa !5
  invoke void %1231(i32 noundef 1028)
          to label %1232 unwind label %1247

1232:                                             ; preds = %1226
  %1233 = getelementptr inbounds %class.TinyGLInstancingRenderer, ptr %71, i32 0, i32 2
  %1234 = load ptr, ptr %1233, align 8, !tbaa !17
  %1235 = getelementptr inbounds %struct.InternalDataRenderer, ptr %1234, i32 0, i32 5
  %1236 = getelementptr inbounds [16 x float], ptr %1235, i64 0, i64 0
  %1237 = getelementptr inbounds [16 x float], ptr %63, i64 0, i64 0
  %1238 = getelementptr inbounds [16 x float], ptr %62, i64 0, i64 0
  invoke void @_ZL16b3Matrix4x4Mul16PfS_S_(ptr noundef %1236, ptr noundef %1237, ptr noundef %1238)
          to label %1239 unwind label %1247

1239:                                             ; preds = %1232
  %1240 = getelementptr inbounds %class.TinyGLInstancingRenderer, ptr %71, i32 0, i32 2
  %1241 = load ptr, ptr %1240, align 8, !tbaa !17
  %1242 = getelementptr inbounds %struct.InternalDataRenderer, ptr %1241, i32 0, i32 4
  %1243 = getelementptr inbounds [16 x float], ptr %1242, i64 0, i64 0
  %1244 = getelementptr inbounds [16 x float], ptr %62, i64 0, i64 0
  %1245 = getelementptr inbounds [16 x float], ptr %61, i64 0, i64 0
  invoke void @_ZL16b3Matrix4x4Mul16PfS_S_(ptr noundef %1243, ptr noundef %1244, ptr noundef %1245)
          to label %1246 unwind label %1247

1246:                                             ; preds = %1239
  call void @llvm.lifetime.end.p0(i64 64, ptr %63) #11
  call void @llvm.lifetime.end.p0(i64 64, ptr %62) #11
  br label %1268

1247:                                             ; preds = %1239, %1232, %1226
  %1248 = landingpad { ptr, i32 }
          cleanup
  %1249 = extractvalue { ptr, i32 } %1248, 0
  store ptr %1249, ptr %14, align 8
  %1250 = extractvalue { ptr, i32 } %1248, 1
  store i32 %1250, ptr %15, align 4
  call void @llvm.lifetime.end.p0(i64 64, ptr %63) #11
  call void @llvm.lifetime.end.p0(i64 64, ptr %62) #11
  br label %1458

1251:                                             ; preds = %1223
  %1252 = getelementptr inbounds %class.TinyGLInstancingRenderer, ptr %71, i32 0, i32 2
  %1253 = load ptr, ptr %1252, align 8, !tbaa !17
  %1254 = getelementptr inbounds %struct.InternalDataRenderer, ptr %1253, i32 0, i32 4
  %1255 = getelementptr inbounds [16 x float], ptr %1254, i64 0, i64 0
  %1256 = getelementptr inbounds %class.TinyGLInstancingRenderer, ptr %71, i32 0, i32 2
  %1257 = load ptr, ptr %1256, align 8, !tbaa !17
  %1258 = getelementptr inbounds %struct.InternalDataRenderer, ptr %1257, i32 0, i32 5
  %1259 = getelementptr inbounds [16 x float], ptr %1258, i64 0, i64 0
  %1260 = getelementptr inbounds [16 x float], ptr %61, i64 0, i64 0
  invoke void @_ZL16b3Matrix4x4Mul16PfS_S_(ptr noundef %1255, ptr noundef %1259, ptr noundef %1260)
          to label %1261 unwind label %1264

1261:                                             ; preds = %1251
  %1262 = load ptr, ptr @glad_glCullFace, align 8, !tbaa !5
  invoke void %1262(i32 noundef 1029)
          to label %1263 unwind label %1264

1263:                                             ; preds = %1261
  br label %1268

1264:                                             ; preds = %1291, %1285, %1279, %1272, %1268, %1261, %1251
  %1265 = landingpad { ptr, i32 }
          cleanup
  %1266 = extractvalue { ptr, i32 } %1265, 0
  store ptr %1266, ptr %14, align 8
  %1267 = extractvalue { ptr, i32 } %1265, 1
  store i32 %1267, ptr %15, align 4
  br label %1458

1268:                                             ; preds = %1263, %1246
  %1269 = load ptr, ptr @glad_glUniformMatrix4fv, align 8, !tbaa !5
  %1270 = load i32, ptr @_ZL13useShadow_MVP, align 4, !tbaa !9
  %1271 = getelementptr inbounds [16 x float], ptr %61, i64 0, i64 0
  invoke void %1269(i32 noundef %1270, i32 noundef 1, i8 noundef zeroext 0, ptr noundef %1271)
          to label %1272 unwind label %1264

1272:                                             ; preds = %1268
  %1273 = load ptr, ptr @glad_glUniform3f, align 8, !tbaa !5
  %1274 = load i32, ptr @_ZL20useShadow_lightPosIn, align 4, !tbaa !9
  %1275 = getelementptr inbounds %class.TinyGLInstancingRenderer, ptr %71, i32 0, i32 2
  %1276 = load ptr, ptr %1275, align 8, !tbaa !17
  %1277 = getelementptr inbounds %struct.InternalDataRenderer, ptr %1276, i32 0, i32 11
  %1278 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN4TINY11TinyVector3IfNS_10FloatUtilsEEixEi(ptr noundef nonnull align 4 dereferenceable(16) %1277, i32 noundef 0)
          to label %1279 unwind label %1264

1279:                                             ; preds = %1272
  %1280 = load float, ptr %1278, align 4, !tbaa !79
  %1281 = getelementptr inbounds %class.TinyGLInstancingRenderer, ptr %71, i32 0, i32 2
  %1282 = load ptr, ptr %1281, align 8, !tbaa !17
  %1283 = getelementptr inbounds %struct.InternalDataRenderer, ptr %1282, i32 0, i32 11
  %1284 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN4TINY11TinyVector3IfNS_10FloatUtilsEEixEi(ptr noundef nonnull align 4 dereferenceable(16) %1283, i32 noundef 1)
          to label %1285 unwind label %1264

1285:                                             ; preds = %1279
  %1286 = load float, ptr %1284, align 4, !tbaa !79
  %1287 = getelementptr inbounds %class.TinyGLInstancingRenderer, ptr %71, i32 0, i32 2
  %1288 = load ptr, ptr %1287, align 8, !tbaa !17
  %1289 = getelementptr inbounds %struct.InternalDataRenderer, ptr %1288, i32 0, i32 11
  %1290 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN4TINY11TinyVector3IfNS_10FloatUtilsEEixEi(ptr noundef nonnull align 4 dereferenceable(16) %1289, i32 noundef 2)
          to label %1291 unwind label %1264

1291:                                             ; preds = %1285
  %1292 = load float, ptr %1290, align 4, !tbaa !79
  invoke void %1273(i32 noundef %1274, float noundef %1280, float noundef %1286, float noundef %1292)
          to label %1293 unwind label %1264

1293:                                             ; preds = %1291
  call void @llvm.lifetime.start.p0(i64 16, ptr %64) #11
  invoke void @_ZN4TINY11TinyVector3IfNS_10FloatUtilsEEC2Ei(ptr noundef nonnull align 4 dereferenceable(16) %64, i32 noundef 0)
          to label %1294 unwind label %1421

1294:                                             ; preds = %1293
  %1295 = getelementptr inbounds %class.TinyGLInstancingRenderer, ptr %71, i32 0, i32 2
  %1296 = load ptr, ptr %1295, align 8, !tbaa !17
  %1297 = getelementptr inbounds %struct.InternalDataRenderer, ptr %1296, i32 0, i32 3
  %1298 = load ptr, ptr %1297, align 8, !tbaa !49
  %1299 = load ptr, ptr %1298, align 8, !tbaa !15
  %1300 = getelementptr inbounds ptr, ptr %1299, i64 5
  %1301 = load ptr, ptr %1300, align 8
  invoke void %1301(ptr noundef nonnull align 8 dereferenceable(16) %1298, ptr noundef nonnull align 4 dereferenceable(16) %64)
          to label %1302 unwind label %1421

1302:                                             ; preds = %1294
  %1303 = load ptr, ptr @glad_glUniform3f, align 8, !tbaa !5
  %1304 = load i32, ptr @_ZL26useShadow_cameraPositionIn, align 4, !tbaa !9
  %1305 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN4TINY11TinyVector3IfNS_10FloatUtilsEEixEi(ptr noundef nonnull align 4 dereferenceable(16) %64, i32 noundef 0)
          to label %1306 unwind label %1421

1306:                                             ; preds = %1302
  %1307 = load float, ptr %1305, align 4, !tbaa !79
  %1308 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN4TINY11TinyVector3IfNS_10FloatUtilsEEixEi(ptr noundef nonnull align 4 dereferenceable(16) %64, i32 noundef 1)
          to label %1309 unwind label %1421

1309:                                             ; preds = %1306
  %1310 = load float, ptr %1308, align 4, !tbaa !79
  %1311 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN4TINY11TinyVector3IfNS_10FloatUtilsEEixEi(ptr noundef nonnull align 4 dereferenceable(16) %64, i32 noundef 2)
          to label %1312 unwind label %1421

1312:                                             ; preds = %1309
  %1313 = load float, ptr %1311, align 4, !tbaa !79
  invoke void %1303(i32 noundef %1304, float noundef %1307, float noundef %1310, float noundef %1313)
          to label %1314 unwind label %1421

1314:                                             ; preds = %1312
  %1315 = load ptr, ptr @glad_glUniform1f, align 8, !tbaa !5
  %1316 = load i32, ptr @_ZL29useShadow_materialShininessIn, align 4, !tbaa !9
  %1317 = load ptr, ptr %47, align 8, !tbaa !5
  %1318 = getelementptr inbounds %struct.b3GraphicsInstance, ptr %1317, i32 0, i32 10
  %1319 = load float, ptr %1318, align 4, !tbaa !80
  invoke void %1315(i32 noundef %1316, float noundef %1319)
          to label %1320 unwind label %1421

1320:                                             ; preds = %1314
  %1321 = load ptr, ptr @glad_glUniformMatrix4fv, align 8, !tbaa !5
  %1322 = load i32, ptr @_ZL34useShadow_DepthBiasModelViewMatrix, align 4, !tbaa !9
  %1323 = getelementptr inbounds [4 x [4 x float]], ptr %25, i64 0, i64 0
  %1324 = getelementptr inbounds [4 x float], ptr %1323, i64 0, i64 0
  invoke void %1321(i32 noundef %1322, i32 noundef 1, i8 noundef zeroext 0, ptr noundef %1324)
          to label %1325 unwind label %1421

1325:                                             ; preds = %1320
  %1326 = load ptr, ptr @glad_glActiveTexture, align 8, !tbaa !5
  invoke void %1326(i32 noundef 33985)
          to label %1327 unwind label %1421

1327:                                             ; preds = %1325
  %1328 = load ptr, ptr @glad_glBindTexture, align 8, !tbaa !5
  %1329 = getelementptr inbounds %class.TinyGLInstancingRenderer, ptr %71, i32 0, i32 2
  %1330 = load ptr, ptr %1329, align 8, !tbaa !17
  %1331 = getelementptr inbounds %struct.InternalDataRenderer, ptr %1330, i32 0, i32 16
  %1332 = load i32, ptr %1331, align 8, !tbaa !43
  invoke void %1328(i32 noundef 3553, i32 noundef %1332)
          to label %1333 unwind label %1421

1333:                                             ; preds = %1327
  %1334 = load ptr, ptr @glad_glUniform1i, align 8, !tbaa !5
  %1335 = load i32, ptr @_ZL19useShadow_shadowMap, align 4, !tbaa !9
  invoke void %1334(i32 noundef %1335, i32 noundef 1)
          to label %1336 unwind label %1421

1336:                                             ; preds = %1333
  %1337 = load ptr, ptr %47, align 8, !tbaa !5
  %1338 = getelementptr inbounds %struct.b3GraphicsInstance, ptr %1337, i32 0, i32 12
  %1339 = load i32, ptr %1338, align 8, !tbaa !60
  %1340 = and i32 %1339, 1
  %1341 = icmp ne i32 %1340, 0
  br i1 %1341, label %1342, label %1429

1342:                                             ; preds = %1336
  call void @llvm.lifetime.start.p0(i64 4, ptr %65) #11
  %1343 = load i32, ptr %45, align 4, !tbaa !9
  %1344 = sext i32 %1343 to i64
  %1345 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZNSt6vectorI27SortableTransparentInstanceSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %29, i64 noundef %1344) #11
  %1346 = getelementptr inbounds %struct.SortableTransparentInstance, ptr %1345, i32 0, i32 2
  %1347 = load i32, ptr %1346, align 4, !tbaa !61
  store i32 %1347, ptr %65, align 4, !tbaa !9
  %1348 = load ptr, ptr @glad_glVertexAttribPointer, align 8, !tbaa !5
  %1349 = load i32, ptr %65, align 4, !tbaa !9
  %1350 = mul nsw i32 %1349, 4
  %1351 = sext i32 %1350 to i64
  %1352 = mul i64 %1351, 4
  %1353 = getelementptr inbounds %class.TinyGLInstancingRenderer, ptr %71, i32 0, i32 2
  %1354 = load ptr, ptr %1353, align 8, !tbaa !17
  %1355 = getelementptr inbounds %struct.GLInstanceRendererInternalData, ptr %1354, i32 0, i32 8
  %1356 = load i32, ptr %1355, align 8, !tbaa !74
  %1357 = sext i32 %1356 to i64
  %1358 = add i64 %1352, %1357
  %1359 = inttoptr i64 %1358 to ptr
  invoke void %1348(i32 noundef 1, i32 noundef 4, i32 noundef 5126, i8 noundef zeroext 0, i32 noundef 0, ptr noundef %1359)
          to label %1360 unwind label %1425

1360:                                             ; preds = %1342
  %1361 = load ptr, ptr @glad_glVertexAttribPointer, align 8, !tbaa !5
  %1362 = load i32, ptr %65, align 4, !tbaa !9
  %1363 = mul nsw i32 %1362, 4
  %1364 = sext i32 %1363 to i64
  %1365 = mul i64 %1364, 4
  %1366 = getelementptr inbounds %class.TinyGLInstancingRenderer, ptr %71, i32 0, i32 2
  %1367 = load ptr, ptr %1366, align 8, !tbaa !17
  %1368 = getelementptr inbounds %struct.GLInstanceRendererInternalData, ptr %1367, i32 0, i32 8
  %1369 = load i32, ptr %1368, align 8, !tbaa !74
  %1370 = sext i32 %1369 to i64
  %1371 = add i64 %1365, %1370
  %1372 = load i32, ptr %50, align 4, !tbaa !9
  %1373 = sext i32 %1372 to i64
  %1374 = add i64 %1371, %1373
  %1375 = inttoptr i64 %1374 to ptr
  invoke void %1361(i32 noundef 2, i32 noundef 4, i32 noundef 5126, i8 noundef zeroext 0, i32 noundef 0, ptr noundef %1375)
          to label %1376 unwind label %1425

1376:                                             ; preds = %1360
  %1377 = load ptr, ptr @glad_glVertexAttribPointer, align 8, !tbaa !5
  %1378 = load i32, ptr %65, align 4, !tbaa !9
  %1379 = mul nsw i32 %1378, 4
  %1380 = sext i32 %1379 to i64
  %1381 = mul i64 %1380, 4
  %1382 = getelementptr inbounds %class.TinyGLInstancingRenderer, ptr %71, i32 0, i32 2
  %1383 = load ptr, ptr %1382, align 8, !tbaa !17
  %1384 = getelementptr inbounds %struct.GLInstanceRendererInternalData, ptr %1383, i32 0, i32 8
  %1385 = load i32, ptr %1384, align 8, !tbaa !74
  %1386 = sext i32 %1385 to i64
  %1387 = add i64 %1381, %1386
  %1388 = load i32, ptr %50, align 4, !tbaa !9
  %1389 = sext i32 %1388 to i64
  %1390 = add i64 %1387, %1389
  %1391 = load i32, ptr %51, align 4, !tbaa !9
  %1392 = sext i32 %1391 to i64
  %1393 = add i64 %1390, %1392
  %1394 = inttoptr i64 %1393 to ptr
  invoke void %1377(i32 noundef 5, i32 noundef 4, i32 noundef 5126, i8 noundef zeroext 0, i32 noundef 0, ptr noundef %1394)
          to label %1395 unwind label %1425

1395:                                             ; preds = %1376
  %1396 = load ptr, ptr @glad_glVertexAttribPointer, align 8, !tbaa !5
  %1397 = load i32, ptr %65, align 4, !tbaa !9
  %1398 = mul nsw i32 %1397, 4
  %1399 = sext i32 %1398 to i64
  %1400 = mul i64 %1399, 4
  %1401 = getelementptr inbounds %class.TinyGLInstancingRenderer, ptr %71, i32 0, i32 2
  %1402 = load ptr, ptr %1401, align 8, !tbaa !17
  %1403 = getelementptr inbounds %struct.GLInstanceRendererInternalData, ptr %1402, i32 0, i32 8
  %1404 = load i32, ptr %1403, align 8, !tbaa !74
  %1405 = sext i32 %1404 to i64
  %1406 = add i64 %1400, %1405
  %1407 = load i32, ptr %50, align 4, !tbaa !9
  %1408 = sext i32 %1407 to i64
  %1409 = add i64 %1406, %1408
  %1410 = load i32, ptr %51, align 4, !tbaa !9
  %1411 = sext i32 %1410 to i64
  %1412 = add i64 %1409, %1411
  %1413 = load i32, ptr %52, align 4, !tbaa !9
  %1414 = sext i32 %1413 to i64
  %1415 = add i64 %1412, %1414
  %1416 = inttoptr i64 %1415 to ptr
  invoke void %1396(i32 noundef 6, i32 noundef 4, i32 noundef 5126, i8 noundef zeroext 0, i32 noundef 0, ptr noundef %1416)
          to label %1417 unwind label %1425

1417:                                             ; preds = %1395
  %1418 = load ptr, ptr @glad_glDrawElements, align 8, !tbaa !5
  %1419 = load i32, ptr %57, align 4, !tbaa !9
  invoke void %1418(i32 noundef 4, i32 noundef %1419, i32 noundef 5125, ptr noundef null)
          to label %1420 unwind label %1425

1420:                                             ; preds = %1417
  call void @llvm.lifetime.end.p0(i64 4, ptr %65) #11
  br label %1437

1421:                                             ; preds = %1454, %1452, %1450, %1448, %1445, %1443, %1429, %1333, %1327, %1325, %1320, %1314, %1312, %1309, %1306, %1302, %1294, %1293
  %1422 = landingpad { ptr, i32 }
          cleanup
  %1423 = extractvalue { ptr, i32 } %1422, 0
  store ptr %1423, ptr %14, align 8
  %1424 = extractvalue { ptr, i32 } %1422, 1
  store i32 %1424, ptr %15, align 4
  br label %1457

1425:                                             ; preds = %1417, %1395, %1376, %1360, %1342
  %1426 = landingpad { ptr, i32 }
          cleanup
  %1427 = extractvalue { ptr, i32 } %1426, 0
  store ptr %1427, ptr %14, align 8
  %1428 = extractvalue { ptr, i32 } %1426, 1
  store i32 %1428, ptr %15, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %65) #11
  br label %1457

1429:                                             ; preds = %1336
  %1430 = load ptr, ptr @glad_glDrawElementsInstanced, align 8, !tbaa !5
  %1431 = load i32, ptr %57, align 4, !tbaa !9
  %1432 = load ptr, ptr %58, align 8, !tbaa !5
  %1433 = load ptr, ptr %47, align 8, !tbaa !5
  %1434 = getelementptr inbounds %struct.b3GraphicsInstance, ptr %1433, i32 0, i32 5
  %1435 = load i32, ptr %1434, align 4, !tbaa !51
  invoke void %1430(i32 noundef 4, i32 noundef %1431, i32 noundef 5125, ptr noundef %1432, i32 noundef %1435)
          to label %1436 unwind label %1421

1436:                                             ; preds = %1429
  br label %1437

1437:                                             ; preds = %1436, %1420
  %1438 = load ptr, ptr %47, align 8, !tbaa !5
  %1439 = getelementptr inbounds %struct.b3GraphicsInstance, ptr %1438, i32 0, i32 12
  %1440 = load i32, ptr %1439, align 8, !tbaa !60
  %1441 = and i32 %1440, 1
  %1442 = icmp ne i32 %1441, 0
  br i1 %1442, label %1443, label %1448

1443:                                             ; preds = %1437
  %1444 = load ptr, ptr @glad_glDisable, align 8, !tbaa !5
  invoke void %1444(i32 noundef 3042)
          to label %1445 unwind label %1421

1445:                                             ; preds = %1443
  %1446 = load ptr, ptr @glad_glDepthMask, align 8, !tbaa !5
  invoke void %1446(i8 noundef zeroext 1)
          to label %1447 unwind label %1421

1447:                                             ; preds = %1445
  br label %1448

1448:                                             ; preds = %1447, %1437
  %1449 = load ptr, ptr @glad_glActiveTexture, align 8, !tbaa !5
  invoke void %1449(i32 noundef 33985)
          to label %1450 unwind label %1421

1450:                                             ; preds = %1448
  %1451 = load ptr, ptr @glad_glBindTexture, align 8, !tbaa !5
  invoke void %1451(i32 noundef 3553, i32 noundef 0)
          to label %1452 unwind label %1421

1452:                                             ; preds = %1450
  %1453 = load ptr, ptr @glad_glActiveTexture, align 8, !tbaa !5
  invoke void %1453(i32 noundef 33984)
          to label %1454 unwind label %1421

1454:                                             ; preds = %1452
  %1455 = load ptr, ptr @glad_glBindTexture, align 8, !tbaa !5
  invoke void %1455(i32 noundef 3553, i32 noundef 0)
          to label %1456 unwind label %1421

1456:                                             ; preds = %1454
  store i32 19, ptr %34, align 4
  call void @llvm.lifetime.end.p0(i64 16, ptr %64) #11
  call void @llvm.lifetime.end.p0(i64 64, ptr %61) #11
  br label %1742

1457:                                             ; preds = %1425, %1421
  call void @llvm.lifetime.end.p0(i64 16, ptr %64) #11
  br label %1458

1458:                                             ; preds = %1457, %1264, %1247
  call void @llvm.lifetime.end.p0(i64 64, ptr %61) #11
  br label %1753

1459:                                             ; preds = %954
  %1460 = load ptr, ptr %47, align 8, !tbaa !5
  %1461 = getelementptr inbounds %struct.b3GraphicsInstance, ptr %1460, i32 0, i32 12
  %1462 = load i32, ptr %1461, align 8, !tbaa !60
  %1463 = and i32 %1462, 1
  %1464 = icmp ne i32 %1463, 0
  br i1 %1464, label %1465, label %1472

1465:                                             ; preds = %1459
  %1466 = load ptr, ptr @glad_glDepthMask, align 8, !tbaa !5
  invoke void %1466(i8 noundef zeroext 0)
          to label %1467 unwind label %926

1467:                                             ; preds = %1465
  %1468 = load ptr, ptr @glad_glEnable, align 8, !tbaa !5
  invoke void %1468(i32 noundef 3042)
          to label %1469 unwind label %926

1469:                                             ; preds = %1467
  %1470 = load ptr, ptr @glad_glBlendFunc, align 8, !tbaa !5
  invoke void %1470(i32 noundef 770, i32 noundef 771)
          to label %1471 unwind label %926

1471:                                             ; preds = %1469
  br label %1472

1472:                                             ; preds = %1471, %1459
  %1473 = load ptr, ptr @glad_glUseProgram, align 8, !tbaa !5
  %1474 = load i32, ptr @_ZL33projectiveTextureInstancingShader, align 4, !tbaa !9
  invoke void %1473(i32 noundef %1474)
          to label %1475 unwind label %926

1475:                                             ; preds = %1472
  %1476 = load ptr, ptr @glad_glUniformMatrix4fv, align 8, !tbaa !5
  %1477 = load i32, ptr @_ZL34projectiveTexture_ProjectionMatrix, align 4, !tbaa !9
  %1478 = getelementptr inbounds %class.TinyGLInstancingRenderer, ptr %71, i32 0, i32 2
  %1479 = load ptr, ptr %1478, align 8, !tbaa !17
  %1480 = getelementptr inbounds %struct.InternalDataRenderer, ptr %1479, i32 0, i32 4
  %1481 = getelementptr inbounds [16 x float], ptr %1480, i64 0, i64 0
  invoke void %1476(i32 noundef %1477, i32 noundef 1, i8 noundef zeroext 0, ptr noundef %1481)
          to label %1482 unwind label %926

1482:                                             ; preds = %1475
  %1483 = load ptr, ptr @glad_glUniform3f, align 8, !tbaa !5
  %1484 = load i32, ptr @_ZL40projectiveTexture_lightSpecularIntensity, align 4, !tbaa !9
  %1485 = getelementptr inbounds %class.TinyGLInstancingRenderer, ptr %71, i32 0, i32 2
  %1486 = load ptr, ptr %1485, align 8, !tbaa !17
  %1487 = getelementptr inbounds %struct.InternalDataRenderer, ptr %1486, i32 0, i32 12
  %1488 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN4TINY11TinyVector3IfNS_10FloatUtilsEEixEi(ptr noundef nonnull align 4 dereferenceable(16) %1487, i32 noundef 0)
          to label %1489 unwind label %926

1489:                                             ; preds = %1482
  %1490 = load float, ptr %1488, align 4, !tbaa !79
  %1491 = getelementptr inbounds %class.TinyGLInstancingRenderer, ptr %71, i32 0, i32 2
  %1492 = load ptr, ptr %1491, align 8, !tbaa !17
  %1493 = getelementptr inbounds %struct.InternalDataRenderer, ptr %1492, i32 0, i32 12
  %1494 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN4TINY11TinyVector3IfNS_10FloatUtilsEEixEi(ptr noundef nonnull align 4 dereferenceable(16) %1493, i32 noundef 1)
          to label %1495 unwind label %926

1495:                                             ; preds = %1489
  %1496 = load float, ptr %1494, align 4, !tbaa !79
  %1497 = getelementptr inbounds %class.TinyGLInstancingRenderer, ptr %71, i32 0, i32 2
  %1498 = load ptr, ptr %1497, align 8, !tbaa !17
  %1499 = getelementptr inbounds %struct.InternalDataRenderer, ptr %1498, i32 0, i32 12
  %1500 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN4TINY11TinyVector3IfNS_10FloatUtilsEEixEi(ptr noundef nonnull align 4 dereferenceable(16) %1499, i32 noundef 2)
          to label %1501 unwind label %926

1501:                                             ; preds = %1495
  %1502 = load float, ptr %1500, align 4, !tbaa !79
  invoke void %1483(i32 noundef %1484, float noundef %1490, float noundef %1496, float noundef %1502)
          to label %1503 unwind label %926

1503:                                             ; preds = %1501
  %1504 = load ptr, ptr @glad_glUniform3f, align 8, !tbaa !5
  %1505 = load i32, ptr @_ZL39projectiveTexture_materialSpecularColor, align 4, !tbaa !9
  %1506 = load ptr, ptr %47, align 8, !tbaa !5
  %1507 = getelementptr inbounds %struct.b3GraphicsInstance, ptr %1506, i32 0, i32 11
  %1508 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN4TINY11TinyVector3IfNS_10FloatUtilsEEixEi(ptr noundef nonnull align 4 dereferenceable(16) %1507, i32 noundef 0)
          to label %1509 unwind label %926

1509:                                             ; preds = %1503
  %1510 = load float, ptr %1508, align 4, !tbaa !79
  %1511 = load ptr, ptr %47, align 8, !tbaa !5
  %1512 = getelementptr inbounds %struct.b3GraphicsInstance, ptr %1511, i32 0, i32 11
  %1513 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN4TINY11TinyVector3IfNS_10FloatUtilsEEixEi(ptr noundef nonnull align 4 dereferenceable(16) %1512, i32 noundef 1)
          to label %1514 unwind label %926

1514:                                             ; preds = %1509
  %1515 = load float, ptr %1513, align 4, !tbaa !79
  %1516 = load ptr, ptr %47, align 8, !tbaa !5
  %1517 = getelementptr inbounds %struct.b3GraphicsInstance, ptr %1516, i32 0, i32 11
  %1518 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN4TINY11TinyVector3IfNS_10FloatUtilsEEixEi(ptr noundef nonnull align 4 dereferenceable(16) %1517, i32 noundef 2)
          to label %1519 unwind label %926

1519:                                             ; preds = %1514
  %1520 = load float, ptr %1518, align 4, !tbaa !79
  invoke void %1504(i32 noundef %1505, float noundef %1510, float noundef %1515, float noundef %1520)
          to label %1521 unwind label %926

1521:                                             ; preds = %1519
  call void @llvm.lifetime.start.p0(i64 64, ptr %66) #11
  %1522 = load i8, ptr %6, align 1, !tbaa !11, !range !13, !noundef !14
  %1523 = trunc i8 %1522 to i1
  br i1 %1523, label %1524, label %1549

1524:                                             ; preds = %1521
  call void @llvm.lifetime.start.p0(i64 64, ptr %67) #11
  call void @llvm.lifetime.start.p0(i64 64, ptr %68) #11
  call void @llvm.memset.p0.i64(ptr align 16 %68, i8 0, i64 64, i1 false)
  %1525 = getelementptr inbounds [16 x float], ptr %68, i32 0, i32 0
  store float 1.000000e+00, ptr %1525, align 16
  %1526 = getelementptr inbounds [16 x float], ptr %68, i32 0, i32 5
  store float 1.000000e+00, ptr %1526, align 4
  %1527 = getelementptr inbounds [16 x float], ptr %68, i32 0, i32 10
  store float -1.000000e+00, ptr %1527, align 8
  %1528 = getelementptr inbounds [16 x float], ptr %68, i32 0, i32 15
  store float 1.000000e+00, ptr %1528, align 4
  %1529 = load ptr, ptr @glad_glCullFace, align 8, !tbaa !5
  invoke void %1529(i32 noundef 1028)
          to label %1530 unwind label %1545

1530:                                             ; preds = %1524
  %1531 = getelementptr inbounds %class.TinyGLInstancingRenderer, ptr %71, i32 0, i32 2
  %1532 = load ptr, ptr %1531, align 8, !tbaa !17
  %1533 = getelementptr inbounds %struct.InternalDataRenderer, ptr %1532, i32 0, i32 5
  %1534 = getelementptr inbounds [16 x float], ptr %1533, i64 0, i64 0
  %1535 = getelementptr inbounds [16 x float], ptr %68, i64 0, i64 0
  %1536 = getelementptr inbounds [16 x float], ptr %67, i64 0, i64 0
  invoke void @_ZL16b3Matrix4x4Mul16PfS_S_(ptr noundef %1534, ptr noundef %1535, ptr noundef %1536)
          to label %1537 unwind label %1545

1537:                                             ; preds = %1530
  %1538 = getelementptr inbounds %class.TinyGLInstancingRenderer, ptr %71, i32 0, i32 2
  %1539 = load ptr, ptr %1538, align 8, !tbaa !17
  %1540 = getelementptr inbounds %struct.InternalDataRenderer, ptr %1539, i32 0, i32 4
  %1541 = getelementptr inbounds [16 x float], ptr %1540, i64 0, i64 0
  %1542 = getelementptr inbounds [16 x float], ptr %67, i64 0, i64 0
  %1543 = getelementptr inbounds [16 x float], ptr %66, i64 0, i64 0
  invoke void @_ZL16b3Matrix4x4Mul16PfS_S_(ptr noundef %1541, ptr noundef %1542, ptr noundef %1543)
          to label %1544 unwind label %1545

1544:                                             ; preds = %1537
  call void @llvm.lifetime.end.p0(i64 64, ptr %68) #11
  call void @llvm.lifetime.end.p0(i64 64, ptr %67) #11
  br label %1566

1545:                                             ; preds = %1537, %1530, %1524
  %1546 = landingpad { ptr, i32 }
          cleanup
  %1547 = extractvalue { ptr, i32 } %1546, 0
  store ptr %1547, ptr %14, align 8
  %1548 = extractvalue { ptr, i32 } %1546, 1
  store i32 %1548, ptr %15, align 4
  call void @llvm.lifetime.end.p0(i64 64, ptr %68) #11
  call void @llvm.lifetime.end.p0(i64 64, ptr %67) #11
  br label %1740

1549:                                             ; preds = %1521
  %1550 = getelementptr inbounds %class.TinyGLInstancingRenderer, ptr %71, i32 0, i32 2
  %1551 = load ptr, ptr %1550, align 8, !tbaa !17
  %1552 = getelementptr inbounds %struct.InternalDataRenderer, ptr %1551, i32 0, i32 4
  %1553 = getelementptr inbounds [16 x float], ptr %1552, i64 0, i64 0
  %1554 = getelementptr inbounds %class.TinyGLInstancingRenderer, ptr %71, i32 0, i32 2
  %1555 = load ptr, ptr %1554, align 8, !tbaa !17
  %1556 = getelementptr inbounds %struct.InternalDataRenderer, ptr %1555, i32 0, i32 5
  %1557 = getelementptr inbounds [16 x float], ptr %1556, i64 0, i64 0
  %1558 = getelementptr inbounds [16 x float], ptr %66, i64 0, i64 0
  invoke void @_ZL16b3Matrix4x4Mul16PfS_S_(ptr noundef %1553, ptr noundef %1557, ptr noundef %1558)
          to label %1559 unwind label %1562

1559:                                             ; preds = %1549
  %1560 = load ptr, ptr @glad_glCullFace, align 8, !tbaa !5
  invoke void %1560(i32 noundef 1029)
          to label %1561 unwind label %1562

1561:                                             ; preds = %1559
  br label %1566

1562:                                             ; preds = %1589, %1583, %1577, %1570, %1566, %1559, %1549
  %1563 = landingpad { ptr, i32 }
          cleanup
  %1564 = extractvalue { ptr, i32 } %1563, 0
  store ptr %1564, ptr %14, align 8
  %1565 = extractvalue { ptr, i32 } %1563, 1
  store i32 %1565, ptr %15, align 4
  br label %1740

1566:                                             ; preds = %1561, %1544
  %1567 = load ptr, ptr @glad_glUniformMatrix4fv, align 8, !tbaa !5
  %1568 = load i32, ptr @_ZL21projectiveTexture_MVP, align 4, !tbaa !9
  %1569 = getelementptr inbounds [16 x float], ptr %66, i64 0, i64 0
  invoke void %1567(i32 noundef %1568, i32 noundef 1, i8 noundef zeroext 0, ptr noundef %1569)
          to label %1570 unwind label %1562

1570:                                             ; preds = %1566
  %1571 = load ptr, ptr @glad_glUniform3f, align 8, !tbaa !5
  %1572 = load i32, ptr @_ZL28projectiveTexture_lightPosIn, align 4, !tbaa !9
  %1573 = getelementptr inbounds %class.TinyGLInstancingRenderer, ptr %71, i32 0, i32 2
  %1574 = load ptr, ptr %1573, align 8, !tbaa !17
  %1575 = getelementptr inbounds %struct.InternalDataRenderer, ptr %1574, i32 0, i32 11
  %1576 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN4TINY11TinyVector3IfNS_10FloatUtilsEEixEi(ptr noundef nonnull align 4 dereferenceable(16) %1575, i32 noundef 0)
          to label %1577 unwind label %1562

1577:                                             ; preds = %1570
  %1578 = load float, ptr %1576, align 4, !tbaa !79
  %1579 = getelementptr inbounds %class.TinyGLInstancingRenderer, ptr %71, i32 0, i32 2
  %1580 = load ptr, ptr %1579, align 8, !tbaa !17
  %1581 = getelementptr inbounds %struct.InternalDataRenderer, ptr %1580, i32 0, i32 11
  %1582 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN4TINY11TinyVector3IfNS_10FloatUtilsEEixEi(ptr noundef nonnull align 4 dereferenceable(16) %1581, i32 noundef 1)
          to label %1583 unwind label %1562

1583:                                             ; preds = %1577
  %1584 = load float, ptr %1582, align 4, !tbaa !79
  %1585 = getelementptr inbounds %class.TinyGLInstancingRenderer, ptr %71, i32 0, i32 2
  %1586 = load ptr, ptr %1585, align 8, !tbaa !17
  %1587 = getelementptr inbounds %struct.InternalDataRenderer, ptr %1586, i32 0, i32 11
  %1588 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN4TINY11TinyVector3IfNS_10FloatUtilsEEixEi(ptr noundef nonnull align 4 dereferenceable(16) %1587, i32 noundef 2)
          to label %1589 unwind label %1562

1589:                                             ; preds = %1583
  %1590 = load float, ptr %1588, align 4, !tbaa !79
  invoke void %1571(i32 noundef %1572, float noundef %1578, float noundef %1584, float noundef %1590)
          to label %1591 unwind label %1562

1591:                                             ; preds = %1589
  call void @llvm.lifetime.start.p0(i64 16, ptr %69) #11
  invoke void @_ZN4TINY11TinyVector3IfNS_10FloatUtilsEEC2Ei(ptr noundef nonnull align 4 dereferenceable(16) %69, i32 noundef 0)
          to label %1592 unwind label %1707

1592:                                             ; preds = %1591
  %1593 = getelementptr inbounds %class.TinyGLInstancingRenderer, ptr %71, i32 0, i32 2
  %1594 = load ptr, ptr %1593, align 8, !tbaa !17
  %1595 = getelementptr inbounds %struct.InternalDataRenderer, ptr %1594, i32 0, i32 3
  %1596 = load ptr, ptr %1595, align 8, !tbaa !49
  %1597 = load ptr, ptr %1596, align 8, !tbaa !15
  %1598 = getelementptr inbounds ptr, ptr %1597, i64 5
  %1599 = load ptr, ptr %1598, align 8
  invoke void %1599(ptr noundef nonnull align 8 dereferenceable(16) %1596, ptr noundef nonnull align 4 dereferenceable(16) %69)
          to label %1600 unwind label %1707

1600:                                             ; preds = %1592
  %1601 = load ptr, ptr @glad_glUniform3f, align 8, !tbaa !5
  %1602 = load i32, ptr @_ZL34projectiveTexture_cameraPositionIn, align 4, !tbaa !9
  %1603 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN4TINY11TinyVector3IfNS_10FloatUtilsEEixEi(ptr noundef nonnull align 4 dereferenceable(16) %69, i32 noundef 0)
          to label %1604 unwind label %1707

1604:                                             ; preds = %1600
  %1605 = load float, ptr %1603, align 4, !tbaa !79
  %1606 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN4TINY11TinyVector3IfNS_10FloatUtilsEEixEi(ptr noundef nonnull align 4 dereferenceable(16) %69, i32 noundef 1)
          to label %1607 unwind label %1707

1607:                                             ; preds = %1604
  %1608 = load float, ptr %1606, align 4, !tbaa !79
  %1609 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN4TINY11TinyVector3IfNS_10FloatUtilsEEixEi(ptr noundef nonnull align 4 dereferenceable(16) %69, i32 noundef 2)
          to label %1610 unwind label %1707

1610:                                             ; preds = %1607
  %1611 = load float, ptr %1609, align 4, !tbaa !79
  invoke void %1601(i32 noundef %1602, float noundef %1605, float noundef %1608, float noundef %1611)
          to label %1612 unwind label %1707

1612:                                             ; preds = %1610
  %1613 = load ptr, ptr @glad_glUniform1f, align 8, !tbaa !5
  %1614 = load i32, ptr @_ZL37projectiveTexture_materialShininessIn, align 4, !tbaa !9
  %1615 = load ptr, ptr %47, align 8, !tbaa !5
  %1616 = getelementptr inbounds %struct.b3GraphicsInstance, ptr %1615, i32 0, i32 10
  %1617 = load float, ptr %1616, align 4, !tbaa !80
  invoke void %1613(i32 noundef %1614, float noundef %1617)
          to label %1618 unwind label %1707

1618:                                             ; preds = %1612
  %1619 = load ptr, ptr @glad_glUniformMatrix4fv, align 8, !tbaa !5
  %1620 = load i32, ptr @_ZL28projectiveTexture_TextureMVP, align 4, !tbaa !9
  %1621 = getelementptr inbounds [16 x float], ptr %26, i64 0, i64 0
  invoke void %1619(i32 noundef %1620, i32 noundef 1, i8 noundef zeroext 0, ptr noundef %1621)
          to label %1622 unwind label %1707

1622:                                             ; preds = %1618
  %1623 = load ptr, ptr %47, align 8, !tbaa !5
  %1624 = getelementptr inbounds %struct.b3GraphicsInstance, ptr %1623, i32 0, i32 12
  %1625 = load i32, ptr %1624, align 8, !tbaa !60
  %1626 = and i32 %1625, 1
  %1627 = icmp ne i32 %1626, 0
  br i1 %1627, label %1628, label %1715

1628:                                             ; preds = %1622
  call void @llvm.lifetime.start.p0(i64 4, ptr %70) #11
  %1629 = load i32, ptr %45, align 4, !tbaa !9
  %1630 = sext i32 %1629 to i64
  %1631 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZNSt6vectorI27SortableTransparentInstanceSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %29, i64 noundef %1630) #11
  %1632 = getelementptr inbounds %struct.SortableTransparentInstance, ptr %1631, i32 0, i32 2
  %1633 = load i32, ptr %1632, align 4, !tbaa !61
  store i32 %1633, ptr %70, align 4, !tbaa !9
  %1634 = load ptr, ptr @glad_glVertexAttribPointer, align 8, !tbaa !5
  %1635 = load i32, ptr %70, align 4, !tbaa !9
  %1636 = mul nsw i32 %1635, 4
  %1637 = sext i32 %1636 to i64
  %1638 = mul i64 %1637, 4
  %1639 = getelementptr inbounds %class.TinyGLInstancingRenderer, ptr %71, i32 0, i32 2
  %1640 = load ptr, ptr %1639, align 8, !tbaa !17
  %1641 = getelementptr inbounds %struct.GLInstanceRendererInternalData, ptr %1640, i32 0, i32 8
  %1642 = load i32, ptr %1641, align 8, !tbaa !74
  %1643 = sext i32 %1642 to i64
  %1644 = add i64 %1638, %1643
  %1645 = inttoptr i64 %1644 to ptr
  invoke void %1634(i32 noundef 1, i32 noundef 4, i32 noundef 5126, i8 noundef zeroext 0, i32 noundef 0, ptr noundef %1645)
          to label %1646 unwind label %1711

1646:                                             ; preds = %1628
  %1647 = load ptr, ptr @glad_glVertexAttribPointer, align 8, !tbaa !5
  %1648 = load i32, ptr %70, align 4, !tbaa !9
  %1649 = mul nsw i32 %1648, 4
  %1650 = sext i32 %1649 to i64
  %1651 = mul i64 %1650, 4
  %1652 = getelementptr inbounds %class.TinyGLInstancingRenderer, ptr %71, i32 0, i32 2
  %1653 = load ptr, ptr %1652, align 8, !tbaa !17
  %1654 = getelementptr inbounds %struct.GLInstanceRendererInternalData, ptr %1653, i32 0, i32 8
  %1655 = load i32, ptr %1654, align 8, !tbaa !74
  %1656 = sext i32 %1655 to i64
  %1657 = add i64 %1651, %1656
  %1658 = load i32, ptr %50, align 4, !tbaa !9
  %1659 = sext i32 %1658 to i64
  %1660 = add i64 %1657, %1659
  %1661 = inttoptr i64 %1660 to ptr
  invoke void %1647(i32 noundef 2, i32 noundef 4, i32 noundef 5126, i8 noundef zeroext 0, i32 noundef 0, ptr noundef %1661)
          to label %1662 unwind label %1711

1662:                                             ; preds = %1646
  %1663 = load ptr, ptr @glad_glVertexAttribPointer, align 8, !tbaa !5
  %1664 = load i32, ptr %70, align 4, !tbaa !9
  %1665 = mul nsw i32 %1664, 4
  %1666 = sext i32 %1665 to i64
  %1667 = mul i64 %1666, 4
  %1668 = getelementptr inbounds %class.TinyGLInstancingRenderer, ptr %71, i32 0, i32 2
  %1669 = load ptr, ptr %1668, align 8, !tbaa !17
  %1670 = getelementptr inbounds %struct.GLInstanceRendererInternalData, ptr %1669, i32 0, i32 8
  %1671 = load i32, ptr %1670, align 8, !tbaa !74
  %1672 = sext i32 %1671 to i64
  %1673 = add i64 %1667, %1672
  %1674 = load i32, ptr %50, align 4, !tbaa !9
  %1675 = sext i32 %1674 to i64
  %1676 = add i64 %1673, %1675
  %1677 = load i32, ptr %51, align 4, !tbaa !9
  %1678 = sext i32 %1677 to i64
  %1679 = add i64 %1676, %1678
  %1680 = inttoptr i64 %1679 to ptr
  invoke void %1663(i32 noundef 5, i32 noundef 4, i32 noundef 5126, i8 noundef zeroext 0, i32 noundef 0, ptr noundef %1680)
          to label %1681 unwind label %1711

1681:                                             ; preds = %1662
  %1682 = load ptr, ptr @glad_glVertexAttribPointer, align 8, !tbaa !5
  %1683 = load i32, ptr %70, align 4, !tbaa !9
  %1684 = mul nsw i32 %1683, 4
  %1685 = sext i32 %1684 to i64
  %1686 = mul i64 %1685, 4
  %1687 = getelementptr inbounds %class.TinyGLInstancingRenderer, ptr %71, i32 0, i32 2
  %1688 = load ptr, ptr %1687, align 8, !tbaa !17
  %1689 = getelementptr inbounds %struct.GLInstanceRendererInternalData, ptr %1688, i32 0, i32 8
  %1690 = load i32, ptr %1689, align 8, !tbaa !74
  %1691 = sext i32 %1690 to i64
  %1692 = add i64 %1686, %1691
  %1693 = load i32, ptr %50, align 4, !tbaa !9
  %1694 = sext i32 %1693 to i64
  %1695 = add i64 %1692, %1694
  %1696 = load i32, ptr %51, align 4, !tbaa !9
  %1697 = sext i32 %1696 to i64
  %1698 = add i64 %1695, %1697
  %1699 = load i32, ptr %52, align 4, !tbaa !9
  %1700 = sext i32 %1699 to i64
  %1701 = add i64 %1698, %1700
  %1702 = inttoptr i64 %1701 to ptr
  invoke void %1682(i32 noundef 6, i32 noundef 4, i32 noundef 5126, i8 noundef zeroext 0, i32 noundef 0, ptr noundef %1702)
          to label %1703 unwind label %1711

1703:                                             ; preds = %1681
  %1704 = load ptr, ptr @glad_glDrawElements, align 8, !tbaa !5
  %1705 = load i32, ptr %57, align 4, !tbaa !9
  invoke void %1704(i32 noundef 4, i32 noundef %1705, i32 noundef 5125, ptr noundef null)
          to label %1706 unwind label %1711

1706:                                             ; preds = %1703
  call void @llvm.lifetime.end.p0(i64 4, ptr %70) #11
  br label %1723

1707:                                             ; preds = %1736, %1734, %1731, %1729, %1715, %1618, %1612, %1610, %1607, %1604, %1600, %1592, %1591
  %1708 = landingpad { ptr, i32 }
          cleanup
  %1709 = extractvalue { ptr, i32 } %1708, 0
  store ptr %1709, ptr %14, align 8
  %1710 = extractvalue { ptr, i32 } %1708, 1
  store i32 %1710, ptr %15, align 4
  br label %1739

1711:                                             ; preds = %1703, %1681, %1662, %1646, %1628
  %1712 = landingpad { ptr, i32 }
          cleanup
  %1713 = extractvalue { ptr, i32 } %1712, 0
  store ptr %1713, ptr %14, align 8
  %1714 = extractvalue { ptr, i32 } %1712, 1
  store i32 %1714, ptr %15, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %70) #11
  br label %1739

1715:                                             ; preds = %1622
  %1716 = load ptr, ptr @glad_glDrawElementsInstanced, align 8, !tbaa !5
  %1717 = load i32, ptr %57, align 4, !tbaa !9
  %1718 = load ptr, ptr %58, align 8, !tbaa !5
  %1719 = load ptr, ptr %47, align 8, !tbaa !5
  %1720 = getelementptr inbounds %struct.b3GraphicsInstance, ptr %1719, i32 0, i32 5
  %1721 = load i32, ptr %1720, align 4, !tbaa !51
  invoke void %1716(i32 noundef 4, i32 noundef %1717, i32 noundef 5125, ptr noundef %1718, i32 noundef %1721)
          to label %1722 unwind label %1707

1722:                                             ; preds = %1715
  br label %1723

1723:                                             ; preds = %1722, %1706
  %1724 = load ptr, ptr %47, align 8, !tbaa !5
  %1725 = getelementptr inbounds %struct.b3GraphicsInstance, ptr %1724, i32 0, i32 12
  %1726 = load i32, ptr %1725, align 8, !tbaa !60
  %1727 = and i32 %1726, 1
  %1728 = icmp ne i32 %1727, 0
  br i1 %1728, label %1729, label %1734

1729:                                             ; preds = %1723
  %1730 = load ptr, ptr @glad_glDisable, align 8, !tbaa !5
  invoke void %1730(i32 noundef 3042)
          to label %1731 unwind label %1707

1731:                                             ; preds = %1729
  %1732 = load ptr, ptr @glad_glDepthMask, align 8, !tbaa !5
  invoke void %1732(i8 noundef zeroext 1)
          to label %1733 unwind label %1707

1733:                                             ; preds = %1731
  br label %1734

1734:                                             ; preds = %1733, %1723
  %1735 = load ptr, ptr @glad_glActiveTexture, align 8, !tbaa !5
  invoke void %1735(i32 noundef 33984)
          to label %1736 unwind label %1707

1736:                                             ; preds = %1734
  %1737 = load ptr, ptr @glad_glBindTexture, align 8, !tbaa !5
  invoke void %1737(i32 noundef 3553, i32 noundef 0)
          to label %1738 unwind label %1707

1738:                                             ; preds = %1736
  store i32 19, ptr %34, align 4
  call void @llvm.lifetime.end.p0(i64 16, ptr %69) #11
  call void @llvm.lifetime.end.p0(i64 64, ptr %66) #11
  br label %1742

1739:                                             ; preds = %1711, %1707
  call void @llvm.lifetime.end.p0(i64 16, ptr %69) #11
  br label %1740

1740:                                             ; preds = %1739, %1562, %1545
  call void @llvm.lifetime.end.p0(i64 64, ptr %66) #11
  br label %1753

1741:                                             ; preds = %954
  br label %1742

1742:                                             ; preds = %1741, %1738, %1456, %1160, %1143, %980
  %1743 = load ptr, ptr %47, align 8, !tbaa !5
  %1744 = getelementptr inbounds %struct.b3GraphicsInstance, ptr %1743, i32 0, i32 12
  %1745 = load i32, ptr %1744, align 8, !tbaa !60
  %1746 = and i32 %1745, 4
  %1747 = icmp ne i32 %1746, 0
  br i1 %1747, label %1748, label %1751

1748:                                             ; preds = %1742
  %1749 = load ptr, ptr @glad_glEnable, align 8, !tbaa !5
  invoke void %1749(i32 noundef 2884)
          to label %1750 unwind label %926

1750:                                             ; preds = %1748
  br label %1751

1751:                                             ; preds = %1750, %1742
  br label %1752

1752:                                             ; preds = %1751, %944
  call void @llvm.lifetime.end.p0(i64 8, ptr %58) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr %57) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %56) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %55) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %54) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr %53) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr %52) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr %51) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr %50) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr %49) #11
  br label %1759

1753:                                             ; preds = %1740, %1458, %1144, %926
  call void @llvm.lifetime.end.p0(i64 8, ptr %58) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr %57) #11
  br label %1754

1754:                                             ; preds = %1753, %922
  call void @llvm.lifetime.end.p0(i64 8, ptr %56) #11
  br label %1755

1755:                                             ; preds = %1754, %918
  call void @llvm.lifetime.end.p0(i64 8, ptr %55) #11
  br label %1756

1756:                                             ; preds = %1755, %914
  call void @llvm.lifetime.end.p0(i64 8, ptr %54) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr %53) #11
  br label %1757

1757:                                             ; preds = %1756, %910
  call void @llvm.lifetime.end.p0(i64 4, ptr %52) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr %51) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr %50) #11
  br label %1758

1758:                                             ; preds = %1757, %674
  call void @llvm.lifetime.end.p0(i64 4, ptr %49) #11
  br label %1766

1759:                                             ; preds = %1752, %628, %625
  call void @llvm.lifetime.end.p0(i64 4, ptr %48) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %47) #11
  store i32 0, ptr %34, align 4
  br label %1760

1760:                                             ; preds = %1759, %596
  call void @llvm.lifetime.end.p0(i64 4, ptr %46) #11
  %1761 = load i32, ptr %34, align 4
  switch i32 %1761, label %1832 [
    i32 0, label %1762
    i32 18, label %1763
  ]

1762:                                             ; preds = %1760
  br label %1763

1763:                                             ; preds = %1762, %1760
  %1764 = load i32, ptr %45, align 4, !tbaa !9
  %1765 = add nsw i32 %1764, 1
  store i32 %1765, ptr %45, align 4, !tbaa !9
  br label %577, !llvm.loop !81

1766:                                             ; preds = %1758, %670
  call void @llvm.lifetime.end.p0(i64 4, ptr %48) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %47) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr %46) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr %45) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr %44) #11
  br label %1825

1767:                                             ; preds = %582
  br label %1768

1768:                                             ; preds = %1767
  %1769 = load i32, ptr %44, align 4, !tbaa !9
  %1770 = add nsw i32 %1769, 1
  store i32 %1770, ptr %44, align 4, !tbaa !9
  br label %565, !llvm.loop !82

1771:                                             ; preds = %568
  %1772 = load i32, ptr %5, align 4, !tbaa !9
  %1773 = icmp eq i32 %1772, 2
  br i1 %1773, label %1774, label %1800

1774:                                             ; preds = %1771
  %1775 = getelementptr inbounds %class.TinyGLInstancingRenderer, ptr %71, i32 0, i32 2
  %1776 = load ptr, ptr %1775, align 8, !tbaa !17
  %1777 = getelementptr inbounds %struct.InternalDataRenderer, ptr %1776, i32 0, i32 15
  %1778 = load ptr, ptr %1777, align 8, !tbaa !23
  invoke void @_ZN17GLRenderToTexture7disableEv(ptr noundef nonnull align 8 dereferenceable(24) %1778)
          to label %1779 unwind label %1796

1779:                                             ; preds = %1774
  %1780 = load ptr, ptr @glad_glBindFramebuffer, align 8, !tbaa !5
  %1781 = getelementptr inbounds %class.TinyGLInstancingRenderer, ptr %71, i32 0, i32 2
  %1782 = load ptr, ptr %1781, align 8, !tbaa !17
  %1783 = getelementptr inbounds %struct.InternalDataRenderer, ptr %1782, i32 0, i32 17
  %1784 = load i32, ptr %1783, align 4, !tbaa !83
  invoke void %1780(i32 noundef 36160, i32 noundef %1784)
          to label %1785 unwind label %1796

1785:                                             ; preds = %1779
  %1786 = load ptr, ptr @glad_glViewport, align 8, !tbaa !5
  %1787 = getelementptr inbounds [4 x i32], ptr %8, i64 0, i64 0
  %1788 = load i32, ptr %1787, align 16, !tbaa !9
  %1789 = getelementptr inbounds [4 x i32], ptr %8, i64 0, i64 1
  %1790 = load i32, ptr %1789, align 4, !tbaa !9
  %1791 = getelementptr inbounds [4 x i32], ptr %8, i64 0, i64 2
  %1792 = load i32, ptr %1791, align 8, !tbaa !9
  %1793 = getelementptr inbounds [4 x i32], ptr %8, i64 0, i64 3
  %1794 = load i32, ptr %1793, align 4, !tbaa !9
  invoke void %1786(i32 noundef %1788, i32 noundef %1790, i32 noundef %1792, i32 noundef %1794)
          to label %1795 unwind label %1796

1795:                                             ; preds = %1785
  br label %1800

1796:                                             ; preds = %1816, %1814, %1812, %1810, %1808, %1800, %1785, %1779, %1774
  %1797 = landingpad { ptr, i32 }
          cleanup
  %1798 = extractvalue { ptr, i32 } %1797, 0
  store ptr %1798, ptr %14, align 8
  %1799 = extractvalue { ptr, i32 } %1797, 1
  store i32 %1799, ptr %15, align 4
  br label %1825

1800:                                             ; preds = %1795, %1771
  %1801 = load ptr, ptr @glad_glGetError, align 8, !tbaa !5
  %1802 = invoke i32 %1801()
          to label %1803 unwind label %1796

1803:                                             ; preds = %1800
  %1804 = icmp eq i32 %1802, 0
  br i1 %1804, label %1805, label %1806

1805:                                             ; preds = %1803
  br label %1808

1806:                                             ; preds = %1803
  call void @__assert_fail(ptr noundef @.str.4, ptr noundef @.str.1, i32 noundef 2734, ptr noundef @__PRETTY_FUNCTION__._ZN24TinyGLInstancingRenderer21render_scene_internalEi) #12
  unreachable

1807:                                             ; No predecessors!
  br label %1808

1808:                                             ; preds = %1807, %1805
  %1809 = load ptr, ptr @glad_glUseProgram, align 8, !tbaa !5
  invoke void %1809(i32 noundef 0)
          to label %1810 unwind label %1796

1810:                                             ; preds = %1808
  %1811 = load ptr, ptr @glad_glBindBuffer, align 8, !tbaa !5
  invoke void %1811(i32 noundef 34962, i32 noundef 0)
          to label %1812 unwind label %1796

1812:                                             ; preds = %1810
  %1813 = load ptr, ptr @glad_glBindVertexArray, align 8, !tbaa !5
  invoke void %1813(i32 noundef 0)
          to label %1814 unwind label %1796

1814:                                             ; preds = %1812
  %1815 = load ptr, ptr @glad_glDisable, align 8, !tbaa !5
  invoke void %1815(i32 noundef 2884)
          to label %1816 unwind label %1796

1816:                                             ; preds = %1814
  %1817 = load ptr, ptr @glad_glGetError, align 8, !tbaa !5
  %1818 = invoke i32 %1817()
          to label %1819 unwind label %1796

1819:                                             ; preds = %1816
  %1820 = icmp eq i32 %1818, 0
  br i1 %1820, label %1821, label %1822

1821:                                             ; preds = %1819
  br label %1824

1822:                                             ; preds = %1819
  call void @__assert_fail(ptr noundef @.str.4, ptr noundef @.str.1, i32 noundef 2742, ptr noundef @__PRETTY_FUNCTION__._ZN24TinyGLInstancingRenderer21render_scene_internalEi) #12
  unreachable

1823:                                             ; No predecessors!
  br label %1824

1824:                                             ; preds = %1823, %1821
  call void @_ZNSt6vectorI27SortableTransparentInstanceSaIS0_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %29) #11
  call void @llvm.lifetime.end.p0(i64 24, ptr %29) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr %27) #11
  call void @llvm.lifetime.end.p0(i64 64, ptr %26) #11
  call void @llvm.lifetime.end.p0(i64 64, ptr %25) #11
  call void @llvm.lifetime.end.p0(i64 64, ptr %24) #11
  call void @llvm.lifetime.end.p0(i64 64, ptr %23) #11
  call void @llvm.lifetime.end.p0(i64 64, ptr %22) #11
  call void @llvm.lifetime.end.p0(i64 16, ptr %20) #11
  call void @llvm.lifetime.end.p0(i64 16, ptr %19) #11
  call void @llvm.lifetime.end.p0(i64 16, ptr %18) #11
  call void @llvm.lifetime.end.p0(i64 16, ptr %17) #11
  call void @llvm.lifetime.end.p0(i64 64, ptr %16) #11
  call void @llvm.lifetime.end.p0(i64 64, ptr %10) #11
  call void @llvm.lifetime.end.p0(i64 64, ptr %9) #11
  call void @llvm.lifetime.end.p0(i64 16, ptr %8) #11
  call void @llvm.lifetime.end.p0(i64 1, ptr %7) #11
  call void @llvm.lifetime.end.p0(i64 1, ptr %6) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr %5) #11
  ret void

1825:                                             ; preds = %1796, %1766, %575
  call void @_ZNSt6vectorI27SortableTransparentInstanceSaIS0_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %29) #11
  call void @llvm.lifetime.end.p0(i64 24, ptr %29) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr %27) #11
  call void @llvm.lifetime.end.p0(i64 64, ptr %26) #11
  call void @llvm.lifetime.end.p0(i64 64, ptr %25) #11
  call void @llvm.lifetime.end.p0(i64 64, ptr %24) #11
  call void @llvm.lifetime.end.p0(i64 64, ptr %23) #11
  call void @llvm.lifetime.end.p0(i64 64, ptr %22) #11
  call void @llvm.lifetime.end.p0(i64 16, ptr %20) #11
  call void @llvm.lifetime.end.p0(i64 16, ptr %19) #11
  call void @llvm.lifetime.end.p0(i64 16, ptr %18) #11
  call void @llvm.lifetime.end.p0(i64 16, ptr %17) #11
  call void @llvm.lifetime.end.p0(i64 64, ptr %16) #11
  br label %1826

1826:                                             ; preds = %1825, %249
  call void @llvm.lifetime.end.p0(i64 64, ptr %10) #11
  call void @llvm.lifetime.end.p0(i64 64, ptr %9) #11
  call void @llvm.lifetime.end.p0(i64 16, ptr %8) #11
  call void @llvm.lifetime.end.p0(i64 1, ptr %7) #11
  call void @llvm.lifetime.end.p0(i64 1, ptr %6) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr %5) #11
  br label %1827

1827:                                             ; preds = %1826
  %1828 = load ptr, ptr %14, align 8
  %1829 = load i32, ptr %15, align 4
  %1830 = insertvalue { ptr, i32 } poison, ptr %1828, 0
  %1831 = insertvalue { ptr, i32 } %1830, i32 %1829, 1
  resume { ptr, i32 } %1831

1832:                                             ; preds = %1760
  unreachable
}

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

declare void @_ZN17GLRenderToTextureC1Ev(ptr noundef nonnull align 8 dereferenceable(24)) unnamed_addr #8

declare void @_ZN17GLRenderToTexture4initEiiji(ptr noundef nonnull align 8 dereferenceable(24), i32 noundef, i32 noundef, i32 noundef, i32 noundef) #8

declare noundef zeroext i1 @_ZN17GLRenderToTexture6enableEv(ptr noundef nonnull align 8 dereferenceable(24)) #8

; Function Attrs: mustprogress uwtable
declare hidden void @_ZL13b3CreateOrthoffffffPA4_f(float noundef, float noundef, float noundef, float noundef, float noundef, float noundef, ptr noundef) #6

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZNK4TINY11TinyVector3IfNS_10FloatUtilsEE10normalizedEv(ptr dead_on_unwind noalias writable sret(%"struct.TINY::TinyVector3") align 4, ptr noundef nonnull align 4 dereferenceable(16)) #9 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZNK4TINY11TinyVector3IfNS_10FloatUtilsEE11plane_spaceERS2_S3_(ptr noundef nonnull align 4 dereferenceable(16), ptr noundef nonnull align 4 dereferenceable(16), ptr noundef nonnull align 4 dereferenceable(16)) #9 align 2

; Function Attrs: mustprogress uwtable
declare hidden void @_ZL14b3CreateLookAtRKN4TINY11TinyVector3IfNS_10FloatUtilsEEES4_S4_Pf(ptr noundef nonnull align 4 dereferenceable(16), ptr noundef nonnull align 4 dereferenceable(16), ptr noundef nonnull align 4 dereferenceable(16), ptr noundef) #6

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZN4TINYplIfNS_10FloatUtilsEEENS_11TinyVector3IT_T0_EERKS5_S7_(ptr dead_on_unwind noalias writable sret(%"struct.TINY::TinyVector3") align 4, ptr noundef nonnull align 4 dereferenceable(16), ptr noundef nonnull align 4 dereferenceable(16)) #9

; Function Attrs: mustprogress nounwind uwtable
declare hidden void @_ZL22b3CreateDiagonalMatrixfPA4_f(float noundef, ptr noundef) #3

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

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

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

declare void @_ZNK10TinyCamera25get_camera_forward_vectorEPf(ptr noundef nonnull align 8 dereferenceable(16), ptr noundef) #8

; 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)) #3 align 2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef nonnull align 4 dereferenceable(16) ptr @_ZN4TINY11TinyVector3IfNS_10FloatUtilsEEmLEf(ptr noundef nonnull align 4 dereferenceable(16), float noundef) #5 align 2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef float @_ZNK4TINY11TinyVector3IfNS_10FloatUtilsEE3dotERKS2_(ptr noundef nonnull align 4 dereferenceable(16), ptr noundef nonnull align 4 dereferenceable(16)) #5 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNSt6vectorI27SortableTransparentInstanceSaIS0_EE9push_backERKS0_(ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 4 dereferenceable(12)) #6 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZSt4sortIN9__gnu_cxx17__normal_iteratorIP27SortableTransparentInstanceSt6vectorIS2_SaIS2_EEEE32TransparentDistanceSortPredicateEvT_S9_T0_(ptr, ptr) #9

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 4 dereferenceable(12) ptr @_ZNSt6vectorI27SortableTransparentInstanceSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24), i64 noundef) #3 align 2

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZN4TINY11TinyVector3IfNS_10FloatUtilsEE9normalizeEv(ptr noundef nonnull align 4 dereferenceable(16)) #9 align 2

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

declare void @_ZN17GLRenderToTexture7disableEv(ptr noundef nonnull align 8 dereferenceable(24)) #8

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

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"int", !7, i64 0}
!11 = !{!12, !12, i64 0}
!12 = !{!"bool", !7, i64 0}
!13 = !{i8 0, i8 2}
!14 = !{}
!15 = !{!16, !16, i64 0}
!16 = !{!"vtable pointer", !8, i64 0}
!17 = !{!18, !6, i64 32}
!18 = !{!"_ZTS24TinyGLInstancingRenderer", !19, i64 8, !6, i64 32, !12, i64 40, !12, i64 41, !10, i64 44, !10, i64 48, !10, i64 52, !10, i64 56}
!19 = !{!"_ZTSSt6vectorIP18b3GraphicsInstanceSaIS1_EE", !20, i64 0}
!20 = !{!"_ZTSSt12_Vector_baseIP18b3GraphicsInstanceSaIS1_EE", !21, i64 0}
!21 = !{!"_ZTSNSt12_Vector_baseIP18b3GraphicsInstanceSaIS1_EE12_Vector_implE", !22, i64 0}
!22 = !{!"_ZTSNSt12_Vector_baseIP18b3GraphicsInstanceSaIS1_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!23 = !{!24, !6, i64 528}
!24 = !{!"_ZTS20InternalDataRenderer", !25, i64 0, !30, i64 120, !6, i64 136, !7, i64 144, !7, i64 208, !7, i64 272, !7, i64 336, !7, i64 400, !12, i64 464, !31, i64 468, !31, i64 484, !10, i64 500, !33, i64 504, !6, i64 528, !10, i64 536, !10, i64 540, !37, i64 544, !10, i64 584, !10, i64 588, !32, i64 592, !12, i64 596}
!25 = !{!"_ZTS30GLInstanceRendererInternalData", !26, i64 0, !26, i64 24, !26, i64 48, !26, i64 72, !10, i64 96, !10, i64 100, !10, i64 104, !10, i64 108, !10, i64 112}
!26 = !{!"_ZTSSt6vectorIfSaIfEE", !27, i64 0}
!27 = !{!"_ZTSSt12_Vector_baseIfSaIfEE", !28, i64 0}
!28 = !{!"_ZTSNSt12_Vector_baseIfSaIfEE12_Vector_implE", !29, i64 0}
!29 = !{!"_ZTSNSt12_Vector_baseIfSaIfEE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!30 = !{!"_ZTS10TinyCamera", !6, i64 8}
!31 = !{!"_ZTSN4TINY11TinyVector3IfNS_10FloatUtilsEEE", !32, i64 0, !32, i64 4, !32, i64 8, !10, i64 12}
!32 = !{!"float", !7, i64 0}
!33 = !{!"_ZTSSt6vectorI21InternalTextureHandleSaIS0_EE", !34, i64 0}
!34 = !{!"_ZTSSt12_Vector_baseI21InternalTextureHandleSaIS0_EE", !35, i64 0}
!35 = !{!"_ZTSNSt12_Vector_baseI21InternalTextureHandleSaIS0_EE12_Vector_implE", !36, i64 0}
!36 = !{!"_ZTSNSt12_Vector_baseI21InternalTextureHandleSaIS0_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!37 = !{!"_ZTS17TinyResizablePoolI18TinyPoolBodyHandleI30TinyPublicGraphicsInstanceDataEE", !38, i64 8, !10, i64 32, !10, i64 36}
!38 = !{!"_ZTSSt6vectorI18TinyPoolBodyHandleI30TinyPublicGraphicsInstanceDataESaIS2_EE", !39, i64 0}
!39 = !{!"_ZTSSt12_Vector_baseI18TinyPoolBodyHandleI30TinyPublicGraphicsInstanceDataESaIS2_EE", !40, i64 0}
!40 = !{!"_ZTSNSt12_Vector_baseI18TinyPoolBodyHandleI30TinyPublicGraphicsInstanceDataESaIS2_EE12_Vector_implE", !41, i64 0}
!41 = !{!"_ZTSNSt12_Vector_baseI18TinyPoolBodyHandleI30TinyPublicGraphicsInstanceDataESaIS2_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!42 = !{!24, !12, i64 596}
!43 = !{!24, !10, i64 536}
!44 = !{!24, !10, i64 584}
!45 = !{!24, !10, i64 588}
!46 = distinct !{!46, !47}
!47 = !{!"llvm.loop.mustprogress"}
!48 = !{!24, !32, i64 592}
!49 = !{!24, !6, i64 136}
!50 = !{!25, !10, i64 100}
!51 = !{!52, !10, i64 20}
!52 = !{!"_ZTS18b3GraphicsInstance", !10, i64 0, !10, i64 4, !10, i64 8, !10, i64 12, !10, i64 16, !10, i64 20, !53, i64 24, !10, i64 48, !10, i64 52, !10, i64 56, !32, i64 60, !31, i64 64, !10, i64 80}
!53 = !{!"_ZTSSt6vectorIiSaIiEE", !54, i64 0}
!54 = !{!"_ZTSSt12_Vector_baseIiSaIiEE", !55, i64 0}
!55 = !{!"_ZTSNSt12_Vector_baseIiSaIiEE12_Vector_implE", !56, i64 0}
!56 = !{!"_ZTSNSt12_Vector_baseIiSaIiEE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!57 = distinct !{!57, !47}
!58 = !{!59, !10, i64 4}
!59 = !{!"_ZTS27SortableTransparentInstance", !32, i64 0, !10, i64 4, !10, i64 8}
!60 = !{!52, !10, i64 80}
!61 = !{!59, !10, i64 8}
!62 = !{!59, !32, i64 0}
!63 = distinct !{!63, !47}
!64 = distinct !{!64, !47}
!65 = !{!18, !10, i64 56}
!66 = !{!52, !10, i64 8}
!67 = !{!68, !10, i64 0}
!68 = !{!"_ZTS21InternalTextureHandle", !10, i64 0, !10, i64 4, !10, i64 8, !10, i64 12}
!69 = !{!68, !10, i64 12}
!70 = !{!24, !10, i64 500}
!71 = !{!52, !10, i64 0}
!72 = !{!52, !10, i64 52}
!73 = !{!7, !7, i64 0}
!74 = !{!25, !10, i64 112}
!75 = !{!52, !10, i64 12}
!76 = !{!52, !10, i64 4}
!77 = !{!52, !10, i64 56}
!78 = !{!18, !10, i64 44}
!79 = !{!32, !32, i64 0}
!80 = !{!52, !32, i64 60}
!81 = distinct !{!81, !47}
!82 = distinct !{!82, !47}
!83 = !{!24, !10, i64 540}


; Optimized IR (opt -passes='default<O3>'):
target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-i128:128-f80:128-n8:16:32:64-S128"
target triple = "x86_64-unknown-linux-gnu"

%"struct.TINY::TinyVector3" = type { float, float, float, i32 }
%"class.std::vector.26" = type { %"struct.std::_Vector_base.27" }
%"struct.std::_Vector_base.27" = type { %"struct.std::_Vector_base<SortableTransparentInstance, std::allocator<SortableTransparentInstance>>::_Vector_impl" }
%"struct.std::_Vector_base<SortableTransparentInstance, std::allocator<SortableTransparentInstance>>::_Vector_impl" = type { %"struct.std::_Vector_base<SortableTransparentInstance, std::allocator<SortableTransparentInstance>>::_Vector_impl_data" }
%"struct.std::_Vector_base<SortableTransparentInstance, std::allocator<SortableTransparentInstance>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%struct.SortableTransparentInstance = type { float, i32, i32 }
%struct.PointerCaster = type { %union.anon.25 }
%union.anon.25 = type { ptr }

@useShadowMap = external dso_local local_unnamed_addr global i8, align 1
@glad_glDeleteTextures = external local_unnamed_addr global ptr, align 8
@.str.1 = external hidden unnamed_addr constant [130 x i8], align 1
@glad_glBindBuffer = external local_unnamed_addr global ptr, align 8
@glad_glGetError = external local_unnamed_addr global ptr, align 8
@.str.4 = external hidden unnamed_addr constant [28 x i8], align 1
@glad_glActiveTexture = external local_unnamed_addr global ptr, align 8
@glad_glGenTextures = external local_unnamed_addr global ptr, align 8
@glad_glBindTexture = external local_unnamed_addr global ptr, align 8
@glad_glTexImage2D = external local_unnamed_addr global ptr, align 8
@glad_glBindVertexArray = external local_unnamed_addr global ptr, align 8
@glad_glUseProgram = external local_unnamed_addr global ptr, align 8
@glad_glGetIntegerv = external local_unnamed_addr global ptr, align 8
@_ZL33projectiveTextureInstancingShader = external hidden local_unnamed_addr global i32, align 4
@_ZL40projectiveTexture_lightSpecularIntensity = external hidden local_unnamed_addr global i32, align 4
@_ZL39projectiveTexture_materialSpecularColor = external hidden local_unnamed_addr global i32, align 4
@_ZL21projectiveTexture_MVP = external hidden local_unnamed_addr global i32, align 4
@_ZL34projectiveTexture_ProjectionMatrix = external hidden local_unnamed_addr global i32, align 4
@_ZL28projectiveTexture_TextureMVP = external hidden local_unnamed_addr global i32, align 4
@_ZL28projectiveTexture_lightPosIn = external hidden local_unnamed_addr global i32, align 4
@_ZL34projectiveTexture_cameraPositionIn = external hidden local_unnamed_addr global i32, align 4
@_ZL37projectiveTexture_materialShininessIn = external hidden local_unnamed_addr global i32, align 4
@_ZL28useShadowMapInstancingShader = external hidden local_unnamed_addr global i32, align 4
@_ZL32useShadow_lightSpecularIntensity = external hidden local_unnamed_addr global i32, align 4
@_ZL31useShadow_materialSpecularColor = external hidden local_unnamed_addr global i32, align 4
@_ZL13useShadow_MVP = external hidden local_unnamed_addr global i32, align 4
@_ZL26useShadow_ProjectionMatrix = external hidden local_unnamed_addr global i32, align 4
@_ZL34useShadow_DepthBiasModelViewMatrix = external hidden local_unnamed_addr global i32, align 4
@_ZL19useShadow_shadowMap = external hidden local_unnamed_addr global i32, align 4
@_ZL20useShadow_lightPosIn = external hidden local_unnamed_addr global i32, align 4
@_ZL26useShadow_cameraPositionIn = external hidden local_unnamed_addr global i32, align 4
@_ZL29useShadow_materialShininessIn = external hidden local_unnamed_addr global i32, align 4
@_ZL31createShadowMapInstancingShader = external hidden local_unnamed_addr global i32, align 4
@_ZL21createShadow_depthMVP = external hidden local_unnamed_addr global i32, align 4
@_ZL32segmentationMaskInstancingShader = external hidden local_unnamed_addr global i32, align 4
@_ZL31segmentationMaskModelViewMatrix = external hidden local_unnamed_addr global i32, align 4
@_ZL32segmentationMaskProjectionMatrix = external hidden local_unnamed_addr global i32, align 4
@_ZL16instancingShader = external hidden local_unnamed_addr global i32, align 4
@_ZL15ModelViewMatrix = external hidden local_unnamed_addr global i32, align 4
@_ZL16ProjectionMatrix = external hidden local_unnamed_addr global i32, align 4
@_ZL23uniform_texture_diffuse = external hidden local_unnamed_addr global i32, align 4
@_ZL17regularLightDirIn = external hidden local_unnamed_addr global i32, align 4
@_ZL27instancingShaderPointSprite = external hidden local_unnamed_addr global i32, align 4
@_ZL26ModelViewMatrixPointSprite = external hidden local_unnamed_addr global i32, align 4
@_ZL27ProjectionMatrixPointSprite = external hidden local_unnamed_addr global i32, align 4
@_ZL22screenWidthPointSprite = external hidden local_unnamed_addr global i32, align 4
@glad_glEnable = external local_unnamed_addr global ptr, align 8
@glad_glDisable = external local_unnamed_addr global ptr, align 8
@glad_glUniformMatrix4fv = external local_unnamed_addr global ptr, align 8
@glad_glUniform3f = external local_unnamed_addr global ptr, align 8
@glad_glVertexAttribPointer = external local_unnamed_addr global ptr, align 8
@glad_glEnableVertexAttribArray = external local_unnamed_addr global ptr, align 8
@glad_glVertexAttribDivisor = external local_unnamed_addr global ptr, align 8
@glad_glDrawElements = external local_unnamed_addr global ptr, align 8
@glad_glPointSize = external local_unnamed_addr global ptr, align 8
@__PRETTY_FUNCTION__._ZN24TinyGLInstancingRenderer21render_scene_internalEi = external hidden unnamed_addr constant [66 x i8], align 1
@glad_glCullFace = external local_unnamed_addr global ptr, align 8
@glad_glTexParameteri = external local_unnamed_addr global ptr, align 8
@__const._ZN24TinyGLInstancingRenderer21render_scene_internalEi.l_ClampColor = external hidden unnamed_addr constant [4 x float], align 16
@glad_glTexParameterfv = external local_unnamed_addr global ptr, align 8
@glad_glViewport = external local_unnamed_addr global ptr, align 8
@glad_glClear = external local_unnamed_addr global ptr, align 8
@__const._ZN24TinyGLInstancingRenderer21render_scene_internalEi.biasMatrix = external hidden unnamed_addr constant [4 x [4 x float]], align 16
@glad_glUniform1f = external local_unnamed_addr global ptr, align 8
@glad_glDrawElementsInstanced = external local_unnamed_addr global ptr, align 8
@glad_glDepthMask = external local_unnamed_addr global ptr, align 8
@glad_glBlendFunc = external local_unnamed_addr global ptr, align 8
@glad_glUniform1i = external local_unnamed_addr global ptr, align 8
@glad_glBindFramebuffer = external local_unnamed_addr global ptr, align 8

; Function Attrs: nobuiltin allocsize(0)
declare noundef nonnull ptr @_Znwm(i64 noundef) local_unnamed_addr #0

declare i32 @__gxx_personality_v0(...)

; Function Attrs: nobuiltin nounwind
declare void @_ZdlPvm(ptr noundef, i64 noundef) local_unnamed_addr #1

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

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

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

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

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

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef nonnull align 4 dereferenceable(4) ptr @_ZN4TINY11TinyVector3IfNS_10FloatUtilsEEixEi(ptr noundef nonnull align 4 dereferenceable(16), i32 noundef) local_unnamed_addr #5 align 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 #3 align 2

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

; Function Attrs: mustprogress nounwind uwtable
declare hidden void @_ZL16b3Matrix4x4Mul16PfS_S_(ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #3

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

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN24TinyGLInstancingRenderer21render_scene_internalEi(ptr noundef nonnull align 8 dereferenceable(60) %0, i32 noundef %1) unnamed_addr #6 align 2 personality ptr @__gxx_personality_v0 {
  %3 = alloca [4 x i32], align 16
  %4 = alloca [4 x [4 x float]], align 16
  %5 = alloca [4 x [4 x float]], align 16
  %6 = alloca i32, align 4
  %7 = alloca [4 x float], align 16
  %8 = alloca [4 x [4 x float]], align 16
  %9 = alloca %"struct.TINY::TinyVector3", align 4
  %10 = alloca %"struct.TINY::TinyVector3", align 4
  %11 = alloca %"struct.TINY::TinyVector3", align 4
  %12 = alloca %"struct.TINY::TinyVector3", align 4
  %13 = alloca %"struct.TINY::TinyVector3", align 4
  %14 = alloca [4 x [4 x float]], align 16
  %15 = alloca [4 x [4 x float]], align 16
  %16 = alloca [4 x [4 x float]], align 16
  %17 = alloca [4 x [4 x float]], align 16
  %18 = alloca [16 x float], align 16
  %19 = alloca %"class.std::vector.26", align 8
  %20 = alloca [3 x float], align 4
  %21 = alloca %"struct.TINY::TinyVector3", align 4
  %22 = alloca %struct.SortableTransparentInstance, align 4
  %23 = alloca %"struct.TINY::TinyVector3", align 4
  %24 = alloca %"struct.TINY::TinyVector3", align 4
  %25 = alloca %struct.PointerCaster, align 8
  %26 = alloca %struct.PointerCaster, align 8
  %27 = alloca %struct.PointerCaster, align 8
  %28 = alloca %"struct.TINY::TinyVector3", align 4
  %29 = alloca [16 x float], align 16
  %30 = alloca [16 x float], align 16
  %31 = alloca [16 x float], align 16
  %32 = alloca %"struct.TINY::TinyVector3", align 4
  %33 = alloca [16 x float], align 16
  %34 = alloca [16 x float], align 16
  %35 = alloca [16 x float], align 16
  %36 = alloca %"struct.TINY::TinyVector3", align 4
  %37 = icmp ne i32 %1, 5
  %38 = icmp eq i32 %1, 4
  %39 = and i32 %1, -2
  %40 = icmp eq i32 %39, 4
  %41 = load i8, ptr @useShadowMap, align 1, !tbaa !5, !range !9, !noundef !10
  %42 = trunc nuw i8 %41 to i1
  %43 = and i1 %40, %42
  %.2 = select i1 %43, i32 3, i32 %1
  %44 = icmp eq i32 %1, 6
  %.3 = select i1 %44, i32 6, i32 %.2
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %3) #11
  %45 = load ptr, ptr @glad_glGetIntegerv, align 8, !tbaa !11
  call void %45(i32 noundef 2978, ptr noundef nonnull %3)
  %46 = load ptr, ptr @glad_glEnable, align 8, !tbaa !11
  call void %46(i32 noundef 2884)
  %47 = load ptr, ptr %0, align 8, !tbaa !13
  %48 = getelementptr inbounds i8, ptr %47, i64 16
  %49 = load ptr, ptr %48, align 8
  call void %49(ptr noundef nonnull align 8 dereferenceable(60) %0)
  %50 = load ptr, ptr @glad_glGetError, align 8, !tbaa !11
  %51 = call i32 %50()
  %52 = icmp eq i32 %51, 0
  br i1 %52, label %54, label %53

53:                                               ; preds = %2
  call void @__assert_fail(ptr noundef nonnull @.str.4, ptr noundef nonnull @.str.1, i32 noundef 2071, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN24TinyGLInstancingRenderer21render_scene_internalEi) #12
  unreachable

54:                                               ; preds = %2
  call void @llvm.lifetime.start.p0(i64 64, ptr nonnull %4) #11
  call void @llvm.lifetime.start.p0(i64 64, ptr nonnull %5) #11
  %55 = icmp ne i32 %.3, 2
  %56 = load ptr, ptr @glad_glEnable, align 8, !tbaa !11
  call void %56(i32 noundef 2884)
  %57 = load ptr, ptr @glad_glCullFace, align 8, !tbaa !11
  br i1 %55, label %153, label %58

58:                                               ; preds = %54
  call void %57(i32 noundef 1028)
  %59 = getelementptr inbounds i8, ptr %0, i64 32
  %60 = load ptr, ptr %59, align 8, !tbaa !15
  %61 = getelementptr inbounds i8, ptr %60, i64 528
  %62 = load ptr, ptr %61, align 8, !tbaa !22
  %.not = icmp eq ptr %62, null
  br i1 %.not, label %81, label %63

63:                                               ; preds = %58
  %64 = getelementptr inbounds i8, ptr %60, i64 596
  %65 = load i8, ptr %64, align 4, !tbaa !41, !range !9, !noundef !10
  %66 = trunc nuw i8 %65 to i1
  br i1 %66, label %67, label %137

67:                                               ; preds = %63
  store i8 0, ptr %64, align 4, !tbaa !41
  %68 = load ptr, ptr @glad_glDeleteTextures, align 8, !tbaa !11
  %69 = getelementptr inbounds i8, ptr %60, i64 536
  call void %68(i32 noundef 1, ptr noundef nonnull %69)
  %70 = load ptr, ptr %59, align 8, !tbaa !15
  %71 = getelementptr inbounds i8, ptr %70, i64 528
  %72 = load ptr, ptr %71, align 8, !tbaa !22
  %73 = icmp eq ptr %72, null
  br i1 %73, label %78, label %74

74:                                               ; preds = %67
  %75 = load ptr, ptr %72, align 8, !tbaa !13
  %76 = getelementptr inbounds i8, ptr %75, i64 8
  %77 = load ptr, ptr %76, align 8
  call void %77(ptr noundef nonnull align 8 dereferenceable(24) %72) #11
  %.pre = load ptr, ptr %59, align 8, !tbaa !15
  br label %78

78:                                               ; preds = %74, %67
  %79 = phi ptr [ %.pre, %74 ], [ %70, %67 ]
  %80 = getelementptr inbounds i8, ptr %79, i64 528
  store ptr null, ptr %80, align 8, !tbaa !22
  br label %81

81:                                               ; preds = %78, %58
  %82 = load ptr, ptr @glad_glActiveTexture, align 8, !tbaa !11
  call void %82(i32 noundef 33984)
  %83 = load ptr, ptr @glad_glGenTextures, align 8, !tbaa !11
  %84 = load ptr, ptr %59, align 8, !tbaa !15
  %85 = getelementptr inbounds i8, ptr %84, i64 536
  call void %83(i32 noundef 1, ptr noundef nonnull %85)
  %86 = load ptr, ptr @glad_glBindTexture, align 8, !tbaa !11
  %87 = load ptr, ptr %59, align 8, !tbaa !15
  %88 = getelementptr inbounds i8, ptr %87, i64 536
  %89 = load i32, ptr %88, align 8, !tbaa !42
  call void %86(i32 noundef 3553, i32 noundef %89)
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %6) #11
  %90 = load ptr, ptr @glad_glGetIntegerv, align 8, !tbaa !11
  call void %90(i32 noundef 3379, ptr noundef nonnull %6)
  %91 = load i32, ptr %6, align 4, !tbaa !43
  %92 = load ptr, ptr %59, align 8, !tbaa !15
  %93 = getelementptr inbounds i8, ptr %92, i64 584
  %94 = load i32, ptr %93, align 8, !tbaa !44
  %95 = icmp slt i32 %91, %94
  br i1 %95, label %96, label %97

96:                                               ; preds = %81
  store i32 %91, ptr %93, align 8, !tbaa !44
  br label %97

97:                                               ; preds = %96, %81
  %98 = phi i32 [ %91, %96 ], [ %94, %81 ]
  %99 = getelementptr inbounds i8, ptr %92, i64 588
  %100 = load i32, ptr %99, align 4, !tbaa !45
  %101 = icmp slt i32 %91, %100
  br i1 %101, label %102, label %.preheader276

102:                                              ; preds = %97
  store i32 %91, ptr %99, align 4, !tbaa !45
  br label %.preheader276

.preheader276:                                    ; preds = %102, %97
  %.ph = phi i32 [ %100, %97 ], [ %91, %102 ]
  br label %103

103:                                              ; preds = %.preheader276, %109
  %104 = phi i32 [ %113, %109 ], [ %.ph, %.preheader276 ]
  %105 = phi i32 [ %116, %109 ], [ %98, %.preheader276 ]
  %106 = load ptr, ptr @glad_glTexImage2D, align 8, !tbaa !11
  call void %106(i32 noundef 3553, i32 noundef 0, i32 noundef 33189, i32 noundef %105, i32 noundef %104, i32 noundef 0, i32 noundef 6402, i32 noundef 5126, ptr noundef null)
  %107 = load ptr, ptr @glad_glGetError, align 8, !tbaa !11
  %108 = call i32 %107()
  %.not187 = icmp eq i32 %108, 0
  br i1 %.not187, label %.critedge, label %109

109:                                              ; preds = %103
  %110 = load ptr, ptr %59, align 8, !tbaa !15
  %111 = getelementptr inbounds i8, ptr %110, i64 588
  %112 = load i32, ptr %111, align 4, !tbaa !45
  %113 = ashr i32 %112, 1
  store i32 %113, ptr %111, align 4, !tbaa !45
  %114 = getelementptr inbounds i8, ptr %110, i64 584
  %115 = load i32, ptr %114, align 8, !tbaa !44
  %116 = ashr i32 %115, 1
  store i32 %116, ptr %114, align 8, !tbaa !44
  %117 = icmp sgt i32 %116, 0
  br i1 %117, label %103, label %.critedge, !llvm.loop !46

.critedge:                                        ; preds = %103, %109
  %118 = load ptr, ptr @glad_glTexParameteri, align 8, !tbaa !11
  call void %118(i32 noundef 3553, i32 noundef 10240, i32 noundef 9729)
  %119 = load ptr, ptr @glad_glTexParameteri, align 8, !tbaa !11
  call void %119(i32 noundef 3553, i32 noundef 10241, i32 noundef 9729)
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %7) #11
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 16 dereferenceable(16) %7, ptr noundef nonnull align 16 dereferenceable(16) @__const._ZN24TinyGLInstancingRenderer21render_scene_internalEi.l_ClampColor, i64 16, i1 false)
  %120 = load ptr, ptr @glad_glTexParameterfv, align 8, !tbaa !11
  call void %120(i32 noundef 3553, i32 noundef 4100, ptr noundef nonnull %7)
  %121 = load ptr, ptr @glad_glTexParameteri, align 8, !tbaa !11
  call void %121(i32 noundef 3553, i32 noundef 10242, i32 noundef 33069)
  %122 = load ptr, ptr @glad_glTexParameteri, align 8, !tbaa !11
  call void %122(i32 noundef 3553, i32 noundef 10243, i32 noundef 33069)
  %123 = load ptr, ptr @glad_glTexParameteri, align 8, !tbaa !11
  call void %123(i32 noundef 3553, i32 noundef 34893, i32 noundef 515)
  %124 = load ptr, ptr @glad_glTexParameteri, align 8, !tbaa !11
  call void %124(i32 noundef 3553, i32 noundef 34892, i32 noundef 34894)
  %125 = call noalias noundef nonnull dereferenceable(24) ptr @_Znwm(i64 noundef 24) #13
  invoke void @_ZN17GLRenderToTextureC1Ev(ptr noundef nonnull align 8 dereferenceable(24) %125)
          to label %126 unwind label %135

126:                                              ; preds = %.critedge
  %127 = load ptr, ptr %59, align 8, !tbaa !15
  %128 = getelementptr inbounds i8, ptr %127, i64 528
  store ptr %125, ptr %128, align 8, !tbaa !22
  %129 = getelementptr inbounds i8, ptr %127, i64 584
  %130 = load i32, ptr %129, align 8, !tbaa !44
  %131 = getelementptr inbounds i8, ptr %127, i64 588
  %132 = load i32, ptr %131, align 4, !tbaa !45
  %133 = getelementptr inbounds i8, ptr %127, i64 536
  %134 = load i32, ptr %133, align 8, !tbaa !42
  call void @_ZN17GLRenderToTexture4initEiiji(ptr noundef nonnull align 8 dereferenceable(24) %125, i32 noundef %130, i32 noundef %132, i32 noundef %134, i32 noundef 2)
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %7) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %6) #11
  %.pre267 = load ptr, ptr %59, align 8, !tbaa !15
  %.phi.trans.insert = getelementptr inbounds i8, ptr %.pre267, i64 528
  %.pre268 = load ptr, ptr %.phi.trans.insert, align 8, !tbaa !22
  br label %137

135:                                              ; preds = %.critedge
  %136 = landingpad { ptr, i32 }
          cleanup
  call void @_ZdlPvm(ptr noundef nonnull %125, i64 noundef 24) #14
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %7) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %6) #11
  br label %1053

137:                                              ; preds = %63, %126
  %138 = phi ptr [ %.pre268, %126 ], [ %62, %63 ]
  %139 = call noundef zeroext i1 @_ZN17GLRenderToTexture6enableEv(ptr noundef nonnull align 8 dereferenceable(24) %138)
  %140 = load ptr, ptr @glad_glViewport, align 8, !tbaa !11
  %141 = load ptr, ptr %59, align 8, !tbaa !15
  %142 = getelementptr inbounds i8, ptr %141, i64 584
  %143 = load i32, ptr %142, align 8, !tbaa !44
  %144 = getelementptr inbounds i8, ptr %141, i64 588
  %145 = load i32, ptr %144, align 4, !tbaa !45
  call void %140(i32 noundef 0, i32 noundef 0, i32 noundef %143, i32 noundef %145)
  %146 = load ptr, ptr @glad_glClear, align 8, !tbaa !11
  call void %146(i32 noundef 256)
  %147 = load ptr, ptr @glad_glEnable, align 8, !tbaa !11
  call void %147(i32 noundef 2884)
  %148 = load ptr, ptr @glad_glCullFace, align 8, !tbaa !11
  call void %148(i32 noundef 1028)
  %149 = load ptr, ptr @glad_glGetError, align 8, !tbaa !11
  %150 = call i32 %149()
  %151 = icmp eq i32 %150, 0
  br i1 %151, label %154, label %152

152:                                              ; preds = %137
  call void @__assert_fail(ptr noundef nonnull @.str.4, ptr noundef nonnull @.str.1, i32 noundef 2159, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN24TinyGLInstancingRenderer21render_scene_internalEi) #12
  unreachable

153:                                              ; preds = %54
  call void %57(i32 noundef 1029)
  br label %154

154:                                              ; preds = %137, %153
  %155 = getelementptr inbounds i8, ptr %0, i64 32
  %156 = load ptr, ptr %155, align 8, !tbaa !15
  %157 = getelementptr inbounds i8, ptr %156, i64 592
  %158 = load float, ptr %157, align 8, !tbaa !48
  %159 = fneg float %158
  call void @_ZL13b3CreateOrthoffffffPA4_f(float noundef %159, float noundef %158, float noundef %159, float noundef %158, float noundef 1.000000e+00, float noundef 3.000000e+02, ptr noundef nonnull %4)
  call void @llvm.lifetime.start.p0(i64 64, ptr nonnull %8) #11
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %9) #11
  call void @_ZN4TINY11TinyVector3IfNS_10FloatUtilsEEC2Efff(ptr noundef nonnull align 4 dereferenceable(16) %9, float noundef 0.000000e+00, float noundef 0.000000e+00, float noundef 0.000000e+00)
  %160 = load ptr, ptr %155, align 8, !tbaa !15
  %161 = getelementptr inbounds i8, ptr %160, i64 136
  %162 = load ptr, ptr %161, align 8, !tbaa !49
  %163 = load ptr, ptr %162, align 8, !tbaa !13
  %164 = getelementptr inbounds i8, ptr %163, i64 32
  %165 = load ptr, ptr %164, align 8
  call void %165(ptr noundef nonnull align 8 dereferenceable(16) %162, ptr noundef nonnull align 4 dereferenceable(16) %9)
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %10) #11
  call void @_ZN4TINY11TinyVector3IfNS_10FloatUtilsEEC2Ei(ptr noundef nonnull align 4 dereferenceable(16) %10, i32 noundef 0)
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %11) #11
  call void @_ZN4TINY11TinyVector3IfNS_10FloatUtilsEEC2Ei(ptr noundef nonnull align 4 dereferenceable(16) %11, i32 noundef 0)
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %12) #11
  %166 = load ptr, ptr %155, align 8, !tbaa !15
  %167 = getelementptr inbounds i8, ptr %166, i64 468
  call void @_ZNK4TINY11TinyVector3IfNS_10FloatUtilsEE10normalizedEv(ptr dead_on_unwind nonnull writable sret(%"struct.TINY::TinyVector3") align 4 %12, ptr noundef nonnull align 4 dereferenceable(16) %167)
  call void @_ZNK4TINY11TinyVector3IfNS_10FloatUtilsEE11plane_spaceERS2_S3_(ptr noundef nonnull align 4 dereferenceable(16) %12, ptr noundef nonnull align 4 dereferenceable(16) %10, ptr noundef nonnull align 4 dereferenceable(16) %11)
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %13) #11
  %168 = load ptr, ptr %155, align 8, !tbaa !15
  %169 = getelementptr inbounds i8, ptr %168, i64 468
  call void @_ZN4TINYplIfNS_10FloatUtilsEEENS_11TinyVector3IT_T0_EERKS5_S7_(ptr dead_on_unwind nonnull writable sret(%"struct.TINY::TinyVector3") align 4 %13, ptr noundef nonnull align 4 dereferenceable(16) %169, ptr noundef nonnull align 4 dereferenceable(16) %9)
  call void @_ZL14b3CreateLookAtRKN4TINY11TinyVector3IfNS_10FloatUtilsEEES4_S4_Pf(ptr noundef nonnull align 4 dereferenceable(16) %13, ptr noundef nonnull align 4 dereferenceable(16) %9, ptr noundef nonnull align 4 dereferenceable(16) %10, ptr noundef nonnull %8)
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %13) #11
  call void @llvm.lifetime.start.p0(i64 64, ptr nonnull %14) #11
  call void @_ZL22b3CreateDiagonalMatrixfPA4_f(float noundef 1.000000e+00, ptr noundef nonnull %14)
  call void @_ZL14b3Matrix4x4MulPA4_fS0_S0_(ptr noundef nonnull %8, ptr noundef nonnull %14, ptr noundef nonnull %5)
  call void @llvm.lifetime.start.p0(i64 64, ptr nonnull %15) #11
  call void @_ZL14b3Matrix4x4MulPA4_fS0_S0_(ptr noundef nonnull %4, ptr noundef nonnull %5, ptr noundef nonnull %15)
  call void @llvm.lifetime.start.p0(i64 64, ptr nonnull %16) #11
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 16 dereferenceable(64) %16, ptr noundef nonnull align 16 dereferenceable(64) @__const._ZN24TinyGLInstancingRenderer21render_scene_internalEi.biasMatrix, i64 64, i1 false)
  call void @llvm.lifetime.start.p0(i64 64, ptr nonnull %17) #11
  call void @_ZL14b3Matrix4x4MulPA4_fS0_S0_(ptr noundef nonnull %16, ptr noundef nonnull %15, ptr noundef nonnull %17)
  call void @llvm.lifetime.start.p0(i64 64, ptr nonnull %18) #11
  %170 = load ptr, ptr %155, align 8, !tbaa !15
  %171 = getelementptr inbounds i8, ptr %170, i64 272
  %172 = getelementptr inbounds i8, ptr %170, i64 336
  call void @_ZL16b3Matrix4x4Mul16PfS_S_(ptr noundef nonnull %171, ptr noundef nonnull %172, ptr noundef nonnull %18)
  %173 = load ptr, ptr %155, align 8, !tbaa !15
  %174 = getelementptr inbounds i8, ptr %173, i64 136
  %175 = load ptr, ptr %174, align 8, !tbaa !49
  %176 = getelementptr inbounds i8, ptr %173, i64 144
  %177 = load ptr, ptr %175, align 8, !tbaa !13
  %178 = getelementptr inbounds i8, ptr %177, i64 16
  %179 = load ptr, ptr %178, align 8
  call void %179(ptr noundef nonnull align 8 dereferenceable(16) %175, ptr noundef nonnull %176)
  %180 = load ptr, ptr %155, align 8, !tbaa !15
  %181 = getelementptr inbounds i8, ptr %180, i64 136
  %182 = load ptr, ptr %181, align 8, !tbaa !49
  %183 = getelementptr inbounds i8, ptr %180, i64 208
  %184 = load ptr, ptr %182, align 8, !tbaa !13
  %185 = getelementptr inbounds i8, ptr %184, i64 24
  %186 = load ptr, ptr %185, align 8
  call void %186(ptr noundef nonnull align 8 dereferenceable(16) %182, ptr noundef nonnull %183)
  %187 = load ptr, ptr @glad_glGetError, align 8, !tbaa !11
  %188 = call i32 %187()
  %189 = icmp eq i32 %188, 0
  br i1 %189, label %191, label %190

190:                                              ; preds = %154
  call void @__assert_fail(ptr noundef nonnull @.str.4, ptr noundef nonnull @.str.1, i32 noundef 2220, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN24TinyGLInstancingRenderer21render_scene_internalEi) #12
  unreachable

191:                                              ; preds = %154
  %192 = load ptr, ptr @glad_glBindBuffer, align 8, !tbaa !11
  %193 = load ptr, ptr %155, align 8, !tbaa !15
  %194 = getelementptr inbounds i8, ptr %193, i64 100
  %195 = load i32, ptr %194, align 4, !tbaa !50
  call void %192(i32 noundef 34962, i32 noundef %195)
  %196 = load ptr, ptr @glad_glGetError, align 8, !tbaa !11
  %197 = call i32 %196()
  %198 = icmp eq i32 %197, 0
  br i1 %198, label %.preheader241, label %201

.preheader241:                                    ; preds = %191
  %199 = getelementptr inbounds i8, ptr %0, i64 8
  %200 = call noundef i64 @_ZNKSt6vectorIP18b3GraphicsInstanceSaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %199) #11
  %.not257 = icmp eq i64 %200, 0
  br i1 %.not257, label %._crit_edge, label %.lr.ph

201:                                              ; preds = %191
  call void @__assert_fail(ptr noundef nonnull @.str.4, ptr noundef nonnull @.str.1, i32 noundef 2227, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN24TinyGLInstancingRenderer21render_scene_internalEi) #12
  unreachable

._crit_edge:                                      ; preds = %.lr.ph, %.preheader241
  %.0169.lcssa = phi i32 [ 0, %.preheader241 ], [ %207, %.lr.ph ]
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %19) #11
  call void @_ZNSt6vectorI27SortableTransparentInstanceSaIS0_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %19) #11
  %202 = sext i32 %.0169.lcssa to i64
  invoke void @_ZNSt6vectorI27SortableTransparentInstanceSaIS0_EE7reserveEm(ptr noundef nonnull align 8 dereferenceable(24) %19, i64 noundef %202)
          to label %210 unwind label %222

.lr.ph:                                           ; preds = %.preheader241, %.lr.ph
  %indvars.iv = phi i64 [ %indvars.iv.next, %.lr.ph ], [ 0, %.preheader241 ]
  %.0169243 = phi i32 [ %207, %.lr.ph ], [ 0, %.preheader241 ]
  %203 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIP18b3GraphicsInstanceSaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %199, i64 noundef %indvars.iv) #11
  %204 = load ptr, ptr %203, align 8, !tbaa !11
  %205 = getelementptr inbounds i8, ptr %204, i64 20
  %206 = load i32, ptr %205, align 4, !tbaa !51
  %207 = add nsw i32 %206, %.0169243
  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
  %208 = call noundef i64 @_ZNKSt6vectorIP18b3GraphicsInstanceSaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %199) #11
  %209 = icmp ugt i64 %208, %indvars.iv.next
  br i1 %209, label %.lr.ph, label %._crit_edge, !llvm.loop !57

210:                                              ; preds = %._crit_edge
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %20) #11
  %211 = load ptr, ptr %155, align 8, !tbaa !15
  %212 = getelementptr inbounds i8, ptr %211, i64 136
  %213 = load ptr, ptr %212, align 8, !tbaa !49
  invoke void @_ZNK10TinyCamera25get_camera_forward_vectorEPf(ptr noundef nonnull align 8 dereferenceable(16) %213, ptr noundef nonnull %20)
          to label %214 unwind label %224

214:                                              ; preds = %210
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %21) #11
  call void @_ZN4TINY11TinyVector3IfNS_10FloatUtilsEEC2Ei(ptr noundef nonnull align 4 dereferenceable(16) %21, i32 noundef 0)
  %215 = getelementptr inbounds i8, ptr %20, i64 4
  %216 = getelementptr inbounds i8, ptr %20, i64 8
  call void @_ZN4TINY11TinyVector3IfNS_10FloatUtilsEE8setValueERKfS4_S4_(ptr noundef nonnull align 4 dereferenceable(16) %21, ptr noundef nonnull align 4 dereferenceable(4) %20, ptr noundef nonnull align 4 dereferenceable(4) %215, ptr noundef nonnull align 4 dereferenceable(4) %216)
  %217 = call noundef i64 @_ZNKSt6vectorIP18b3GraphicsInstanceSaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %199) #11
  %.not258 = icmp eq i64 %217, 0
  br i1 %.not258, label %._crit_edge252, label %.lr.ph251

.lr.ph251:                                        ; preds = %214
  %218 = getelementptr inbounds i8, ptr %22, i64 4
  %219 = getelementptr inbounds i8, ptr %22, i64 8
  br label %226

._crit_edge252:                                   ; preds = %289, %214
  %220 = call ptr @_ZNSt6vectorI27SortableTransparentInstanceSaIS0_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %19) #11
  %221 = call ptr @_ZNSt6vectorI27SortableTransparentInstanceSaIS0_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %19) #11
  invoke void @_ZSt4sortIN9__gnu_cxx17__normal_iteratorIP27SortableTransparentInstanceSt6vectorIS2_SaIS2_EEEE32TransparentDistanceSortPredicateEvT_S9_T0_(ptr %220, ptr %221)
          to label %292 unwind label %307

222:                                              ; preds = %._crit_edge
  %223 = landingpad { ptr, i32 }
          cleanup
  br label %1052

224:                                              ; preds = %210
  %225 = landingpad { ptr, i32 }
          cleanup
  br label %310

226:                                              ; preds = %.lr.ph251, %289
  %indvars.iv261 = phi i64 [ 0, %.lr.ph251 ], [ %indvars.iv.next262, %289 ]
  %.0171248 = phi i32 [ 0, %.lr.ph251 ], [ %.1172, %289 ]
  %227 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIP18b3GraphicsInstanceSaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %199, i64 noundef %indvars.iv261) #11
  %228 = load ptr, ptr %227, align 8, !tbaa !11
  %229 = getelementptr inbounds i8, ptr %228, i64 20
  %230 = load i32, ptr %229, align 4, !tbaa !51
  %.not225 = icmp eq i32 %230, 0
  br i1 %.not225, label %289, label %231

231:                                              ; preds = %226
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %22) #11
  %232 = trunc nuw nsw i64 %indvars.iv261 to i32
  store i32 %232, ptr %218, align 4, !tbaa !58
  %233 = getelementptr inbounds i8, ptr %228, i64 80
  %234 = load i32, ptr %233, align 8, !tbaa !60
  %235 = and i32 %234, 1
  %236 = icmp eq i32 %235, 0
  br i1 %236, label %238, label %.preheader240

.preheader240:                                    ; preds = %231
  %237 = icmp sgt i32 %230, 0
  br i1 %237, label %.lr.ph246, label %.loopexit

238:                                              ; preds = %231
  store i32 %.0171248, ptr %219, align 4, !tbaa !61
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %23) #11
  call void @_ZN4TINY11TinyVector3IfNS_10FloatUtilsEEC2Ei(ptr noundef nonnull align 4 dereferenceable(16) %23, i32 noundef 0)
  %239 = load ptr, ptr %155, align 8, !tbaa !15
  %240 = load i32, ptr %219, align 4, !tbaa !61
  %241 = shl nsw i32 %240, 2
  %242 = sext i32 %241 to i64
  %243 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIfSaIfEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %239, i64 noundef %242) #11
  %244 = load ptr, ptr %155, align 8, !tbaa !15
  %245 = load i32, ptr %219, align 4, !tbaa !61
  %246 = shl nsw i32 %245, 2
  %247 = or disjoint i32 %246, 1
  %248 = sext i32 %247 to i64
  %249 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIfSaIfEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %244, i64 noundef %248) #11
  %250 = load ptr, ptr %155, align 8, !tbaa !15
  %251 = load i32, ptr %219, align 4, !tbaa !61
  %252 = shl nsw i32 %251, 2
  %253 = or disjoint i32 %252, 2
  %254 = sext i32 %253 to i64
  %255 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIfSaIfEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %250, i64 noundef %254) #11
  call void @_ZN4TINY11TinyVector3IfNS_10FloatUtilsEE8setValueERKfS4_S4_(ptr noundef nonnull align 4 dereferenceable(16) %23, ptr noundef nonnull align 4 dereferenceable(4) %243, ptr noundef nonnull align 4 dereferenceable(4) %249, ptr noundef nonnull align 4 dereferenceable(4) %255)
  %256 = call noundef nonnull align 4 dereferenceable(16) ptr @_ZN4TINY11TinyVector3IfNS_10FloatUtilsEEmLEf(ptr noundef nonnull align 4 dereferenceable(16) %23, float noundef -1.000000e+00)
  %257 = call noundef float @_ZNK4TINY11TinyVector3IfNS_10FloatUtilsEE3dotERKS2_(ptr noundef nonnull align 4 dereferenceable(16) %23, ptr noundef nonnull align 4 dereferenceable(16) %21)
  store float %257, ptr %22, align 4, !tbaa !62
  invoke void @_ZNSt6vectorI27SortableTransparentInstanceSaIS0_EE9push_backERKS0_(ptr noundef nonnull align 8 dereferenceable(24) %19, ptr noundef nonnull align 4 dereferenceable(12) %22)
          to label %258 unwind label %259

258:                                              ; preds = %238
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %23) #11
  %.pre269 = load i32, ptr %229, align 4, !tbaa !51
  br label %.loopexit

259:                                              ; preds = %238
  %260 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %23) #11
  br label %288

.lr.ph246:                                        ; preds = %.preheader240, %280
  %.0176245 = phi i32 [ %281, %280 ], [ 0, %.preheader240 ]
  %261 = add nsw i32 %.0176245, %.0171248
  store i32 %261, ptr %219, align 4, !tbaa !61
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %24) #11
  call void @_ZN4TINY11TinyVector3IfNS_10FloatUtilsEEC2Ei(ptr noundef nonnull align 4 dereferenceable(16) %24, i32 noundef 0)
  %262 = load ptr, ptr %155, align 8, !tbaa !15
  %263 = load i32, ptr %219, align 4, !tbaa !61
  %264 = shl nsw i32 %263, 2
  %265 = sext i32 %264 to i64
  %266 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIfSaIfEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %262, i64 noundef %265) #11
  %267 = load ptr, ptr %155, align 8, !tbaa !15
  %268 = load i32, ptr %219, align 4, !tbaa !61
  %269 = shl nsw i32 %268, 2
  %270 = or disjoint i32 %269, 1
  %271 = sext i32 %270 to i64
  %272 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIfSaIfEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %267, i64 noundef %271) #11
  %273 = load ptr, ptr %155, align 8, !tbaa !15
  %274 = load i32, ptr %219, align 4, !tbaa !61
  %275 = shl nsw i32 %274, 2
  %276 = or disjoint i32 %275, 2
  %277 = sext i32 %276 to i64
  %278 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIfSaIfEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %273, i64 noundef %277) #11
  call void @_ZN4TINY11TinyVector3IfNS_10FloatUtilsEE8setValueERKfS4_S4_(ptr noundef nonnull align 4 dereferenceable(16) %24, ptr noundef nonnull align 4 dereferenceable(4) %266, ptr noundef nonnull align 4 dereferenceable(4) %272, ptr noundef nonnull align 4 dereferenceable(4) %278)
  %279 = call noundef float @_ZNK4TINY11TinyVector3IfNS_10FloatUtilsEE3dotERKS2_(ptr noundef nonnull align 4 dereferenceable(16) %24, ptr noundef nonnull align 4 dereferenceable(16) %21)
  store float %279, ptr %22, align 4, !tbaa !62
  invoke void @_ZNSt6vectorI27SortableTransparentInstanceSaIS0_EE9push_backERKS0_(ptr noundef nonnull align 8 dereferenceable(24) %19, ptr noundef nonnull align 4 dereferenceable(12) %22)
          to label %280 unwind label %284

280:                                              ; preds = %.lr.ph246
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %24) #11
  %281 = add nuw nsw i32 %.0176245, 1
  %282 = load i32, ptr %229, align 4, !tbaa !51
  %283 = icmp slt i32 %281, %282
  br i1 %283, label %.lr.ph246, label %.loopexit, !llvm.loop !63

284:                                              ; preds = %.lr.ph246
  %285 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %24) #11
  br label %288

.loopexit:                                        ; preds = %280, %.preheader240, %258
  %286 = phi i32 [ %230, %.preheader240 ], [ %.pre269, %258 ], [ %282, %280 ]
  %287 = add nsw i32 %286, %.0171248
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %22) #11
  br label %289

288:                                              ; preds = %284, %259
  %.pn226 = phi { ptr, i32 } [ %260, %259 ], [ %285, %284 ]
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %22) #11
  br label %309

289:                                              ; preds = %.loopexit, %226
  %.1172 = phi i32 [ %287, %.loopexit ], [ %.0171248, %226 ]
  %indvars.iv.next262 = add nuw nsw i64 %indvars.iv261, 1
  %290 = call noundef i64 @_ZNKSt6vectorIP18b3GraphicsInstanceSaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %199) #11
  %291 = icmp ugt i64 %290, %indvars.iv.next262
  br i1 %291, label %226, label %._crit_edge252, !llvm.loop !64

292:                                              ; preds = %._crit_edge252
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %21) #11
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %20) #11
  %293 = getelementptr inbounds i8, ptr %0, i64 56
  %294 = shl i32 %.0169.lcssa, 4
  %295 = sext i32 %294 to i64
  %reass.add = shl nsw i64 %295, 1
  %296 = mul nsw i64 %295, 3
  %297 = getelementptr inbounds i8, ptr %35, i64 20
  %298 = getelementptr inbounds i8, ptr %35, i64 40
  %299 = getelementptr inbounds i8, ptr %35, i64 60
  %300 = getelementptr inbounds i8, ptr %31, i64 20
  %301 = getelementptr inbounds i8, ptr %31, i64 40
  %302 = getelementptr inbounds i8, ptr %31, i64 60
  %303 = getelementptr inbounds i8, ptr %0, i64 44
  br label %.preheader

.preheader:                                       ; preds = %292, %._crit_edge255
  %304 = phi i1 [ true, %292 ], [ false, %._crit_edge255 ]
  %.0178256 = phi i32 [ 0, %292 ], [ 1, %._crit_edge255 ]
  %305 = call noundef i64 @_ZNKSt6vectorI27SortableTransparentInstanceSaIS0_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %19) #11
  %.not259 = icmp eq i64 %305, 0
  br i1 %.not259, label %._crit_edge255, label %.lr.ph254

306:                                              ; preds = %._crit_edge255
  br i1 %55, label %1031, label %1011

307:                                              ; preds = %._crit_edge252
  %308 = landingpad { ptr, i32 }
          cleanup
  br label %309

309:                                              ; preds = %307, %288
  %.pn226.pn = phi { ptr, i32 } [ %.pn226, %288 ], [ %308, %307 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %21) #11
  br label %310

310:                                              ; preds = %309, %224
  %.pn226.pn.pn = phi { ptr, i32 } [ %.pn226.pn, %309 ], [ %225, %224 ]
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %20) #11
  br label %1052

._crit_edge255:                                   ; preds = %1008, %.preheader
  br i1 %304, label %.preheader, label %306, !llvm.loop !65

.lr.ph254:                                        ; preds = %.preheader, %1008
  %indvars.iv264 = phi i64 [ %indvars.iv.next265, %1008 ], [ 0, %.preheader ]
  %311 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZNSt6vectorI27SortableTransparentInstanceSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %19, i64 noundef %indvars.iv264) #11
  %312 = getelementptr inbounds i8, ptr %311, i64 4
  %313 = load i32, ptr %312, align 4, !tbaa !58
  %314 = load i32, ptr %293, align 8
  %.not188 = icmp eq i32 %313, %314
  %or.cond236 = select i1 %37, i1 true, i1 %.not188
  br i1 %or.cond236, label %315, label %1008

315:                                              ; preds = %.lr.ph254
  %316 = sext i32 %313 to i64
  %317 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIP18b3GraphicsInstanceSaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %199, i64 noundef %316) #11
  %318 = load ptr, ptr %317, align 8, !tbaa !11
  %319 = getelementptr inbounds i8, ptr %318, i64 80
  %320 = load i32, ptr %319, align 8, !tbaa !60
  %321 = and i32 %320, 1
  %322 = icmp eq i32 %.0178256, %321
  %323 = icmp eq i32 %321, 0
  %or.cond.not = or i1 %55, %323
  %narrow = and i1 %322, %or.cond.not
  br i1 %narrow, label %324, label %1008

324:                                              ; preds = %315
  %325 = getelementptr inbounds i8, ptr %318, i64 20
  %326 = load i32, ptr %325, align 4, !tbaa !51
  %.not190 = icmp eq i32 %326, 0
  br i1 %.not190, label %1008, label %327

327:                                              ; preds = %324
  %328 = load ptr, ptr @glad_glActiveTexture, align 8, !tbaa !11
  invoke void %328(i32 noundef 33984)
          to label %329 unwind label %351

329:                                              ; preds = %327
  %330 = load i32, ptr %319, align 8, !tbaa !60
  %331 = and i32 %330, 2
  %.not191 = icmp eq i32 %331, 0
  %332 = load ptr, ptr %155, align 8, !tbaa !15
  br i1 %.not191, label %358, label %333

333:                                              ; preds = %329
  %334 = getelementptr inbounds i8, ptr %332, i64 504
  %335 = getelementptr inbounds i8, ptr %318, i64 8
  %336 = load i32, ptr %335, align 8, !tbaa !66
  %337 = zext i32 %336 to i64
  %338 = call noundef nonnull align 4 dereferenceable(16) ptr @_ZNSt6vectorI21InternalTextureHandleSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %334, i64 noundef %337) #11
  %339 = load i32, ptr %338, align 4, !tbaa !67
  %340 = load ptr, ptr @glad_glTexParameteri, align 8, !tbaa !11
  invoke void %340(i32 noundef 3553, i32 noundef 33084, i32 noundef 0)
          to label %341 unwind label %353

341:                                              ; preds = %333
  %342 = load ptr, ptr %155, align 8, !tbaa !15
  %343 = getelementptr inbounds i8, ptr %342, i64 504
  %344 = load i32, ptr %335, align 8, !tbaa !66
  %345 = zext i32 %344 to i64
  %346 = call noundef nonnull align 4 dereferenceable(16) ptr @_ZNSt6vectorI21InternalTextureHandleSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %343, i64 noundef %345) #11
  %347 = getelementptr inbounds i8, ptr %346, i64 12
  %348 = load i32, ptr %347, align 4, !tbaa !69
  %.not192 = icmp eq i32 %348, 0
  %349 = load ptr, ptr @glad_glTexParameteri, align 8, !tbaa !11
  br i1 %.not192, label %355, label %350

350:                                              ; preds = %341
  invoke void %349(i32 noundef 3553, i32 noundef 10241, i32 noundef 9729)
          to label %.invoke unwind label %353

351:                                              ; preds = %327
  %352 = landingpad { ptr, i32 }
          cleanup
  br label %1052

353:                                              ; preds = %.invoke, %363, %361, %355, %350, %333
  %354 = landingpad { ptr, i32 }
          cleanup
  br label %1052

355:                                              ; preds = %341
  invoke void %349(i32 noundef 3553, i32 noundef 10241, i32 noundef 9728)
          to label %.invoke unwind label %353

.invoke:                                          ; preds = %355, %350
  %356 = phi i32 [ 9729, %350 ], [ 9728, %355 ]
  %357 = load ptr, ptr @glad_glTexParameteri, align 8, !tbaa !11
  invoke void %357(i32 noundef 3553, i32 noundef 10240, i32 noundef %356)
          to label %361 unwind label %353

358:                                              ; preds = %329
  %359 = getelementptr inbounds i8, ptr %332, i64 500
  %360 = load i32, ptr %359, align 4, !tbaa !70
  br label %361

361:                                              ; preds = %.invoke, %358
  %.0174 = phi i32 [ %360, %358 ], [ %339, %.invoke ]
  %362 = load ptr, ptr @glad_glBindTexture, align 8, !tbaa !11
  invoke void %362(i32 noundef 3553, i32 noundef %.0174)
          to label %363 unwind label %353

363:                                              ; preds = %361
  %364 = load ptr, ptr @glad_glGetError, align 8, !tbaa !11
  %365 = invoke i32 %364()
          to label %366 unwind label %353

366:                                              ; preds = %363
  %367 = icmp eq i32 %365, 0
  br i1 %367, label %369, label %368

368:                                              ; preds = %366
  call void @__assert_fail(ptr noundef nonnull @.str.4, ptr noundef nonnull @.str.1, i32 noundef 2334, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN24TinyGLInstancingRenderer21render_scene_internalEi) #12
  unreachable

369:                                              ; preds = %366
  %370 = load ptr, ptr @glad_glBindVertexArray, align 8, !tbaa !11
  %371 = load i32, ptr %318, align 8, !tbaa !71
  invoke void %370(i32 noundef %371)
          to label %372 unwind label %509

372:                                              ; preds = %369
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %25) #11
  call void @_ZN13PointerCasterC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %25)
  %373 = getelementptr inbounds i8, ptr %318, i64 52
  %374 = load i32, ptr %373, align 4, !tbaa !72
  %375 = mul nsw i32 %374, 36
  store i32 %375, ptr %25, align 8, !tbaa !73
  %376 = load ptr, ptr @glad_glVertexAttribPointer, align 8, !tbaa !11
  %377 = load ptr, ptr %25, align 8, !tbaa !73
  invoke void %376(i32 noundef 0, i32 noundef 4, i32 noundef 5126, i8 noundef zeroext 0, i32 noundef 36, ptr noundef %377)
          to label %378 unwind label %511

378:                                              ; preds = %372
  %379 = load ptr, ptr @glad_glVertexAttribPointer, align 8, !tbaa !11
  %380 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZNSt6vectorI27SortableTransparentInstanceSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %19, i64 noundef %indvars.iv264) #11
  %381 = getelementptr inbounds i8, ptr %380, i64 8
  %382 = load i32, ptr %381, align 4, !tbaa !61
  %383 = shl nsw i32 %382, 2
  %384 = sext i32 %383 to i64
  %385 = shl nsw i64 %384, 2
  %386 = load ptr, ptr %155, align 8, !tbaa !15
  %387 = getelementptr inbounds i8, ptr %386, i64 112
  %388 = load i32, ptr %387, align 8, !tbaa !74
  %389 = sext i32 %388 to i64
  %390 = add nsw i64 %385, %389
  %391 = inttoptr i64 %390 to ptr
  invoke void %379(i32 noundef 1, i32 noundef 4, i32 noundef 5126, i8 noundef zeroext 0, i32 noundef 0, ptr noundef %391)
          to label %392 unwind label %511

392:                                              ; preds = %378
  %393 = load ptr, ptr @glad_glVertexAttribPointer, align 8, !tbaa !11
  %394 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZNSt6vectorI27SortableTransparentInstanceSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %19, i64 noundef %indvars.iv264) #11
  %395 = getelementptr inbounds i8, ptr %394, i64 8
  %396 = load i32, ptr %395, align 4, !tbaa !61
  %397 = shl nsw i32 %396, 2
  %398 = sext i32 %397 to i64
  %399 = shl nsw i64 %398, 2
  %400 = load ptr, ptr %155, align 8, !tbaa !15
  %401 = getelementptr inbounds i8, ptr %400, i64 112
  %402 = load i32, ptr %401, align 8, !tbaa !74
  %403 = sext i32 %402 to i64
  %404 = add nsw i64 %403, %295
  %405 = add nsw i64 %404, %399
  %406 = inttoptr i64 %405 to ptr
  invoke void %393(i32 noundef 2, i32 noundef 4, i32 noundef 5126, i8 noundef zeroext 0, i32 noundef 0, ptr noundef %406)
          to label %407 unwind label %511

407:                                              ; preds = %392
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %26) #11
  call void @_ZN13PointerCasterC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %26)
  %408 = load i32, ptr %25, align 8, !tbaa !73
  %409 = add i32 %408, 28
  store i32 %409, ptr %26, align 8, !tbaa !73
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %27) #11
  call void @_ZN13PointerCasterC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %27)
  %410 = load i32, ptr %25, align 8, !tbaa !73
  %411 = add i32 %410, 16
  store i32 %411, ptr %27, align 8, !tbaa !73
  %412 = load ptr, ptr @glad_glVertexAttribPointer, align 8, !tbaa !11
  %413 = load ptr, ptr %26, align 8, !tbaa !73
  invoke void %412(i32 noundef 3, i32 noundef 2, i32 noundef 5126, i8 noundef zeroext 0, i32 noundef 36, ptr noundef %413)
          to label %414 unwind label %513

414:                                              ; preds = %407
  %415 = load ptr, ptr @glad_glVertexAttribPointer, align 8, !tbaa !11
  %416 = load ptr, ptr %27, align 8, !tbaa !73
  invoke void %415(i32 noundef 4, i32 noundef 3, i32 noundef 5126, i8 noundef zeroext 0, i32 noundef 36, ptr noundef %416)
          to label %417 unwind label %513

417:                                              ; preds = %414
  %418 = load ptr, ptr @glad_glVertexAttribPointer, align 8, !tbaa !11
  %419 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZNSt6vectorI27SortableTransparentInstanceSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %19, i64 noundef %indvars.iv264) #11
  %420 = getelementptr inbounds i8, ptr %419, i64 8
  %421 = load i32, ptr %420, align 4, !tbaa !61
  %422 = shl nsw i32 %421, 2
  %423 = sext i32 %422 to i64
  %424 = shl nsw i64 %423, 2
  %425 = load ptr, ptr %155, align 8, !tbaa !15
  %426 = getelementptr inbounds i8, ptr %425, i64 112
  %427 = load i32, ptr %426, align 8, !tbaa !74
  %428 = sext i32 %427 to i64
  %429 = add nsw i64 %reass.add, %428
  %430 = add nsw i64 %429, %424
  %431 = inttoptr i64 %430 to ptr
  invoke void %418(i32 noundef 5, i32 noundef 4, i32 noundef 5126, i8 noundef zeroext 0, i32 noundef 0, ptr noundef %431)
          to label %432 unwind label %513

432:                                              ; preds = %417
  %433 = load ptr, ptr @glad_glVertexAttribPointer, align 8, !tbaa !11
  %434 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZNSt6vectorI27SortableTransparentInstanceSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %19, i64 noundef %indvars.iv264) #11
  %435 = getelementptr inbounds i8, ptr %434, i64 8
  %436 = load i32, ptr %435, align 4, !tbaa !61
  %437 = shl nsw i32 %436, 2
  %438 = sext i32 %437 to i64
  %439 = shl nsw i64 %438, 2
  %440 = load ptr, ptr %155, align 8, !tbaa !15
  %441 = getelementptr inbounds i8, ptr %440, i64 112
  %442 = load i32, ptr %441, align 8, !tbaa !74
  %443 = sext i32 %442 to i64
  %444 = add nsw i64 %296, %443
  %445 = add nsw i64 %444, %439
  %446 = inttoptr i64 %445 to ptr
  invoke void %433(i32 noundef 6, i32 noundef 4, i32 noundef 5126, i8 noundef zeroext 0, i32 noundef 0, ptr noundef %446)
          to label %447 unwind label %513

447:                                              ; preds = %432
  %448 = load ptr, ptr @glad_glEnableVertexAttribArray, align 8, !tbaa !11
  invoke void %448(i32 noundef 0)
          to label %449 unwind label %513

449:                                              ; preds = %447
  %450 = load ptr, ptr @glad_glEnableVertexAttribArray, align 8, !tbaa !11
  invoke void %450(i32 noundef 1)
          to label %451 unwind label %513

451:                                              ; preds = %449
  %452 = load ptr, ptr @glad_glEnableVertexAttribArray, align 8, !tbaa !11
  invoke void %452(i32 noundef 2)
          to label %453 unwind label %513

453:                                              ; preds = %451
  %454 = load ptr, ptr @glad_glEnableVertexAttribArray, align 8, !tbaa !11
  invoke void %454(i32 noundef 3)
          to label %455 unwind label %513

455:                                              ; preds = %453
  %456 = load ptr, ptr @glad_glEnableVertexAttribArray, align 8, !tbaa !11
  invoke void %456(i32 noundef 4)
          to label %457 unwind label %513

457:                                              ; preds = %455
  %458 = load ptr, ptr @glad_glEnableVertexAttribArray, align 8, !tbaa !11
  invoke void %458(i32 noundef 5)
          to label %459 unwind label %513

459:                                              ; preds = %457
  %460 = load ptr, ptr @glad_glEnableVertexAttribArray, align 8, !tbaa !11
  invoke void %460(i32 noundef 6)
          to label %461 unwind label %513

461:                                              ; preds = %459
  %462 = load ptr, ptr @glad_glVertexAttribDivisor, align 8, !tbaa !11
  invoke void %462(i32 noundef 0, i32 noundef 0)
          to label %463 unwind label %513

463:                                              ; preds = %461
  %464 = load ptr, ptr @glad_glVertexAttribDivisor, align 8, !tbaa !11
  invoke void %464(i32 noundef 1, i32 noundef 1)
          to label %465 unwind label %513

465:                                              ; preds = %463
  %466 = load ptr, ptr @glad_glVertexAttribDivisor, align 8, !tbaa !11
  invoke void %466(i32 noundef 2, i32 noundef 1)
          to label %467 unwind label %513

467:                                              ; preds = %465
  %468 = load ptr, ptr @glad_glVertexAttribDivisor, align 8, !tbaa !11
  invoke void %468(i32 noundef 3, i32 noundef 0)
          to label %469 unwind label %513

469:                                              ; preds = %467
  %470 = load ptr, ptr @glad_glVertexAttribDivisor, align 8, !tbaa !11
  invoke void %470(i32 noundef 4, i32 noundef 0)
          to label %471 unwind label %513

471:                                              ; preds = %469
  %472 = load ptr, ptr @glad_glVertexAttribDivisor, align 8, !tbaa !11
  invoke void %472(i32 noundef 5, i32 noundef 1)
          to label %473 unwind label %513

473:                                              ; preds = %471
  %474 = load ptr, ptr @glad_glVertexAttribDivisor, align 8, !tbaa !11
  invoke void %474(i32 noundef 6, i32 noundef 1)
          to label %475 unwind label %513

475:                                              ; preds = %473
  %476 = getelementptr inbounds i8, ptr %318, i64 12
  %477 = load i32, ptr %476, align 4, !tbaa !75
  %478 = load ptr, ptr @glad_glBindBuffer, align 8, !tbaa !11
  %479 = getelementptr inbounds i8, ptr %318, i64 4
  %480 = load i32, ptr %479, align 4, !tbaa !76
  invoke void %478(i32 noundef 34963, i32 noundef %480)
          to label %481 unwind label %515

481:                                              ; preds = %475
  %482 = getelementptr inbounds i8, ptr %318, i64 56
  %483 = load i32, ptr %482, align 8, !tbaa !77
  %484 = icmp eq i32 %483, 2
  br i1 %484, label %485, label %526

485:                                              ; preds = %481
  %486 = load ptr, ptr @glad_glUseProgram, align 8, !tbaa !11
  %487 = load i32, ptr @_ZL27instancingShaderPointSprite, align 4, !tbaa !43
  invoke void %486(i32 noundef %487)
          to label %488 unwind label %515

488:                                              ; preds = %485
  %489 = load ptr, ptr @glad_glUniformMatrix4fv, align 8, !tbaa !11
  %490 = load i32, ptr @_ZL27ProjectionMatrixPointSprite, align 4, !tbaa !43
  %491 = load ptr, ptr %155, align 8, !tbaa !15
  %492 = getelementptr inbounds i8, ptr %491, i64 144
  invoke void %489(i32 noundef %490, i32 noundef 1, i8 noundef zeroext 0, ptr noundef nonnull %492)
          to label %493 unwind label %515

493:                                              ; preds = %488
  %494 = load ptr, ptr @glad_glUniformMatrix4fv, align 8, !tbaa !11
  %495 = load i32, ptr @_ZL26ModelViewMatrixPointSprite, align 4, !tbaa !43
  %496 = load ptr, ptr %155, align 8, !tbaa !15
  %497 = getelementptr inbounds i8, ptr %496, i64 208
  invoke void %494(i32 noundef %495, i32 noundef 1, i8 noundef zeroext 0, ptr noundef nonnull %497)
          to label %498 unwind label %515

498:                                              ; preds = %493
  %499 = load ptr, ptr @glad_glUniform1f, align 8, !tbaa !11
  %500 = load i32, ptr @_ZL22screenWidthPointSprite, align 4, !tbaa !43
  %501 = load i32, ptr %303, align 4, !tbaa !78
  %502 = sitofp i32 %501 to float
  invoke void %499(i32 noundef %500, float noundef %502)
          to label %503 unwind label %515

503:                                              ; preds = %498
  %504 = load ptr, ptr @glad_glGetError, align 8, !tbaa !11
  %505 = invoke i32 %504()
          to label %506 unwind label %515

506:                                              ; preds = %503
  %507 = icmp eq i32 %505, 0
  br i1 %507, label %517, label %508

508:                                              ; preds = %506
  call void @__assert_fail(ptr noundef nonnull @.str.4, ptr noundef nonnull @.str.1, i32 noundef 2416, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN24TinyGLInstancingRenderer21render_scene_internalEi) #12
  unreachable

509:                                              ; preds = %369
  %510 = landingpad { ptr, i32 }
          cleanup
  br label %1052

511:                                              ; preds = %392, %378, %372
  %512 = landingpad { ptr, i32 }
          cleanup
  br label %1007

513:                                              ; preds = %473, %471, %469, %467, %465, %463, %461, %459, %457, %455, %453, %451, %449, %447, %432, %417, %414, %407
  %514 = landingpad { ptr, i32 }
          cleanup
  br label %1006

515:                                              ; preds = %.invoke273, %.invoke272, %1003, %864, %849, %844, %841, %839, %837, %835, %682, %667, %662, %659, %657, %655, %653, %642, %560, %555, %552, %550, %548, %546, %535, %532, %529, %523, %521, %519, %517, %503, %498, %493, %488, %485, %475
  %516 = landingpad { ptr, i32 }
          cleanup
  br label %1006

517:                                              ; preds = %506
  %518 = load ptr, ptr @glad_glPointSize, align 8, !tbaa !11
  invoke void %518(float noundef 2.000000e+01)
          to label %519 unwind label %515

519:                                              ; preds = %517
  %520 = load ptr, ptr @glad_glEnable, align 8, !tbaa !11
  invoke void %520(i32 noundef 34913)
          to label %521 unwind label %515

521:                                              ; preds = %519
  %522 = load ptr, ptr @glad_glEnable, align 8, !tbaa !11
  invoke void %522(i32 noundef 34370)
          to label %523 unwind label %515

523:                                              ; preds = %521
  %524 = load ptr, ptr @glad_glDrawElementsInstanced, align 8, !tbaa !11
  %525 = load i32, ptr %325, align 4, !tbaa !51
  invoke void %524(i32 noundef 0, i32 noundef %477, i32 noundef 5125, ptr noundef null, i32 noundef %525)
          to label %1005 unwind label %515

526:                                              ; preds = %481
  %527 = load i32, ptr %319, align 8, !tbaa !60
  %528 = and i32 %527, 4
  %.not194 = icmp eq i32 %528, 0
  br i1 %.not194, label %531, label %529

529:                                              ; preds = %526
  %530 = load ptr, ptr @glad_glDisable, align 8, !tbaa !11
  invoke void %530(i32 noundef 2884)
          to label %531 unwind label %515

531:                                              ; preds = %529, %526
  switch i32 %.3, label %1000 [
    i32 7, label %532
    i32 1, label %543
    i32 2, label %642
    i32 3, label %650
    i32 6, label %832
  ]

532:                                              ; preds = %531
  %533 = load ptr, ptr @glad_glUseProgram, align 8, !tbaa !11
  %534 = load i32, ptr @_ZL32segmentationMaskInstancingShader, align 4, !tbaa !43
  invoke void %533(i32 noundef %534)
          to label %535 unwind label %515

535:                                              ; preds = %532
  %536 = load ptr, ptr @glad_glUniformMatrix4fv, align 8, !tbaa !11
  %537 = load i32, ptr @_ZL32segmentationMaskProjectionMatrix, align 4, !tbaa !43
  %538 = load ptr, ptr %155, align 8, !tbaa !15
  %539 = getelementptr inbounds i8, ptr %538, i64 144
  invoke void %536(i32 noundef %537, i32 noundef 1, i8 noundef zeroext 0, ptr noundef nonnull %539)
          to label %540 unwind label %515

540:                                              ; preds = %535
  %541 = load ptr, ptr %155, align 8, !tbaa !15
  %542 = getelementptr inbounds i8, ptr %541, i64 208
  br label %.invoke273

543:                                              ; preds = %531
  %544 = load i32, ptr %319, align 8, !tbaa !60
  %545 = and i32 %544, 1
  %.not210 = icmp eq i32 %545, 0
  br i1 %.not210, label %552, label %546

546:                                              ; preds = %543
  %547 = load ptr, ptr @glad_glDepthMask, align 8, !tbaa !11
  invoke void %547(i8 noundef zeroext 0)
          to label %548 unwind label %515

548:                                              ; preds = %546
  %549 = load ptr, ptr @glad_glEnable, align 8, !tbaa !11
  invoke void %549(i32 noundef 3042)
          to label %550 unwind label %515

550:                                              ; preds = %548
  %551 = load ptr, ptr @glad_glBlendFunc, align 8, !tbaa !11
  invoke void %551(i32 noundef 770, i32 noundef 771)
          to label %552 unwind label %515

552:                                              ; preds = %550, %543
  %553 = load ptr, ptr @glad_glUseProgram, align 8, !tbaa !11
  %554 = load i32, ptr @_ZL16instancingShader, align 4, !tbaa !43
  invoke void %553(i32 noundef %554)
          to label %555 unwind label %515

555:                                              ; preds = %552
  %556 = load ptr, ptr @glad_glUniformMatrix4fv, align 8, !tbaa !11
  %557 = load i32, ptr @_ZL16ProjectionMatrix, align 4, !tbaa !43
  %558 = load ptr, ptr %155, align 8, !tbaa !15
  %559 = getelementptr inbounds i8, ptr %558, i64 144
  invoke void %556(i32 noundef %557, i32 noundef 1, i8 noundef zeroext 0, ptr noundef nonnull %559)
          to label %560 unwind label %515

560:                                              ; preds = %555
  %561 = load ptr, ptr @glad_glUniformMatrix4fv, align 8, !tbaa !11
  %562 = load i32, ptr @_ZL15ModelViewMatrix, align 4, !tbaa !43
  %563 = load ptr, ptr %155, align 8, !tbaa !15
  %564 = getelementptr inbounds i8, ptr %563, i64 208
  invoke void %561(i32 noundef %562, i32 noundef 1, i8 noundef zeroext 0, ptr noundef nonnull %564)
          to label %565 unwind label %515

565:                                              ; preds = %560
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %28) #11
  %566 = load ptr, ptr %155, align 8, !tbaa !15
  %567 = getelementptr inbounds i8, ptr %566, i64 468
  call void @_ZN4TINY11TinyVector3IfNS_10FloatUtilsEEC2ERKS2_(ptr noundef nonnull align 4 dereferenceable(16) %28, ptr noundef nonnull align 4 dereferenceable(16) %567)
  invoke void @_ZN4TINY11TinyVector3IfNS_10FloatUtilsEE9normalizeEv(ptr noundef nonnull align 4 dereferenceable(16) %28)
          to label %568 unwind label %626

568:                                              ; preds = %565
  %569 = load ptr, ptr @glad_glUniform3f, align 8, !tbaa !11
  %570 = load i32, ptr @_ZL17regularLightDirIn, align 4, !tbaa !43
  %571 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZN4TINY11TinyVector3IfNS_10FloatUtilsEEixEi(ptr noundef nonnull align 4 dereferenceable(16) %28, i32 noundef 0)
  %572 = load float, ptr %571, align 4, !tbaa !79
  %573 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZN4TINY11TinyVector3IfNS_10FloatUtilsEEixEi(ptr noundef nonnull align 4 dereferenceable(16) %28, i32 noundef 1)
  %574 = load float, ptr %573, align 4, !tbaa !79
  %575 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZN4TINY11TinyVector3IfNS_10FloatUtilsEEixEi(ptr noundef nonnull align 4 dereferenceable(16) %28, i32 noundef 2)
  %576 = load float, ptr %575, align 4, !tbaa !79
  invoke void %569(i32 noundef %570, float noundef %572, float noundef %574, float noundef %576)
          to label %577 unwind label %626

577:                                              ; preds = %568
  %578 = load ptr, ptr @glad_glUniform1i, align 8, !tbaa !11
  %579 = load i32, ptr @_ZL23uniform_texture_diffuse, align 4, !tbaa !43
  invoke void %578(i32 noundef %579, i32 noundef 0)
          to label %580 unwind label %626

580:                                              ; preds = %577
  %581 = load i32, ptr %319, align 8, !tbaa !60
  %582 = and i32 %581, 1
  %.not211 = icmp eq i32 %582, 0
  br i1 %.not211, label %630, label %583

583:                                              ; preds = %580
  %584 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZNSt6vectorI27SortableTransparentInstanceSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %19, i64 noundef %indvars.iv264) #11
  %585 = getelementptr inbounds i8, ptr %584, i64 8
  %586 = load i32, ptr %585, align 4, !tbaa !61
  %587 = load ptr, ptr @glad_glVertexAttribPointer, align 8, !tbaa !11
  %588 = shl nsw i32 %586, 2
  %589 = sext i32 %588 to i64
  %590 = shl nsw i64 %589, 2
  %591 = load ptr, ptr %155, align 8, !tbaa !15
  %592 = getelementptr inbounds i8, ptr %591, i64 112
  %593 = load i32, ptr %592, align 8, !tbaa !74
  %594 = sext i32 %593 to i64
  %595 = add nsw i64 %590, %594
  %596 = inttoptr i64 %595 to ptr
  invoke void %587(i32 noundef 1, i32 noundef 4, i32 noundef 5126, i8 noundef zeroext 0, i32 noundef 0, ptr noundef %596)
          to label %597 unwind label %628

597:                                              ; preds = %583
  %598 = load ptr, ptr @glad_glVertexAttribPointer, align 8, !tbaa !11
  %599 = load ptr, ptr %155, align 8, !tbaa !15
  %600 = getelementptr inbounds i8, ptr %599, i64 112
  %601 = load i32, ptr %600, align 8, !tbaa !74
  %602 = sext i32 %601 to i64
  %603 = add nsw i64 %590, %295
  %604 = add nsw i64 %603, %602
  %605 = inttoptr i64 %604 to ptr
  invoke void %598(i32 noundef 2, i32 noundef 4, i32 noundef 5126, i8 noundef zeroext 0, i32 noundef 0, ptr noundef %605)
          to label %606 unwind label %628

606:                                              ; preds = %597
  %607 = load ptr, ptr @glad_glVertexAttribPointer, align 8, !tbaa !11
  %608 = load ptr, ptr %155, align 8, !tbaa !15
  %609 = getelementptr inbounds i8, ptr %608, i64 112
  %610 = load i32, ptr %609, align 8, !tbaa !74
  %611 = sext i32 %610 to i64
  %612 = add nsw i64 %590, %reass.add
  %613 = add nsw i64 %612, %611
  %614 = inttoptr i64 %613 to ptr
  invoke void %607(i32 noundef 5, i32 noundef 4, i32 noundef 5126, i8 noundef zeroext 0, i32 noundef 0, ptr noundef %614)
          to label %615 unwind label %628

615:                                              ; preds = %606
  %616 = load ptr, ptr @glad_glVertexAttribPointer, align 8, !tbaa !11
  %617 = load ptr, ptr %155, align 8, !tbaa !15
  %618 = getelementptr inbounds i8, ptr %617, i64 112
  %619 = load i32, ptr %618, align 8, !tbaa !74
  %620 = sext i32 %619 to i64
  %621 = add nsw i64 %296, %590
  %622 = add nsw i64 %621, %620
  %623 = inttoptr i64 %622 to ptr
  invoke void %616(i32 noundef 6, i32 noundef 4, i32 noundef 5126, i8 noundef zeroext 0, i32 noundef 0, ptr noundef %623)
          to label %624 unwind label %628

624:                                              ; preds = %615
  %625 = load ptr, ptr @glad_glDrawElements, align 8, !tbaa !11
  invoke void %625(i32 noundef 4, i32 noundef %477, i32 noundef 5125, ptr noundef null)
          to label %633 unwind label %628

626:                                              ; preds = %638, %636, %630, %577, %568, %565
  %627 = landingpad { ptr, i32 }
          cleanup
  br label %641

628:                                              ; preds = %624, %615, %606, %597, %583
  %629 = landingpad { ptr, i32 }
          cleanup
  br label %641

630:                                              ; preds = %580
  %631 = load ptr, ptr @glad_glDrawElementsInstanced, align 8, !tbaa !11
  %632 = load i32, ptr %325, align 4, !tbaa !51
  invoke void %631(i32 noundef 4, i32 noundef %477, i32 noundef 5125, ptr noundef null, i32 noundef %632)
          to label %633 unwind label %626

633:                                              ; preds = %624, %630
  %634 = load i32, ptr %319, align 8, !tbaa !60
  %635 = and i32 %634, 1
  %.not214 = icmp eq i32 %635, 0
  br i1 %.not214, label %640, label %636

636:                                              ; preds = %633
  %637 = load ptr, ptr @glad_glDisable, align 8, !tbaa !11
  invoke void %637(i32 noundef 3042)
          to label %638 unwind label %626

638:                                              ; preds = %636
  %639 = load ptr, ptr @glad_glDepthMask, align 8, !tbaa !11
  invoke void %639(i8 noundef zeroext 1)
          to label %640 unwind label %626

640:                                              ; preds = %638, %633
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %28) #11
  br label %1000

641:                                              ; preds = %628, %626
  %.pn215 = phi { ptr, i32 } [ %627, %626 ], [ %629, %628 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %28) #11
  br label %1006

642:                                              ; preds = %531
  %643 = load ptr, ptr @glad_glUseProgram, align 8, !tbaa !11
  %644 = load i32, ptr @_ZL31createShadowMapInstancingShader, align 4, !tbaa !43
  invoke void %643(i32 noundef %644)
          to label %.invoke273 unwind label %515

.invoke273:                                       ; preds = %642, %540
  %.in = phi ptr [ @_ZL31segmentationMaskModelViewMatrix, %540 ], [ @_ZL21createShadow_depthMVP, %642 ]
  %645 = phi ptr [ %542, %540 ], [ %15, %642 ]
  %646 = load ptr, ptr @glad_glUniformMatrix4fv, align 8, !tbaa !11
  %647 = load i32, ptr %.in, align 4, !tbaa !43
  invoke void %646(i32 noundef %647, i32 noundef 1, i8 noundef zeroext 0, ptr noundef nonnull %645)
          to label %.invoke272 unwind label %515

.invoke272:                                       ; preds = %.invoke273
  %648 = load ptr, ptr @glad_glDrawElementsInstanced, align 8, !tbaa !11
  %649 = load i32, ptr %325, align 4, !tbaa !51
  invoke void %648(i32 noundef 4, i32 noundef %477, i32 noundef 5125, ptr noundef null, i32 noundef %649)
          to label %1000 unwind label %515

650:                                              ; preds = %531
  %651 = load i32, ptr %319, align 8, !tbaa !60
  %652 = and i32 %651, 1
  %.not202 = icmp eq i32 %652, 0
  br i1 %.not202, label %659, label %653

653:                                              ; preds = %650
  %654 = load ptr, ptr @glad_glDepthMask, align 8, !tbaa !11
  invoke void %654(i8 noundef zeroext 0)
          to label %655 unwind label %515

655:                                              ; preds = %653
  %656 = load ptr, ptr @glad_glEnable, align 8, !tbaa !11
  invoke void %656(i32 noundef 3042)
          to label %657 unwind label %515

657:                                              ; preds = %655
  %658 = load ptr, ptr @glad_glBlendFunc, align 8, !tbaa !11
  invoke void %658(i32 noundef 770, i32 noundef 771)
          to label %659 unwind label %515

659:                                              ; preds = %657, %650
  %660 = load ptr, ptr @glad_glUseProgram, align 8, !tbaa !11
  %661 = load i32, ptr @_ZL28useShadowMapInstancingShader, align 4, !tbaa !43
  invoke void %660(i32 noundef %661)
          to label %662 unwind label %515

662:                                              ; preds = %659
  %663 = load ptr, ptr @glad_glUniformMatrix4fv, align 8, !tbaa !11
  %664 = load i32, ptr @_ZL26useShadow_ProjectionMatrix, align 4, !tbaa !43
  %665 = load ptr, ptr %155, align 8, !tbaa !15
  %666 = getelementptr inbounds i8, ptr %665, i64 144
  invoke void %663(i32 noundef %664, i32 noundef 1, i8 noundef zeroext 0, ptr noundef nonnull %666)
          to label %667 unwind label %515

667:                                              ; preds = %662
  %668 = load ptr, ptr @glad_glUniform3f, align 8, !tbaa !11
  %669 = load i32, ptr @_ZL32useShadow_lightSpecularIntensity, align 4, !tbaa !43
  %670 = load ptr, ptr %155, align 8, !tbaa !15
  %671 = getelementptr inbounds i8, ptr %670, i64 484
  %672 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZN4TINY11TinyVector3IfNS_10FloatUtilsEEixEi(ptr noundef nonnull align 4 dereferenceable(16) %671, i32 noundef 0)
  %673 = load float, ptr %672, align 4, !tbaa !79
  %674 = load ptr, ptr %155, align 8, !tbaa !15
  %675 = getelementptr inbounds i8, ptr %674, i64 484
  %676 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZN4TINY11TinyVector3IfNS_10FloatUtilsEEixEi(ptr noundef nonnull align 4 dereferenceable(16) %675, i32 noundef 1)
  %677 = load float, ptr %676, align 4, !tbaa !79
  %678 = load ptr, ptr %155, align 8, !tbaa !15
  %679 = getelementptr inbounds i8, ptr %678, i64 484
  %680 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZN4TINY11TinyVector3IfNS_10FloatUtilsEEixEi(ptr noundef nonnull align 4 dereferenceable(16) %679, i32 noundef 2)
  %681 = load float, ptr %680, align 4, !tbaa !79
  invoke void %668(i32 noundef %669, float noundef %673, float noundef %677, float noundef %681)
          to label %682 unwind label %515

682:                                              ; preds = %667
  %683 = load ptr, ptr @glad_glUniform3f, align 8, !tbaa !11
  %684 = load i32, ptr @_ZL31useShadow_materialSpecularColor, align 4, !tbaa !43
  %685 = getelementptr inbounds i8, ptr %318, i64 64
  %686 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZN4TINY11TinyVector3IfNS_10FloatUtilsEEixEi(ptr noundef nonnull align 4 dereferenceable(16) %685, i32 noundef 0)
  %687 = load float, ptr %686, align 4, !tbaa !79
  %688 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZN4TINY11TinyVector3IfNS_10FloatUtilsEEixEi(ptr noundef nonnull align 4 dereferenceable(16) %685, i32 noundef 1)
  %689 = load float, ptr %688, align 4, !tbaa !79
  %690 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZN4TINY11TinyVector3IfNS_10FloatUtilsEEixEi(ptr noundef nonnull align 4 dereferenceable(16) %685, i32 noundef 2)
  %691 = load float, ptr %690, align 4, !tbaa !79
  invoke void %683(i32 noundef %684, float noundef %687, float noundef %689, float noundef %691)
          to label %692 unwind label %515

692:                                              ; preds = %682
  call void @llvm.lifetime.start.p0(i64 64, ptr nonnull %29) #11
  br i1 %38, label %693, label %702

693:                                              ; preds = %692
  call void @llvm.lifetime.start.p0(i64 64, ptr nonnull %30) #11
  call void @llvm.lifetime.start.p0(i64 64, ptr nonnull %31) #11
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(64) %31, i8 0, i64 64, i1 false)
  store float 1.000000e+00, ptr %31, align 16
  store float 1.000000e+00, ptr %300, align 4
  store float -1.000000e+00, ptr %301, align 8
  store float 1.000000e+00, ptr %302, align 4
  %694 = load ptr, ptr @glad_glCullFace, align 8, !tbaa !11
  invoke void %694(i32 noundef 1028)
          to label %695 unwind label %700

695:                                              ; preds = %693
  %696 = load ptr, ptr %155, align 8, !tbaa !15
  %697 = getelementptr inbounds i8, ptr %696, i64 208
  call void @_ZL16b3Matrix4x4Mul16PfS_S_(ptr noundef nonnull %697, ptr noundef nonnull %31, ptr noundef nonnull %30)
  %698 = load ptr, ptr %155, align 8, !tbaa !15
  %699 = getelementptr inbounds i8, ptr %698, i64 144
  call void @_ZL16b3Matrix4x4Mul16PfS_S_(ptr noundef nonnull %699, ptr noundef nonnull %30, ptr noundef nonnull %29)
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %31) #11
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %30) #11
  br label %709

700:                                              ; preds = %693
  %701 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %31) #11
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %30) #11
  br label %831

702:                                              ; preds = %692
  %703 = load ptr, ptr %155, align 8, !tbaa !15
  %704 = getelementptr inbounds i8, ptr %703, i64 144
  %705 = getelementptr inbounds i8, ptr %703, i64 208
  call void @_ZL16b3Matrix4x4Mul16PfS_S_(ptr noundef nonnull %704, ptr noundef nonnull %705, ptr noundef nonnull %29)
  %706 = load ptr, ptr @glad_glCullFace, align 8, !tbaa !11
  invoke void %706(i32 noundef 1029)
          to label %709 unwind label %707

707:                                              ; preds = %712, %709, %702
  %708 = landingpad { ptr, i32 }
          cleanup
  br label %831

709:                                              ; preds = %702, %695
  %710 = load ptr, ptr @glad_glUniformMatrix4fv, align 8, !tbaa !11
  %711 = load i32, ptr @_ZL13useShadow_MVP, align 4, !tbaa !43
  invoke void %710(i32 noundef %711, i32 noundef 1, i8 noundef zeroext 0, ptr noundef nonnull %29)
          to label %712 unwind label %707

712:                                              ; preds = %709
  %713 = load ptr, ptr @glad_glUniform3f, align 8, !tbaa !11
  %714 = load i32, ptr @_ZL20useShadow_lightPosIn, align 4, !tbaa !43
  %715 = load ptr, ptr %155, align 8, !tbaa !15
  %716 = getelementptr inbounds i8, ptr %715, i64 468
  %717 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZN4TINY11TinyVector3IfNS_10FloatUtilsEEixEi(ptr noundef nonnull align 4 dereferenceable(16) %716, i32 noundef 0)
  %718 = load float, ptr %717, align 4, !tbaa !79
  %719 = load ptr, ptr %155, align 8, !tbaa !15
  %720 = getelementptr inbounds i8, ptr %719, i64 468
  %721 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZN4TINY11TinyVector3IfNS_10FloatUtilsEEixEi(ptr noundef nonnull align 4 dereferenceable(16) %720, i32 noundef 1)
  %722 = load float, ptr %721, align 4, !tbaa !79
  %723 = load ptr, ptr %155, align 8, !tbaa !15
  %724 = getelementptr inbounds i8, ptr %723, i64 468
  %725 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZN4TINY11TinyVector3IfNS_10FloatUtilsEEixEi(ptr noundef nonnull align 4 dereferenceable(16) %724, i32 noundef 2)
  %726 = load float, ptr %725, align 4, !tbaa !79
  invoke void %713(i32 noundef %714, float noundef %718, float noundef %722, float noundef %726)
          to label %727 unwind label %707

727:                                              ; preds = %712
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %32) #11
  call void @_ZN4TINY11TinyVector3IfNS_10FloatUtilsEEC2Ei(ptr noundef nonnull align 4 dereferenceable(16) %32, i32 noundef 0)
  %728 = load ptr, ptr %155, align 8, !tbaa !15
  %729 = getelementptr inbounds i8, ptr %728, i64 136
  %730 = load ptr, ptr %729, align 8, !tbaa !49
  %731 = load ptr, ptr %730, align 8, !tbaa !13
  %732 = getelementptr inbounds i8, ptr %731, i64 40
  %733 = load ptr, ptr %732, align 8
  invoke void %733(ptr noundef nonnull align 8 dereferenceable(16) %730, ptr noundef nonnull align 4 dereferenceable(16) %32)
          to label %734 unwind label %807

734:                                              ; preds = %727
  %735 = load ptr, ptr @glad_glUniform3f, align 8, !tbaa !11
  %736 = load i32, ptr @_ZL26useShadow_cameraPositionIn, align 4, !tbaa !43
  %737 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZN4TINY11TinyVector3IfNS_10FloatUtilsEEixEi(ptr noundef nonnull align 4 dereferenceable(16) %32, i32 noundef 0)
  %738 = load float, ptr %737, align 4, !tbaa !79
  %739 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZN4TINY11TinyVector3IfNS_10FloatUtilsEEixEi(ptr noundef nonnull align 4 dereferenceable(16) %32, i32 noundef 1)
  %740 = load float, ptr %739, align 4, !tbaa !79
  %741 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZN4TINY11TinyVector3IfNS_10FloatUtilsEEixEi(ptr noundef nonnull align 4 dereferenceable(16) %32, i32 noundef 2)
  %742 = load float, ptr %741, align 4, !tbaa !79
  invoke void %735(i32 noundef %736, float noundef %738, float noundef %740, float noundef %742)
          to label %743 unwind label %807

743:                                              ; preds = %734
  %744 = load ptr, ptr @glad_glUniform1f, align 8, !tbaa !11
  %745 = load i32, ptr @_ZL29useShadow_materialShininessIn, align 4, !tbaa !43
  %746 = getelementptr inbounds i8, ptr %318, i64 60
  %747 = load float, ptr %746, align 4, !tbaa !80
  invoke void %744(i32 noundef %745, float noundef %747)
          to label %748 unwind label %807

748:                                              ; preds = %743
  %749 = load ptr, ptr @glad_glUniformMatrix4fv, align 8, !tbaa !11
  %750 = load i32, ptr @_ZL34useShadow_DepthBiasModelViewMatrix, align 4, !tbaa !43
  invoke void %749(i32 noundef %750, i32 noundef 1, i8 noundef zeroext 0, ptr noundef nonnull %17)
          to label %751 unwind label %807

751:                                              ; preds = %748
  %752 = load ptr, ptr @glad_glActiveTexture, align 8, !tbaa !11
  invoke void %752(i32 noundef 33985)
          to label %753 unwind label %807

753:                                              ; preds = %751
  %754 = load ptr, ptr @glad_glBindTexture, align 8, !tbaa !11
  %755 = load ptr, ptr %155, align 8, !tbaa !15
  %756 = getelementptr inbounds i8, ptr %755, i64 536
  %757 = load i32, ptr %756, align 8, !tbaa !42
  invoke void %754(i32 noundef 3553, i32 noundef %757)
          to label %758 unwind label %807

758:                                              ; preds = %753
  %759 = load ptr, ptr @glad_glUniform1i, align 8, !tbaa !11
  %760 = load i32, ptr @_ZL19useShadow_shadowMap, align 4, !tbaa !43
  invoke void %759(i32 noundef %760, i32 noundef 1)
          to label %761 unwind label %807

761:                                              ; preds = %758
  %762 = load i32, ptr %319, align 8, !tbaa !60
  %763 = and i32 %762, 1
  %.not203 = icmp eq i32 %763, 0
  br i1 %.not203, label %811, label %764

764:                                              ; preds = %761
  %765 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZNSt6vectorI27SortableTransparentInstanceSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %19, i64 noundef %indvars.iv264) #11
  %766 = getelementptr inbounds i8, ptr %765, i64 8
  %767 = load i32, ptr %766, align 4, !tbaa !61
  %768 = load ptr, ptr @glad_glVertexAttribPointer, align 8, !tbaa !11
  %769 = shl nsw i32 %767, 2
  %770 = sext i32 %769 to i64
  %771 = shl nsw i64 %770, 2
  %772 = load ptr, ptr %155, align 8, !tbaa !15
  %773 = getelementptr inbounds i8, ptr %772, i64 112
  %774 = load i32, ptr %773, align 8, !tbaa !74
  %775 = sext i32 %774 to i64
  %776 = add nsw i64 %771, %775
  %777 = inttoptr i64 %776 to ptr
  invoke void %768(i32 noundef 1, i32 noundef 4, i32 noundef 5126, i8 noundef zeroext 0, i32 noundef 0, ptr noundef %777)
          to label %778 unwind label %809

778:                                              ; preds = %764
  %779 = load ptr, ptr @glad_glVertexAttribPointer, align 8, !tbaa !11
  %780 = load ptr, ptr %155, align 8, !tbaa !15
  %781 = getelementptr inbounds i8, ptr %780, i64 112
  %782 = load i32, ptr %781, align 8, !tbaa !74
  %783 = sext i32 %782 to i64
  %784 = add nsw i64 %771, %295
  %785 = add nsw i64 %784, %783
  %786 = inttoptr i64 %785 to ptr
  invoke void %779(i32 noundef 2, i32 noundef 4, i32 noundef 5126, i8 noundef zeroext 0, i32 noundef 0, ptr noundef %786)
          to label %787 unwind label %809

787:                                              ; preds = %778
  %788 = load ptr, ptr @glad_glVertexAttribPointer, align 8, !tbaa !11
  %789 = load ptr, ptr %155, align 8, !tbaa !15
  %790 = getelementptr inbounds i8, ptr %789, i64 112
  %791 = load i32, ptr %790, align 8, !tbaa !74
  %792 = sext i32 %791 to i64
  %793 = add nsw i64 %771, %reass.add
  %794 = add nsw i64 %793, %792
  %795 = inttoptr i64 %794 to ptr
  invoke void %788(i32 noundef 5, i32 noundef 4, i32 noundef 5126, i8 noundef zeroext 0, i32 noundef 0, ptr noundef %795)
          to label %796 unwind label %809

796:                                              ; preds = %787
  %797 = load ptr, ptr @glad_glVertexAttribPointer, align 8, !tbaa !11
  %798 = load ptr, ptr %155, align 8, !tbaa !15
  %799 = getelementptr inbounds i8, ptr %798, i64 112
  %800 = load i32, ptr %799, align 8, !tbaa !74
  %801 = sext i32 %800 to i64
  %802 = add nsw i64 %296, %771
  %803 = add nsw i64 %802, %801
  %804 = inttoptr i64 %803 to ptr
  invoke void %797(i32 noundef 6, i32 noundef 4, i32 noundef 5126, i8 noundef zeroext 0, i32 noundef 0, ptr noundef %804)
          to label %805 unwind label %809

805:                                              ; preds = %796
  %806 = load ptr, ptr @glad_glDrawElements, align 8, !tbaa !11
  invoke void %806(i32 noundef 4, i32 noundef %477, i32 noundef 5125, ptr noundef null)
          to label %814 unwind label %809

807:                                              ; preds = %827, %825, %823, %821, %819, %817, %811, %758, %753, %751, %748, %743, %734, %727
  %808 = landingpad { ptr, i32 }
          cleanup
  br label %830

809:                                              ; preds = %805, %796, %787, %778, %764
  %810 = landingpad { ptr, i32 }
          cleanup
  br label %830

811:                                              ; preds = %761
  %812 = load ptr, ptr @glad_glDrawElementsInstanced, align 8, !tbaa !11
  %813 = load i32, ptr %325, align 4, !tbaa !51
  invoke void %812(i32 noundef 4, i32 noundef %477, i32 noundef 5125, ptr noundef null, i32 noundef %813)
          to label %814 unwind label %807

814:                                              ; preds = %805, %811
  %815 = load i32, ptr %319, align 8, !tbaa !60
  %816 = and i32 %815, 1
  %.not206 = icmp eq i32 %816, 0
  br i1 %.not206, label %821, label %817

817:                                              ; preds = %814
  %818 = load ptr, ptr @glad_glDisable, align 8, !tbaa !11
  invoke void %818(i32 noundef 3042)
          to label %819 unwind label %807

819:                                              ; preds = %817
  %820 = load ptr, ptr @glad_glDepthMask, align 8, !tbaa !11
  invoke void %820(i8 noundef zeroext 1)
          to label %821 unwind label %807

821:                                              ; preds = %819, %814
  %822 = load ptr, ptr @glad_glActiveTexture, align 8, !tbaa !11
  invoke void %822(i32 noundef 33985)
          to label %823 unwind label %807

823:                                              ; preds = %821
  %824 = load ptr, ptr @glad_glBindTexture, align 8, !tbaa !11
  invoke void %824(i32 noundef 3553, i32 noundef 0)
          to label %825 unwind label %807

825:                                              ; preds = %823
  %826 = load ptr, ptr @glad_glActiveTexture, align 8, !tbaa !11
  invoke void %826(i32 noundef 33984)
          to label %827 unwind label %807

827:                                              ; preds = %825
  %828 = load ptr, ptr @glad_glBindTexture, align 8, !tbaa !11
  invoke void %828(i32 noundef 3553, i32 noundef 0)
          to label %829 unwind label %807

829:                                              ; preds = %827
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %32) #11
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %29) #11
  br label %1000

830:                                              ; preds = %809, %807
  %.pn207 = phi { ptr, i32 } [ %808, %807 ], [ %810, %809 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %32) #11
  br label %831

831:                                              ; preds = %830, %707, %700
  %.pn207.pn = phi { ptr, i32 } [ %.pn207, %830 ], [ %708, %707 ], [ %701, %700 ]
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %29) #11
  br label %1006

832:                                              ; preds = %531
  %833 = load i32, ptr %319, align 8, !tbaa !60
  %834 = and i32 %833, 1
  %.not195 = icmp eq i32 %834, 0
  br i1 %.not195, label %841, label %835

835:                                              ; preds = %832
  %836 = load ptr, ptr @glad_glDepthMask, align 8, !tbaa !11
  invoke void %836(i8 noundef zeroext 0)
          to label %837 unwind label %515

837:                                              ; preds = %835
  %838 = load ptr, ptr @glad_glEnable, align 8, !tbaa !11
  invoke void %838(i32 noundef 3042)
          to label %839 unwind label %515

839:                                              ; preds = %837
  %840 = load ptr, ptr @glad_glBlendFunc, align 8, !tbaa !11
  invoke void %840(i32 noundef 770, i32 noundef 771)
          to label %841 unwind label %515

841:                                              ; preds = %839, %832
  %842 = load ptr, ptr @glad_glUseProgram, align 8, !tbaa !11
  %843 = load i32, ptr @_ZL33projectiveTextureInstancingShader, align 4, !tbaa !43
  invoke void %842(i32 noundef %843)
          to label %844 unwind label %515

844:                                              ; preds = %841
  %845 = load ptr, ptr @glad_glUniformMatrix4fv, align 8, !tbaa !11
  %846 = load i32, ptr @_ZL34projectiveTexture_ProjectionMatrix, align 4, !tbaa !43
  %847 = load ptr, ptr %155, align 8, !tbaa !15
  %848 = getelementptr inbounds i8, ptr %847, i64 144
  invoke void %845(i32 noundef %846, i32 noundef 1, i8 noundef zeroext 0, ptr noundef nonnull %848)
          to label %849 unwind label %515

849:                                              ; preds = %844
  %850 = load ptr, ptr @glad_glUniform3f, align 8, !tbaa !11
  %851 = load i32, ptr @_ZL40projectiveTexture_lightSpecularIntensity, align 4, !tbaa !43
  %852 = load ptr, ptr %155, align 8, !tbaa !15
  %853 = getelementptr inbounds i8, ptr %852, i64 484
  %854 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZN4TINY11TinyVector3IfNS_10FloatUtilsEEixEi(ptr noundef nonnull align 4 dereferenceable(16) %853, i32 noundef 0)
  %855 = load float, ptr %854, align 4, !tbaa !79
  %856 = load ptr, ptr %155, align 8, !tbaa !15
  %857 = getelementptr inbounds i8, ptr %856, i64 484
  %858 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZN4TINY11TinyVector3IfNS_10FloatUtilsEEixEi(ptr noundef nonnull align 4 dereferenceable(16) %857, i32 noundef 1)
  %859 = load float, ptr %858, align 4, !tbaa !79
  %860 = load ptr, ptr %155, align 8, !tbaa !15
  %861 = getelementptr inbounds i8, ptr %860, i64 484
  %862 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZN4TINY11TinyVector3IfNS_10FloatUtilsEEixEi(ptr noundef nonnull align 4 dereferenceable(16) %861, i32 noundef 2)
  %863 = load float, ptr %862, align 4, !tbaa !79
  invoke void %850(i32 noundef %851, float noundef %855, float noundef %859, float noundef %863)
          to label %864 unwind label %515

864:                                              ; preds = %849
  %865 = load ptr, ptr @glad_glUniform3f, align 8, !tbaa !11
  %866 = load i32, ptr @_ZL39projectiveTexture_materialSpecularColor, align 4, !tbaa !43
  %867 = getelementptr inbounds i8, ptr %318, i64 64
  %868 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZN4TINY11TinyVector3IfNS_10FloatUtilsEEixEi(ptr noundef nonnull align 4 dereferenceable(16) %867, i32 noundef 0)
  %869 = load float, ptr %868, align 4, !tbaa !79
  %870 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZN4TINY11TinyVector3IfNS_10FloatUtilsEEixEi(ptr noundef nonnull align 4 dereferenceable(16) %867, i32 noundef 1)
  %871 = load float, ptr %870, align 4, !tbaa !79
  %872 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZN4TINY11TinyVector3IfNS_10FloatUtilsEEixEi(ptr noundef nonnull align 4 dereferenceable(16) %867, i32 noundef 2)
  %873 = load float, ptr %872, align 4, !tbaa !79
  invoke void %865(i32 noundef %866, float noundef %869, float noundef %871, float noundef %873)
          to label %874 unwind label %515

874:                                              ; preds = %864
  call void @llvm.lifetime.start.p0(i64 64, ptr nonnull %33) #11
  br i1 %38, label %875, label %884

875:                                              ; preds = %874
  call void @llvm.lifetime.start.p0(i64 64, ptr nonnull %34) #11
  call void @llvm.lifetime.start.p0(i64 64, ptr nonnull %35) #11
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(64) %35, i8 0, i64 64, i1 false)
  store float 1.000000e+00, ptr %35, align 16
  store float 1.000000e+00, ptr %297, align 4
  store float -1.000000e+00, ptr %298, align 8
  store float 1.000000e+00, ptr %299, align 4
  %876 = load ptr, ptr @glad_glCullFace, align 8, !tbaa !11
  invoke void %876(i32 noundef 1028)
          to label %877 unwind label %882

877:                                              ; preds = %875
  %878 = load ptr, ptr %155, align 8, !tbaa !15
  %879 = getelementptr inbounds i8, ptr %878, i64 208
  call void @_ZL16b3Matrix4x4Mul16PfS_S_(ptr noundef nonnull %879, ptr noundef nonnull %35, ptr noundef nonnull %34)
  %880 = load ptr, ptr %155, align 8, !tbaa !15
  %881 = getelementptr inbounds i8, ptr %880, i64 144
  call void @_ZL16b3Matrix4x4Mul16PfS_S_(ptr noundef nonnull %881, ptr noundef nonnull %34, ptr noundef nonnull %33)
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %35) #11
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %34) #11
  br label %891

882:                                              ; preds = %875
  %883 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %35) #11
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %34) #11
  br label %999

884:                                              ; preds = %874
  %885 = load ptr, ptr %155, align 8, !tbaa !15
  %886 = getelementptr inbounds i8, ptr %885, i64 144
  %887 = getelementptr inbounds i8, ptr %885, i64 208
  call void @_ZL16b3Matrix4x4Mul16PfS_S_(ptr noundef nonnull %886, ptr noundef nonnull %887, ptr noundef nonnull %33)
  %888 = load ptr, ptr @glad_glCullFace, align 8, !tbaa !11
  invoke void %888(i32 noundef 1029)
          to label %891 unwind label %889

889:                                              ; preds = %894, %891, %884
  %890 = landingpad { ptr, i32 }
          cleanup
  br label %999

891:                                              ; preds = %884, %877
  %892 = load ptr, ptr @glad_glUniformMatrix4fv, align 8, !tbaa !11
  %893 = load i32, ptr @_ZL21projectiveTexture_MVP, align 4, !tbaa !43
  invoke void %892(i32 noundef %893, i32 noundef 1, i8 noundef zeroext 0, ptr noundef nonnull %33)
          to label %894 unwind label %889

894:                                              ; preds = %891
  %895 = load ptr, ptr @glad_glUniform3f, align 8, !tbaa !11
  %896 = load i32, ptr @_ZL28projectiveTexture_lightPosIn, align 4, !tbaa !43
  %897 = load ptr, ptr %155, align 8, !tbaa !15
  %898 = getelementptr inbounds i8, ptr %897, i64 468
  %899 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZN4TINY11TinyVector3IfNS_10FloatUtilsEEixEi(ptr noundef nonnull align 4 dereferenceable(16) %898, i32 noundef 0)
  %900 = load float, ptr %899, align 4, !tbaa !79
  %901 = load ptr, ptr %155, align 8, !tbaa !15
  %902 = getelementptr inbounds i8, ptr %901, i64 468
  %903 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZN4TINY11TinyVector3IfNS_10FloatUtilsEEixEi(ptr noundef nonnull align 4 dereferenceable(16) %902, i32 noundef 1)
  %904 = load float, ptr %903, align 4, !tbaa !79
  %905 = load ptr, ptr %155, align 8, !tbaa !15
  %906 = getelementptr inbounds i8, ptr %905, i64 468
  %907 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZN4TINY11TinyVector3IfNS_10FloatUtilsEEixEi(ptr noundef nonnull align 4 dereferenceable(16) %906, i32 noundef 2)
  %908 = load float, ptr %907, align 4, !tbaa !79
  invoke void %895(i32 noundef %896, float noundef %900, float noundef %904, float noundef %908)
          to label %909 unwind label %889

909:                                              ; preds = %894
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %36) #11
  call void @_ZN4TINY11TinyVector3IfNS_10FloatUtilsEEC2Ei(ptr noundef nonnull align 4 dereferenceable(16) %36, i32 noundef 0)
  %910 = load ptr, ptr %155, align 8, !tbaa !15
  %911 = getelementptr inbounds i8, ptr %910, i64 136
  %912 = load ptr, ptr %911, align 8, !tbaa !49
  %913 = load ptr, ptr %912, align 8, !tbaa !13
  %914 = getelementptr inbounds i8, ptr %913, i64 40
  %915 = load ptr, ptr %914, align 8
  invoke void %915(ptr noundef nonnull align 8 dereferenceable(16) %912, ptr noundef nonnull align 4 dereferenceable(16) %36)
          to label %916 unwind label %979

916:                                              ; preds = %909
  %917 = load ptr, ptr @glad_glUniform3f, align 8, !tbaa !11
  %918 = load i32, ptr @_ZL34projectiveTexture_cameraPositionIn, align 4, !tbaa !43
  %919 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZN4TINY11TinyVector3IfNS_10FloatUtilsEEixEi(ptr noundef nonnull align 4 dereferenceable(16) %36, i32 noundef 0)
  %920 = load float, ptr %919, align 4, !tbaa !79
  %921 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZN4TINY11TinyVector3IfNS_10FloatUtilsEEixEi(ptr noundef nonnull align 4 dereferenceable(16) %36, i32 noundef 1)
  %922 = load float, ptr %921, align 4, !tbaa !79
  %923 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZN4TINY11TinyVector3IfNS_10FloatUtilsEEixEi(ptr noundef nonnull align 4 dereferenceable(16) %36, i32 noundef 2)
  %924 = load float, ptr %923, align 4, !tbaa !79
  invoke void %917(i32 noundef %918, float noundef %920, float noundef %922, float noundef %924)
          to label %925 unwind label %979

925:                                              ; preds = %916
  %926 = load ptr, ptr @glad_glUniform1f, align 8, !tbaa !11
  %927 = load i32, ptr @_ZL37projectiveTexture_materialShininessIn, align 4, !tbaa !43
  %928 = getelementptr inbounds i8, ptr %318, i64 60
  %929 = load float, ptr %928, align 4, !tbaa !80
  invoke void %926(i32 noundef %927, float noundef %929)
          to label %930 unwind label %979

930:                                              ; preds = %925
  %931 = load ptr, ptr @glad_glUniformMatrix4fv, align 8, !tbaa !11
  %932 = load i32, ptr @_ZL28projectiveTexture_TextureMVP, align 4, !tbaa !43
  invoke void %931(i32 noundef %932, i32 noundef 1, i8 noundef zeroext 0, ptr noundef nonnull %18)
          to label %933 unwind label %979

933:                                              ; preds = %930
  %934 = load i32, ptr %319, align 8, !tbaa !60
  %935 = and i32 %934, 1
  %.not196 = icmp eq i32 %935, 0
  br i1 %.not196, label %983, label %936

936:                                              ; preds = %933
  %937 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZNSt6vectorI27SortableTransparentInstanceSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %19, i64 noundef %indvars.iv264) #11
  %938 = getelementptr inbounds i8, ptr %937, i64 8
  %939 = load i32, ptr %938, align 4, !tbaa !61
  %940 = load ptr, ptr @glad_glVertexAttribPointer, align 8, !tbaa !11
  %941 = shl nsw i32 %939, 2
  %942 = sext i32 %941 to i64
  %943 = shl nsw i64 %942, 2
  %944 = load ptr, ptr %155, align 8, !tbaa !15
  %945 = getelementptr inbounds i8, ptr %944, i64 112
  %946 = load i32, ptr %945, align 8, !tbaa !74
  %947 = sext i32 %946 to i64
  %948 = add nsw i64 %943, %947
  %949 = inttoptr i64 %948 to ptr
  invoke void %940(i32 noundef 1, i32 noundef 4, i32 noundef 5126, i8 noundef zeroext 0, i32 noundef 0, ptr noundef %949)
          to label %950 unwind label %981

950:                                              ; preds = %936
  %951 = load ptr, ptr @glad_glVertexAttribPointer, align 8, !tbaa !11
  %952 = load ptr, ptr %155, align 8, !tbaa !15
  %953 = getelementptr inbounds i8, ptr %952, i64 112
  %954 = load i32, ptr %953, align 8, !tbaa !74
  %955 = sext i32 %954 to i64
  %956 = add nsw i64 %943, %295
  %957 = add nsw i64 %956, %955
  %958 = inttoptr i64 %957 to ptr
  invoke void %951(i32 noundef 2, i32 noundef 4, i32 noundef 5126, i8 noundef zeroext 0, i32 noundef 0, ptr noundef %958)
          to label %959 unwind label %981

959:                                              ; preds = %950
  %960 = load ptr, ptr @glad_glVertexAttribPointer, align 8, !tbaa !11
  %961 = load ptr, ptr %155, align 8, !tbaa !15
  %962 = getelementptr inbounds i8, ptr %961, i64 112
  %963 = load i32, ptr %962, align 8, !tbaa !74
  %964 = sext i32 %963 to i64
  %965 = add nsw i64 %943, %reass.add
  %966 = add nsw i64 %965, %964
  %967 = inttoptr i64 %966 to ptr
  invoke void %960(i32 noundef 5, i32 noundef 4, i32 noundef 5126, i8 noundef zeroext 0, i32 noundef 0, ptr noundef %967)
          to label %968 unwind label %981

968:                                              ; preds = %959
  %969 = load ptr, ptr @glad_glVertexAttribPointer, align 8, !tbaa !11
  %970 = load ptr, ptr %155, align 8, !tbaa !15
  %971 = getelementptr inbounds i8, ptr %970, i64 112
  %972 = load i32, ptr %971, align 8, !tbaa !74
  %973 = sext i32 %972 to i64
  %974 = add nsw i64 %296, %943
  %975 = add nsw i64 %974, %973
  %976 = inttoptr i64 %975 to ptr
  invoke void %969(i32 noundef 6, i32 noundef 4, i32 noundef 5126, i8 noundef zeroext 0, i32 noundef 0, ptr noundef %976)
          to label %977 unwind label %981

977:                                              ; preds = %968
  %978 = load ptr, ptr @glad_glDrawElements, align 8, !tbaa !11
  invoke void %978(i32 noundef 4, i32 noundef %477, i32 noundef 5125, ptr noundef null)
          to label %986 unwind label %981

979:                                              ; preds = %995, %993, %991, %989, %983, %930, %925, %916, %909
  %980 = landingpad { ptr, i32 }
          cleanup
  br label %998

981:                                              ; preds = %977, %968, %959, %950, %936
  %982 = landingpad { ptr, i32 }
          cleanup
  br label %998

983:                                              ; preds = %933
  %984 = load ptr, ptr @glad_glDrawElementsInstanced, align 8, !tbaa !11
  %985 = load i32, ptr %325, align 4, !tbaa !51
  invoke void %984(i32 noundef 4, i32 noundef %477, i32 noundef 5125, ptr noundef null, i32 noundef %985)
          to label %986 unwind label %979

986:                                              ; preds = %977, %983
  %987 = load i32, ptr %319, align 8, !tbaa !60
  %988 = and i32 %987, 1
  %.not199 = icmp eq i32 %988, 0
  br i1 %.not199, label %993, label %989

989:                                              ; preds = %986
  %990 = load ptr, ptr @glad_glDisable, align 8, !tbaa !11
  invoke void %990(i32 noundef 3042)
          to label %991 unwind label %979

991:                                              ; preds = %989
  %992 = load ptr, ptr @glad_glDepthMask, align 8, !tbaa !11
  invoke void %992(i8 noundef zeroext 1)
          to label %993 unwind label %979

993:                                              ; preds = %991, %986
  %994 = load ptr, ptr @glad_glActiveTexture, align 8, !tbaa !11
  invoke void %994(i32 noundef 33984)
          to label %995 unwind label %979

995:                                              ; preds = %993
  %996 = load ptr, ptr @glad_glBindTexture, align 8, !tbaa !11
  invoke void %996(i32 noundef 3553, i32 noundef 0)
          to label %997 unwind label %979

997:                                              ; preds = %995
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %36) #11
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %33) #11
  br label %1000

998:                                              ; preds = %981, %979
  %.pn = phi { ptr, i32 } [ %980, %979 ], [ %982, %981 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %36) #11
  br label %999

999:                                              ; preds = %998, %889, %882
  %.pn.pn = phi { ptr, i32 } [ %.pn, %998 ], [ %890, %889 ], [ %883, %882 ]
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %33) #11
  br label %1006

1000:                                             ; preds = %.invoke272, %531, %997, %829, %640
  %1001 = load i32, ptr %319, align 8, !tbaa !60
  %1002 = and i32 %1001, 4
  %.not217 = icmp eq i32 %1002, 0
  br i1 %.not217, label %1005, label %1003

1003:                                             ; preds = %1000
  %1004 = load ptr, ptr @glad_glEnable, align 8, !tbaa !11
  invoke void %1004(i32 noundef 2884)
          to label %1005 unwind label %515

1005:                                             ; preds = %1000, %1003, %523
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %27) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %26) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %25) #11
  br label %1008

1006:                                             ; preds = %515, %641, %831, %999, %513
  %.pn218.pn = phi { ptr, i32 } [ %514, %513 ], [ %516, %515 ], [ %.pn.pn, %999 ], [ %.pn207.pn, %831 ], [ %.pn215, %641 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %27) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %26) #11
  br label %1007

1007:                                             ; preds = %1006, %511
  %.pn218.pn.pn = phi { ptr, i32 } [ %.pn218.pn, %1006 ], [ %512, %511 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %25) #11
  br label %1052

1008:                                             ; preds = %315, %324, %1005, %.lr.ph254
  %indvars.iv.next265 = add nuw nsw i64 %indvars.iv264, 1
  %1009 = call noundef i64 @_ZNKSt6vectorI27SortableTransparentInstanceSaIS0_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %19) #11
  %1010 = icmp ugt i64 %1009, %indvars.iv.next265
  br i1 %1010, label %.lr.ph254, label %._crit_edge255, !llvm.loop !81

1011:                                             ; preds = %306
  %1012 = load ptr, ptr %155, align 8, !tbaa !15
  %1013 = getelementptr inbounds i8, ptr %1012, i64 528
  %1014 = load ptr, ptr %1013, align 8, !tbaa !22
  invoke void @_ZN17GLRenderToTexture7disableEv(ptr noundef nonnull align 8 dereferenceable(24) %1014)
          to label %1015 unwind label %1029

1015:                                             ; preds = %1011
  %1016 = load ptr, ptr @glad_glBindFramebuffer, align 8, !tbaa !11
  %1017 = load ptr, ptr %155, align 8, !tbaa !15
  %1018 = getelementptr inbounds i8, ptr %1017, i64 540
  %1019 = load i32, ptr %1018, align 4, !tbaa !82
  invoke void %1016(i32 noundef 36160, i32 noundef %1019)
          to label %1020 unwind label %1029

1020:                                             ; preds = %1015
  %1021 = load ptr, ptr @glad_glViewport, align 8, !tbaa !11
  %1022 = load i32, ptr %3, align 16, !tbaa !43
  %1023 = getelementptr inbounds i8, ptr %3, i64 4
  %1024 = load i32, ptr %1023, align 4, !tbaa !43
  %1025 = getelementptr inbounds i8, ptr %3, i64 8
  %1026 = load i32, ptr %1025, align 8, !tbaa !43
  %1027 = getelementptr inbounds i8, ptr %3, i64 12
  %1028 = load i32, ptr %1027, align 4, !tbaa !43
  invoke void %1021(i32 noundef %1022, i32 noundef %1024, i32 noundef %1026, i32 noundef %1028)
          to label %1031 unwind label %1029

1029:                                             ; preds = %1045, %1043, %1041, %1039, %1037, %1031, %1020, %1015, %1011
  %1030 = landingpad { ptr, i32 }
          cleanup
  br label %1052

1031:                                             ; preds = %1020, %306
  %1032 = load ptr, ptr @glad_glGetError, align 8, !tbaa !11
  %1033 = invoke i32 %1032()
          to label %1034 unwind label %1029

1034:                                             ; preds = %1031
  %1035 = icmp eq i32 %1033, 0
  br i1 %1035, label %1037, label %1036

1036:                                             ; preds = %1034
  call void @__assert_fail(ptr noundef nonnull @.str.4, ptr noundef nonnull @.str.1, i32 noundef 2734, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN24TinyGLInstancingRenderer21render_scene_internalEi) #12
  unreachable

1037:                                             ; preds = %1034
  %1038 = load ptr, ptr @glad_glUseProgram, align 8, !tbaa !11
  invoke void %1038(i32 noundef 0)
          to label %1039 unwind label %1029

1039:                                             ; preds = %1037
  %1040 = load ptr, ptr @glad_glBindBuffer, align 8, !tbaa !11
  invoke void %1040(i32 noundef 34962, i32 noundef 0)
          to label %1041 unwind label %1029

1041:                                             ; preds = %1039
  %1042 = load ptr, ptr @glad_glBindVertexArray, align 8, !tbaa !11
  invoke void %1042(i32 noundef 0)
          to label %1043 unwind label %1029

1043:                                             ; preds = %1041
  %1044 = load ptr, ptr @glad_glDisable, align 8, !tbaa !11
  invoke void %1044(i32 noundef 2884)
          to label %1045 unwind label %1029

1045:                                             ; preds = %1043
  %1046 = load ptr, ptr @glad_glGetError, align 8, !tbaa !11
  %1047 = invoke i32 %1046()
          to label %1048 unwind label %1029

1048:                                             ; preds = %1045
  %1049 = icmp eq i32 %1047, 0
  br i1 %1049, label %1051, label %1050

1050:                                             ; preds = %1048
  call void @__assert_fail(ptr noundef nonnull @.str.4, ptr noundef nonnull @.str.1, i32 noundef 2742, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN24TinyGLInstancingRenderer21render_scene_internalEi) #12
  unreachable

1051:                                             ; preds = %1048
  call void @_ZNSt6vectorI27SortableTransparentInstanceSaIS0_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %19) #11
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %19) #11
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %18) #11
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %17) #11
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %16) #11
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %15) #11
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %14) #11
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %12) #11
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %11) #11
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %10) #11
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %9) #11
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %8) #11
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %5) #11
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %4) #11
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %3) #11
  ret void

1052:                                             ; preds = %351, %509, %1007, %353, %222, %310, %1029
  %.pn226.pn.pn.pn.pn = phi { ptr, i32 } [ %1030, %1029 ], [ %.pn226.pn.pn, %310 ], [ %223, %222 ], [ %352, %351 ], [ %354, %353 ], [ %.pn218.pn.pn, %1007 ], [ %510, %509 ]
  call void @_ZNSt6vectorI27SortableTransparentInstanceSaIS0_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %19) #11
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %19) #11
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %18) #11
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %17) #11
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %16) #11
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %15) #11
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %14) #11
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %12) #11
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %11) #11
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %10) #11
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %9) #11
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %8) #11
  br label %1053

1053:                                             ; preds = %1052, %135
  %.pn226.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn226.pn.pn.pn.pn, %1052 ], [ %136, %135 ]
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %5) #11
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %4) #11
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %3) #11
  resume { ptr, i32 } %.pn226.pn.pn.pn.pn.pn
}

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

declare void @_ZN17GLRenderToTextureC1Ev(ptr noundef nonnull align 8 dereferenceable(24)) unnamed_addr #8

declare void @_ZN17GLRenderToTexture4initEiiji(ptr noundef nonnull align 8 dereferenceable(24), i32 noundef, i32 noundef, i32 noundef, i32 noundef) local_unnamed_addr #8

declare noundef zeroext i1 @_ZN17GLRenderToTexture6enableEv(ptr noundef nonnull align 8 dereferenceable(24)) local_unnamed_addr #8

; Function Attrs: mustprogress uwtable
declare hidden void @_ZL13b3CreateOrthoffffffPA4_f(float noundef, float noundef, float noundef, float noundef, float noundef, float noundef, ptr noundef) local_unnamed_addr #6

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZNK4TINY11TinyVector3IfNS_10FloatUtilsEE10normalizedEv(ptr dead_on_unwind noalias writable sret(%"struct.TINY::TinyVector3") align 4, ptr noundef nonnull align 4 dereferenceable(16)) local_unnamed_addr #9 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZNK4TINY11TinyVector3IfNS_10FloatUtilsEE11plane_spaceERS2_S3_(ptr noundef nonnull align 4 dereferenceable(16), ptr noundef nonnull align 4 dereferenceable(16), ptr noundef nonnull align 4 dereferenceable(16)) local_unnamed_addr #9 align 2

; Function Attrs: mustprogress uwtable
declare hidden void @_ZL14b3CreateLookAtRKN4TINY11TinyVector3IfNS_10FloatUtilsEEES4_S4_Pf(ptr noundef nonnull align 4 dereferenceable(16), ptr noundef nonnull align 4 dereferenceable(16), ptr noundef nonnull align 4 dereferenceable(16), ptr noundef) local_unnamed_addr #6

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZN4TINYplIfNS_10FloatUtilsEEENS_11TinyVector3IT_T0_EERKS5_S7_(ptr dead_on_unwind noalias writable sret(%"struct.TINY::TinyVector3") align 4, ptr noundef nonnull align 4 dereferenceable(16), ptr noundef nonnull align 4 dereferenceable(16)) local_unnamed_addr #9

; Function Attrs: mustprogress nounwind uwtable
declare hidden void @_ZL22b3CreateDiagonalMatrixfPA4_f(float noundef, ptr noundef) local_unnamed_addr #3

; Function Attrs: mustprogress nounwind uwtable
declare hidden void @_ZL14b3Matrix4x4MulPA4_fS0_S0_(ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #3

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

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

declare void @_ZNK10TinyCamera25get_camera_forward_vectorEPf(ptr noundef nonnull align 8 dereferenceable(16), ptr noundef) local_unnamed_addr #8

; 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 #3 align 2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef nonnull align 4 dereferenceable(16) ptr @_ZN4TINY11TinyVector3IfNS_10FloatUtilsEEmLEf(ptr noundef nonnull align 4 dereferenceable(16), float noundef) local_unnamed_addr #5 align 2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef float @_ZNK4TINY11TinyVector3IfNS_10FloatUtilsEE3dotERKS2_(ptr noundef nonnull align 4 dereferenceable(16), ptr noundef nonnull align 4 dereferenceable(16)) local_unnamed_addr #5 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNSt6vectorI27SortableTransparentInstanceSaIS0_EE9push_backERKS0_(ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 4 dereferenceable(12)) local_unnamed_addr #6 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZSt4sortIN9__gnu_cxx17__normal_iteratorIP27SortableTransparentInstanceSt6vectorIS2_SaIS2_EEEE32TransparentDistanceSortPredicateEvT_S9_T0_(ptr, ptr) local_unnamed_addr #9

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

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

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

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

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZN4TINY11TinyVector3IfNS_10FloatUtilsEE9normalizeEv(ptr noundef nonnull align 4 dereferenceable(16)) local_unnamed_addr #9 align 2

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

declare void @_ZN17GLRenderToTexture7disableEv(ptr noundef nonnull align 8 dereferenceable(24)) local_unnamed_addr #8

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

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"bool", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = !{i8 0, i8 2}
!10 = !{}
!11 = !{!12, !12, i64 0}
!12 = !{!"any pointer", !7, i64 0}
!13 = !{!14, !14, i64 0}
!14 = !{!"vtable pointer", !8, i64 0}
!15 = !{!16, !12, i64 32}
!16 = !{!"_ZTS24TinyGLInstancingRenderer", !17, i64 8, !12, i64 32, !6, i64 40, !6, i64 41, !21, i64 44, !21, i64 48, !21, i64 52, !21, i64 56}
!17 = !{!"_ZTSSt6vectorIP18b3GraphicsInstanceSaIS1_EE", !18, i64 0}
!18 = !{!"_ZTSSt12_Vector_baseIP18b3GraphicsInstanceSaIS1_EE", !19, i64 0}
!19 = !{!"_ZTSNSt12_Vector_baseIP18b3GraphicsInstanceSaIS1_EE12_Vector_implE", !20, i64 0}
!20 = !{!"_ZTSNSt12_Vector_baseIP18b3GraphicsInstanceSaIS1_EE17_Vector_impl_dataE", !12, i64 0, !12, i64 8, !12, i64 16}
!21 = !{!"int", !7, i64 0}
!22 = !{!23, !12, i64 528}
!23 = !{!"_ZTS20InternalDataRenderer", !24, i64 0, !29, i64 120, !12, i64 136, !7, i64 144, !7, i64 208, !7, i64 272, !7, i64 336, !7, i64 400, !6, i64 464, !30, i64 468, !30, i64 484, !21, i64 500, !32, i64 504, !12, i64 528, !21, i64 536, !21, i64 540, !36, i64 544, !21, i64 584, !21, i64 588, !31, i64 592, !6, i64 596}
!24 = !{!"_ZTS30GLInstanceRendererInternalData", !25, i64 0, !25, i64 24, !25, i64 48, !25, i64 72, !21, i64 96, !21, i64 100, !21, i64 104, !21, i64 108, !21, i64 112}
!25 = !{!"_ZTSSt6vectorIfSaIfEE", !26, i64 0}
!26 = !{!"_ZTSSt12_Vector_baseIfSaIfEE", !27, i64 0}
!27 = !{!"_ZTSNSt12_Vector_baseIfSaIfEE12_Vector_implE", !28, i64 0}
!28 = !{!"_ZTSNSt12_Vector_baseIfSaIfEE17_Vector_impl_dataE", !12, i64 0, !12, i64 8, !12, i64 16}
!29 = !{!"_ZTS10TinyCamera", !12, i64 8}
!30 = !{!"_ZTSN4TINY11TinyVector3IfNS_10FloatUtilsEEE", !31, i64 0, !31, i64 4, !31, i64 8, !21, i64 12}
!31 = !{!"float", !7, i64 0}
!32 = !{!"_ZTSSt6vectorI21InternalTextureHandleSaIS0_EE", !33, i64 0}
!33 = !{!"_ZTSSt12_Vector_baseI21InternalTextureHandleSaIS0_EE", !34, i64 0}
!34 = !{!"_ZTSNSt12_Vector_baseI21InternalTextureHandleSaIS0_EE12_Vector_implE", !35, i64 0}
!35 = !{!"_ZTSNSt12_Vector_baseI21InternalTextureHandleSaIS0_EE17_Vector_impl_dataE", !12, i64 0, !12, i64 8, !12, i64 16}
!36 = !{!"_ZTS17TinyResizablePoolI18TinyPoolBodyHandleI30TinyPublicGraphicsInstanceDataEE", !37, i64 8, !21, i64 32, !21, i64 36}
!37 = !{!"_ZTSSt6vectorI18TinyPoolBodyHandleI30TinyPublicGraphicsInstanceDataESaIS2_EE", !38, i64 0}
!38 = !{!"_ZTSSt12_Vector_baseI18TinyPoolBodyHandleI30TinyPublicGraphicsInstanceDataESaIS2_EE", !39, i64 0}
!39 = !{!"_ZTSNSt12_Vector_baseI18TinyPoolBodyHandleI30TinyPublicGraphicsInstanceDataESaIS2_EE12_Vector_implE", !40, i64 0}
!40 = !{!"_ZTSNSt12_Vector_baseI18TinyPoolBodyHandleI30TinyPublicGraphicsInstanceDataESaIS2_EE17_Vector_impl_dataE", !12, i64 0, !12, i64 8, !12, i64 16}
!41 = !{!23, !6, i64 596}
!42 = !{!23, !21, i64 536}
!43 = !{!21, !21, i64 0}
!44 = !{!23, !21, i64 584}
!45 = !{!23, !21, i64 588}
!46 = distinct !{!46, !47}
!47 = !{!"llvm.loop.mustprogress"}
!48 = !{!23, !31, i64 592}
!49 = !{!23, !12, i64 136}
!50 = !{!24, !21, i64 100}
!51 = !{!52, !21, i64 20}
!52 = !{!"_ZTS18b3GraphicsInstance", !21, i64 0, !21, i64 4, !21, i64 8, !21, i64 12, !21, i64 16, !21, i64 20, !53, i64 24, !21, i64 48, !21, i64 52, !21, i64 56, !31, i64 60, !30, i64 64, !21, i64 80}
!53 = !{!"_ZTSSt6vectorIiSaIiEE", !54, i64 0}
!54 = !{!"_ZTSSt12_Vector_baseIiSaIiEE", !55, i64 0}
!55 = !{!"_ZTSNSt12_Vector_baseIiSaIiEE12_Vector_implE", !56, i64 0}
!56 = !{!"_ZTSNSt12_Vector_baseIiSaIiEE17_Vector_impl_dataE", !12, i64 0, !12, i64 8, !12, i64 16}
!57 = distinct !{!57, !47}
!58 = !{!59, !21, i64 4}
!59 = !{!"_ZTS27SortableTransparentInstance", !31, i64 0, !21, i64 4, !21, i64 8}
!60 = !{!52, !21, i64 80}
!61 = !{!59, !21, i64 8}
!62 = !{!59, !31, i64 0}
!63 = distinct !{!63, !47}
!64 = distinct !{!64, !47}
!65 = distinct !{!65, !47}
!66 = !{!52, !21, i64 8}
!67 = !{!68, !21, i64 0}
!68 = !{!"_ZTS21InternalTextureHandle", !21, i64 0, !21, i64 4, !21, i64 8, !21, i64 12}
!69 = !{!68, !21, i64 12}
!70 = !{!23, !21, i64 500}
!71 = !{!52, !21, i64 0}
!72 = !{!52, !21, i64 52}
!73 = !{!7, !7, i64 0}
!74 = !{!24, !21, i64 112}
!75 = !{!52, !21, i64 12}
!76 = !{!52, !21, i64 4}
!77 = !{!52, !21, i64 56}
!78 = !{!16, !21, i64 44}
!79 = !{!31, !31, i64 0}
!80 = !{!52, !31, i64 60}
!81 = distinct !{!81, !47}
!82 = !{!23, !21, i64 540}


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