; LLVM IR from jrouwe/JoltPhysics :: TestFramework/Renderer/DebugRendererImp.ll (ZN16DebugRendererImp14DrawShadowPassEv)

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

%"class.std::lock_guard" = type { ptr }
%"class.JPH::Vec3" = type { %union.anon }
%union.anon = type { <4 x float> }
%"class.JPH::Array.62" = type { i64, i64, ptr }
%"class.std::initializer_list" = type { ptr, i64 }
%"class.JPH::HashTable<JPH::Ref<JPH::DebugRenderer::Geometry>, std::pair<JPH::Ref<JPH::DebugRenderer::Geometry>, DebugRendererImp::Instances>, JPH::UnorderedMapDetail<JPH::Ref<JPH::DebugRenderer::Geometry>, DebugRendererImp::Instances>, JPH::Hash<JPH::Ref<JPH::DebugRenderer::Geometry>>, std::equal_to<JPH::Ref<JPH::DebugRenderer::Geometry>>>::iterator" = type { %"class.JPH::HashTable<JPH::Ref<JPH::DebugRenderer::Geometry>, std::pair<JPH::Ref<JPH::DebugRenderer::Geometry>, DebugRendererImp::Instances>, JPH::UnorderedMapDetail<JPH::Ref<JPH::DebugRenderer::Geometry>, DebugRendererImp::Instances>, JPH::Hash<JPH::Ref<JPH::DebugRenderer::Geometry>>, std::equal_to<JPH::Ref<JPH::DebugRenderer::Geometry>>>::IteratorBase.base", [4 x i8] }
%"class.JPH::HashTable<JPH::Ref<JPH::DebugRenderer::Geometry>, std::pair<JPH::Ref<JPH::DebugRenderer::Geometry>, DebugRendererImp::Instances>, JPH::UnorderedMapDetail<JPH::Ref<JPH::DebugRenderer::Geometry>, DebugRendererImp::Instances>, JPH::Hash<JPH::Ref<JPH::DebugRenderer::Geometry>>, std::equal_to<JPH::Ref<JPH::DebugRenderer::Geometry>>>::IteratorBase.base" = type <{ ptr, i32 }>
%"struct.JPH::AssertLastParam" = type { i8 }
%class.DebugRendererImp = type { %"class.JPH::DebugRenderer", ptr, %"class.std::unique_ptr", %"class.std::unique_ptr", %"class.std::unique_ptr", %"class.std::unique_ptr", %"class.std::unique_ptr", %"class.std::unique_ptr", %"class.JPH::Mutex", %"class.JPH::Ref.17", %"class.JPH::UnorderedMap.37", %"class.JPH::UnorderedMap.37", %"class.JPH::UnorderedMap.37", %"class.JPH::UnorderedMap.37", i32, [2 x %"class.JPH::Ref.41"], %"class.JPH::Ref.42", ptr, ptr, ptr, %"class.JPH::AABox", %"class.JPH::Array.43", %"class.JPH::Mutex", %"class.JPH::RefConst", %"class.JPH::Array.46", %"class.JPH::Mutex", %"class.std::unique_ptr" }
%"class.JPH::DebugRenderer" = type { ptr, %"class.JPH::Ref", %"class.JPH::Ref", %"class.JPH::Ref", %"class.JPH::Ref", %"class.JPH::Ref", %"class.JPH::Ref", %"class.JPH::Ref", %"class.JPH::UnorderedMap", %"class.JPH::UnorderedMap", %"class.JPH::UnorderedMap.1", %"class.JPH::UnorderedMap.1", %"class.JPH::UnorderedMap.5", %"class.JPH::UnorderedMap.5", %"class.JPH::UnorderedMap.9", %"class.JPH::UnorderedMap.9" }
%"class.JPH::Ref" = type { ptr }
%"class.JPH::UnorderedMap" = type { %"class.JPH::HashTable.base", [4 x i8] }
%"class.JPH::HashTable.base" = type <{ ptr, ptr, i32, i32, i32 }>
%"class.JPH::UnorderedMap.1" = type { %"class.JPH::HashTable.base.3", [4 x i8] }
%"class.JPH::HashTable.base.3" = type <{ ptr, ptr, i32, i32, i32 }>
%"class.JPH::UnorderedMap.5" = type { %"class.JPH::HashTable.base.7", [4 x i8] }
%"class.JPH::HashTable.base.7" = type <{ ptr, ptr, i32, i32, i32 }>
%"class.JPH::UnorderedMap.9" = type { %"class.JPH::HashTable.base.11", [4 x i8] }
%"class.JPH::HashTable.base.11" = type <{ ptr, ptr, i32, i32, i32 }>
%"class.JPH::Ref.17" = type { ptr }
%"class.JPH::UnorderedMap.37" = type { %"class.JPH::HashTable.base.39", [4 x i8] }
%"class.JPH::HashTable.base.39" = type <{ ptr, ptr, i32, i32, i32 }>
%"class.JPH::Ref.41" = type { ptr }
%"class.JPH::Ref.42" = type { ptr }
%"class.JPH::AABox" = type { %"class.JPH::Vec3", %"class.JPH::Vec3" }
%"class.JPH::Array.43" = type { i64, i64, ptr }
%"class.JPH::RefConst" = type { ptr }
%"class.JPH::Array.46" = type { i64, i64, ptr }
%"class.JPH::Mutex" = type { %"class.std::mutex", %"class.std::thread::id" }
%"class.std::mutex" = type { %"class.std::__mutex_base" }
%"class.std::__mutex_base" = type { %union.pthread_mutex_t }
%union.pthread_mutex_t = type { %struct.__pthread_mutex_s }
%struct.__pthread_mutex_s = type { i32, i32, i32, i32, i32, i16, i16, %struct.__pthread_internal_list }
%struct.__pthread_internal_list = type { ptr, ptr }
%"class.std::thread::id" = type { i64 }
%"class.std::unique_ptr" = type { %"struct.std::__uniq_ptr_data" }
%"struct.std::__uniq_ptr_data" = type { %"class.std::__uniq_ptr_impl" }
%"class.std::__uniq_ptr_impl" = type { %"class.std::tuple" }
%"class.std::tuple" = type { %"struct.std::_Tuple_impl" }
%"struct.std::_Tuple_impl" = type { %"struct.std::_Head_base.36" }
%"struct.std::_Head_base.36" = type { ptr }
%struct.CameraState = type <{ %"class.JPH::Vec3", %"class.JPH::Vec3", %"class.JPH::Vec3", float, [12 x i8] }>
%"struct.std::pair.65" = type { %"class.JPH::Ref", %"struct.DebugRendererImp::Instances" }
%"struct.DebugRendererImp::Instances" = type { %"class.JPH::Array.52", %"class.JPH::Array.55", %"class.JPH::Array.55" }
%"class.JPH::Array.52" = type { i64, i64, ptr }
%"class.JPH::Array.55" = type { i64, i64, ptr }
%"class.JPH::DebugRenderer::Geometry" = type { %"class.JPH::RefTarget", %"class.JPH::Array.18", %"class.JPH::AABox" }
%"class.JPH::RefTarget" = type { %"struct.std::atomic" }
%"struct.std::atomic" = type { %"struct.std::__atomic_base" }
%"struct.std::__atomic_base" = type { i32 }
%"class.JPH::Array.18" = type { i64, i64, ptr }
%"struct.DebugRendererImp::InstanceWithLODInfo" = type <{ %"struct.DebugRendererImp::Instance.base", [12 x i8], %"class.JPH::AABox", float, [12 x i8] }>
%"struct.DebugRendererImp::Instance.base" = type <{ %"class.JPH::Mat44", %"class.JPH::Mat44", %"class.JPH::Color" }>
%"class.JPH::Mat44" = type { [4 x %"class.JPH::Vec4"] }
%"class.JPH::Vec4" = type { %union.anon.13 }
%union.anon.13 = type { <4 x float> }
%"class.JPH::Color" = type { %union.anon.0 }
%union.anon.0 = type { i32 }
%"struct.DebugRendererImp::Instance" = type <{ %"class.JPH::Mat44", %"class.JPH::Mat44", %"class.JPH::Color", [12 x i8] }>

@.str.18 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.19 = external hidden unnamed_addr constant [96 x i8], align 1

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

declare i32 @__gxx_personality_v0(...)

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

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

; Function Attrs: alwaysinline mustprogress uwtable
declare dso_local { double, double } @_ZNK3JPH4Vec3miES0_(ptr noundef nonnull align 16 dereferenceable(16), double, double) #2 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef zeroext i1 @_ZN3JPH23AssertFailedParamHelperEPKcS1_jNS_15AssertLastParamE(ptr noundef, ptr noundef, i32 noundef) #3

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef ptr @_ZNK3JPH3RefINS_13DebugRenderer8GeometryEEptEv(ptr noundef nonnull align 8 dereferenceable(8)) #4 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local { double, double } @_ZNK8Renderer13GetBaseOffsetEv(ptr noundef nonnull align 16 dereferenceable(832)) #5 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNSt10lock_guardIN3JPH5MutexEEC2ERS1_(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(48)) unnamed_addr #6 align 2

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN16DebugRendererImp17FinalizePrimitiveEv(ptr noundef nonnull align 16 dereferenceable(816)) #6 align 2

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

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN16DebugRendererImp14DrawShadowPassEv(ptr noundef nonnull align 16 dereferenceable(816) %0) #6 align 2 personality ptr @__gxx_personality_v0 {
  %2 = alloca ptr, align 8
  %3 = alloca %"class.std::lock_guard", align 8
  %4 = alloca ptr, align 8
  %5 = alloca i32, align 4
  %6 = alloca %"class.JPH::Vec3", align 16
  %7 = alloca %"class.JPH::Vec3", align 16
  %8 = alloca ptr, align 8
  %9 = alloca ptr, align 8
  %10 = alloca ptr, align 8
  %11 = alloca ptr, align 8
  %12 = alloca i32, align 4
  %13 = alloca [2 x %"class.JPH::Array.62"], align 16
  %14 = alloca ptr, align 8
  %15 = alloca %"class.std::initializer_list", align 8
  %16 = alloca [4 x ptr], align 8
  %17 = alloca ptr, align 8
  %18 = alloca ptr, align 8
  %19 = alloca i32, align 4
  %20 = alloca ptr, align 8
  %21 = alloca ptr, align 8
  %22 = alloca %"class.JPH::HashTable<JPH::Ref<JPH::DebugRenderer::Geometry>, std::pair<JPH::Ref<JPH::DebugRenderer::Geometry>, DebugRendererImp::Instances>, JPH::UnorderedMapDetail<JPH::Ref<JPH::DebugRenderer::Geometry>, DebugRendererImp::Instances>, JPH::Hash<JPH::Ref<JPH::DebugRenderer::Geometry>>, std::equal_to<JPH::Ref<JPH::DebugRenderer::Geometry>>>::iterator", align 8
  %23 = alloca %"class.JPH::HashTable<JPH::Ref<JPH::DebugRenderer::Geometry>, std::pair<JPH::Ref<JPH::DebugRenderer::Geometry>, DebugRendererImp::Instances>, JPH::UnorderedMapDetail<JPH::Ref<JPH::DebugRenderer::Geometry>, DebugRendererImp::Instances>, JPH::Hash<JPH::Ref<JPH::DebugRenderer::Geometry>>, std::equal_to<JPH::Ref<JPH::DebugRenderer::Geometry>>>::iterator", align 8
  %24 = alloca ptr, align 8
  %25 = alloca ptr, align 8
  %26 = alloca i64, align 8
  %27 = alloca %"struct.JPH::AssertLastParam", align 1
  %28 = alloca ptr, align 8
  %29 = alloca i64, align 8
  %30 = alloca ptr, align 8
  %31 = alloca i8, align 1
  %32 = alloca i8, align 1
  %33 = alloca ptr, align 8
  %34 = alloca %"class.JPH::Vec3", align 16
  %35 = alloca i64, align 8
  %36 = alloca i32, align 4
  %37 = alloca i32, align 4
  %38 = alloca [2 x ptr], align 16
  %39 = alloca i32, align 4
  %40 = alloca ptr, align 8
  %41 = alloca i64, align 8
  %42 = alloca ptr, align 8
  %43 = alloca ptr, align 8
  %44 = alloca ptr, align 8
  %45 = alloca ptr, align 8
  %46 = alloca i32, align 4
  %47 = alloca ptr, align 8
  %48 = alloca ptr, align 8
  %49 = alloca %"class.JPH::HashTable<JPH::Ref<JPH::DebugRenderer::Geometry>, std::pair<JPH::Ref<JPH::DebugRenderer::Geometry>, DebugRendererImp::Instances>, JPH::UnorderedMapDetail<JPH::Ref<JPH::DebugRenderer::Geometry>, DebugRendererImp::Instances>, JPH::Hash<JPH::Ref<JPH::DebugRenderer::Geometry>>, std::equal_to<JPH::Ref<JPH::DebugRenderer::Geometry>>>::iterator", align 8
  %50 = alloca %"class.JPH::HashTable<JPH::Ref<JPH::DebugRenderer::Geometry>, std::pair<JPH::Ref<JPH::DebugRenderer::Geometry>, DebugRendererImp::Instances>, JPH::UnorderedMapDetail<JPH::Ref<JPH::DebugRenderer::Geometry>, DebugRendererImp::Instances>, JPH::Hash<JPH::Ref<JPH::DebugRenderer::Geometry>>, std::equal_to<JPH::Ref<JPH::DebugRenderer::Geometry>>>::iterator", align 8
  %51 = alloca ptr, align 8
  %52 = alloca ptr, align 8
  %53 = alloca %"class.JPH::HashTable<JPH::Ref<JPH::DebugRenderer::Geometry>, std::pair<JPH::Ref<JPH::DebugRenderer::Geometry>, DebugRendererImp::Instances>, JPH::UnorderedMapDetail<JPH::Ref<JPH::DebugRenderer::Geometry>, DebugRendererImp::Instances>, JPH::Hash<JPH::Ref<JPH::DebugRenderer::Geometry>>, std::equal_to<JPH::Ref<JPH::DebugRenderer::Geometry>>>::iterator", align 8
  %54 = alloca %"class.JPH::HashTable<JPH::Ref<JPH::DebugRenderer::Geometry>, std::pair<JPH::Ref<JPH::DebugRenderer::Geometry>, DebugRendererImp::Instances>, JPH::UnorderedMapDetail<JPH::Ref<JPH::DebugRenderer::Geometry>, DebugRendererImp::Instances>, JPH::Hash<JPH::Ref<JPH::DebugRenderer::Geometry>>, std::equal_to<JPH::Ref<JPH::DebugRenderer::Geometry>>>::iterator", align 8
  %55 = alloca ptr, align 8
  %56 = alloca ptr, align 8
  %57 = alloca %"class.JPH::HashTable<JPH::Ref<JPH::DebugRenderer::Geometry>, std::pair<JPH::Ref<JPH::DebugRenderer::Geometry>, DebugRendererImp::Instances>, JPH::UnorderedMapDetail<JPH::Ref<JPH::DebugRenderer::Geometry>, DebugRendererImp::Instances>, JPH::Hash<JPH::Ref<JPH::DebugRenderer::Geometry>>, std::equal_to<JPH::Ref<JPH::DebugRenderer::Geometry>>>::iterator", align 8
  %58 = alloca %"class.JPH::HashTable<JPH::Ref<JPH::DebugRenderer::Geometry>, std::pair<JPH::Ref<JPH::DebugRenderer::Geometry>, DebugRendererImp::Instances>, JPH::UnorderedMapDetail<JPH::Ref<JPH::DebugRenderer::Geometry>, DebugRendererImp::Instances>, JPH::Hash<JPH::Ref<JPH::DebugRenderer::Geometry>>, std::equal_to<JPH::Ref<JPH::DebugRenderer::Geometry>>>::iterator", align 8
  %59 = alloca ptr, align 8
  %60 = alloca ptr, align 8
  %61 = alloca %"class.JPH::HashTable<JPH::Ref<JPH::DebugRenderer::Geometry>, std::pair<JPH::Ref<JPH::DebugRenderer::Geometry>, DebugRendererImp::Instances>, JPH::UnorderedMapDetail<JPH::Ref<JPH::DebugRenderer::Geometry>, DebugRendererImp::Instances>, JPH::Hash<JPH::Ref<JPH::DebugRenderer::Geometry>>, std::equal_to<JPH::Ref<JPH::DebugRenderer::Geometry>>>::iterator", align 8
  %62 = alloca %"class.JPH::HashTable<JPH::Ref<JPH::DebugRenderer::Geometry>, std::pair<JPH::Ref<JPH::DebugRenderer::Geometry>, DebugRendererImp::Instances>, JPH::UnorderedMapDetail<JPH::Ref<JPH::DebugRenderer::Geometry>, DebugRendererImp::Instances>, JPH::Hash<JPH::Ref<JPH::DebugRenderer::Geometry>>, std::equal_to<JPH::Ref<JPH::DebugRenderer::Geometry>>>::iterator", align 8
  %63 = alloca ptr, align 8
  store ptr %0, ptr %2, align 8, !tbaa !5
  %64 = load ptr, ptr %2, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %3) #7
  %65 = getelementptr inbounds %class.DebugRendererImp, ptr %64, i32 0, i32 8
  call void @_ZNSt10lock_guardIN3JPH5MutexEEC2ERS1_(ptr noundef nonnull align 8 dereferenceable(8) %3, ptr noundef nonnull align 8 dereferenceable(48) %65)
  invoke void @_ZN16DebugRendererImp17FinalizePrimitiveEv(ptr noundef nonnull align 16 dereferenceable(816) %64)
          to label %66 unwind label %154

66:                                               ; preds = %1
  call void @llvm.lifetime.start.p0(i64 16, ptr %6) #7
  %67 = getelementptr inbounds %class.DebugRendererImp, ptr %64, i32 0, i32 1
  %68 = load ptr, ptr %67, align 16, !tbaa !9
  %69 = invoke noundef nonnull align 16 dereferenceable(52) ptr @_ZNK8Renderer14GetCameraStateEv(ptr noundef nonnull align 16 dereferenceable(832) %68)
          to label %70 unwind label %158

70:                                               ; preds = %66
  %71 = getelementptr inbounds %struct.CameraState, ptr %69, i32 0, i32 0
  %72 = getelementptr inbounds %class.DebugRendererImp, ptr %64, i32 0, i32 1
  %73 = load ptr, ptr %72, align 16, !tbaa !9
  %74 = invoke { double, double } @_ZNK8Renderer13GetBaseOffsetEv(ptr noundef nonnull align 16 dereferenceable(832) %73)
          to label %75 unwind label %158

75:                                               ; preds = %70
  %76 = getelementptr inbounds %"class.JPH::Vec3", ptr %7, i32 0, i32 0
  %77 = getelementptr inbounds %union.anon, ptr %76, i32 0, i32 0
  %78 = getelementptr inbounds { double, double }, ptr %77, i32 0, i32 0
  %79 = extractvalue { double, double } %74, 0
  store double %79, ptr %78, align 16
  %80 = getelementptr inbounds { double, double }, ptr %77, i32 0, i32 1
  %81 = extractvalue { double, double } %74, 1
  store double %81, ptr %80, align 8
  %82 = getelementptr inbounds { double, double }, ptr %7, i32 0, i32 0
  %83 = load double, ptr %82, align 16
  %84 = getelementptr inbounds { double, double }, ptr %7, i32 0, i32 1
  %85 = load double, ptr %84, align 8
  %86 = invoke { double, double } @_ZNK3JPH4Vec3miES0_(ptr noundef nonnull align 16 dereferenceable(16) %71, double %83, double %85)
          to label %87 unwind label %158

87:                                               ; preds = %75
  %88 = getelementptr inbounds %"class.JPH::Vec3", ptr %6, i32 0, i32 0
  %89 = getelementptr inbounds %union.anon, ptr %88, i32 0, i32 0
  %90 = getelementptr inbounds { double, double }, ptr %89, i32 0, i32 0
  %91 = extractvalue { double, double } %86, 0
  store double %91, ptr %90, align 16
  %92 = getelementptr inbounds { double, double }, ptr %89, i32 0, i32 1
  %93 = extractvalue { double, double } %86, 1
  store double %93, ptr %92, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %8) #7
  %94 = getelementptr inbounds %class.DebugRendererImp, ptr %64, i32 0, i32 1
  %95 = load ptr, ptr %94, align 16, !tbaa !9
  %96 = invoke noundef nonnull align 16 dereferenceable(80) ptr @_ZNK8Renderer16GetCameraFrustumEv(ptr noundef nonnull align 16 dereferenceable(832) %95)
          to label %97 unwind label %162

97:                                               ; preds = %87
  store ptr %96, ptr %8, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %9) #7
  %98 = getelementptr inbounds %class.DebugRendererImp, ptr %64, i32 0, i32 1
  %99 = load ptr, ptr %98, align 16, !tbaa !9
  %100 = invoke noundef nonnull align 16 dereferenceable(80) ptr @_ZNK8Renderer15GetLightFrustumEv(ptr noundef nonnull align 16 dereferenceable(832) %99)
          to label %101 unwind label %166

101:                                              ; preds = %97
  store ptr %100, ptr %9, align 8, !tbaa !5
  %102 = getelementptr inbounds %class.DebugRendererImp, ptr %64, i32 0, i32 14
  %103 = load i32, ptr %102, align 16, !tbaa !42
  %104 = icmp sgt i32 %103, 0
  br i1 %104, label %105, label %522

105:                                              ; preds = %101
  call void @llvm.lifetime.start.p0(i64 8, ptr %10) #7
  %106 = getelementptr inbounds %class.DebugRendererImp, ptr %64, i32 0, i32 15
  %107 = getelementptr inbounds %class.DebugRendererImp, ptr %64, i32 0, i32 1
  %108 = load ptr, ptr %107, align 16, !tbaa !9
  %109 = invoke noundef i32 @_ZNK8Renderer20GetCurrentFrameIndexEv(ptr noundef nonnull align 16 dereferenceable(832) %108)
          to label %110 unwind label %170

110:                                              ; preds = %105
  %111 = zext i32 %109 to i64
  %112 = getelementptr inbounds [2 x %"class.JPH::Ref.41"], ptr %106, i64 0, i64 %111
  %113 = invoke noundef ptr @_ZNK3JPH3RefI15RenderInstancesEcvPS1_Ev(ptr noundef nonnull align 8 dereferenceable(8) %112)
          to label %114 unwind label %170

114:                                              ; preds = %110
  store ptr %113, ptr %10, align 8, !tbaa !5
  %115 = load ptr, ptr %10, align 8, !tbaa !5
  %116 = getelementptr inbounds %class.DebugRendererImp, ptr %64, i32 0, i32 14
  %117 = load i32, ptr %116, align 16, !tbaa !42
  %118 = mul nsw i32 2, %117
  %119 = load ptr, ptr %115, align 8, !tbaa !43
  %120 = getelementptr inbounds ptr, ptr %119, i64 3
  %121 = load ptr, ptr %120, align 8
  invoke void %121(ptr noundef nonnull align 8 dereferenceable(12) %115, i32 noundef %118, i32 noundef 144)
          to label %122 unwind label %170

122:                                              ; preds = %114
  call void @llvm.lifetime.start.p0(i64 8, ptr %11) #7
  %123 = load ptr, ptr %10, align 8, !tbaa !5
  %124 = load ptr, ptr %123, align 8, !tbaa !43
  %125 = getelementptr inbounds ptr, ptr %124, i64 4
  %126 = load ptr, ptr %125, align 8
  %127 = invoke noundef ptr %126(ptr noundef nonnull align 8 dereferenceable(12) %123)
          to label %128 unwind label %174

128:                                              ; preds = %122
  store ptr %127, ptr %11, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %12) #7
  store i32 0, ptr %12, align 4, !tbaa !45
  call void @llvm.lifetime.start.p0(i64 48, ptr %13) #7
  %129 = getelementptr inbounds [2 x %"class.JPH::Array.62"], ptr %13, i32 0, i32 0
  %130 = getelementptr inbounds %"class.JPH::Array.62", ptr %129, i64 2
  br label %131

131:                                              ; preds = %131, %128
  %132 = phi ptr [ %129, %128 ], [ %133, %131 ]
  call void @_ZN3JPH5ArrayINS0_IiNS_12STLAllocatorIiEEEENS1_IS3_EEEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %132) #7
  %133 = getelementptr inbounds %"class.JPH::Array.62", ptr %132, i64 1
  %134 = icmp eq ptr %133, %130
  br i1 %134, label %135, label %131

135:                                              ; preds = %131
  call void @llvm.lifetime.start.p0(i64 8, ptr %14) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr %15) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr %16) #7
  %136 = getelementptr inbounds %class.DebugRendererImp, ptr %64, i32 0, i32 11
  store ptr %136, ptr %16, align 8, !tbaa !5
  %137 = getelementptr inbounds ptr, ptr %16, i64 1
  %138 = getelementptr inbounds %class.DebugRendererImp, ptr %64, i32 0, i32 12
  store ptr %138, ptr %137, align 8, !tbaa !5
  %139 = getelementptr inbounds ptr, ptr %16, i64 2
  %140 = getelementptr inbounds %class.DebugRendererImp, ptr %64, i32 0, i32 13
  store ptr %140, ptr %139, align 8, !tbaa !5
  %141 = getelementptr inbounds ptr, ptr %16, i64 3
  %142 = getelementptr inbounds %class.DebugRendererImp, ptr %64, i32 0, i32 10
  store ptr %142, ptr %141, align 8, !tbaa !5
  %143 = getelementptr inbounds %"class.std::initializer_list", ptr %15, i32 0, i32 0
  store ptr %16, ptr %143, align 8, !tbaa !46
  %144 = getelementptr inbounds %"class.std::initializer_list", ptr %15, i32 0, i32 1
  store i64 4, ptr %144, align 8, !tbaa !48
  store ptr %15, ptr %14, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %17) #7
  %145 = load ptr, ptr %14, align 8, !tbaa !5
  %146 = call noundef ptr @_ZNKSt16initializer_listIPN3JPH12UnorderedMapINS0_3RefINS0_13DebugRenderer8GeometryEEEN16DebugRendererImp9InstancesENS0_4HashIS5_EESt8equal_toIS5_EEEE5beginEv(ptr noundef nonnull align 8 dereferenceable(16) %145) #7
  store ptr %146, ptr %17, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %18) #7
  %147 = load ptr, ptr %14, align 8, !tbaa !5
  %148 = call noundef ptr @_ZNKSt16initializer_listIPN3JPH12UnorderedMapINS0_3RefINS0_13DebugRenderer8GeometryEEEN16DebugRendererImp9InstancesENS0_4HashIS5_EESt8equal_toIS5_EEEE3endEv(ptr noundef nonnull align 8 dereferenceable(16) %147) #7
  store ptr %148, ptr %18, align 8, !tbaa !5
  br label %149

149:                                              ; preds = %492, %135
  %150 = load ptr, ptr %17, align 8, !tbaa !5
  %151 = load ptr, ptr %18, align 8, !tbaa !5
  %152 = icmp ne ptr %150, %151
  br i1 %152, label %178, label %153

153:                                              ; preds = %149
  store i32 2, ptr %19, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %18) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %17) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %16) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %15) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %14) #7
  br label %495

154:                                              ; preds = %1
  %155 = landingpad { ptr, i32 }
          cleanup
  %156 = extractvalue { ptr, i32 } %155, 0
  store ptr %156, ptr %4, align 8
  %157 = extractvalue { ptr, i32 } %155, 1
  store i32 %157, ptr %5, align 4
  br label %720

158:                                              ; preds = %75, %70, %66
  %159 = landingpad { ptr, i32 }
          cleanup
  %160 = extractvalue { ptr, i32 } %159, 0
  store ptr %160, ptr %4, align 8
  %161 = extractvalue { ptr, i32 } %159, 1
  store i32 %161, ptr %5, align 4
  br label %719

162:                                              ; preds = %87
  %163 = landingpad { ptr, i32 }
          cleanup
  %164 = extractvalue { ptr, i32 } %163, 0
  store ptr %164, ptr %4, align 8
  %165 = extractvalue { ptr, i32 } %163, 1
  store i32 %165, ptr %5, align 4
  br label %718

166:                                              ; preds = %671, %667, %622, %618, %530, %526, %522, %97
  %167 = landingpad { ptr, i32 }
          cleanup
  %168 = extractvalue { ptr, i32 } %167, 0
  store ptr %168, ptr %4, align 8
  %169 = extractvalue { ptr, i32 } %167, 1
  store i32 %169, ptr %5, align 4
  br label %717

170:                                              ; preds = %114, %110, %105
  %171 = landingpad { ptr, i32 }
          cleanup
  %172 = extractvalue { ptr, i32 } %171, 0
  store ptr %172, ptr %4, align 8
  %173 = extractvalue { ptr, i32 } %171, 1
  store i32 %173, ptr %5, align 4
  br label %521

174:                                              ; preds = %122
  %175 = landingpad { ptr, i32 }
          cleanup
  %176 = extractvalue { ptr, i32 } %175, 0
  store ptr %176, ptr %4, align 8
  %177 = extractvalue { ptr, i32 } %175, 1
  store i32 %177, ptr %5, align 4
  br label %520

178:                                              ; preds = %149
  call void @llvm.lifetime.start.p0(i64 8, ptr %20) #7
  %179 = load ptr, ptr %17, align 8, !tbaa !5
  %180 = load ptr, ptr %179, align 8, !tbaa !5
  store ptr %180, ptr %20, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %21) #7
  %181 = load ptr, ptr %20, align 8, !tbaa !5
  store ptr %181, ptr %21, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 16, ptr %22) #7
  %182 = load ptr, ptr %21, align 8, !tbaa !5
  invoke void @_ZN3JPH9HashTableINS_3RefINS_13DebugRenderer8GeometryEEESt4pairIS4_N16DebugRendererImp9InstancesEENS_18UnorderedMapDetailIS4_S7_EENS_4HashIS4_EESt8equal_toIS4_EE5beginEv(ptr dead_on_unwind writable sret(%"class.JPH::HashTable<JPH::Ref<JPH::DebugRenderer::Geometry>, std::pair<JPH::Ref<JPH::DebugRenderer::Geometry>, DebugRendererImp::Instances>, JPH::UnorderedMapDetail<JPH::Ref<JPH::DebugRenderer::Geometry>, DebugRendererImp::Instances>, JPH::Hash<JPH::Ref<JPH::DebugRenderer::Geometry>>, std::equal_to<JPH::Ref<JPH::DebugRenderer::Geometry>>>::iterator") align 8 %22, ptr noundef nonnull align 8 dereferenceable(28) %182)
          to label %183 unwind label %190

183:                                              ; preds = %178
  call void @llvm.lifetime.start.p0(i64 16, ptr %23) #7
  %184 = load ptr, ptr %21, align 8, !tbaa !5
  invoke void @_ZN3JPH9HashTableINS_3RefINS_13DebugRenderer8GeometryEEESt4pairIS4_N16DebugRendererImp9InstancesEENS_18UnorderedMapDetailIS4_S7_EENS_4HashIS4_EESt8equal_toIS4_EE3endEv(ptr dead_on_unwind writable sret(%"class.JPH::HashTable<JPH::Ref<JPH::DebugRenderer::Geometry>, std::pair<JPH::Ref<JPH::DebugRenderer::Geometry>, DebugRendererImp::Instances>, JPH::UnorderedMapDetail<JPH::Ref<JPH::DebugRenderer::Geometry>, DebugRendererImp::Instances>, JPH::Hash<JPH::Ref<JPH::DebugRenderer::Geometry>>, std::equal_to<JPH::Ref<JPH::DebugRenderer::Geometry>>>::iterator") align 8 %23, ptr noundef nonnull align 8 dereferenceable(28) %184)
          to label %185 unwind label %194

185:                                              ; preds = %183
  br label %186

186:                                              ; preds = %484, %185
  %187 = invoke noundef zeroext i1 @_ZNK3JPH9HashTableINS_3RefINS_13DebugRenderer8GeometryEEESt4pairIS4_N16DebugRendererImp9InstancesEENS_18UnorderedMapDetailIS4_S7_EENS_4HashIS4_EESt8equal_toIS4_EE12IteratorBaseISF_NSF_8iteratorEEneERKSH_(ptr noundef nonnull align 8 dereferenceable(12) %22, ptr noundef nonnull align 8 dereferenceable(12) %23)
          to label %188 unwind label %194

188:                                              ; preds = %186
  br i1 %187, label %198, label %189

189:                                              ; preds = %188
  store i32 4, ptr %19, align 4
  call void @llvm.lifetime.end.p0(i64 16, ptr %23) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %22) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %21) #7
  br label %491

190:                                              ; preds = %178
  %191 = landingpad { ptr, i32 }
          cleanup
  %192 = extractvalue { ptr, i32 } %191, 0
  store ptr %192, ptr %4, align 8
  %193 = extractvalue { ptr, i32 } %191, 1
  store i32 %193, ptr %5, align 4
  br label %490

194:                                              ; preds = %482, %186, %183
  %195 = landingpad { ptr, i32 }
          cleanup
  %196 = extractvalue { ptr, i32 } %195, 0
  store ptr %196, ptr %4, align 8
  %197 = extractvalue { ptr, i32 } %195, 1
  store i32 %197, ptr %5, align 4
  br label %489

198:                                              ; preds = %188
  call void @llvm.lifetime.start.p0(i64 8, ptr %24) #7
  %199 = invoke noundef nonnull align 8 dereferenceable(80) ptr @_ZN3JPH9HashTableINS_3RefINS_13DebugRenderer8GeometryEEESt4pairIS4_N16DebugRendererImp9InstancesEENS_18UnorderedMapDetailIS4_S7_EENS_4HashIS4_EESt8equal_toIS4_EE8iteratordeEv(ptr noundef nonnull align 8 dereferenceable(12) %22)
          to label %200 unwind label %216

200:                                              ; preds = %198
  store ptr %199, ptr %24, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %25) #7
  %201 = load ptr, ptr %24, align 8, !tbaa !5
  %202 = getelementptr inbounds %"struct.std::pair.65", ptr %201, i32 0, i32 0
  %203 = invoke noundef ptr @_ZNK3JPH3RefINS_13DebugRenderer8GeometryEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %202)
          to label %204 unwind label %220

204:                                              ; preds = %200
  %205 = getelementptr inbounds %"class.JPH::DebugRenderer::Geometry", ptr %203, i32 0, i32 1
  store ptr %205, ptr %25, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %26) #7
  %206 = load ptr, ptr %25, align 8, !tbaa !5
  %207 = invoke noundef i64 @_ZNK3JPH5ArrayINS_13DebugRenderer3LODENS_12STLAllocatorIS2_EEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %206)
          to label %208 unwind label %224

208:                                              ; preds = %204
  store i64 %207, ptr %26, align 8, !tbaa !49
  br label %209

209:                                              ; preds = %208
  %210 = load i64, ptr %26, align 8, !tbaa !49
  %211 = icmp ugt i64 %210, 0
  br i1 %211, label %228, label %212

212:                                              ; preds = %209
  %213 = invoke noundef zeroext i1 @_ZN3JPH23AssertFailedParamHelperEPKcS1_jNS_15AssertLastParamE(ptr noundef @.str.18, ptr noundef @.str.19, i32 noundef 297)
          to label %214 unwind label %224

214:                                              ; preds = %212
  br i1 %213, label %215, label %228

215:                                              ; preds = %214
  call void asm sideeffect "int $$0x3", "~{dirflag},~{fpsr},~{flags}"() #7, !srcloc !50
  br label %228

216:                                              ; preds = %198
  %217 = landingpad { ptr, i32 }
          cleanup
  %218 = extractvalue { ptr, i32 } %217, 0
  store ptr %218, ptr %4, align 8
  %219 = extractvalue { ptr, i32 } %217, 1
  store i32 %219, ptr %5, align 4
  br label %488

220:                                              ; preds = %200
  %221 = landingpad { ptr, i32 }
          cleanup
  %222 = extractvalue { ptr, i32 } %221, 0
  store ptr %222, ptr %4, align 8
  %223 = extractvalue { ptr, i32 } %221, 1
  store i32 %223, ptr %5, align 4
  br label %487

224:                                              ; preds = %246, %240, %236, %230, %212, %204
  %225 = landingpad { ptr, i32 }
          cleanup
  %226 = extractvalue { ptr, i32 } %225, 0
  store ptr %226, ptr %4, align 8
  %227 = extractvalue { ptr, i32 } %225, 1
  store i32 %227, ptr %5, align 4
  br label %486

228:                                              ; preds = %215, %214, %209
  br label %229

229:                                              ; preds = %228
  br label %230

230:                                              ; preds = %229
  %231 = getelementptr inbounds [2 x %"class.JPH::Array.62"], ptr %13, i64 0, i64 0
  %232 = invoke noundef i64 @_ZNK3JPH5ArrayINS0_IiNS_12STLAllocatorIiEEEENS1_IS3_EEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %231)
          to label %233 unwind label %224

233:                                              ; preds = %230
  %234 = load i64, ptr %26, align 8, !tbaa !49
  %235 = icmp ult i64 %232, %234
  br i1 %235, label %236, label %240

236:                                              ; preds = %233
  %237 = getelementptr inbounds [2 x %"class.JPH::Array.62"], ptr %13, i64 0, i64 0
  %238 = load i64, ptr %26, align 8, !tbaa !49
  invoke void @_ZN3JPH5ArrayINS0_IiNS_12STLAllocatorIiEEEENS1_IS3_EEE6resizeEm(ptr noundef nonnull align 8 dereferenceable(24) %237, i64 noundef %238)
          to label %239 unwind label %224

239:                                              ; preds = %236
  br label %240

240:                                              ; preds = %239, %233
  %241 = getelementptr inbounds [2 x %"class.JPH::Array.62"], ptr %13, i64 0, i64 1
  %242 = invoke noundef i64 @_ZNK3JPH5ArrayINS0_IiNS_12STLAllocatorIiEEEENS1_IS3_EEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %241)
          to label %243 unwind label %224

243:                                              ; preds = %240
  %244 = load i64, ptr %26, align 8, !tbaa !49
  %245 = icmp ult i64 %242, %244
  br i1 %245, label %246, label %250

246:                                              ; preds = %243
  %247 = getelementptr inbounds [2 x %"class.JPH::Array.62"], ptr %13, i64 0, i64 1
  %248 = load i64, ptr %26, align 8, !tbaa !49
  invoke void @_ZN3JPH5ArrayINS0_IiNS_12STLAllocatorIiEEEENS1_IS3_EEE6resizeEm(ptr noundef nonnull align 8 dereferenceable(24) %247, i64 noundef %248)
          to label %249 unwind label %224

249:                                              ; preds = %246
  br label %250

250:                                              ; preds = %249, %243
  call void @llvm.lifetime.start.p0(i64 8, ptr %28) #7
  %251 = load ptr, ptr %24, align 8, !tbaa !5
  %252 = getelementptr inbounds %"struct.std::pair.65", ptr %251, i32 0, i32 1
  %253 = getelementptr inbounds %"struct.DebugRendererImp::Instances", ptr %252, i32 0, i32 0
  store ptr %253, ptr %28, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %29) #7
  store i64 0, ptr %29, align 8, !tbaa !49
  br label %254

254:                                              ; preds = %364, %250
  %255 = load i64, ptr %29, align 8, !tbaa !49
  %256 = load ptr, ptr %28, align 8, !tbaa !5
  %257 = invoke noundef i64 @_ZNK3JPH5ArrayIN16DebugRendererImp19InstanceWithLODInfoENS_12STLAllocatorIS2_EEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %256)
          to label %258 unwind label %261

258:                                              ; preds = %254
  %259 = icmp ult i64 %255, %257
  br i1 %259, label %265, label %260

260:                                              ; preds = %258
  store i32 8, ptr %19, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %29) #7
  br label %371

261:                                              ; preds = %254
  %262 = landingpad { ptr, i32 }
          cleanup
  %263 = extractvalue { ptr, i32 } %262, 0
  store ptr %263, ptr %4, align 8
  %264 = extractvalue { ptr, i32 } %262, 1
  store i32 %264, ptr %5, align 4
  br label %370

265:                                              ; preds = %258
  call void @llvm.lifetime.start.p0(i64 8, ptr %30) #7
  %266 = load ptr, ptr %28, align 8, !tbaa !5
  %267 = load i64, ptr %29, align 8, !tbaa !49
  %268 = invoke noundef nonnull align 16 dereferenceable(180) ptr @_ZNK3JPH5ArrayIN16DebugRendererImp19InstanceWithLODInfoENS_12STLAllocatorIS2_EEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %266, i64 noundef %267)
          to label %269 unwind label %321

269:                                              ; preds = %265
  store ptr %268, ptr %30, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 1, ptr %31) #7
  %270 = load ptr, ptr %9, align 8, !tbaa !5
  %271 = load ptr, ptr %30, align 8, !tbaa !5
  %272 = getelementptr inbounds %"struct.DebugRendererImp::InstanceWithLODInfo", ptr %271, i32 0, i32 2
  %273 = invoke noundef zeroext i1 @_ZNK7Frustum8OverlapsERKN3JPH5AABoxE(ptr noundef nonnull align 16 dereferenceable(80) %270, ptr noundef nonnull align 16 dereferenceable(32) %272)
          to label %274 unwind label %325

274:                                              ; preds = %269
  %275 = zext i1 %273 to i8
  store i8 %275, ptr %31, align 1, !tbaa !51
  call void @llvm.lifetime.start.p0(i64 1, ptr %32) #7
  %276 = load ptr, ptr %8, align 8, !tbaa !5
  %277 = load ptr, ptr %30, align 8, !tbaa !5
  %278 = getelementptr inbounds %"struct.DebugRendererImp::InstanceWithLODInfo", ptr %277, i32 0, i32 2
  %279 = invoke noundef zeroext i1 @_ZNK7Frustum8OverlapsERKN3JPH5AABoxE(ptr noundef nonnull align 16 dereferenceable(80) %276, ptr noundef nonnull align 16 dereferenceable(32) %278)
          to label %280 unwind label %329

280:                                              ; preds = %274
  %281 = zext i1 %279 to i8
  store i8 %281, ptr %32, align 1, !tbaa !51
  %282 = load i8, ptr %31, align 1, !tbaa !51, !range !53, !noundef !54
  %283 = trunc i8 %282 to i1
  br i1 %283, label %287, label %284

284:                                              ; preds = %280
  %285 = load i8, ptr %32, align 1, !tbaa !51, !range !53, !noundef !54
  %286 = trunc i8 %285 to i1
  br i1 %286, label %287, label %363

287:                                              ; preds = %284, %280
  call void @llvm.lifetime.start.p0(i64 8, ptr %33) #7
  %288 = load ptr, ptr %24, align 8, !tbaa !5
  %289 = getelementptr inbounds %"struct.std::pair.65", ptr %288, i32 0, i32 0
  %290 = invoke noundef ptr @_ZNK3JPH3RefINS_13DebugRenderer8GeometryEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %289)
          to label %291 unwind label %333

291:                                              ; preds = %287
  call void @llvm.memcpy.p0.p0.i64(ptr align 16 %34, ptr align 16 %6, i64 16, i1 false), !tbaa.struct !55
  %292 = load ptr, ptr %30, align 8, !tbaa !5
  %293 = getelementptr inbounds %"struct.DebugRendererImp::InstanceWithLODInfo", ptr %292, i32 0, i32 2
  %294 = load ptr, ptr %30, align 8, !tbaa !5
  %295 = getelementptr inbounds %"struct.DebugRendererImp::InstanceWithLODInfo", ptr %294, i32 0, i32 3
  %296 = load float, ptr %295, align 16, !tbaa !57
  %297 = getelementptr inbounds { double, double }, ptr %34, i32 0, i32 0
  %298 = load double, ptr %297, align 16
  %299 = getelementptr inbounds { double, double }, ptr %34, i32 0, i32 1
  %300 = load double, ptr %299, align 8
  %301 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZNK3JPH13DebugRenderer8Geometry6GetLODENS_4Vec3ERKNS_5AABoxEf(ptr noundef nonnull align 16 dereferenceable(64) %290, double %298, double %300, ptr noundef nonnull align 16 dereferenceable(32) %293, float noundef %296)
          to label %302 unwind label %333

302:                                              ; preds = %291
  store ptr %301, ptr %33, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %35) #7
  %303 = load ptr, ptr %33, align 8, !tbaa !5
  %304 = load ptr, ptr %25, align 8, !tbaa !5
  %305 = invoke noundef ptr @_ZNK3JPH5ArrayINS_13DebugRenderer3LODENS_12STLAllocatorIS2_EEE4dataEv(ptr noundef nonnull align 8 dereferenceable(24) %304)
          to label %306 unwind label %337

306:                                              ; preds = %302
  %307 = ptrtoint ptr %303 to i64
  %308 = ptrtoint ptr %305 to i64
  %309 = sub i64 %307, %308
  %310 = sdiv exact i64 %309, 16
  store i64 %310, ptr %35, align 8, !tbaa !49
  %311 = load i8, ptr %31, align 1, !tbaa !51, !range !53, !noundef !54
  %312 = trunc i8 %311 to i1
  br i1 %312, label %313, label %345

313:                                              ; preds = %306
  %314 = getelementptr inbounds [2 x %"class.JPH::Array.62"], ptr %13, i64 0, i64 0
  %315 = load i64, ptr %35, align 8, !tbaa !49
  %316 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZN3JPH5ArrayINS0_IiNS_12STLAllocatorIiEEEENS1_IS3_EEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %314, i64 noundef %315)
          to label %317 unwind label %337

317:                                              ; preds = %313
  call void @llvm.lifetime.start.p0(i64 4, ptr %36) #7
  %318 = load i64, ptr %29, align 8, !tbaa !49
  %319 = trunc i64 %318 to i32
  store i32 %319, ptr %36, align 4, !tbaa !45
  invoke void @_ZN3JPH5ArrayIiNS_12STLAllocatorIiEEE9push_backEOi(ptr noundef nonnull align 8 dereferenceable(24) %316, ptr noundef nonnull align 4 dereferenceable(4) %36)
          to label %320 unwind label %341

320:                                              ; preds = %317
  call void @llvm.lifetime.end.p0(i64 4, ptr %36) #7
  br label %345

321:                                              ; preds = %265
  %322 = landingpad { ptr, i32 }
          cleanup
  %323 = extractvalue { ptr, i32 } %322, 0
  store ptr %323, ptr %4, align 8
  %324 = extractvalue { ptr, i32 } %322, 1
  store i32 %324, ptr %5, align 4
  br label %369

325:                                              ; preds = %269
  %326 = landingpad { ptr, i32 }
          cleanup
  %327 = extractvalue { ptr, i32 } %326, 0
  store ptr %327, ptr %4, align 8
  %328 = extractvalue { ptr, i32 } %326, 1
  store i32 %328, ptr %5, align 4
  br label %368

329:                                              ; preds = %274
  %330 = landingpad { ptr, i32 }
          cleanup
  %331 = extractvalue { ptr, i32 } %330, 0
  store ptr %331, ptr %4, align 8
  %332 = extractvalue { ptr, i32 } %330, 1
  store i32 %332, ptr %5, align 4
  br label %367

333:                                              ; preds = %291, %287
  %334 = landingpad { ptr, i32 }
          cleanup
  %335 = extractvalue { ptr, i32 } %334, 0
  store ptr %335, ptr %4, align 8
  %336 = extractvalue { ptr, i32 } %334, 1
  store i32 %336, ptr %5, align 4
  br label %362

337:                                              ; preds = %348, %313, %302
  %338 = landingpad { ptr, i32 }
          cleanup
  %339 = extractvalue { ptr, i32 } %338, 0
  store ptr %339, ptr %4, align 8
  %340 = extractvalue { ptr, i32 } %338, 1
  store i32 %340, ptr %5, align 4
  br label %361

341:                                              ; preds = %317
  %342 = landingpad { ptr, i32 }
          cleanup
  %343 = extractvalue { ptr, i32 } %342, 0
  store ptr %343, ptr %4, align 8
  %344 = extractvalue { ptr, i32 } %342, 1
  store i32 %344, ptr %5, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %36) #7
  br label %361

345:                                              ; preds = %320, %306
  %346 = load i8, ptr %32, align 1, !tbaa !51, !range !53, !noundef !54
  %347 = trunc i8 %346 to i1
  br i1 %347, label %348, label %360

348:                                              ; preds = %345
  %349 = getelementptr inbounds [2 x %"class.JPH::Array.62"], ptr %13, i64 0, i64 1
  %350 = load i64, ptr %35, align 8, !tbaa !49
  %351 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZN3JPH5ArrayINS0_IiNS_12STLAllocatorIiEEEENS1_IS3_EEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %349, i64 noundef %350)
          to label %352 unwind label %337

352:                                              ; preds = %348
  call void @llvm.lifetime.start.p0(i64 4, ptr %37) #7
  %353 = load i64, ptr %29, align 8, !tbaa !49
  %354 = trunc i64 %353 to i32
  store i32 %354, ptr %37, align 4, !tbaa !45
  invoke void @_ZN3JPH5ArrayIiNS_12STLAllocatorIiEEE9push_backEOi(ptr noundef nonnull align 8 dereferenceable(24) %351, ptr noundef nonnull align 4 dereferenceable(4) %37)
          to label %355 unwind label %356

355:                                              ; preds = %352
  call void @llvm.lifetime.end.p0(i64 4, ptr %37) #7
  br label %360

356:                                              ; preds = %352
  %357 = landingpad { ptr, i32 }
          cleanup
  %358 = extractvalue { ptr, i32 } %357, 0
  store ptr %358, ptr %4, align 8
  %359 = extractvalue { ptr, i32 } %357, 1
  store i32 %359, ptr %5, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %37) #7
  br label %361

360:                                              ; preds = %355, %345
  call void @llvm.lifetime.end.p0(i64 8, ptr %35) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %33) #7
  br label %363

361:                                              ; preds = %356, %341, %337
  call void @llvm.lifetime.end.p0(i64 8, ptr %35) #7
  br label %362

362:                                              ; preds = %361, %333
  call void @llvm.lifetime.end.p0(i64 8, ptr %33) #7
  br label %367

363:                                              ; preds = %360, %284
  call void @llvm.lifetime.end.p0(i64 1, ptr %32) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %31) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %30) #7
  br label %364

364:                                              ; preds = %363
  %365 = load i64, ptr %29, align 8, !tbaa !49
  %366 = add i64 %365, 1
  store i64 %366, ptr %29, align 8, !tbaa !49
  br label %254, !llvm.loop !63

367:                                              ; preds = %362, %329
  call void @llvm.lifetime.end.p0(i64 1, ptr %32) #7
  br label %368

368:                                              ; preds = %367, %325
  call void @llvm.lifetime.end.p0(i64 1, ptr %31) #7
  br label %369

369:                                              ; preds = %368, %321
  call void @llvm.lifetime.end.p0(i64 8, ptr %30) #7
  br label %370

370:                                              ; preds = %369, %261
  call void @llvm.lifetime.end.p0(i64 8, ptr %29) #7
  br label %485

371:                                              ; preds = %260
  call void @llvm.lifetime.start.p0(i64 16, ptr %38) #7
  %372 = load ptr, ptr %24, align 8, !tbaa !5
  %373 = getelementptr inbounds %"struct.std::pair.65", ptr %372, i32 0, i32 1
  %374 = getelementptr inbounds %"struct.DebugRendererImp::Instances", ptr %373, i32 0, i32 2
  store ptr %374, ptr %38, align 8, !tbaa !5
  %375 = getelementptr inbounds ptr, ptr %38, i64 1
  %376 = load ptr, ptr %24, align 8, !tbaa !5
  %377 = getelementptr inbounds %"struct.std::pair.65", ptr %376, i32 0, i32 1
  %378 = getelementptr inbounds %"struct.DebugRendererImp::Instances", ptr %377, i32 0, i32 1
  store ptr %378, ptr %375, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %39) #7
  store i32 0, ptr %39, align 4, !tbaa !45
  br label %379

379:                                              ; preds = %477, %371
  %380 = load i32, ptr %39, align 4, !tbaa !45
  %381 = icmp slt i32 %380, 2
  br i1 %381, label %383, label %382

382:                                              ; preds = %379
  store i32 11, ptr %19, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %39) #7
  br label %481

383:                                              ; preds = %379
  call void @llvm.lifetime.start.p0(i64 8, ptr %40) #7
  %384 = load i32, ptr %39, align 4, !tbaa !45
  %385 = sext i32 %384 to i64
  %386 = getelementptr inbounds [2 x ptr], ptr %38, i64 0, i64 %385
  %387 = load ptr, ptr %386, align 8, !tbaa !5
  store ptr %387, ptr %40, align 8, !tbaa !5
  %388 = load ptr, ptr %40, align 8, !tbaa !5
  %389 = load i64, ptr %26, align 8, !tbaa !49
  %390 = add i64 %389, 1
  invoke void @_ZN3JPH5ArrayIiNS_12STLAllocatorIiEEE6resizeEm(ptr noundef nonnull align 8 dereferenceable(24) %388, i64 noundef %390)
          to label %391 unwind label %397

391:                                              ; preds = %383
  call void @llvm.lifetime.start.p0(i64 8, ptr %41) #7
  store i64 0, ptr %41, align 8, !tbaa !49
  br label %392

392:                                              ; preds = %467, %391
  %393 = load i64, ptr %41, align 8, !tbaa !49
  %394 = load i64, ptr %26, align 8, !tbaa !49
  %395 = icmp ult i64 %393, %394
  br i1 %395, label %401, label %396

396:                                              ; preds = %392
  store i32 14, ptr %19, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %41) #7
  br label %472

397:                                              ; preds = %472, %383
  %398 = landingpad { ptr, i32 }
          cleanup
  %399 = extractvalue { ptr, i32 } %398, 0
  store ptr %399, ptr %4, align 8
  %400 = extractvalue { ptr, i32 } %398, 1
  store i32 %400, ptr %5, align 4
  br label %480

401:                                              ; preds = %392
  %402 = load i32, ptr %12, align 4, !tbaa !45
  %403 = load ptr, ptr %40, align 8, !tbaa !5
  %404 = load i64, ptr %41, align 8, !tbaa !49
  %405 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN3JPH5ArrayIiNS_12STLAllocatorIiEEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %403, i64 noundef %404)
          to label %406 unwind label %425

406:                                              ; preds = %401
  store i32 %402, ptr %405, align 4, !tbaa !45
  call void @llvm.lifetime.start.p0(i64 8, ptr %42) #7
  %407 = load i32, ptr %39, align 4, !tbaa !45
  %408 = sext i32 %407 to i64
  %409 = getelementptr inbounds [2 x %"class.JPH::Array.62"], ptr %13, i64 0, i64 %408
  %410 = load i64, ptr %41, align 8, !tbaa !49
  %411 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZN3JPH5ArrayINS0_IiNS_12STLAllocatorIiEEEENS1_IS3_EEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %409, i64 noundef %410)
          to label %412 unwind label %429

412:                                              ; preds = %406
  store ptr %411, ptr %42, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %43) #7
  %413 = load ptr, ptr %42, align 8, !tbaa !5
  store ptr %413, ptr %43, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %44) #7
  %414 = load ptr, ptr %43, align 8, !tbaa !5
  %415 = invoke noundef ptr @_ZN3JPH5ArrayIiNS_12STLAllocatorIiEEE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %414)
          to label %416 unwind label %433

416:                                              ; preds = %412
  store ptr %415, ptr %44, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %45) #7
  %417 = load ptr, ptr %43, align 8, !tbaa !5
  %418 = invoke noundef ptr @_ZN3JPH5ArrayIiNS_12STLAllocatorIiEEE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %417)
          to label %419 unwind label %437

419:                                              ; preds = %416
  store ptr %418, ptr %45, align 8, !tbaa !5
  br label %420

420:                                              ; preds = %455, %419
  %421 = load ptr, ptr %44, align 8, !tbaa !5
  %422 = load ptr, ptr %45, align 8, !tbaa !5
  %423 = icmp ne ptr %421, %422
  br i1 %423, label %441, label %424

424:                                              ; preds = %420
  store i32 17, ptr %19, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %45) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %44) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %43) #7
  br label %464

425:                                              ; preds = %401
  %426 = landingpad { ptr, i32 }
          cleanup
  %427 = extractvalue { ptr, i32 } %426, 0
  store ptr %427, ptr %4, align 8
  %428 = extractvalue { ptr, i32 } %426, 1
  store i32 %428, ptr %5, align 4
  br label %471

429:                                              ; preds = %464, %406
  %430 = landingpad { ptr, i32 }
          cleanup
  %431 = extractvalue { ptr, i32 } %430, 0
  store ptr %431, ptr %4, align 8
  %432 = extractvalue { ptr, i32 } %430, 1
  store i32 %432, ptr %5, align 4
  br label %470

433:                                              ; preds = %412
  %434 = landingpad { ptr, i32 }
          cleanup
  %435 = extractvalue { ptr, i32 } %434, 0
  store ptr %435, ptr %4, align 8
  %436 = extractvalue { ptr, i32 } %434, 1
  store i32 %436, ptr %5, align 4
  br label %463

437:                                              ; preds = %416
  %438 = landingpad { ptr, i32 }
          cleanup
  %439 = extractvalue { ptr, i32 } %438, 0
  store ptr %439, ptr %4, align 8
  %440 = extractvalue { ptr, i32 } %438, 1
  store i32 %440, ptr %5, align 4
  br label %462

441:                                              ; preds = %420
  call void @llvm.lifetime.start.p0(i64 4, ptr %46) #7
  %442 = load ptr, ptr %44, align 8, !tbaa !5
  %443 = load i32, ptr %442, align 4, !tbaa !45
  store i32 %443, ptr %46, align 4, !tbaa !45
  call void @llvm.lifetime.start.p0(i64 8, ptr %47) #7
  %444 = load ptr, ptr %28, align 8, !tbaa !5
  %445 = load i32, ptr %46, align 4, !tbaa !45
  %446 = sext i32 %445 to i64
  %447 = invoke noundef nonnull align 16 dereferenceable(180) ptr @_ZNK3JPH5ArrayIN16DebugRendererImp19InstanceWithLODInfoENS_12STLAllocatorIS2_EEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %444, i64 noundef %446)
          to label %448 unwind label %458

448:                                              ; preds = %441
  store ptr %447, ptr %47, align 8, !tbaa !5
  %449 = load ptr, ptr %47, align 8, !tbaa !5
  %450 = load ptr, ptr %11, align 8, !tbaa !5
  %451 = load i32, ptr %12, align 4, !tbaa !45
  %452 = add nsw i32 %451, 1
  store i32 %452, ptr %12, align 4, !tbaa !45
  %453 = sext i32 %451 to i64
  %454 = getelementptr inbounds %"struct.DebugRendererImp::Instance", ptr %450, i64 %453
  call void @llvm.memcpy.p0.p0.i64(ptr align 16 %454, ptr align 16 %449, i64 132, i1 false), !tbaa.struct !65
  call void @llvm.lifetime.end.p0(i64 8, ptr %47) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %46) #7
  br label %455

455:                                              ; preds = %448
  %456 = load ptr, ptr %44, align 8, !tbaa !5
  %457 = getelementptr inbounds i32, ptr %456, i32 1
  store ptr %457, ptr %44, align 8, !tbaa !5
  br label %420

458:                                              ; preds = %441
  %459 = landingpad { ptr, i32 }
          cleanup
  %460 = extractvalue { ptr, i32 } %459, 0
  store ptr %460, ptr %4, align 8
  %461 = extractvalue { ptr, i32 } %459, 1
  store i32 %461, ptr %5, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %47) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %46) #7
  br label %462

462:                                              ; preds = %458, %437
  call void @llvm.lifetime.end.p0(i64 8, ptr %45) #7
  br label %463

463:                                              ; preds = %462, %433
  call void @llvm.lifetime.end.p0(i64 8, ptr %44) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %43) #7
  br label %470

464:                                              ; preds = %424
  %465 = load ptr, ptr %42, align 8, !tbaa !5
  invoke void @_ZN3JPH5ArrayIiNS_12STLAllocatorIiEEE5clearEv(ptr noundef nonnull align 8 dereferenceable(24) %465)
          to label %466 unwind label %429

466:                                              ; preds = %464
  call void @llvm.lifetime.end.p0(i64 8, ptr %42) #7
  br label %467

467:                                              ; preds = %466
  %468 = load i64, ptr %41, align 8, !tbaa !49
  %469 = add i64 %468, 1
  store i64 %469, ptr %41, align 8, !tbaa !49
  br label %392, !llvm.loop !66

470:                                              ; preds = %463, %429
  call void @llvm.lifetime.end.p0(i64 8, ptr %42) #7
  br label %471

471:                                              ; preds = %470, %425
  call void @llvm.lifetime.end.p0(i64 8, ptr %41) #7
  br label %480

472:                                              ; preds = %396
  %473 = load i32, ptr %12, align 4, !tbaa !45
  %474 = load ptr, ptr %40, align 8, !tbaa !5
  %475 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN3JPH5ArrayIiNS_12STLAllocatorIiEEE4backEv(ptr noundef nonnull align 8 dereferenceable(24) %474)
          to label %476 unwind label %397

476:                                              ; preds = %472
  store i32 %473, ptr %475, align 4, !tbaa !45
  call void @llvm.lifetime.end.p0(i64 8, ptr %40) #7
  br label %477

477:                                              ; preds = %476
  %478 = load i32, ptr %39, align 4, !tbaa !45
  %479 = add nsw i32 %478, 1
  store i32 %479, ptr %39, align 4, !tbaa !45
  br label %379, !llvm.loop !67

480:                                              ; preds = %471, %397
  call void @llvm.lifetime.end.p0(i64 8, ptr %40) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %39) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %38) #7
  br label %485

481:                                              ; preds = %382
  call void @llvm.lifetime.end.p0(i64 16, ptr %38) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %28) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %26) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %25) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %24) #7
  br label %482

482:                                              ; preds = %481
  %483 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZN3JPH9HashTableINS_3RefINS_13DebugRenderer8GeometryEEESt4pairIS4_N16DebugRendererImp9InstancesEENS_18UnorderedMapDetailIS4_S7_EENS_4HashIS4_EESt8equal_toIS4_EE12IteratorBaseISF_NSF_8iteratorEEppEv(ptr noundef nonnull align 8 dereferenceable(12) %22)
          to label %484 unwind label %194

484:                                              ; preds = %482
  br label %186

485:                                              ; preds = %480, %370
  call void @llvm.lifetime.end.p0(i64 8, ptr %28) #7
  br label %486

486:                                              ; preds = %485, %224
  call void @llvm.lifetime.end.p0(i64 8, ptr %26) #7
  br label %487

487:                                              ; preds = %486, %220
  call void @llvm.lifetime.end.p0(i64 8, ptr %25) #7
  br label %488

488:                                              ; preds = %487, %216
  call void @llvm.lifetime.end.p0(i64 8, ptr %24) #7
  br label %489

489:                                              ; preds = %488, %194
  call void @llvm.lifetime.end.p0(i64 16, ptr %23) #7
  br label %490

490:                                              ; preds = %489, %190
  call void @llvm.lifetime.end.p0(i64 16, ptr %22) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %21) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %20) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %18) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %17) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %16) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %15) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %14) #7
  br label %512

491:                                              ; preds = %189
  call void @llvm.lifetime.end.p0(i64 8, ptr %20) #7
  br label %492

492:                                              ; preds = %491
  %493 = load ptr, ptr %17, align 8, !tbaa !5
  %494 = getelementptr inbounds ptr, ptr %493, i32 1
  store ptr %494, ptr %17, align 8, !tbaa !5
  br label %149

495:                                              ; preds = %153
  %496 = load ptr, ptr %10, align 8, !tbaa !5
  %497 = load ptr, ptr %496, align 8, !tbaa !43
  %498 = getelementptr inbounds ptr, ptr %497, i64 5
  %499 = load ptr, ptr %498, align 8
  invoke void %499(ptr noundef nonnull align 8 dereferenceable(12) %496)
          to label %500 unwind label %508

500:                                              ; preds = %495
  %501 = getelementptr inbounds [2 x %"class.JPH::Array.62"], ptr %13, i32 0, i32 0
  %502 = getelementptr inbounds %"class.JPH::Array.62", ptr %501, i64 2
  br label %503

503:                                              ; preds = %503, %500
  %504 = phi ptr [ %502, %500 ], [ %505, %503 ]
  %505 = getelementptr inbounds %"class.JPH::Array.62", ptr %504, i64 -1
  call void @_ZN3JPH5ArrayINS0_IiNS_12STLAllocatorIiEEEENS1_IS3_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %505) #7
  %506 = icmp eq ptr %505, %501
  br i1 %506, label %507, label %503

507:                                              ; preds = %503
  call void @llvm.lifetime.end.p0(i64 48, ptr %13) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %12) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %11) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %10) #7
  br label %522

508:                                              ; preds = %495
  %509 = landingpad { ptr, i32 }
          cleanup
  %510 = extractvalue { ptr, i32 } %509, 0
  store ptr %510, ptr %4, align 8
  %511 = extractvalue { ptr, i32 } %509, 1
  store i32 %511, ptr %5, align 4
  br label %512

512:                                              ; preds = %508, %490
  %513 = getelementptr inbounds [2 x %"class.JPH::Array.62"], ptr %13, i32 0, i32 0
  %514 = getelementptr inbounds %"class.JPH::Array.62", ptr %513, i64 2
  br label %515

515:                                              ; preds = %515, %512
  %516 = phi ptr [ %514, %512 ], [ %517, %515 ]
  %517 = getelementptr inbounds %"class.JPH::Array.62", ptr %516, i64 -1
  call void @_ZN3JPH5ArrayINS0_IiNS_12STLAllocatorIiEEEENS1_IS3_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %517) #7
  %518 = icmp eq ptr %517, %513
  br i1 %518, label %519, label %515

519:                                              ; preds = %515
  call void @llvm.lifetime.end.p0(i64 48, ptr %13) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %12) #7
  br label %520

520:                                              ; preds = %519, %174
  call void @llvm.lifetime.end.p0(i64 8, ptr %11) #7
  br label %521

521:                                              ; preds = %520, %170
  call void @llvm.lifetime.end.p0(i64 8, ptr %10) #7
  br label %717

522:                                              ; preds = %507, %101
  %523 = getelementptr inbounds %class.DebugRendererImp, ptr %64, i32 0, i32 11
  %524 = invoke noundef zeroext i1 @_ZNK3JPH9HashTableINS_3RefINS_13DebugRenderer8GeometryEEESt4pairIS4_N16DebugRendererImp9InstancesEENS_18UnorderedMapDetailIS4_S7_EENS_4HashIS4_EESt8equal_toIS4_EE5emptyEv(ptr noundef nonnull align 8 dereferenceable(28) %523)
          to label %525 unwind label %166

525:                                              ; preds = %522
  br i1 %524, label %526, label %530

526:                                              ; preds = %525
  %527 = getelementptr inbounds %class.DebugRendererImp, ptr %64, i32 0, i32 12
  %528 = invoke noundef zeroext i1 @_ZNK3JPH9HashTableINS_3RefINS_13DebugRenderer8GeometryEEESt4pairIS4_N16DebugRendererImp9InstancesEENS_18UnorderedMapDetailIS4_S7_EENS_4HashIS4_EESt8equal_toIS4_EE5emptyEv(ptr noundef nonnull align 8 dereferenceable(28) %527)
          to label %529 unwind label %166

529:                                              ; preds = %526
  br i1 %528, label %618, label %530

530:                                              ; preds = %529, %525
  %531 = getelementptr inbounds %class.DebugRendererImp, ptr %64, i32 0, i32 6
  %532 = call noundef ptr @_ZNKSt10unique_ptrI13PipelineStateSt14default_deleteIS0_EEptEv(ptr noundef nonnull align 8 dereferenceable(8) %531) #7
  %533 = load ptr, ptr %532, align 8, !tbaa !43
  %534 = getelementptr inbounds ptr, ptr %533, i64 2
  %535 = load ptr, ptr %534, align 8
  invoke void %535(ptr noundef nonnull align 8 dereferenceable(8) %532)
          to label %536 unwind label %166

536:                                              ; preds = %530
  %537 = getelementptr inbounds %class.DebugRendererImp, ptr %64, i32 0, i32 14
  %538 = load i32, ptr %537, align 16, !tbaa !42
  %539 = icmp sgt i32 %538, 0
  br i1 %539, label %540, label %579

540:                                              ; preds = %536
  call void @llvm.lifetime.start.p0(i64 8, ptr %48) #7
  %541 = getelementptr inbounds %class.DebugRendererImp, ptr %64, i32 0, i32 11
  store ptr %541, ptr %48, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 16, ptr %49) #7
  %542 = load ptr, ptr %48, align 8, !tbaa !5
  invoke void @_ZN3JPH9HashTableINS_3RefINS_13DebugRenderer8GeometryEEESt4pairIS4_N16DebugRendererImp9InstancesEENS_18UnorderedMapDetailIS4_S7_EENS_4HashIS4_EESt8equal_toIS4_EE5beginEv(ptr dead_on_unwind writable sret(%"class.JPH::HashTable<JPH::Ref<JPH::DebugRenderer::Geometry>, std::pair<JPH::Ref<JPH::DebugRenderer::Geometry>, DebugRendererImp::Instances>, JPH::UnorderedMapDetail<JPH::Ref<JPH::DebugRenderer::Geometry>, DebugRendererImp::Instances>, JPH::Hash<JPH::Ref<JPH::DebugRenderer::Geometry>>, std::equal_to<JPH::Ref<JPH::DebugRenderer::Geometry>>>::iterator") align 8 %49, ptr noundef nonnull align 8 dereferenceable(28) %542)
          to label %543 unwind label %550

543:                                              ; preds = %540
  call void @llvm.lifetime.start.p0(i64 16, ptr %50) #7
  %544 = load ptr, ptr %48, align 8, !tbaa !5
  invoke void @_ZN3JPH9HashTableINS_3RefINS_13DebugRenderer8GeometryEEESt4pairIS4_N16DebugRendererImp9InstancesEENS_18UnorderedMapDetailIS4_S7_EENS_4HashIS4_EESt8equal_toIS4_EE3endEv(ptr dead_on_unwind writable sret(%"class.JPH::HashTable<JPH::Ref<JPH::DebugRenderer::Geometry>, std::pair<JPH::Ref<JPH::DebugRenderer::Geometry>, DebugRendererImp::Instances>, JPH::UnorderedMapDetail<JPH::Ref<JPH::DebugRenderer::Geometry>, DebugRendererImp::Instances>, JPH::Hash<JPH::Ref<JPH::DebugRenderer::Geometry>>, std::equal_to<JPH::Ref<JPH::DebugRenderer::Geometry>>>::iterator") align 8 %50, ptr noundef nonnull align 8 dereferenceable(28) %544)
          to label %545 unwind label %554

545:                                              ; preds = %543
  br label %546

546:                                              ; preds = %571, %545
  %547 = invoke noundef zeroext i1 @_ZNK3JPH9HashTableINS_3RefINS_13DebugRenderer8GeometryEEESt4pairIS4_N16DebugRendererImp9InstancesEENS_18UnorderedMapDetailIS4_S7_EENS_4HashIS4_EESt8equal_toIS4_EE12IteratorBaseISF_NSF_8iteratorEEneERKSH_(ptr noundef nonnull align 8 dereferenceable(12) %49, ptr noundef nonnull align 8 dereferenceable(12) %50)
          to label %548 unwind label %554

548:                                              ; preds = %546
  br i1 %547, label %558, label %549

549:                                              ; preds = %548
  store i32 19, ptr %19, align 4
  call void @llvm.lifetime.end.p0(i64 16, ptr %50) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %49) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %48) #7
  br label %578

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

554:                                              ; preds = %569, %546, %543
  %555 = landingpad { ptr, i32 }
          cleanup
  %556 = extractvalue { ptr, i32 } %555, 0
  store ptr %556, ptr %4, align 8
  %557 = extractvalue { ptr, i32 } %555, 1
  store i32 %557, ptr %5, align 4
  br label %576

558:                                              ; preds = %548
  call void @llvm.lifetime.start.p0(i64 8, ptr %51) #7
  %559 = invoke noundef nonnull align 8 dereferenceable(80) ptr @_ZN3JPH9HashTableINS_3RefINS_13DebugRenderer8GeometryEEESt4pairIS4_N16DebugRendererImp9InstancesEENS_18UnorderedMapDetailIS4_S7_EENS_4HashIS4_EESt8equal_toIS4_EE8iteratordeEv(ptr noundef nonnull align 8 dereferenceable(12) %49)
          to label %560 unwind label %572

560:                                              ; preds = %558
  store ptr %559, ptr %51, align 8, !tbaa !5
  %561 = load ptr, ptr %51, align 8, !tbaa !5
  %562 = getelementptr inbounds %"struct.std::pair.65", ptr %561, i32 0, i32 0
  %563 = invoke noundef ptr @_ZNK3JPH3RefINS_13DebugRenderer8GeometryEEcvPS2_Ev(ptr noundef nonnull align 8 dereferenceable(8) %562)
          to label %564 unwind label %572

564:                                              ; preds = %560
  %565 = load ptr, ptr %51, align 8, !tbaa !5
  %566 = getelementptr inbounds %"struct.std::pair.65", ptr %565, i32 0, i32 1
  %567 = getelementptr inbounds %"struct.DebugRendererImp::Instances", ptr %566, i32 0, i32 2
  invoke void @_ZN16DebugRendererImp13DrawInstancesEPKN3JPH13DebugRenderer8GeometryERKNS0_5ArrayIiNS0_12STLAllocatorIiEEEE(ptr noundef nonnull align 16 dereferenceable(816) %64, ptr noundef %563, ptr noundef nonnull align 8 dereferenceable(24) %567)
          to label %568 unwind label %572

568:                                              ; preds = %564
  call void @llvm.lifetime.end.p0(i64 8, ptr %51) #7
  br label %569

569:                                              ; preds = %568
  %570 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZN3JPH9HashTableINS_3RefINS_13DebugRenderer8GeometryEEESt4pairIS4_N16DebugRendererImp9InstancesEENS_18UnorderedMapDetailIS4_S7_EENS_4HashIS4_EESt8equal_toIS4_EE12IteratorBaseISF_NSF_8iteratorEEppEv(ptr noundef nonnull align 8 dereferenceable(12) %49)
          to label %571 unwind label %554

571:                                              ; preds = %569
  br label %546

572:                                              ; preds = %564, %560, %558
  %573 = landingpad { ptr, i32 }
          cleanup
  %574 = extractvalue { ptr, i32 } %573, 0
  store ptr %574, ptr %4, align 8
  %575 = extractvalue { ptr, i32 } %573, 1
  store i32 %575, ptr %5, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %51) #7
  br label %576

576:                                              ; preds = %572, %554
  call void @llvm.lifetime.end.p0(i64 16, ptr %50) #7
  br label %577

577:                                              ; preds = %576, %550
  call void @llvm.lifetime.end.p0(i64 16, ptr %49) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %48) #7
  br label %717

578:                                              ; preds = %549
  br label %579

579:                                              ; preds = %578, %536
  call void @llvm.lifetime.start.p0(i64 8, ptr %52) #7
  %580 = getelementptr inbounds %class.DebugRendererImp, ptr %64, i32 0, i32 12
  store ptr %580, ptr %52, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 16, ptr %53) #7
  %581 = load ptr, ptr %52, align 8, !tbaa !5
  invoke void @_ZN3JPH9HashTableINS_3RefINS_13DebugRenderer8GeometryEEESt4pairIS4_N16DebugRendererImp9InstancesEENS_18UnorderedMapDetailIS4_S7_EENS_4HashIS4_EESt8equal_toIS4_EE5beginEv(ptr dead_on_unwind writable sret(%"class.JPH::HashTable<JPH::Ref<JPH::DebugRenderer::Geometry>, std::pair<JPH::Ref<JPH::DebugRenderer::Geometry>, DebugRendererImp::Instances>, JPH::UnorderedMapDetail<JPH::Ref<JPH::DebugRenderer::Geometry>, DebugRendererImp::Instances>, JPH::Hash<JPH::Ref<JPH::DebugRenderer::Geometry>>, std::equal_to<JPH::Ref<JPH::DebugRenderer::Geometry>>>::iterator") align 8 %53, ptr noundef nonnull align 8 dereferenceable(28) %581)
          to label %582 unwind label %589

582:                                              ; preds = %579
  call void @llvm.lifetime.start.p0(i64 16, ptr %54) #7
  %583 = load ptr, ptr %52, align 8, !tbaa !5
  invoke void @_ZN3JPH9HashTableINS_3RefINS_13DebugRenderer8GeometryEEESt4pairIS4_N16DebugRendererImp9InstancesEENS_18UnorderedMapDetailIS4_S7_EENS_4HashIS4_EESt8equal_toIS4_EE3endEv(ptr dead_on_unwind writable sret(%"class.JPH::HashTable<JPH::Ref<JPH::DebugRenderer::Geometry>, std::pair<JPH::Ref<JPH::DebugRenderer::Geometry>, DebugRendererImp::Instances>, JPH::UnorderedMapDetail<JPH::Ref<JPH::DebugRenderer::Geometry>, DebugRendererImp::Instances>, JPH::Hash<JPH::Ref<JPH::DebugRenderer::Geometry>>, std::equal_to<JPH::Ref<JPH::DebugRenderer::Geometry>>>::iterator") align 8 %54, ptr noundef nonnull align 8 dereferenceable(28) %583)
          to label %584 unwind label %593

584:                                              ; preds = %582
  br label %585

585:                                              ; preds = %610, %584
  %586 = invoke noundef zeroext i1 @_ZNK3JPH9HashTableINS_3RefINS_13DebugRenderer8GeometryEEESt4pairIS4_N16DebugRendererImp9InstancesEENS_18UnorderedMapDetailIS4_S7_EENS_4HashIS4_EESt8equal_toIS4_EE12IteratorBaseISF_NSF_8iteratorEEneERKSH_(ptr noundef nonnull align 8 dereferenceable(12) %53, ptr noundef nonnull align 8 dereferenceable(12) %54)
          to label %587 unwind label %593

587:                                              ; preds = %585
  br i1 %586, label %597, label %588

588:                                              ; preds = %587
  store i32 21, ptr %19, align 4
  call void @llvm.lifetime.end.p0(i64 16, ptr %54) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %53) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %52) #7
  br label %617

589:                                              ; preds = %579
  %590 = landingpad { ptr, i32 }
          cleanup
  %591 = extractvalue { ptr, i32 } %590, 0
  store ptr %591, ptr %4, align 8
  %592 = extractvalue { ptr, i32 } %590, 1
  store i32 %592, ptr %5, align 4
  br label %616

593:                                              ; preds = %608, %585, %582
  %594 = landingpad { ptr, i32 }
          cleanup
  %595 = extractvalue { ptr, i32 } %594, 0
  store ptr %595, ptr %4, align 8
  %596 = extractvalue { ptr, i32 } %594, 1
  store i32 %596, ptr %5, align 4
  br label %615

597:                                              ; preds = %587
  call void @llvm.lifetime.start.p0(i64 8, ptr %55) #7
  %598 = invoke noundef nonnull align 8 dereferenceable(80) ptr @_ZN3JPH9HashTableINS_3RefINS_13DebugRenderer8GeometryEEESt4pairIS4_N16DebugRendererImp9InstancesEENS_18UnorderedMapDetailIS4_S7_EENS_4HashIS4_EESt8equal_toIS4_EE8iteratordeEv(ptr noundef nonnull align 8 dereferenceable(12) %53)
          to label %599 unwind label %611

599:                                              ; preds = %597
  store ptr %598, ptr %55, align 8, !tbaa !5
  %600 = load ptr, ptr %55, align 8, !tbaa !5
  %601 = getelementptr inbounds %"struct.std::pair.65", ptr %600, i32 0, i32 0
  %602 = invoke noundef ptr @_ZNK3JPH3RefINS_13DebugRenderer8GeometryEEcvPS2_Ev(ptr noundef nonnull align 8 dereferenceable(8) %601)
          to label %603 unwind label %611

603:                                              ; preds = %599
  %604 = load ptr, ptr %55, align 8, !tbaa !5
  %605 = getelementptr inbounds %"struct.std::pair.65", ptr %604, i32 0, i32 1
  %606 = getelementptr inbounds %"struct.DebugRendererImp::Instances", ptr %605, i32 0, i32 2
  invoke void @_ZN16DebugRendererImp13DrawInstancesEPKN3JPH13DebugRenderer8GeometryERKNS0_5ArrayIiNS0_12STLAllocatorIiEEEE(ptr noundef nonnull align 16 dereferenceable(816) %64, ptr noundef %602, ptr noundef nonnull align 8 dereferenceable(24) %606)
          to label %607 unwind label %611

607:                                              ; preds = %603
  call void @llvm.lifetime.end.p0(i64 8, ptr %55) #7
  br label %608

608:                                              ; preds = %607
  %609 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZN3JPH9HashTableINS_3RefINS_13DebugRenderer8GeometryEEESt4pairIS4_N16DebugRendererImp9InstancesEENS_18UnorderedMapDetailIS4_S7_EENS_4HashIS4_EESt8equal_toIS4_EE12IteratorBaseISF_NSF_8iteratorEEppEv(ptr noundef nonnull align 8 dereferenceable(12) %53)
          to label %610 unwind label %593

610:                                              ; preds = %608
  br label %585

611:                                              ; preds = %603, %599, %597
  %612 = landingpad { ptr, i32 }
          cleanup
  %613 = extractvalue { ptr, i32 } %612, 0
  store ptr %613, ptr %4, align 8
  %614 = extractvalue { ptr, i32 } %612, 1
  store i32 %614, ptr %5, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %55) #7
  br label %615

615:                                              ; preds = %611, %593
  call void @llvm.lifetime.end.p0(i64 16, ptr %54) #7
  br label %616

616:                                              ; preds = %615, %589
  call void @llvm.lifetime.end.p0(i64 16, ptr %53) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %52) #7
  br label %717

617:                                              ; preds = %588
  br label %618

618:                                              ; preds = %617, %529
  %619 = getelementptr inbounds %class.DebugRendererImp, ptr %64, i32 0, i32 13
  %620 = invoke noundef zeroext i1 @_ZNK3JPH9HashTableINS_3RefINS_13DebugRenderer8GeometryEEESt4pairIS4_N16DebugRendererImp9InstancesEENS_18UnorderedMapDetailIS4_S7_EENS_4HashIS4_EESt8equal_toIS4_EE5emptyEv(ptr noundef nonnull align 8 dereferenceable(28) %619)
          to label %621 unwind label %166

621:                                              ; preds = %618
  br i1 %620, label %667, label %622

622:                                              ; preds = %621
  %623 = getelementptr inbounds %class.DebugRendererImp, ptr %64, i32 0, i32 5
  %624 = call noundef ptr @_ZNKSt10unique_ptrI13PipelineStateSt14default_deleteIS0_EEptEv(ptr noundef nonnull align 8 dereferenceable(8) %623) #7
  %625 = load ptr, ptr %624, align 8, !tbaa !43
  %626 = getelementptr inbounds ptr, ptr %625, i64 2
  %627 = load ptr, ptr %626, align 8
  invoke void %627(ptr noundef nonnull align 8 dereferenceable(8) %624)
          to label %628 unwind label %166

628:                                              ; preds = %622
  call void @llvm.lifetime.start.p0(i64 8, ptr %56) #7
  %629 = getelementptr inbounds %class.DebugRendererImp, ptr %64, i32 0, i32 13
  store ptr %629, ptr %56, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 16, ptr %57) #7
  %630 = load ptr, ptr %56, align 8, !tbaa !5
  invoke void @_ZN3JPH9HashTableINS_3RefINS_13DebugRenderer8GeometryEEESt4pairIS4_N16DebugRendererImp9InstancesEENS_18UnorderedMapDetailIS4_S7_EENS_4HashIS4_EESt8equal_toIS4_EE5beginEv(ptr dead_on_unwind writable sret(%"class.JPH::HashTable<JPH::Ref<JPH::DebugRenderer::Geometry>, std::pair<JPH::Ref<JPH::DebugRenderer::Geometry>, DebugRendererImp::Instances>, JPH::UnorderedMapDetail<JPH::Ref<JPH::DebugRenderer::Geometry>, DebugRendererImp::Instances>, JPH::Hash<JPH::Ref<JPH::DebugRenderer::Geometry>>, std::equal_to<JPH::Ref<JPH::DebugRenderer::Geometry>>>::iterator") align 8 %57, ptr noundef nonnull align 8 dereferenceable(28) %630)
          to label %631 unwind label %638

631:                                              ; preds = %628
  call void @llvm.lifetime.start.p0(i64 16, ptr %58) #7
  %632 = load ptr, ptr %56, align 8, !tbaa !5
  invoke void @_ZN3JPH9HashTableINS_3RefINS_13DebugRenderer8GeometryEEESt4pairIS4_N16DebugRendererImp9InstancesEENS_18UnorderedMapDetailIS4_S7_EENS_4HashIS4_EESt8equal_toIS4_EE3endEv(ptr dead_on_unwind writable sret(%"class.JPH::HashTable<JPH::Ref<JPH::DebugRenderer::Geometry>, std::pair<JPH::Ref<JPH::DebugRenderer::Geometry>, DebugRendererImp::Instances>, JPH::UnorderedMapDetail<JPH::Ref<JPH::DebugRenderer::Geometry>, DebugRendererImp::Instances>, JPH::Hash<JPH::Ref<JPH::DebugRenderer::Geometry>>, std::equal_to<JPH::Ref<JPH::DebugRenderer::Geometry>>>::iterator") align 8 %58, ptr noundef nonnull align 8 dereferenceable(28) %632)
          to label %633 unwind label %642

633:                                              ; preds = %631
  br label %634

634:                                              ; preds = %659, %633
  %635 = invoke noundef zeroext i1 @_ZNK3JPH9HashTableINS_3RefINS_13DebugRenderer8GeometryEEESt4pairIS4_N16DebugRendererImp9InstancesEENS_18UnorderedMapDetailIS4_S7_EENS_4HashIS4_EESt8equal_toIS4_EE12IteratorBaseISF_NSF_8iteratorEEneERKSH_(ptr noundef nonnull align 8 dereferenceable(12) %57, ptr noundef nonnull align 8 dereferenceable(12) %58)
          to label %636 unwind label %642

636:                                              ; preds = %634
  br i1 %635, label %646, label %637

637:                                              ; preds = %636
  store i32 23, ptr %19, align 4
  call void @llvm.lifetime.end.p0(i64 16, ptr %58) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %57) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %56) #7
  br label %666

638:                                              ; preds = %628
  %639 = landingpad { ptr, i32 }
          cleanup
  %640 = extractvalue { ptr, i32 } %639, 0
  store ptr %640, ptr %4, align 8
  %641 = extractvalue { ptr, i32 } %639, 1
  store i32 %641, ptr %5, align 4
  br label %665

642:                                              ; preds = %657, %634, %631
  %643 = landingpad { ptr, i32 }
          cleanup
  %644 = extractvalue { ptr, i32 } %643, 0
  store ptr %644, ptr %4, align 8
  %645 = extractvalue { ptr, i32 } %643, 1
  store i32 %645, ptr %5, align 4
  br label %664

646:                                              ; preds = %636
  call void @llvm.lifetime.start.p0(i64 8, ptr %59) #7
  %647 = invoke noundef nonnull align 8 dereferenceable(80) ptr @_ZN3JPH9HashTableINS_3RefINS_13DebugRenderer8GeometryEEESt4pairIS4_N16DebugRendererImp9InstancesEENS_18UnorderedMapDetailIS4_S7_EENS_4HashIS4_EESt8equal_toIS4_EE8iteratordeEv(ptr noundef nonnull align 8 dereferenceable(12) %57)
          to label %648 unwind label %660

648:                                              ; preds = %646
  store ptr %647, ptr %59, align 8, !tbaa !5
  %649 = load ptr, ptr %59, align 8, !tbaa !5
  %650 = getelementptr inbounds %"struct.std::pair.65", ptr %649, i32 0, i32 0
  %651 = invoke noundef ptr @_ZNK3JPH3RefINS_13DebugRenderer8GeometryEEcvPS2_Ev(ptr noundef nonnull align 8 dereferenceable(8) %650)
          to label %652 unwind label %660

652:                                              ; preds = %648
  %653 = load ptr, ptr %59, align 8, !tbaa !5
  %654 = getelementptr inbounds %"struct.std::pair.65", ptr %653, i32 0, i32 1
  %655 = getelementptr inbounds %"struct.DebugRendererImp::Instances", ptr %654, i32 0, i32 2
  invoke void @_ZN16DebugRendererImp13DrawInstancesEPKN3JPH13DebugRenderer8GeometryERKNS0_5ArrayIiNS0_12STLAllocatorIiEEEE(ptr noundef nonnull align 16 dereferenceable(816) %64, ptr noundef %651, ptr noundef nonnull align 8 dereferenceable(24) %655)
          to label %656 unwind label %660

656:                                              ; preds = %652
  call void @llvm.lifetime.end.p0(i64 8, ptr %59) #7
  br label %657

657:                                              ; preds = %656
  %658 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZN3JPH9HashTableINS_3RefINS_13DebugRenderer8GeometryEEESt4pairIS4_N16DebugRendererImp9InstancesEENS_18UnorderedMapDetailIS4_S7_EENS_4HashIS4_EESt8equal_toIS4_EE12IteratorBaseISF_NSF_8iteratorEEppEv(ptr noundef nonnull align 8 dereferenceable(12) %57)
          to label %659 unwind label %642

659:                                              ; preds = %657
  br label %634

660:                                              ; preds = %652, %648, %646
  %661 = landingpad { ptr, i32 }
          cleanup
  %662 = extractvalue { ptr, i32 } %661, 0
  store ptr %662, ptr %4, align 8
  %663 = extractvalue { ptr, i32 } %661, 1
  store i32 %663, ptr %5, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %59) #7
  br label %664

664:                                              ; preds = %660, %642
  call void @llvm.lifetime.end.p0(i64 16, ptr %58) #7
  br label %665

665:                                              ; preds = %664, %638
  call void @llvm.lifetime.end.p0(i64 16, ptr %57) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %56) #7
  br label %717

666:                                              ; preds = %637
  br label %667

667:                                              ; preds = %666, %621
  %668 = getelementptr inbounds %class.DebugRendererImp, ptr %64, i32 0, i32 10
  %669 = invoke noundef zeroext i1 @_ZNK3JPH9HashTableINS_3RefINS_13DebugRenderer8GeometryEEESt4pairIS4_N16DebugRendererImp9InstancesEENS_18UnorderedMapDetailIS4_S7_EENS_4HashIS4_EESt8equal_toIS4_EE5emptyEv(ptr noundef nonnull align 8 dereferenceable(28) %668)
          to label %670 unwind label %166

670:                                              ; preds = %667
  br i1 %669, label %716, label %671

671:                                              ; preds = %670
  %672 = getelementptr inbounds %class.DebugRendererImp, ptr %64, i32 0, i32 7
  %673 = call noundef ptr @_ZNKSt10unique_ptrI13PipelineStateSt14default_deleteIS0_EEptEv(ptr noundef nonnull align 8 dereferenceable(8) %672) #7
  %674 = load ptr, ptr %673, align 8, !tbaa !43
  %675 = getelementptr inbounds ptr, ptr %674, i64 2
  %676 = load ptr, ptr %675, align 8
  invoke void %676(ptr noundef nonnull align 8 dereferenceable(8) %673)
          to label %677 unwind label %166

677:                                              ; preds = %671
  call void @llvm.lifetime.start.p0(i64 8, ptr %60) #7
  %678 = getelementptr inbounds %class.DebugRendererImp, ptr %64, i32 0, i32 10
  store ptr %678, ptr %60, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 16, ptr %61) #7
  %679 = load ptr, ptr %60, align 8, !tbaa !5
  invoke void @_ZN3JPH9HashTableINS_3RefINS_13DebugRenderer8GeometryEEESt4pairIS4_N16DebugRendererImp9InstancesEENS_18UnorderedMapDetailIS4_S7_EENS_4HashIS4_EESt8equal_toIS4_EE5beginEv(ptr dead_on_unwind writable sret(%"class.JPH::HashTable<JPH::Ref<JPH::DebugRenderer::Geometry>, std::pair<JPH::Ref<JPH::DebugRenderer::Geometry>, DebugRendererImp::Instances>, JPH::UnorderedMapDetail<JPH::Ref<JPH::DebugRenderer::Geometry>, DebugRendererImp::Instances>, JPH::Hash<JPH::Ref<JPH::DebugRenderer::Geometry>>, std::equal_to<JPH::Ref<JPH::DebugRenderer::Geometry>>>::iterator") align 8 %61, ptr noundef nonnull align 8 dereferenceable(28) %679)
          to label %680 unwind label %687

680:                                              ; preds = %677
  call void @llvm.lifetime.start.p0(i64 16, ptr %62) #7
  %681 = load ptr, ptr %60, align 8, !tbaa !5
  invoke void @_ZN3JPH9HashTableINS_3RefINS_13DebugRenderer8GeometryEEESt4pairIS4_N16DebugRendererImp9InstancesEENS_18UnorderedMapDetailIS4_S7_EENS_4HashIS4_EESt8equal_toIS4_EE3endEv(ptr dead_on_unwind writable sret(%"class.JPH::HashTable<JPH::Ref<JPH::DebugRenderer::Geometry>, std::pair<JPH::Ref<JPH::DebugRenderer::Geometry>, DebugRendererImp::Instances>, JPH::UnorderedMapDetail<JPH::Ref<JPH::DebugRenderer::Geometry>, DebugRendererImp::Instances>, JPH::Hash<JPH::Ref<JPH::DebugRenderer::Geometry>>, std::equal_to<JPH::Ref<JPH::DebugRenderer::Geometry>>>::iterator") align 8 %62, ptr noundef nonnull align 8 dereferenceable(28) %681)
          to label %682 unwind label %691

682:                                              ; preds = %680
  br label %683

683:                                              ; preds = %708, %682
  %684 = invoke noundef zeroext i1 @_ZNK3JPH9HashTableINS_3RefINS_13DebugRenderer8GeometryEEESt4pairIS4_N16DebugRendererImp9InstancesEENS_18UnorderedMapDetailIS4_S7_EENS_4HashIS4_EESt8equal_toIS4_EE12IteratorBaseISF_NSF_8iteratorEEneERKSH_(ptr noundef nonnull align 8 dereferenceable(12) %61, ptr noundef nonnull align 8 dereferenceable(12) %62)
          to label %685 unwind label %691

685:                                              ; preds = %683
  br i1 %684, label %695, label %686

686:                                              ; preds = %685
  store i32 25, ptr %19, align 4
  call void @llvm.lifetime.end.p0(i64 16, ptr %62) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %61) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %60) #7
  br label %715

687:                                              ; preds = %677
  %688 = landingpad { ptr, i32 }
          cleanup
  %689 = extractvalue { ptr, i32 } %688, 0
  store ptr %689, ptr %4, align 8
  %690 = extractvalue { ptr, i32 } %688, 1
  store i32 %690, ptr %5, align 4
  br label %714

691:                                              ; preds = %706, %683, %680
  %692 = landingpad { ptr, i32 }
          cleanup
  %693 = extractvalue { ptr, i32 } %692, 0
  store ptr %693, ptr %4, align 8
  %694 = extractvalue { ptr, i32 } %692, 1
  store i32 %694, ptr %5, align 4
  br label %713

695:                                              ; preds = %685
  call void @llvm.lifetime.start.p0(i64 8, ptr %63) #7
  %696 = invoke noundef nonnull align 8 dereferenceable(80) ptr @_ZN3JPH9HashTableINS_3RefINS_13DebugRenderer8GeometryEEESt4pairIS4_N16DebugRendererImp9InstancesEENS_18UnorderedMapDetailIS4_S7_EENS_4HashIS4_EESt8equal_toIS4_EE8iteratordeEv(ptr noundef nonnull align 8 dereferenceable(12) %61)
          to label %697 unwind label %709

697:                                              ; preds = %695
  store ptr %696, ptr %63, align 8, !tbaa !5
  %698 = load ptr, ptr %63, align 8, !tbaa !5
  %699 = getelementptr inbounds %"struct.std::pair.65", ptr %698, i32 0, i32 0
  %700 = invoke noundef ptr @_ZNK3JPH3RefINS_13DebugRenderer8GeometryEEcvPS2_Ev(ptr noundef nonnull align 8 dereferenceable(8) %699)
          to label %701 unwind label %709

701:                                              ; preds = %697
  %702 = load ptr, ptr %63, align 8, !tbaa !5
  %703 = getelementptr inbounds %"struct.std::pair.65", ptr %702, i32 0, i32 1
  %704 = getelementptr inbounds %"struct.DebugRendererImp::Instances", ptr %703, i32 0, i32 2
  invoke void @_ZN16DebugRendererImp13DrawInstancesEPKN3JPH13DebugRenderer8GeometryERKNS0_5ArrayIiNS0_12STLAllocatorIiEEEE(ptr noundef nonnull align 16 dereferenceable(816) %64, ptr noundef %700, ptr noundef nonnull align 8 dereferenceable(24) %704)
          to label %705 unwind label %709

705:                                              ; preds = %701
  call void @llvm.lifetime.end.p0(i64 8, ptr %63) #7
  br label %706

706:                                              ; preds = %705
  %707 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZN3JPH9HashTableINS_3RefINS_13DebugRenderer8GeometryEEESt4pairIS4_N16DebugRendererImp9InstancesEENS_18UnorderedMapDetailIS4_S7_EENS_4HashIS4_EESt8equal_toIS4_EE12IteratorBaseISF_NSF_8iteratorEEppEv(ptr noundef nonnull align 8 dereferenceable(12) %61)
          to label %708 unwind label %691

708:                                              ; preds = %706
  br label %683

709:                                              ; preds = %701, %697, %695
  %710 = landingpad { ptr, i32 }
          cleanup
  %711 = extractvalue { ptr, i32 } %710, 0
  store ptr %711, ptr %4, align 8
  %712 = extractvalue { ptr, i32 } %710, 1
  store i32 %712, ptr %5, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %63) #7
  br label %713

713:                                              ; preds = %709, %691
  call void @llvm.lifetime.end.p0(i64 16, ptr %62) #7
  br label %714

714:                                              ; preds = %713, %687
  call void @llvm.lifetime.end.p0(i64 16, ptr %61) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %60) #7
  br label %717

715:                                              ; preds = %686
  br label %716

716:                                              ; preds = %715, %670
  call void @llvm.lifetime.end.p0(i64 8, ptr %9) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %8) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %6) #7
  call void @_ZNSt10lock_guardIN3JPH5MutexEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %3) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %3) #7
  ret void

717:                                              ; preds = %714, %665, %616, %577, %521, %166
  call void @llvm.lifetime.end.p0(i64 8, ptr %9) #7
  br label %718

718:                                              ; preds = %717, %162
  call void @llvm.lifetime.end.p0(i64 8, ptr %8) #7
  br label %719

719:                                              ; preds = %718, %158
  call void @llvm.lifetime.end.p0(i64 16, ptr %6) #7
  br label %720

720:                                              ; preds = %719, %154
  call void @_ZNSt10lock_guardIN3JPH5MutexEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %3) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %3) #7
  br label %721

721:                                              ; preds = %720
  %722 = load ptr, ptr %4, align 8
  %723 = load i32, ptr %5, align 4
  %724 = insertvalue { ptr, i32 } poison, ptr %722, 0
  %725 = insertvalue { ptr, i32 } %724, i32 %723, 1
  resume { ptr, i32 } %725
}

; Function Attrs: mustprogress uwtable
declare dso_local noundef nonnull align 16 dereferenceable(52) ptr @_ZNK8Renderer14GetCameraStateEv(ptr noundef nonnull align 16 dereferenceable(832)) #6 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef nonnull align 16 dereferenceable(80) ptr @_ZNK8Renderer16GetCameraFrustumEv(ptr noundef nonnull align 16 dereferenceable(832)) #6 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef nonnull align 16 dereferenceable(80) ptr @_ZNK8Renderer15GetLightFrustumEv(ptr noundef nonnull align 16 dereferenceable(832)) #6 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef i32 @_ZNK8Renderer20GetCurrentFrameIndexEv(ptr noundef nonnull align 16 dereferenceable(832)) #6 align 2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef ptr @_ZNK3JPH3RefI15RenderInstancesEcvPS1_Ev(ptr noundef nonnull align 8 dereferenceable(8)) #4 align 2

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef ptr @_ZNKSt16initializer_listIPN3JPH12UnorderedMapINS0_3RefINS0_13DebugRenderer8GeometryEEEN16DebugRendererImp9InstancesENS0_4HashIS5_EESt8equal_toIS5_EEEE5beginEv(ptr noundef nonnull align 8 dereferenceable(16)) #5 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef ptr @_ZNKSt16initializer_listIPN3JPH12UnorderedMapINS0_3RefINS0_13DebugRenderer8GeometryEEEN16DebugRendererImp9InstancesENS0_4HashIS5_EESt8equal_toIS5_EEEE3endEv(ptr noundef nonnull align 8 dereferenceable(16)) #5 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN3JPH9HashTableINS_3RefINS_13DebugRenderer8GeometryEEESt4pairIS4_N16DebugRendererImp9InstancesEENS_18UnorderedMapDetailIS4_S7_EENS_4HashIS4_EESt8equal_toIS4_EE5beginEv(ptr dead_on_unwind noalias writable sret(%"class.JPH::HashTable<JPH::Ref<JPH::DebugRenderer::Geometry>, std::pair<JPH::Ref<JPH::DebugRenderer::Geometry>, DebugRendererImp::Instances>, JPH::UnorderedMapDetail<JPH::Ref<JPH::DebugRenderer::Geometry>, DebugRendererImp::Instances>, JPH::Hash<JPH::Ref<JPH::DebugRenderer::Geometry>>, std::equal_to<JPH::Ref<JPH::DebugRenderer::Geometry>>>::iterator") align 8, ptr noundef nonnull align 8 dereferenceable(28)) #6 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN3JPH9HashTableINS_3RefINS_13DebugRenderer8GeometryEEESt4pairIS4_N16DebugRendererImp9InstancesEENS_18UnorderedMapDetailIS4_S7_EENS_4HashIS4_EESt8equal_toIS4_EE3endEv(ptr dead_on_unwind noalias writable sret(%"class.JPH::HashTable<JPH::Ref<JPH::DebugRenderer::Geometry>, std::pair<JPH::Ref<JPH::DebugRenderer::Geometry>, DebugRendererImp::Instances>, JPH::UnorderedMapDetail<JPH::Ref<JPH::DebugRenderer::Geometry>, DebugRendererImp::Instances>, JPH::Hash<JPH::Ref<JPH::DebugRenderer::Geometry>>, std::equal_to<JPH::Ref<JPH::DebugRenderer::Geometry>>>::iterator") align 8, ptr noundef nonnull align 8 dereferenceable(28)) #6 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef zeroext i1 @_ZNK3JPH9HashTableINS_3RefINS_13DebugRenderer8GeometryEEESt4pairIS4_N16DebugRendererImp9InstancesEENS_18UnorderedMapDetailIS4_S7_EENS_4HashIS4_EESt8equal_toIS4_EE12IteratorBaseISF_NSF_8iteratorEEneERKSH_(ptr noundef nonnull align 8 dereferenceable(12), ptr noundef nonnull align 8 dereferenceable(12)) #6 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(80) ptr @_ZN3JPH9HashTableINS_3RefINS_13DebugRenderer8GeometryEEESt4pairIS4_N16DebugRendererImp9InstancesEENS_18UnorderedMapDetailIS4_S7_EENS_4HashIS4_EESt8equal_toIS4_EE8iteratordeEv(ptr noundef nonnull align 8 dereferenceable(12)) #6 align 2

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

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

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

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

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef zeroext i1 @_ZNK7Frustum8OverlapsERKN3JPH5AABoxE(ptr noundef nonnull align 16 dereferenceable(80), ptr noundef nonnull align 16 dereferenceable(32)) #3 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(12) ptr @_ZNK3JPH13DebugRenderer8Geometry6GetLODENS_4Vec3ERKNS_5AABoxEf(ptr noundef nonnull align 16 dereferenceable(64), double, double, ptr noundef nonnull align 16 dereferenceable(32), float noundef) #6 align 2

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

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZN3JPH5ArrayIiNS_12STLAllocatorIiEEE9push_backEOi(ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 4 dereferenceable(4)) #3 align 2

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(12) ptr @_ZN3JPH9HashTableINS_3RefINS_13DebugRenderer8GeometryEEESt4pairIS4_N16DebugRendererImp9InstancesEENS_18UnorderedMapDetailIS4_S7_EENS_4HashIS4_EESt8equal_toIS4_EE12IteratorBaseISF_NSF_8iteratorEEppEv(ptr noundef nonnull align 8 dereferenceable(12)) #6 align 2

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZNK3JPH9HashTableINS_3RefINS_13DebugRenderer8GeometryEEESt4pairIS4_N16DebugRendererImp9InstancesEENS_18UnorderedMapDetailIS4_S7_EENS_4HashIS4_EESt8equal_toIS4_EE5emptyEv(ptr noundef nonnull align 8 dereferenceable(28)) #5 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZN16DebugRendererImp13DrawInstancesEPKN3JPH13DebugRenderer8GeometryERKNS0_5ArrayIiNS0_12STLAllocatorIiEEEE(ptr noundef nonnull align 16 dereferenceable(816), ptr noundef, ptr noundef nonnull align 8 dereferenceable(24)) #3 align 2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef ptr @_ZNK3JPH3RefINS_13DebugRenderer8GeometryEEcvPS2_Ev(ptr noundef nonnull align 8 dereferenceable(8)) #4 align 2

attributes #0 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #1 = { nocallback nofree nounwind willreturn memory(argmem: readwrite) }
attributes #2 = { alwaysinline mustprogress uwtable "min-legal-vector-width"="128" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #3 = { 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 #4 = { 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 #5 = { 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 = { 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, !6, i64 320}
!10 = !{!"_ZTS16DebugRendererImp", !11, i64 0, !6, i64 320, !22, i64 328, !22, i64 336, !22, i64 344, !22, i64 352, !22, i64 360, !22, i64 368, !28, i64 376, !33, i64 424, !34, i64 432, !34, i64 464, !34, i64 496, !34, i64 528, !15, i64 560, !7, i64 568, !36, i64 584, !6, i64 592, !6, i64 600, !6, i64 608, !37, i64 624, !39, i64 656, !28, i64 680, !40, i64 728, !41, i64 736, !28, i64 760, !22, i64 808}
!11 = !{!"_ZTSN3JPH13DebugRendererE", !12, i64 8, !12, i64 16, !12, i64 24, !12, i64 32, !12, i64 40, !12, i64 48, !12, i64 56, !13, i64 64, !13, i64 96, !16, i64 128, !16, i64 160, !18, i64 192, !18, i64 224, !20, i64 256, !20, i64 288}
!12 = !{!"_ZTSN3JPH3RefINS_13DebugRenderer8GeometryEEE", !6, i64 0}
!13 = !{!"_ZTSN3JPH12UnorderedMapINS_13DebugRenderer15SwingConeLimitsENS_3RefINS1_8GeometryEEENS1_21SwingConeLimitsHasherESt8equal_toIS2_EEE", !14, i64 0}
!14 = !{!"_ZTSN3JPH9HashTableINS_13DebugRenderer15SwingConeLimitsESt4pairIS2_NS_3RefINS1_8GeometryEEEENS_18UnorderedMapDetailIS2_S6_EENS1_21SwingConeLimitsHasherESt8equal_toIS2_EEE", !6, i64 0, !6, i64 8, !15, i64 16, !15, i64 20, !15, i64 24}
!15 = !{!"int", !7, i64 0}
!16 = !{!"_ZTSN3JPH12UnorderedMapINS_13DebugRenderer18SwingPyramidLimitsENS_3RefINS1_8GeometryEEENS1_24SwingPyramidLimitsHasherESt8equal_toIS2_EEE", !17, i64 0}
!17 = !{!"_ZTSN3JPH9HashTableINS_13DebugRenderer18SwingPyramidLimitsESt4pairIS2_NS_3RefINS1_8GeometryEEEENS_18UnorderedMapDetailIS2_S6_EENS1_24SwingPyramidLimitsHasherESt8equal_toIS2_EEE", !6, i64 0, !6, i64 8, !15, i64 16, !15, i64 20, !15, i64 24}
!18 = !{!"_ZTSN3JPH12UnorderedMapIfNS_3RefINS_13DebugRenderer8GeometryEEENS_4HashIfEESt8equal_toIfEEE", !19, i64 0}
!19 = !{!"_ZTSN3JPH9HashTableIfSt4pairIfNS_3RefINS_13DebugRenderer8GeometryEEEENS_18UnorderedMapDetailIfS5_EENS_4HashIfEESt8equal_toIfEEE", !6, i64 0, !6, i64 8, !15, i64 16, !15, i64 20, !15, i64 24}
!20 = !{!"_ZTSN3JPH12UnorderedMapINS_13DebugRenderer15TaperedCylinderENS_3RefINS1_8GeometryEEENS1_21TaperedCylinderHasherESt8equal_toIS2_EEE", !21, i64 0}
!21 = !{!"_ZTSN3JPH9HashTableINS_13DebugRenderer15TaperedCylinderESt4pairIS2_NS_3RefINS1_8GeometryEEEENS_18UnorderedMapDetailIS2_S6_EENS1_21TaperedCylinderHasherESt8equal_toIS2_EEE", !6, i64 0, !6, i64 8, !15, i64 16, !15, i64 20, !15, i64 24}
!22 = !{!"_ZTSSt10unique_ptrI13PipelineStateSt14default_deleteIS0_EE", !23, i64 0}
!23 = !{!"_ZTSSt15__uniq_ptr_dataI13PipelineStateSt14default_deleteIS0_ELb1ELb1EE", !24, i64 0}
!24 = !{!"_ZTSSt15__uniq_ptr_implI13PipelineStateSt14default_deleteIS0_EE", !25, i64 0}
!25 = !{!"_ZTSSt5tupleIJP13PipelineStateSt14default_deleteIS0_EEE", !26, i64 0}
!26 = !{!"_ZTSSt11_Tuple_implILm0EJP13PipelineStateSt14default_deleteIS0_EEE", !27, i64 0}
!27 = !{!"_ZTSSt10_Head_baseILm0EP13PipelineStateLb0EE", !6, i64 0}
!28 = !{!"_ZTSN3JPH5MutexE", !29, i64 0, !31, i64 40}
!29 = !{!"_ZTSSt5mutex", !30, i64 0}
!30 = !{!"_ZTSSt12__mutex_base", !7, i64 0}
!31 = !{!"_ZTSNSt6thread2idE", !32, i64 0}
!32 = !{!"long", !7, i64 0}
!33 = !{!"_ZTSN3JPH3RefINS_16RefTargetVirtualEEE", !6, i64 0}
!34 = !{!"_ZTSN3JPH12UnorderedMapINS_3RefINS_13DebugRenderer8GeometryEEEN16DebugRendererImp9InstancesENS_4HashIS4_EESt8equal_toIS4_EEE", !35, i64 0}
!35 = !{!"_ZTSN3JPH9HashTableINS_3RefINS_13DebugRenderer8GeometryEEESt4pairIS4_N16DebugRendererImp9InstancesEENS_18UnorderedMapDetailIS4_S7_EENS_4HashIS4_EESt8equal_toIS4_EEE", !6, i64 0, !6, i64 8, !15, i64 16, !15, i64 20, !15, i64 24}
!36 = !{!"_ZTSN3JPH3RefI15RenderPrimitiveEE", !6, i64 0}
!37 = !{!"_ZTSN3JPH5AABoxE", !38, i64 0, !38, i64 16}
!38 = !{!"_ZTSN3JPH4Vec3E", !7, i64 0}
!39 = !{!"_ZTSN3JPH5ArrayIN16DebugRendererImp4TextENS_12STLAllocatorIS2_EEEE", !32, i64 0, !32, i64 8, !6, i64 16}
!40 = !{!"_ZTSN3JPH8RefConstI4FontEE", !6, i64 0}
!41 = !{!"_ZTSN3JPH5ArrayIN16DebugRendererImp4LineENS_12STLAllocatorIS2_EEEE", !32, i64 0, !32, i64 8, !6, i64 16}
!42 = !{!10, !15, i64 560}
!43 = !{!44, !44, i64 0}
!44 = !{!"vtable pointer", !8, i64 0}
!45 = !{!15, !15, i64 0}
!46 = !{!47, !6, i64 0}
!47 = !{!"_ZTSSt16initializer_listIPN3JPH12UnorderedMapINS0_3RefINS0_13DebugRenderer8GeometryEEEN16DebugRendererImp9InstancesENS0_4HashIS5_EESt8equal_toIS5_EEEE", !6, i64 0, !32, i64 8}
!48 = !{!47, !32, i64 8}
!49 = !{!32, !32, i64 0}
!50 = !{i64 2158316671}
!51 = !{!52, !52, i64 0}
!52 = !{!"bool", !7, i64 0}
!53 = !{i8 0, i8 2}
!54 = !{}
!55 = !{i64 0, i64 16, !56}
!56 = !{!7, !7, i64 0}
!57 = !{!58, !62, i64 176}
!58 = !{!"_ZTSN16DebugRendererImp19InstanceWithLODInfoE", !59, i64 0, !37, i64 144, !62, i64 176}
!59 = !{!"_ZTSN16DebugRendererImp8InstanceE", !60, i64 0, !60, i64 64, !61, i64 128}
!60 = !{!"_ZTSN3JPH5Mat44E", !7, i64 0}
!61 = !{!"_ZTSN3JPH5ColorE", !7, i64 0}
!62 = !{!"float", !7, i64 0}
!63 = distinct !{!63, !64}
!64 = !{!"llvm.loop.mustprogress"}
!65 = !{i64 0, i64 64, !56, i64 64, i64 64, !56, i64 128, i64 4, !56}
!66 = distinct !{!66, !64}
!67 = distinct !{!67, !64}


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

%"class.std::lock_guard" = type { ptr }
%"class.JPH::Array.62" = type { i64, i64, ptr }
%"class.std::initializer_list" = type { ptr, i64 }
%"class.JPH::HashTable<JPH::Ref<JPH::DebugRenderer::Geometry>, std::pair<JPH::Ref<JPH::DebugRenderer::Geometry>, DebugRendererImp::Instances>, JPH::UnorderedMapDetail<JPH::Ref<JPH::DebugRenderer::Geometry>, DebugRendererImp::Instances>, JPH::Hash<JPH::Ref<JPH::DebugRenderer::Geometry>>, std::equal_to<JPH::Ref<JPH::DebugRenderer::Geometry>>>::iterator" = type { %"class.JPH::HashTable<JPH::Ref<JPH::DebugRenderer::Geometry>, std::pair<JPH::Ref<JPH::DebugRenderer::Geometry>, DebugRendererImp::Instances>, JPH::UnorderedMapDetail<JPH::Ref<JPH::DebugRenderer::Geometry>, DebugRendererImp::Instances>, JPH::Hash<JPH::Ref<JPH::DebugRenderer::Geometry>>, std::equal_to<JPH::Ref<JPH::DebugRenderer::Geometry>>>::IteratorBase.base", [4 x i8] }
%"class.JPH::HashTable<JPH::Ref<JPH::DebugRenderer::Geometry>, std::pair<JPH::Ref<JPH::DebugRenderer::Geometry>, DebugRendererImp::Instances>, JPH::UnorderedMapDetail<JPH::Ref<JPH::DebugRenderer::Geometry>, DebugRendererImp::Instances>, JPH::Hash<JPH::Ref<JPH::DebugRenderer::Geometry>>, std::equal_to<JPH::Ref<JPH::DebugRenderer::Geometry>>>::IteratorBase.base" = type <{ ptr, i32 }>
%"class.JPH::Ref.41" = type { ptr }
%"struct.DebugRendererImp::Instance" = type <{ %"class.JPH::Mat44", %"class.JPH::Mat44", %"class.JPH::Color", [12 x i8] }>
%"class.JPH::Mat44" = type { [4 x %"class.JPH::Vec4"] }
%"class.JPH::Vec4" = type { %union.anon.13 }
%union.anon.13 = type { <4 x float> }
%"class.JPH::Color" = type { %union.anon.0 }
%union.anon.0 = type { i32 }

@.str.18 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.19 = external hidden unnamed_addr constant [96 x i8], align 1

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

declare i32 @__gxx_personality_v0(...)

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

; 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) #1

; Function Attrs: alwaysinline mustprogress uwtable
declare dso_local { double, double } @_ZNK3JPH4Vec3miES0_(ptr noundef nonnull align 16 dereferenceable(16), double, double) local_unnamed_addr #2 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef zeroext i1 @_ZN3JPH23AssertFailedParamHelperEPKcS1_jNS_15AssertLastParamE(ptr noundef, ptr noundef, i32 noundef) local_unnamed_addr #3

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef ptr @_ZNK3JPH3RefINS_13DebugRenderer8GeometryEEptEv(ptr noundef nonnull align 8 dereferenceable(8)) local_unnamed_addr #4 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local { double, double } @_ZNK8Renderer13GetBaseOffsetEv(ptr noundef nonnull align 16 dereferenceable(832)) local_unnamed_addr #5 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNSt10lock_guardIN3JPH5MutexEEC2ERS1_(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(48)) unnamed_addr #6 align 2

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN16DebugRendererImp17FinalizePrimitiveEv(ptr noundef nonnull align 16 dereferenceable(816)) local_unnamed_addr #6 align 2

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

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN16DebugRendererImp14DrawShadowPassEv(ptr noundef nonnull align 16 dereferenceable(816) %0) local_unnamed_addr #6 align 2 personality ptr @__gxx_personality_v0 {
  %2 = alloca %"class.std::lock_guard", align 8
  %3 = alloca [2 x %"class.JPH::Array.62"], align 16
  %4 = alloca %"class.std::initializer_list", align 8
  %5 = alloca [4 x ptr], align 8
  %6 = alloca %"class.JPH::HashTable<JPH::Ref<JPH::DebugRenderer::Geometry>, std::pair<JPH::Ref<JPH::DebugRenderer::Geometry>, DebugRendererImp::Instances>, JPH::UnorderedMapDetail<JPH::Ref<JPH::DebugRenderer::Geometry>, DebugRendererImp::Instances>, JPH::Hash<JPH::Ref<JPH::DebugRenderer::Geometry>>, std::equal_to<JPH::Ref<JPH::DebugRenderer::Geometry>>>::iterator", align 8
  %7 = alloca %"class.JPH::HashTable<JPH::Ref<JPH::DebugRenderer::Geometry>, std::pair<JPH::Ref<JPH::DebugRenderer::Geometry>, DebugRendererImp::Instances>, JPH::UnorderedMapDetail<JPH::Ref<JPH::DebugRenderer::Geometry>, DebugRendererImp::Instances>, JPH::Hash<JPH::Ref<JPH::DebugRenderer::Geometry>>, std::equal_to<JPH::Ref<JPH::DebugRenderer::Geometry>>>::iterator", align 8
  %8 = alloca i32, align 4
  %9 = alloca i32, align 4
  %10 = alloca %"class.JPH::HashTable<JPH::Ref<JPH::DebugRenderer::Geometry>, std::pair<JPH::Ref<JPH::DebugRenderer::Geometry>, DebugRendererImp::Instances>, JPH::UnorderedMapDetail<JPH::Ref<JPH::DebugRenderer::Geometry>, DebugRendererImp::Instances>, JPH::Hash<JPH::Ref<JPH::DebugRenderer::Geometry>>, std::equal_to<JPH::Ref<JPH::DebugRenderer::Geometry>>>::iterator", align 8
  %11 = alloca %"class.JPH::HashTable<JPH::Ref<JPH::DebugRenderer::Geometry>, std::pair<JPH::Ref<JPH::DebugRenderer::Geometry>, DebugRendererImp::Instances>, JPH::UnorderedMapDetail<JPH::Ref<JPH::DebugRenderer::Geometry>, DebugRendererImp::Instances>, JPH::Hash<JPH::Ref<JPH::DebugRenderer::Geometry>>, std::equal_to<JPH::Ref<JPH::DebugRenderer::Geometry>>>::iterator", align 8
  %12 = alloca %"class.JPH::HashTable<JPH::Ref<JPH::DebugRenderer::Geometry>, std::pair<JPH::Ref<JPH::DebugRenderer::Geometry>, DebugRendererImp::Instances>, JPH::UnorderedMapDetail<JPH::Ref<JPH::DebugRenderer::Geometry>, DebugRendererImp::Instances>, JPH::Hash<JPH::Ref<JPH::DebugRenderer::Geometry>>, std::equal_to<JPH::Ref<JPH::DebugRenderer::Geometry>>>::iterator", align 8
  %13 = alloca %"class.JPH::HashTable<JPH::Ref<JPH::DebugRenderer::Geometry>, std::pair<JPH::Ref<JPH::DebugRenderer::Geometry>, DebugRendererImp::Instances>, JPH::UnorderedMapDetail<JPH::Ref<JPH::DebugRenderer::Geometry>, DebugRendererImp::Instances>, JPH::Hash<JPH::Ref<JPH::DebugRenderer::Geometry>>, std::equal_to<JPH::Ref<JPH::DebugRenderer::Geometry>>>::iterator", align 8
  %14 = alloca %"class.JPH::HashTable<JPH::Ref<JPH::DebugRenderer::Geometry>, std::pair<JPH::Ref<JPH::DebugRenderer::Geometry>, DebugRendererImp::Instances>, JPH::UnorderedMapDetail<JPH::Ref<JPH::DebugRenderer::Geometry>, DebugRendererImp::Instances>, JPH::Hash<JPH::Ref<JPH::DebugRenderer::Geometry>>, std::equal_to<JPH::Ref<JPH::DebugRenderer::Geometry>>>::iterator", align 8
  %15 = alloca %"class.JPH::HashTable<JPH::Ref<JPH::DebugRenderer::Geometry>, std::pair<JPH::Ref<JPH::DebugRenderer::Geometry>, DebugRendererImp::Instances>, JPH::UnorderedMapDetail<JPH::Ref<JPH::DebugRenderer::Geometry>, DebugRendererImp::Instances>, JPH::Hash<JPH::Ref<JPH::DebugRenderer::Geometry>>, std::equal_to<JPH::Ref<JPH::DebugRenderer::Geometry>>>::iterator", align 8
  %16 = alloca %"class.JPH::HashTable<JPH::Ref<JPH::DebugRenderer::Geometry>, std::pair<JPH::Ref<JPH::DebugRenderer::Geometry>, DebugRendererImp::Instances>, JPH::UnorderedMapDetail<JPH::Ref<JPH::DebugRenderer::Geometry>, DebugRendererImp::Instances>, JPH::Hash<JPH::Ref<JPH::DebugRenderer::Geometry>>, std::equal_to<JPH::Ref<JPH::DebugRenderer::Geometry>>>::iterator", align 8
  %17 = alloca %"class.JPH::HashTable<JPH::Ref<JPH::DebugRenderer::Geometry>, std::pair<JPH::Ref<JPH::DebugRenderer::Geometry>, DebugRendererImp::Instances>, JPH::UnorderedMapDetail<JPH::Ref<JPH::DebugRenderer::Geometry>, DebugRendererImp::Instances>, JPH::Hash<JPH::Ref<JPH::DebugRenderer::Geometry>>, std::equal_to<JPH::Ref<JPH::DebugRenderer::Geometry>>>::iterator", align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %2) #7
  %18 = getelementptr inbounds i8, ptr %0, i64 376
  call void @_ZNSt10lock_guardIN3JPH5MutexEEC2ERS1_(ptr noundef nonnull align 8 dereferenceable(8) %2, ptr noundef nonnull align 8 dereferenceable(48) %18)
  invoke void @_ZN16DebugRendererImp17FinalizePrimitiveEv(ptr noundef nonnull align 16 dereferenceable(816) %0)
          to label %19 unwind label %74

19:                                               ; preds = %1
  %20 = getelementptr inbounds i8, ptr %0, i64 320
  %21 = load ptr, ptr %20, align 16, !tbaa !5
  %22 = invoke noundef nonnull align 16 dereferenceable(52) ptr @_ZNK8Renderer14GetCameraStateEv(ptr noundef nonnull align 16 dereferenceable(832) %21)
          to label %23 unwind label %76

23:                                               ; preds = %19
  %24 = load ptr, ptr %20, align 16, !tbaa !5
  %25 = call { double, double } @_ZNK8Renderer13GetBaseOffsetEv(ptr noundef nonnull align 16 dereferenceable(832) %24)
  %26 = extractvalue { double, double } %25, 0
  %27 = extractvalue { double, double } %25, 1
  %28 = invoke { double, double } @_ZNK3JPH4Vec3miES0_(ptr noundef nonnull align 16 dereferenceable(16) %22, double %26, double %27)
          to label %29 unwind label %76

29:                                               ; preds = %23
  %30 = extractvalue { double, double } %28, 0
  %31 = extractvalue { double, double } %28, 1
  %32 = load ptr, ptr %20, align 16, !tbaa !5
  %33 = invoke noundef nonnull align 16 dereferenceable(80) ptr @_ZNK8Renderer16GetCameraFrustumEv(ptr noundef nonnull align 16 dereferenceable(832) %32)
          to label %34 unwind label %78

34:                                               ; preds = %29
  %35 = load ptr, ptr %20, align 16, !tbaa !5
  %36 = invoke noundef nonnull align 16 dereferenceable(80) ptr @_ZNK8Renderer15GetLightFrustumEv(ptr noundef nonnull align 16 dereferenceable(832) %35)
          to label %37 unwind label %80

37:                                               ; preds = %34
  %38 = getelementptr inbounds i8, ptr %0, i64 560
  %39 = load i32, ptr %38, align 16, !tbaa !41
  %40 = icmp sgt i32 %39, 0
  br i1 %40, label %41, label %211

41:                                               ; preds = %37
  %42 = load ptr, ptr %20, align 16, !tbaa !5
  %43 = invoke noundef i32 @_ZNK8Renderer20GetCurrentFrameIndexEv(ptr noundef nonnull align 16 dereferenceable(832) %42)
          to label %44 unwind label %82

44:                                               ; preds = %41
  %45 = getelementptr inbounds i8, ptr %0, i64 568
  %46 = zext i32 %43 to i64
  %47 = getelementptr inbounds [2 x %"class.JPH::Ref.41"], ptr %45, i64 0, i64 %46
  %48 = call noundef ptr @_ZNK3JPH3RefI15RenderInstancesEcvPS1_Ev(ptr noundef nonnull align 8 dereferenceable(8) %47)
  %49 = load i32, ptr %38, align 16, !tbaa !41
  %50 = shl nsw i32 %49, 1
  %51 = load ptr, ptr %48, align 8, !tbaa !42
  %52 = getelementptr inbounds i8, ptr %51, i64 24
  %53 = load ptr, ptr %52, align 8
  invoke void %53(ptr noundef nonnull align 8 dereferenceable(12) %48, i32 noundef %50, i32 noundef 144)
          to label %54 unwind label %82

54:                                               ; preds = %44
  %55 = load ptr, ptr %48, align 8, !tbaa !42
  %56 = getelementptr inbounds i8, ptr %55, i64 32
  %57 = load ptr, ptr %56, align 8
  %58 = invoke noundef ptr %57(ptr noundef nonnull align 8 dereferenceable(12) %48)
          to label %59 unwind label %84

59:                                               ; preds = %54
  call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %3) #7
  call void @_ZN3JPH5ArrayINS0_IiNS_12STLAllocatorIiEEEENS1_IS3_EEEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %3) #7
  %.ptr.1 = getelementptr inbounds i8, ptr %3, i64 24
  call void @_ZN3JPH5ArrayINS0_IiNS_12STLAllocatorIiEEEENS1_IS3_EEEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %.ptr.1) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %4) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %5) #7
  %60 = getelementptr inbounds i8, ptr %0, i64 464
  store ptr %60, ptr %5, align 8, !tbaa !44
  %61 = getelementptr inbounds i8, ptr %5, i64 8
  %62 = getelementptr inbounds i8, ptr %0, i64 496
  store ptr %62, ptr %61, align 8, !tbaa !44
  %63 = getelementptr inbounds i8, ptr %5, i64 16
  %64 = getelementptr inbounds i8, ptr %0, i64 528
  store ptr %64, ptr %63, align 8, !tbaa !44
  %65 = getelementptr inbounds i8, ptr %5, i64 24
  %66 = getelementptr inbounds i8, ptr %0, i64 432
  store ptr %66, ptr %65, align 8, !tbaa !44
  store ptr %5, ptr %4, align 8, !tbaa !45
  %67 = getelementptr inbounds i8, ptr %4, i64 8
  store i64 4, ptr %67, align 8, !tbaa !47
  %68 = call noundef ptr @_ZNKSt16initializer_listIPN3JPH12UnorderedMapINS0_3RefINS0_13DebugRenderer8GeometryEEEN16DebugRendererImp9InstancesENS0_4HashIS5_EESt8equal_toIS5_EEEE5beginEv(ptr noundef nonnull align 8 dereferenceable(16) %4) #7
  %69 = call noundef ptr @_ZNKSt16initializer_listIPN3JPH12UnorderedMapINS0_3RefINS0_13DebugRenderer8GeometryEEEN16DebugRendererImp9InstancesENS0_4HashIS5_EESt8equal_toIS5_EEEE3endEv(ptr noundef nonnull align 8 dereferenceable(16) %4) #7
  %.not248 = icmp eq ptr %68, %69
  br i1 %.not248, label %._crit_edge253, label %.lr.ph252

._crit_edge253:                                   ; preds = %90, %59
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %5) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %4) #7
  %70 = load ptr, ptr %48, align 8, !tbaa !42
  %71 = getelementptr inbounds i8, ptr %70, i64 40
  %72 = load ptr, ptr %71, align 8
  invoke void %72(ptr noundef nonnull align 8 dereferenceable(12) %48)
          to label %.preheader190.preheader unwind label %207

.preheader190.preheader:                          ; preds = %._crit_edge253
  %73 = getelementptr inbounds i8, ptr %3, i64 24
  call void @_ZN3JPH5ArrayINS0_IiNS_12STLAllocatorIiEEEENS1_IS3_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %73) #7
  call void @_ZN3JPH5ArrayINS0_IiNS_12STLAllocatorIiEEEENS1_IS3_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %3) #7
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %3) #7
  br label %211

74:                                               ; preds = %1
  %75 = landingpad { ptr, i32 }
          cleanup
  br label %318

76:                                               ; preds = %23, %19
  %77 = landingpad { ptr, i32 }
          cleanup
  br label %318

78:                                               ; preds = %29
  %79 = landingpad { ptr, i32 }
          cleanup
  br label %318

80:                                               ; preds = %293, %266, %217, %34
  %81 = landingpad { ptr, i32 }
          cleanup
  br label %318

82:                                               ; preds = %44, %41
  %83 = landingpad { ptr, i32 }
          cleanup
  br label %318

84:                                               ; preds = %54
  %85 = landingpad { ptr, i32 }
          cleanup
  br label %318

.lr.ph252:                                        ; preds = %59, %90
  %.0121250 = phi i32 [ %.1122, %90 ], [ 0, %59 ]
  %.0126249 = phi ptr [ %91, %90 ], [ %68, %59 ]
  %86 = load ptr, ptr %.0126249, align 8, !tbaa !44
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %6) #7
  invoke void @_ZN3JPH9HashTableINS_3RefINS_13DebugRenderer8GeometryEEESt4pairIS4_N16DebugRendererImp9InstancesEENS_18UnorderedMapDetailIS4_S7_EENS_4HashIS4_EESt8equal_toIS4_EE5beginEv(ptr dead_on_unwind nonnull writable sret(%"class.JPH::HashTable<JPH::Ref<JPH::DebugRenderer::Geometry>, std::pair<JPH::Ref<JPH::DebugRenderer::Geometry>, DebugRendererImp::Instances>, JPH::UnorderedMapDetail<JPH::Ref<JPH::DebugRenderer::Geometry>, DebugRendererImp::Instances>, JPH::Hash<JPH::Ref<JPH::DebugRenderer::Geometry>>, std::equal_to<JPH::Ref<JPH::DebugRenderer::Geometry>>>::iterator") align 8 %6, ptr noundef nonnull align 8 dereferenceable(28) %86)
          to label %87 unwind label %92

87:                                               ; preds = %.lr.ph252
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %7) #7
  invoke void @_ZN3JPH9HashTableINS_3RefINS_13DebugRenderer8GeometryEEESt4pairIS4_N16DebugRendererImp9InstancesEENS_18UnorderedMapDetailIS4_S7_EENS_4HashIS4_EESt8equal_toIS4_EE3endEv(ptr dead_on_unwind nonnull writable sret(%"class.JPH::HashTable<JPH::Ref<JPH::DebugRenderer::Geometry>, std::pair<JPH::Ref<JPH::DebugRenderer::Geometry>, DebugRendererImp::Instances>, JPH::UnorderedMapDetail<JPH::Ref<JPH::DebugRenderer::Geometry>, DebugRendererImp::Instances>, JPH::Hash<JPH::Ref<JPH::DebugRenderer::Geometry>>, std::equal_to<JPH::Ref<JPH::DebugRenderer::Geometry>>>::iterator") align 8 %7, ptr noundef nonnull align 8 dereferenceable(28) %86)
          to label %.preheader192 unwind label %.loopexit.split-lp194

.preheader192:                                    ; preds = %87, %.split237.us
  %.1122 = phi i32 [ %.us-phi238, %.split237.us ], [ %.0121250, %87 ]
  %88 = invoke noundef zeroext i1 @_ZNK3JPH9HashTableINS_3RefINS_13DebugRenderer8GeometryEEESt4pairIS4_N16DebugRendererImp9InstancesEENS_18UnorderedMapDetailIS4_S7_EENS_4HashIS4_EESt8equal_toIS4_EE12IteratorBaseISF_NSF_8iteratorEEneERKSH_(ptr noundef nonnull align 8 dereferenceable(12) %6, ptr noundef nonnull align 8 dereferenceable(12) %7)
          to label %89 unwind label %.loopexit193

89:                                               ; preds = %.preheader192
  br i1 %88, label %94, label %90

90:                                               ; preds = %89
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %7) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %6) #7
  %91 = getelementptr inbounds i8, ptr %.0126249, i64 8
  %.not = icmp eq ptr %91, %69
  br i1 %.not, label %._crit_edge253, label %.lr.ph252

92:                                               ; preds = %.lr.ph252
  %93 = landingpad { ptr, i32 }
          cleanup
  br label %206

.loopexit193:                                     ; preds = %.preheader192, %.split237.us
  %lpad.loopexit195 = landingpad { ptr, i32 }
          cleanup
  br label %.split240.us

.loopexit.split-lp194:                            ; preds = %87
  %lpad.loopexit.split-lp196 = landingpad { ptr, i32 }
          cleanup
  br label %.split240.us

94:                                               ; preds = %89
  %95 = invoke noundef nonnull align 8 dereferenceable(80) ptr @_ZN3JPH9HashTableINS_3RefINS_13DebugRenderer8GeometryEEESt4pairIS4_N16DebugRendererImp9InstancesEENS_18UnorderedMapDetailIS4_S7_EENS_4HashIS4_EESt8equal_toIS4_EE8iteratordeEv(ptr noundef nonnull align 8 dereferenceable(12) %6)
          to label %96 unwind label %104

96:                                               ; preds = %94
  %97 = call noundef ptr @_ZNK3JPH3RefINS_13DebugRenderer8GeometryEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %95)
  %98 = getelementptr inbounds i8, ptr %97, i64 8
  %99 = call noundef i64 @_ZNK3JPH5ArrayINS_13DebugRenderer3LODENS_12STLAllocatorIS2_EEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %98)
  %.not148 = icmp eq i64 %99, 0
  br i1 %.not148, label %100, label %108

100:                                              ; preds = %96
  %101 = invoke noundef zeroext i1 @_ZN3JPH23AssertFailedParamHelperEPKcS1_jNS_15AssertLastParamE(ptr noundef nonnull @.str.18, ptr noundef nonnull @.str.19, i32 noundef 297)
          to label %102 unwind label %106

102:                                              ; preds = %100
  br i1 %101, label %103, label %108

103:                                              ; preds = %102
  call void asm sideeffect "int $$0x3", "~{dirflag},~{fpsr},~{flags}"() #7, !srcloc !48
  br label %108

104:                                              ; preds = %94
  %105 = landingpad { ptr, i32 }
          cleanup
  br label %.split240.us

106:                                              ; preds = %115, %111, %100
  %107 = landingpad { ptr, i32 }
          cleanup
  br label %.split240.us

108:                                              ; preds = %103, %102, %96
  %109 = call noundef i64 @_ZNK3JPH5ArrayINS0_IiNS_12STLAllocatorIiEEEENS1_IS3_EEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %3)
  %110 = icmp ult i64 %109, %99
  br i1 %110, label %111, label %112

111:                                              ; preds = %108
  invoke void @_ZN3JPH5ArrayINS0_IiNS_12STLAllocatorIiEEEENS1_IS3_EEE6resizeEm(ptr noundef nonnull align 8 dereferenceable(24) %3, i64 noundef %99)
          to label %112 unwind label %106

112:                                              ; preds = %111, %108
  %113 = call noundef i64 @_ZNK3JPH5ArrayINS0_IiNS_12STLAllocatorIiEEEENS1_IS3_EEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %.ptr.1)
  %114 = icmp ult i64 %113, %99
  br i1 %114, label %115, label %116

115:                                              ; preds = %112
  invoke void @_ZN3JPH5ArrayINS0_IiNS_12STLAllocatorIiEEEENS1_IS3_EEE6resizeEm(ptr noundef nonnull align 8 dereferenceable(24) %.ptr.1, i64 noundef %99)
          to label %116 unwind label %106

116:                                              ; preds = %115, %112
  %117 = getelementptr inbounds i8, ptr %95, i64 8
  %118 = call noundef i64 @_ZNK3JPH5ArrayIN16DebugRendererImp19InstanceWithLODInfoENS_12STLAllocatorIS2_EEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %117)
  %.not254 = icmp eq i64 %118, 0
  br i1 %.not254, label %._crit_edge, label %.lr.ph

._crit_edge:                                      ; preds = %198, %116
  %119 = getelementptr inbounds i8, ptr %95, i64 56
  %120 = getelementptr inbounds i8, ptr %95, i64 32
  %121 = add i64 %99, 1
  br i1 %.not148, label %.split.preheader, label %.split.us.preheader

.split.us.preheader:                              ; preds = %._crit_edge
  invoke void @_ZN3JPH5ArrayIiNS_12STLAllocatorIiEEE6resizeEm(ptr noundef nonnull align 8 dereferenceable(24) %119, i64 noundef %121)
          to label %.preheader191.us unwind label %.split235.us

.split.preheader:                                 ; preds = %._crit_edge
  invoke void @_ZN3JPH5ArrayIiNS_12STLAllocatorIiEEE6resizeEm(ptr noundef nonnull align 8 dereferenceable(24) %119, i64 noundef %121)
          to label %.preheader191 unwind label %.split235

.split.us.1:                                      ; preds = %._crit_edge230.us
  store i32 %.4125.lcssa.us, ptr %153, align 4, !tbaa !49
  invoke void @_ZN3JPH5ArrayIiNS_12STLAllocatorIiEEE6resizeEm(ptr noundef nonnull align 8 dereferenceable(24) %120, i64 noundef %121)
          to label %.preheader191.us.1 unwind label %.split235.us

.preheader191.us.1:                               ; preds = %.split.us.1, %._crit_edge226.us.1
  %.3124228.us.1 = phi i32 [ %.4125.lcssa.us.1, %._crit_edge226.us.1 ], [ %.4125.lcssa.us, %.split.us.1 ]
  %.0129227.us.1 = phi i64 [ %136, %._crit_edge226.us.1 ], [ 0, %.split.us.1 ]
  %122 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN3JPH5ArrayIiNS_12STLAllocatorIiEEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %120, i64 noundef %.0129227.us.1)
          to label %123 unwind label %.split240.us.loopexit.split-lp

123:                                              ; preds = %.preheader191.us.1
  store i32 %.3124228.us.1, ptr %122, align 4, !tbaa !49
  %124 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZN3JPH5ArrayINS0_IiNS_12STLAllocatorIiEEEENS1_IS3_EEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %.ptr.1, i64 noundef %.0129227.us.1)
          to label %125 unwind label %.split243.us.loopexit.split-lp

125:                                              ; preds = %123
  %126 = call noundef ptr @_ZN3JPH5ArrayIiNS_12STLAllocatorIiEEE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %124)
  %127 = call noundef ptr @_ZN3JPH5ArrayIiNS_12STLAllocatorIiEEE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %124)
  %.not149221.us.1 = icmp eq ptr %126, %127
  br i1 %.not149221.us.1, label %._crit_edge226.us.1, label %.lr.ph225.us.preheader.1

.lr.ph225.us.preheader.1:                         ; preds = %125
  %128 = sext i32 %.3124228.us.1 to i64
  br label %.lr.ph225.us.1

.lr.ph225.us.1:                                   ; preds = %132, %.lr.ph225.us.preheader.1
  %indvars.iv.1 = phi i64 [ %128, %.lr.ph225.us.preheader.1 ], [ %indvars.iv.next.1, %132 ]
  %.0130222.us.1 = phi ptr [ %126, %.lr.ph225.us.preheader.1 ], [ %134, %132 ]
  %129 = load i32, ptr %.0130222.us.1, align 4, !tbaa !49
  %130 = sext i32 %129 to i64
  %131 = invoke noundef nonnull align 16 dereferenceable(180) ptr @_ZNK3JPH5ArrayIN16DebugRendererImp19InstanceWithLODInfoENS_12STLAllocatorIS2_EEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %117, i64 noundef %130)
          to label %132 unwind label %.split246.us.loopexit.split-lp

132:                                              ; preds = %.lr.ph225.us.1
  %indvars.iv.next.1 = add nsw i64 %indvars.iv.1, 1
  %133 = getelementptr inbounds %"struct.DebugRendererImp::Instance", ptr %58, i64 %indvars.iv.1
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 16 dereferenceable(132) %133, ptr noundef nonnull align 16 dereferenceable(132) %131, i64 132, i1 false), !tbaa.struct !50
  %134 = getelementptr inbounds i8, ptr %.0130222.us.1, i64 4
  %.not149.us.1 = icmp eq ptr %134, %127
  br i1 %.not149.us.1, label %._crit_edge226.us.loopexit.1, label %.lr.ph225.us.1

._crit_edge226.us.loopexit.1:                     ; preds = %132
  %135 = trunc nsw i64 %indvars.iv.next.1 to i32
  br label %._crit_edge226.us.1

._crit_edge226.us.1:                              ; preds = %._crit_edge226.us.loopexit.1, %125
  %.4125.lcssa.us.1 = phi i32 [ %.3124228.us.1, %125 ], [ %135, %._crit_edge226.us.loopexit.1 ]
  call void @_ZN3JPH5ArrayIiNS_12STLAllocatorIiEEE5clearEv(ptr noundef nonnull align 8 dereferenceable(24) %124)
  %136 = add nuw i64 %.0129227.us.1, 1
  %exitcond.1.not = icmp eq i64 %136, %99
  br i1 %exitcond.1.not, label %._crit_edge230.us.1, label %.preheader191.us.1, !llvm.loop !52

._crit_edge230.us.1:                              ; preds = %._crit_edge226.us.1
  %137 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN3JPH5ArrayIiNS_12STLAllocatorIiEEE4backEv(ptr noundef nonnull align 8 dereferenceable(24) %120)
          to label %.split237.us.loopexit256 unwind label %.split235.us

.split237.us.loopexit256:                         ; preds = %._crit_edge230.us.1
  store i32 %.4125.lcssa.us.1, ptr %137, align 4, !tbaa !49
  br label %.split237.us

.preheader191.us:                                 ; preds = %.split.us.preheader, %._crit_edge226.us
  %.3124228.us = phi i32 [ %.4125.lcssa.us, %._crit_edge226.us ], [ %.1122, %.split.us.preheader ]
  %.0129227.us = phi i64 [ %152, %._crit_edge226.us ], [ 0, %.split.us.preheader ]
  %138 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN3JPH5ArrayIiNS_12STLAllocatorIiEEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %119, i64 noundef %.0129227.us)
          to label %139 unwind label %.split240.us.loopexit

139:                                              ; preds = %.preheader191.us
  store i32 %.3124228.us, ptr %138, align 4, !tbaa !49
  %140 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZN3JPH5ArrayINS0_IiNS_12STLAllocatorIiEEEENS1_IS3_EEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %3, i64 noundef %.0129227.us)
          to label %141 unwind label %.split243.us.loopexit

141:                                              ; preds = %139
  %142 = call noundef ptr @_ZN3JPH5ArrayIiNS_12STLAllocatorIiEEE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %140)
  %143 = call noundef ptr @_ZN3JPH5ArrayIiNS_12STLAllocatorIiEEE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %140)
  %.not149221.us = icmp eq ptr %142, %143
  br i1 %.not149221.us, label %._crit_edge226.us, label %.lr.ph225.us.preheader

.lr.ph225.us.preheader:                           ; preds = %141
  %144 = sext i32 %.3124228.us to i64
  br label %.lr.ph225.us

.lr.ph225.us:                                     ; preds = %.lr.ph225.us.preheader, %148
  %indvars.iv = phi i64 [ %144, %.lr.ph225.us.preheader ], [ %indvars.iv.next, %148 ]
  %.0130222.us = phi ptr [ %142, %.lr.ph225.us.preheader ], [ %150, %148 ]
  %145 = load i32, ptr %.0130222.us, align 4, !tbaa !49
  %146 = sext i32 %145 to i64
  %147 = invoke noundef nonnull align 16 dereferenceable(180) ptr @_ZNK3JPH5ArrayIN16DebugRendererImp19InstanceWithLODInfoENS_12STLAllocatorIS2_EEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %117, i64 noundef %146)
          to label %148 unwind label %.split246.us.loopexit

148:                                              ; preds = %.lr.ph225.us
  %indvars.iv.next = add nsw i64 %indvars.iv, 1
  %149 = getelementptr inbounds %"struct.DebugRendererImp::Instance", ptr %58, i64 %indvars.iv
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 16 dereferenceable(132) %149, ptr noundef nonnull align 16 dereferenceable(132) %147, i64 132, i1 false), !tbaa.struct !50
  %150 = getelementptr inbounds i8, ptr %.0130222.us, i64 4
  %.not149.us = icmp eq ptr %150, %143
  br i1 %.not149.us, label %._crit_edge226.us.loopexit, label %.lr.ph225.us

._crit_edge226.us.loopexit:                       ; preds = %148
  %151 = trunc nsw i64 %indvars.iv.next to i32
  br label %._crit_edge226.us

._crit_edge226.us:                                ; preds = %._crit_edge226.us.loopexit, %141
  %.4125.lcssa.us = phi i32 [ %.3124228.us, %141 ], [ %151, %._crit_edge226.us.loopexit ]
  call void @_ZN3JPH5ArrayIiNS_12STLAllocatorIiEEE5clearEv(ptr noundef nonnull align 8 dereferenceable(24) %140)
  %152 = add nuw i64 %.0129227.us, 1
  %exitcond.not = icmp eq i64 %152, %99
  br i1 %exitcond.not, label %._crit_edge230.us, label %.preheader191.us, !llvm.loop !52

._crit_edge230.us:                                ; preds = %._crit_edge226.us
  %153 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN3JPH5ArrayIiNS_12STLAllocatorIiEEE4backEv(ptr noundef nonnull align 8 dereferenceable(24) %119)
          to label %.split.us.1 unwind label %.split235.us

.split235.us:                                     ; preds = %._crit_edge230.us.1, %.split.us.1, %._crit_edge230.us, %.split.us.preheader
  %154 = landingpad { ptr, i32 }
          cleanup
  br label %.split240.us

.split240.us.loopexit:                            ; preds = %.preheader191.us
  %lpad.loopexit278 = landingpad { ptr, i32 }
          cleanup
  br label %.split240.us

.split240.us.loopexit.split-lp:                   ; preds = %.preheader191.us.1
  %lpad.loopexit.split-lp279 = landingpad { ptr, i32 }
          cleanup
  br label %.split240.us

.split243.us.loopexit:                            ; preds = %139
  %lpad.loopexit281 = landingpad { ptr, i32 }
          cleanup
  br label %.split240.us

.split243.us.loopexit.split-lp:                   ; preds = %123
  %lpad.loopexit.split-lp282 = landingpad { ptr, i32 }
          cleanup
  br label %.split240.us

.split246.us.loopexit:                            ; preds = %.lr.ph225.us
  %lpad.loopexit276 = landingpad { ptr, i32 }
          cleanup
  br label %.split240.us

.split246.us.loopexit.split-lp:                   ; preds = %.lr.ph225.us.1
  %lpad.loopexit.split-lp277 = landingpad { ptr, i32 }
          cleanup
  br label %.split240.us

.lr.ph:                                           ; preds = %116, %198
  %.0127220 = phi i64 [ %199, %198 ], [ 0, %116 ]
  %155 = invoke noundef nonnull align 16 dereferenceable(180) ptr @_ZNK3JPH5ArrayIN16DebugRendererImp19InstanceWithLODInfoENS_12STLAllocatorIS2_EEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %117, i64 noundef %.0127220)
          to label %156 unwind label %178

156:                                              ; preds = %.lr.ph
  %157 = getelementptr inbounds i8, ptr %155, i64 144
  %158 = invoke noundef zeroext i1 @_ZNK7Frustum8OverlapsERKN3JPH5AABoxE(ptr noundef nonnull align 16 dereferenceable(80) %36, ptr noundef nonnull align 16 dereferenceable(32) %157)
          to label %159 unwind label %180

159:                                              ; preds = %156
  %160 = invoke noundef zeroext i1 @_ZNK7Frustum8OverlapsERKN3JPH5AABoxE(ptr noundef nonnull align 16 dereferenceable(80) %33, ptr noundef nonnull align 16 dereferenceable(32) %157)
          to label %161 unwind label %182

161:                                              ; preds = %159
  %brmerge = or i1 %158, %160
  br i1 %brmerge, label %162, label %198

162:                                              ; preds = %161
  %163 = call noundef ptr @_ZNK3JPH3RefINS_13DebugRenderer8GeometryEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %95)
  %164 = getelementptr inbounds i8, ptr %155, i64 176
  %165 = load float, ptr %164, align 16, !tbaa !54
  %166 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZNK3JPH13DebugRenderer8Geometry6GetLODENS_4Vec3ERKNS_5AABoxEf(ptr noundef nonnull align 16 dereferenceable(64) %163, double %30, double %31, ptr noundef nonnull align 16 dereferenceable(32) %157, float noundef %165)
          to label %167 unwind label %184

167:                                              ; preds = %162
  %168 = call noundef ptr @_ZNK3JPH5ArrayINS_13DebugRenderer3LODENS_12STLAllocatorIS2_EEE4dataEv(ptr noundef nonnull align 8 dereferenceable(24) %98)
  %169 = ptrtoint ptr %166 to i64
  %170 = ptrtoint ptr %168 to i64
  %171 = sub i64 %169, %170
  %172 = ashr exact i64 %171, 4
  br i1 %158, label %173, label %190

173:                                              ; preds = %167
  %174 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZN3JPH5ArrayINS0_IiNS_12STLAllocatorIiEEEENS1_IS3_EEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %3, i64 noundef %172)
          to label %175 unwind label %186

175:                                              ; preds = %173
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %8) #7
  %176 = trunc i64 %.0127220 to i32
  store i32 %176, ptr %8, align 4, !tbaa !49
  invoke void @_ZN3JPH5ArrayIiNS_12STLAllocatorIiEEE9push_backEOi(ptr noundef nonnull align 8 dereferenceable(24) %174, ptr noundef nonnull align 4 dereferenceable(4) %8)
          to label %177 unwind label %188

177:                                              ; preds = %175
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %8) #7
  br label %190

178:                                              ; preds = %.lr.ph
  %179 = landingpad { ptr, i32 }
          cleanup
  br label %.split240.us

180:                                              ; preds = %156
  %181 = landingpad { ptr, i32 }
          cleanup
  br label %.split240.us

182:                                              ; preds = %159
  %183 = landingpad { ptr, i32 }
          cleanup
  br label %.split240.us

184:                                              ; preds = %162
  %185 = landingpad { ptr, i32 }
          cleanup
  br label %.split240.us

186:                                              ; preds = %191, %173
  %187 = landingpad { ptr, i32 }
          cleanup
  br label %.split240.us

188:                                              ; preds = %175
  %189 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %8) #7
  br label %.split240.us

190:                                              ; preds = %177, %167
  br i1 %160, label %191, label %198

191:                                              ; preds = %190
  %192 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZN3JPH5ArrayINS0_IiNS_12STLAllocatorIiEEEENS1_IS3_EEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %.ptr.1, i64 noundef %172)
          to label %193 unwind label %186

193:                                              ; preds = %191
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %9) #7
  %194 = trunc i64 %.0127220 to i32
  store i32 %194, ptr %9, align 4, !tbaa !49
  invoke void @_ZN3JPH5ArrayIiNS_12STLAllocatorIiEEE9push_backEOi(ptr noundef nonnull align 8 dereferenceable(24) %192, ptr noundef nonnull align 4 dereferenceable(4) %9)
          to label %195 unwind label %196

195:                                              ; preds = %193
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %9) #7
  br label %198

196:                                              ; preds = %193
  %197 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %9) #7
  br label %.split240.us

198:                                              ; preds = %190, %195, %161
  %199 = add nuw i64 %.0127220, 1
  %200 = call noundef i64 @_ZNK3JPH5ArrayIN16DebugRendererImp19InstanceWithLODInfoENS_12STLAllocatorIS2_EEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %117)
  %201 = icmp ult i64 %199, %200
  br i1 %201, label %.lr.ph, label %._crit_edge, !llvm.loop !60

.split237.us:                                     ; preds = %.split237.us.loopexit256, %.split237.us.loopexit
  %.us-phi238 = phi i32 [ %.1122, %.split237.us.loopexit ], [ %.4125.lcssa.us.1, %.split237.us.loopexit256 ]
  %202 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZN3JPH9HashTableINS_3RefINS_13DebugRenderer8GeometryEEESt4pairIS4_N16DebugRendererImp9InstancesEENS_18UnorderedMapDetailIS4_S7_EENS_4HashIS4_EESt8equal_toIS4_EE12IteratorBaseISF_NSF_8iteratorEEppEv(ptr noundef nonnull align 8 dereferenceable(12) %6)
          to label %.preheader192 unwind label %.loopexit193

.preheader191:                                    ; preds = %.split.preheader
  %203 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN3JPH5ArrayIiNS_12STLAllocatorIiEEE4backEv(ptr noundef nonnull align 8 dereferenceable(24) %119)
          to label %.split.1 unwind label %.split235

.split235:                                        ; preds = %.preheader191.1, %.split.1, %.preheader191, %.split.preheader
  %204 = landingpad { ptr, i32 }
          cleanup
  br label %.split240.us

.split.1:                                         ; preds = %.preheader191
  store i32 %.1122, ptr %203, align 4, !tbaa !49
  invoke void @_ZN3JPH5ArrayIiNS_12STLAllocatorIiEEE6resizeEm(ptr noundef nonnull align 8 dereferenceable(24) %120, i64 noundef %121)
          to label %.preheader191.1 unwind label %.split235

.preheader191.1:                                  ; preds = %.split.1
  %205 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN3JPH5ArrayIiNS_12STLAllocatorIiEEE4backEv(ptr noundef nonnull align 8 dereferenceable(24) %120)
          to label %.split237.us.loopexit unwind label %.split235

.split237.us.loopexit:                            ; preds = %.preheader191.1
  store i32 %.1122, ptr %205, align 4, !tbaa !49
  br label %.split237.us

.split240.us:                                     ; preds = %.split235.us, %.split235, %.split240.us.loopexit.split-lp, %.split240.us.loopexit, %.split243.us.loopexit.split-lp, %.split243.us.loopexit, %.split246.us.loopexit.split-lp, %.split246.us.loopexit, %.loopexit193, %.loopexit.split-lp194, %104, %180, %184, %196, %188, %186, %182, %178, %106
  %.pn154.pn.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %105, %104 ], [ %107, %106 ], [ %179, %178 ], [ %181, %180 ], [ %183, %182 ], [ %185, %184 ], [ %197, %196 ], [ %187, %186 ], [ %189, %188 ], [ %lpad.loopexit195, %.loopexit193 ], [ %lpad.loopexit.split-lp196, %.loopexit.split-lp194 ], [ %204, %.split235 ], [ %154, %.split235.us ], [ %lpad.loopexit278, %.split240.us.loopexit ], [ %lpad.loopexit.split-lp279, %.split240.us.loopexit.split-lp ], [ %lpad.loopexit281, %.split243.us.loopexit ], [ %lpad.loopexit.split-lp282, %.split243.us.loopexit.split-lp ], [ %lpad.loopexit276, %.split246.us.loopexit ], [ %lpad.loopexit.split-lp277, %.split246.us.loopexit.split-lp ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %7) #7
  br label %206

206:                                              ; preds = %.split240.us, %92
  %.pn154.pn.pn.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn154.pn.pn.pn.pn.pn.pn.pn.pn, %.split240.us ], [ %93, %92 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %6) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %5) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %4) #7
  br label %209

207:                                              ; preds = %._crit_edge253
  %208 = landingpad { ptr, i32 }
          cleanup
  br label %209

209:                                              ; preds = %207, %206
  %.pn154.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn154.pn.pn.pn.pn.pn.pn.pn.pn.pn, %206 ], [ %208, %207 ]
  %210 = getelementptr inbounds i8, ptr %3, i64 24
  call void @_ZN3JPH5ArrayINS0_IiNS_12STLAllocatorIiEEEENS1_IS3_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %210) #7
  call void @_ZN3JPH5ArrayINS0_IiNS_12STLAllocatorIiEEEENS1_IS3_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %3) #7
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %3) #7
  br label %318

211:                                              ; preds = %.preheader190.preheader, %37
  %212 = getelementptr inbounds i8, ptr %0, i64 464
  %213 = call noundef zeroext i1 @_ZNK3JPH9HashTableINS_3RefINS_13DebugRenderer8GeometryEEESt4pairIS4_N16DebugRendererImp9InstancesEENS_18UnorderedMapDetailIS4_S7_EENS_4HashIS4_EESt8equal_toIS4_EE5emptyEv(ptr noundef nonnull align 8 dereferenceable(28) %212)
  br i1 %213, label %214, label %217

214:                                              ; preds = %211
  %215 = getelementptr inbounds i8, ptr %0, i64 496
  %216 = call noundef zeroext i1 @_ZNK3JPH9HashTableINS_3RefINS_13DebugRenderer8GeometryEEESt4pairIS4_N16DebugRendererImp9InstancesEENS_18UnorderedMapDetailIS4_S7_EENS_4HashIS4_EESt8equal_toIS4_EE5emptyEv(ptr noundef nonnull align 8 dereferenceable(28) %215)
  br i1 %216, label %263, label %217

217:                                              ; preds = %214, %211
  %218 = getelementptr inbounds i8, ptr %0, i64 360
  %219 = call noundef ptr @_ZNKSt10unique_ptrI13PipelineStateSt14default_deleteIS0_EEptEv(ptr noundef nonnull align 8 dereferenceable(8) %218) #7
  %220 = load ptr, ptr %219, align 8, !tbaa !42
  %221 = getelementptr inbounds i8, ptr %220, i64 16
  %222 = load ptr, ptr %221, align 8
  invoke void %222(ptr noundef nonnull align 8 dereferenceable(8) %219)
          to label %223 unwind label %80

223:                                              ; preds = %217
  %224 = load i32, ptr %38, align 16, !tbaa !41
  %225 = icmp sgt i32 %224, 0
  br i1 %225, label %226, label %244

226:                                              ; preds = %223
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %10) #7
  invoke void @_ZN3JPH9HashTableINS_3RefINS_13DebugRenderer8GeometryEEESt4pairIS4_N16DebugRendererImp9InstancesEENS_18UnorderedMapDetailIS4_S7_EENS_4HashIS4_EESt8equal_toIS4_EE5beginEv(ptr dead_on_unwind nonnull writable sret(%"class.JPH::HashTable<JPH::Ref<JPH::DebugRenderer::Geometry>, std::pair<JPH::Ref<JPH::DebugRenderer::Geometry>, DebugRendererImp::Instances>, JPH::UnorderedMapDetail<JPH::Ref<JPH::DebugRenderer::Geometry>, DebugRendererImp::Instances>, JPH::Hash<JPH::Ref<JPH::DebugRenderer::Geometry>>, std::equal_to<JPH::Ref<JPH::DebugRenderer::Geometry>>>::iterator") align 8 %10, ptr noundef nonnull align 8 dereferenceable(28) %212)
          to label %227 unwind label %231

227:                                              ; preds = %226
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %11) #7
  invoke void @_ZN3JPH9HashTableINS_3RefINS_13DebugRenderer8GeometryEEESt4pairIS4_N16DebugRendererImp9InstancesEENS_18UnorderedMapDetailIS4_S7_EENS_4HashIS4_EESt8equal_toIS4_EE3endEv(ptr dead_on_unwind nonnull writable sret(%"class.JPH::HashTable<JPH::Ref<JPH::DebugRenderer::Geometry>, std::pair<JPH::Ref<JPH::DebugRenderer::Geometry>, DebugRendererImp::Instances>, JPH::UnorderedMapDetail<JPH::Ref<JPH::DebugRenderer::Geometry>, DebugRendererImp::Instances>, JPH::Hash<JPH::Ref<JPH::DebugRenderer::Geometry>>, std::equal_to<JPH::Ref<JPH::DebugRenderer::Geometry>>>::iterator") align 8 %11, ptr noundef nonnull align 8 dereferenceable(28) %212)
          to label %.preheader184 unwind label %.loopexit.split-lp186

.preheader184:                                    ; preds = %227, %238
  %228 = invoke noundef zeroext i1 @_ZNK3JPH9HashTableINS_3RefINS_13DebugRenderer8GeometryEEESt4pairIS4_N16DebugRendererImp9InstancesEENS_18UnorderedMapDetailIS4_S7_EENS_4HashIS4_EESt8equal_toIS4_EE12IteratorBaseISF_NSF_8iteratorEEneERKSH_(ptr noundef nonnull align 8 dereferenceable(12) %10, ptr noundef nonnull align 8 dereferenceable(12) %11)
          to label %229 unwind label %.loopexit185

229:                                              ; preds = %.preheader184
  br i1 %228, label %233, label %230

230:                                              ; preds = %229
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %11) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %10) #7
  br label %244

231:                                              ; preds = %226
  %232 = landingpad { ptr, i32 }
          cleanup
  br label %243

.loopexit185:                                     ; preds = %.preheader184, %238
  %lpad.loopexit187 = landingpad { ptr, i32 }
          cleanup
  br label %242

.loopexit.split-lp186:                            ; preds = %227
  %lpad.loopexit.split-lp188 = landingpad { ptr, i32 }
          cleanup
  br label %242

233:                                              ; preds = %229
  %234 = invoke noundef nonnull align 8 dereferenceable(80) ptr @_ZN3JPH9HashTableINS_3RefINS_13DebugRenderer8GeometryEEESt4pairIS4_N16DebugRendererImp9InstancesEENS_18UnorderedMapDetailIS4_S7_EENS_4HashIS4_EESt8equal_toIS4_EE8iteratordeEv(ptr noundef nonnull align 8 dereferenceable(12) %10)
          to label %235 unwind label %240

235:                                              ; preds = %233
  %236 = call noundef ptr @_ZNK3JPH3RefINS_13DebugRenderer8GeometryEEcvPS2_Ev(ptr noundef nonnull align 8 dereferenceable(8) %234)
  %237 = getelementptr inbounds i8, ptr %234, i64 56
  invoke void @_ZN16DebugRendererImp13DrawInstancesEPKN3JPH13DebugRenderer8GeometryERKNS0_5ArrayIiNS0_12STLAllocatorIiEEEE(ptr noundef nonnull align 16 dereferenceable(816) %0, ptr noundef %236, ptr noundef nonnull align 8 dereferenceable(24) %237)
          to label %238 unwind label %240

238:                                              ; preds = %235
  %239 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZN3JPH9HashTableINS_3RefINS_13DebugRenderer8GeometryEEESt4pairIS4_N16DebugRendererImp9InstancesEENS_18UnorderedMapDetailIS4_S7_EENS_4HashIS4_EESt8equal_toIS4_EE12IteratorBaseISF_NSF_8iteratorEEppEv(ptr noundef nonnull align 8 dereferenceable(12) %10)
          to label %.preheader184 unwind label %.loopexit185

240:                                              ; preds = %235, %233
  %241 = landingpad { ptr, i32 }
          cleanup
  br label %242

242:                                              ; preds = %.loopexit185, %.loopexit.split-lp186, %240
  %.pn139 = phi { ptr, i32 } [ %241, %240 ], [ %lpad.loopexit187, %.loopexit185 ], [ %lpad.loopexit.split-lp188, %.loopexit.split-lp186 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %11) #7
  br label %243

243:                                              ; preds = %242, %231
  %.pn139.pn = phi { ptr, i32 } [ %.pn139, %242 ], [ %232, %231 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %10) #7
  br label %318

244:                                              ; preds = %230, %223
  %245 = getelementptr inbounds i8, ptr %0, i64 496
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %12) #7
  invoke void @_ZN3JPH9HashTableINS_3RefINS_13DebugRenderer8GeometryEEESt4pairIS4_N16DebugRendererImp9InstancesEENS_18UnorderedMapDetailIS4_S7_EENS_4HashIS4_EESt8equal_toIS4_EE5beginEv(ptr dead_on_unwind nonnull writable sret(%"class.JPH::HashTable<JPH::Ref<JPH::DebugRenderer::Geometry>, std::pair<JPH::Ref<JPH::DebugRenderer::Geometry>, DebugRendererImp::Instances>, JPH::UnorderedMapDetail<JPH::Ref<JPH::DebugRenderer::Geometry>, DebugRendererImp::Instances>, JPH::Hash<JPH::Ref<JPH::DebugRenderer::Geometry>>, std::equal_to<JPH::Ref<JPH::DebugRenderer::Geometry>>>::iterator") align 8 %12, ptr noundef nonnull align 8 dereferenceable(28) %245)
          to label %246 unwind label %250

246:                                              ; preds = %244
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %13) #7
  invoke void @_ZN3JPH9HashTableINS_3RefINS_13DebugRenderer8GeometryEEESt4pairIS4_N16DebugRendererImp9InstancesEENS_18UnorderedMapDetailIS4_S7_EENS_4HashIS4_EESt8equal_toIS4_EE3endEv(ptr dead_on_unwind nonnull writable sret(%"class.JPH::HashTable<JPH::Ref<JPH::DebugRenderer::Geometry>, std::pair<JPH::Ref<JPH::DebugRenderer::Geometry>, DebugRendererImp::Instances>, JPH::UnorderedMapDetail<JPH::Ref<JPH::DebugRenderer::Geometry>, DebugRendererImp::Instances>, JPH::Hash<JPH::Ref<JPH::DebugRenderer::Geometry>>, std::equal_to<JPH::Ref<JPH::DebugRenderer::Geometry>>>::iterator") align 8 %13, ptr noundef nonnull align 8 dereferenceable(28) %245)
          to label %.preheader178 unwind label %.loopexit.split-lp180

.preheader178:                                    ; preds = %246, %257
  %247 = invoke noundef zeroext i1 @_ZNK3JPH9HashTableINS_3RefINS_13DebugRenderer8GeometryEEESt4pairIS4_N16DebugRendererImp9InstancesEENS_18UnorderedMapDetailIS4_S7_EENS_4HashIS4_EESt8equal_toIS4_EE12IteratorBaseISF_NSF_8iteratorEEneERKSH_(ptr noundef nonnull align 8 dereferenceable(12) %12, ptr noundef nonnull align 8 dereferenceable(12) %13)
          to label %248 unwind label %.loopexit179

248:                                              ; preds = %.preheader178
  br i1 %247, label %252, label %249

249:                                              ; preds = %248
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %13) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %12) #7
  br label %263

250:                                              ; preds = %244
  %251 = landingpad { ptr, i32 }
          cleanup
  br label %262

.loopexit179:                                     ; preds = %.preheader178, %257
  %lpad.loopexit181 = landingpad { ptr, i32 }
          cleanup
  br label %261

.loopexit.split-lp180:                            ; preds = %246
  %lpad.loopexit.split-lp182 = landingpad { ptr, i32 }
          cleanup
  br label %261

252:                                              ; preds = %248
  %253 = invoke noundef nonnull align 8 dereferenceable(80) ptr @_ZN3JPH9HashTableINS_3RefINS_13DebugRenderer8GeometryEEESt4pairIS4_N16DebugRendererImp9InstancesEENS_18UnorderedMapDetailIS4_S7_EENS_4HashIS4_EESt8equal_toIS4_EE8iteratordeEv(ptr noundef nonnull align 8 dereferenceable(12) %12)
          to label %254 unwind label %259

254:                                              ; preds = %252
  %255 = call noundef ptr @_ZNK3JPH3RefINS_13DebugRenderer8GeometryEEcvPS2_Ev(ptr noundef nonnull align 8 dereferenceable(8) %253)
  %256 = getelementptr inbounds i8, ptr %253, i64 56
  invoke void @_ZN16DebugRendererImp13DrawInstancesEPKN3JPH13DebugRenderer8GeometryERKNS0_5ArrayIiNS0_12STLAllocatorIiEEEE(ptr noundef nonnull align 16 dereferenceable(816) %0, ptr noundef %255, ptr noundef nonnull align 8 dereferenceable(24) %256)
          to label %257 unwind label %259

257:                                              ; preds = %254
  %258 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZN3JPH9HashTableINS_3RefINS_13DebugRenderer8GeometryEEESt4pairIS4_N16DebugRendererImp9InstancesEENS_18UnorderedMapDetailIS4_S7_EENS_4HashIS4_EESt8equal_toIS4_EE12IteratorBaseISF_NSF_8iteratorEEppEv(ptr noundef nonnull align 8 dereferenceable(12) %12)
          to label %.preheader178 unwind label %.loopexit179

259:                                              ; preds = %254, %252
  %260 = landingpad { ptr, i32 }
          cleanup
  br label %261

261:                                              ; preds = %.loopexit179, %.loopexit.split-lp180, %259
  %.pn = phi { ptr, i32 } [ %260, %259 ], [ %lpad.loopexit181, %.loopexit179 ], [ %lpad.loopexit.split-lp182, %.loopexit.split-lp180 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %13) #7
  br label %262

262:                                              ; preds = %261, %250
  %.pn.pn = phi { ptr, i32 } [ %.pn, %261 ], [ %251, %250 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %12) #7
  br label %318

263:                                              ; preds = %249, %214
  %264 = getelementptr inbounds i8, ptr %0, i64 528
  %265 = call noundef zeroext i1 @_ZNK3JPH9HashTableINS_3RefINS_13DebugRenderer8GeometryEEESt4pairIS4_N16DebugRendererImp9InstancesEENS_18UnorderedMapDetailIS4_S7_EENS_4HashIS4_EESt8equal_toIS4_EE5emptyEv(ptr noundef nonnull align 8 dereferenceable(28) %264)
  br i1 %265, label %290, label %266

266:                                              ; preds = %263
  %267 = getelementptr inbounds i8, ptr %0, i64 352
  %268 = call noundef ptr @_ZNKSt10unique_ptrI13PipelineStateSt14default_deleteIS0_EEptEv(ptr noundef nonnull align 8 dereferenceable(8) %267) #7
  %269 = load ptr, ptr %268, align 8, !tbaa !42
  %270 = getelementptr inbounds i8, ptr %269, i64 16
  %271 = load ptr, ptr %270, align 8
  invoke void %271(ptr noundef nonnull align 8 dereferenceable(8) %268)
          to label %272 unwind label %80

272:                                              ; preds = %266
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %14) #7
  invoke void @_ZN3JPH9HashTableINS_3RefINS_13DebugRenderer8GeometryEEESt4pairIS4_N16DebugRendererImp9InstancesEENS_18UnorderedMapDetailIS4_S7_EENS_4HashIS4_EESt8equal_toIS4_EE5beginEv(ptr dead_on_unwind nonnull writable sret(%"class.JPH::HashTable<JPH::Ref<JPH::DebugRenderer::Geometry>, std::pair<JPH::Ref<JPH::DebugRenderer::Geometry>, DebugRendererImp::Instances>, JPH::UnorderedMapDetail<JPH::Ref<JPH::DebugRenderer::Geometry>, DebugRendererImp::Instances>, JPH::Hash<JPH::Ref<JPH::DebugRenderer::Geometry>>, std::equal_to<JPH::Ref<JPH::DebugRenderer::Geometry>>>::iterator") align 8 %14, ptr noundef nonnull align 8 dereferenceable(28) %264)
          to label %273 unwind label %277

273:                                              ; preds = %272
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %15) #7
  invoke void @_ZN3JPH9HashTableINS_3RefINS_13DebugRenderer8GeometryEEESt4pairIS4_N16DebugRendererImp9InstancesEENS_18UnorderedMapDetailIS4_S7_EENS_4HashIS4_EESt8equal_toIS4_EE3endEv(ptr dead_on_unwind nonnull writable sret(%"class.JPH::HashTable<JPH::Ref<JPH::DebugRenderer::Geometry>, std::pair<JPH::Ref<JPH::DebugRenderer::Geometry>, DebugRendererImp::Instances>, JPH::UnorderedMapDetail<JPH::Ref<JPH::DebugRenderer::Geometry>, DebugRendererImp::Instances>, JPH::Hash<JPH::Ref<JPH::DebugRenderer::Geometry>>, std::equal_to<JPH::Ref<JPH::DebugRenderer::Geometry>>>::iterator") align 8 %15, ptr noundef nonnull align 8 dereferenceable(28) %264)
          to label %.preheader172 unwind label %.loopexit.split-lp174

.preheader172:                                    ; preds = %273, %284
  %274 = invoke noundef zeroext i1 @_ZNK3JPH9HashTableINS_3RefINS_13DebugRenderer8GeometryEEESt4pairIS4_N16DebugRendererImp9InstancesEENS_18UnorderedMapDetailIS4_S7_EENS_4HashIS4_EESt8equal_toIS4_EE12IteratorBaseISF_NSF_8iteratorEEneERKSH_(ptr noundef nonnull align 8 dereferenceable(12) %14, ptr noundef nonnull align 8 dereferenceable(12) %15)
          to label %275 unwind label %.loopexit173

275:                                              ; preds = %.preheader172
  br i1 %274, label %279, label %276

276:                                              ; preds = %275
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %15) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %14) #7
  br label %290

277:                                              ; preds = %272
  %278 = landingpad { ptr, i32 }
          cleanup
  br label %289

.loopexit173:                                     ; preds = %.preheader172, %284
  %lpad.loopexit175 = landingpad { ptr, i32 }
          cleanup
  br label %288

.loopexit.split-lp174:                            ; preds = %273
  %lpad.loopexit.split-lp176 = landingpad { ptr, i32 }
          cleanup
  br label %288

279:                                              ; preds = %275
  %280 = invoke noundef nonnull align 8 dereferenceable(80) ptr @_ZN3JPH9HashTableINS_3RefINS_13DebugRenderer8GeometryEEESt4pairIS4_N16DebugRendererImp9InstancesEENS_18UnorderedMapDetailIS4_S7_EENS_4HashIS4_EESt8equal_toIS4_EE8iteratordeEv(ptr noundef nonnull align 8 dereferenceable(12) %14)
          to label %281 unwind label %286

281:                                              ; preds = %279
  %282 = call noundef ptr @_ZNK3JPH3RefINS_13DebugRenderer8GeometryEEcvPS2_Ev(ptr noundef nonnull align 8 dereferenceable(8) %280)
  %283 = getelementptr inbounds i8, ptr %280, i64 56
  invoke void @_ZN16DebugRendererImp13DrawInstancesEPKN3JPH13DebugRenderer8GeometryERKNS0_5ArrayIiNS0_12STLAllocatorIiEEEE(ptr noundef nonnull align 16 dereferenceable(816) %0, ptr noundef %282, ptr noundef nonnull align 8 dereferenceable(24) %283)
          to label %284 unwind label %286

284:                                              ; preds = %281
  %285 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZN3JPH9HashTableINS_3RefINS_13DebugRenderer8GeometryEEESt4pairIS4_N16DebugRendererImp9InstancesEENS_18UnorderedMapDetailIS4_S7_EENS_4HashIS4_EESt8equal_toIS4_EE12IteratorBaseISF_NSF_8iteratorEEppEv(ptr noundef nonnull align 8 dereferenceable(12) %14)
          to label %.preheader172 unwind label %.loopexit173

286:                                              ; preds = %281, %279
  %287 = landingpad { ptr, i32 }
          cleanup
  br label %288

288:                                              ; preds = %.loopexit173, %.loopexit.split-lp174, %286
  %.pn142 = phi { ptr, i32 } [ %287, %286 ], [ %lpad.loopexit175, %.loopexit173 ], [ %lpad.loopexit.split-lp176, %.loopexit.split-lp174 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %15) #7
  br label %289

289:                                              ; preds = %288, %277
  %.pn142.pn = phi { ptr, i32 } [ %.pn142, %288 ], [ %278, %277 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %14) #7
  br label %318

290:                                              ; preds = %276, %263
  %291 = getelementptr inbounds i8, ptr %0, i64 432
  %292 = call noundef zeroext i1 @_ZNK3JPH9HashTableINS_3RefINS_13DebugRenderer8GeometryEEESt4pairIS4_N16DebugRendererImp9InstancesEENS_18UnorderedMapDetailIS4_S7_EENS_4HashIS4_EESt8equal_toIS4_EE5emptyEv(ptr noundef nonnull align 8 dereferenceable(28) %291)
  br i1 %292, label %317, label %293

293:                                              ; preds = %290
  %294 = getelementptr inbounds i8, ptr %0, i64 368
  %295 = call noundef ptr @_ZNKSt10unique_ptrI13PipelineStateSt14default_deleteIS0_EEptEv(ptr noundef nonnull align 8 dereferenceable(8) %294) #7
  %296 = load ptr, ptr %295, align 8, !tbaa !42
  %297 = getelementptr inbounds i8, ptr %296, i64 16
  %298 = load ptr, ptr %297, align 8
  invoke void %298(ptr noundef nonnull align 8 dereferenceable(8) %295)
          to label %299 unwind label %80

299:                                              ; preds = %293
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %16) #7
  invoke void @_ZN3JPH9HashTableINS_3RefINS_13DebugRenderer8GeometryEEESt4pairIS4_N16DebugRendererImp9InstancesEENS_18UnorderedMapDetailIS4_S7_EENS_4HashIS4_EESt8equal_toIS4_EE5beginEv(ptr dead_on_unwind nonnull writable sret(%"class.JPH::HashTable<JPH::Ref<JPH::DebugRenderer::Geometry>, std::pair<JPH::Ref<JPH::DebugRenderer::Geometry>, DebugRendererImp::Instances>, JPH::UnorderedMapDetail<JPH::Ref<JPH::DebugRenderer::Geometry>, DebugRendererImp::Instances>, JPH::Hash<JPH::Ref<JPH::DebugRenderer::Geometry>>, std::equal_to<JPH::Ref<JPH::DebugRenderer::Geometry>>>::iterator") align 8 %16, ptr noundef nonnull align 8 dereferenceable(28) %291)
          to label %300 unwind label %304

300:                                              ; preds = %299
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %17) #7
  invoke void @_ZN3JPH9HashTableINS_3RefINS_13DebugRenderer8GeometryEEESt4pairIS4_N16DebugRendererImp9InstancesEENS_18UnorderedMapDetailIS4_S7_EENS_4HashIS4_EESt8equal_toIS4_EE3endEv(ptr dead_on_unwind nonnull writable sret(%"class.JPH::HashTable<JPH::Ref<JPH::DebugRenderer::Geometry>, std::pair<JPH::Ref<JPH::DebugRenderer::Geometry>, DebugRendererImp::Instances>, JPH::UnorderedMapDetail<JPH::Ref<JPH::DebugRenderer::Geometry>, DebugRendererImp::Instances>, JPH::Hash<JPH::Ref<JPH::DebugRenderer::Geometry>>, std::equal_to<JPH::Ref<JPH::DebugRenderer::Geometry>>>::iterator") align 8 %17, ptr noundef nonnull align 8 dereferenceable(28) %291)
          to label %.preheader unwind label %.loopexit.split-lp

.preheader:                                       ; preds = %300, %311
  %301 = invoke noundef zeroext i1 @_ZNK3JPH9HashTableINS_3RefINS_13DebugRenderer8GeometryEEESt4pairIS4_N16DebugRendererImp9InstancesEENS_18UnorderedMapDetailIS4_S7_EENS_4HashIS4_EESt8equal_toIS4_EE12IteratorBaseISF_NSF_8iteratorEEneERKSH_(ptr noundef nonnull align 8 dereferenceable(12) %16, ptr noundef nonnull align 8 dereferenceable(12) %17)
          to label %302 unwind label %.loopexit

302:                                              ; preds = %.preheader
  br i1 %301, label %306, label %303

303:                                              ; preds = %302
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %17) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %16) #7
  br label %317

304:                                              ; preds = %299
  %305 = landingpad { ptr, i32 }
          cleanup
  br label %316

.loopexit:                                        ; preds = %.preheader, %311
  %lpad.loopexit = landingpad { ptr, i32 }
          cleanup
  br label %315

.loopexit.split-lp:                               ; preds = %300
  %lpad.loopexit.split-lp = landingpad { ptr, i32 }
          cleanup
  br label %315

306:                                              ; preds = %302
  %307 = invoke noundef nonnull align 8 dereferenceable(80) ptr @_ZN3JPH9HashTableINS_3RefINS_13DebugRenderer8GeometryEEESt4pairIS4_N16DebugRendererImp9InstancesEENS_18UnorderedMapDetailIS4_S7_EENS_4HashIS4_EESt8equal_toIS4_EE8iteratordeEv(ptr noundef nonnull align 8 dereferenceable(12) %16)
          to label %308 unwind label %313

308:                                              ; preds = %306
  %309 = call noundef ptr @_ZNK3JPH3RefINS_13DebugRenderer8GeometryEEcvPS2_Ev(ptr noundef nonnull align 8 dereferenceable(8) %307)
  %310 = getelementptr inbounds i8, ptr %307, i64 56
  invoke void @_ZN16DebugRendererImp13DrawInstancesEPKN3JPH13DebugRenderer8GeometryERKNS0_5ArrayIiNS0_12STLAllocatorIiEEEE(ptr noundef nonnull align 16 dereferenceable(816) %0, ptr noundef %309, ptr noundef nonnull align 8 dereferenceable(24) %310)
          to label %311 unwind label %313

311:                                              ; preds = %308
  %312 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZN3JPH9HashTableINS_3RefINS_13DebugRenderer8GeometryEEESt4pairIS4_N16DebugRendererImp9InstancesEENS_18UnorderedMapDetailIS4_S7_EENS_4HashIS4_EESt8equal_toIS4_EE12IteratorBaseISF_NSF_8iteratorEEppEv(ptr noundef nonnull align 8 dereferenceable(12) %16)
          to label %.preheader unwind label %.loopexit

313:                                              ; preds = %308, %306
  %314 = landingpad { ptr, i32 }
          cleanup
  br label %315

315:                                              ; preds = %.loopexit, %.loopexit.split-lp, %313
  %.pn145 = phi { ptr, i32 } [ %314, %313 ], [ %lpad.loopexit, %.loopexit ], [ %lpad.loopexit.split-lp, %.loopexit.split-lp ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %17) #7
  br label %316

316:                                              ; preds = %315, %304
  %.pn145.pn = phi { ptr, i32 } [ %.pn145, %315 ], [ %305, %304 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %16) #7
  br label %318

317:                                              ; preds = %303, %290
  call void @_ZNSt10lock_guardIN3JPH5MutexEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %2) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %2) #7
  ret void

318:                                              ; preds = %76, %80, %243, %262, %289, %316, %84, %209, %82, %78, %74
  %.pn154.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %75, %74 ], [ %77, %76 ], [ %79, %78 ], [ %.pn145.pn, %316 ], [ %81, %80 ], [ %.pn142.pn, %289 ], [ %.pn139.pn, %243 ], [ %.pn.pn, %262 ], [ %83, %82 ], [ %.pn154.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn, %209 ], [ %85, %84 ]
  call void @_ZNSt10lock_guardIN3JPH5MutexEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %2) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %2) #7
  resume { ptr, i32 } %.pn154.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn
}

; Function Attrs: mustprogress uwtable
declare dso_local noundef nonnull align 16 dereferenceable(52) ptr @_ZNK8Renderer14GetCameraStateEv(ptr noundef nonnull align 16 dereferenceable(832)) local_unnamed_addr #6 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef nonnull align 16 dereferenceable(80) ptr @_ZNK8Renderer16GetCameraFrustumEv(ptr noundef nonnull align 16 dereferenceable(832)) local_unnamed_addr #6 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef nonnull align 16 dereferenceable(80) ptr @_ZNK8Renderer15GetLightFrustumEv(ptr noundef nonnull align 16 dereferenceable(832)) local_unnamed_addr #6 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef i32 @_ZNK8Renderer20GetCurrentFrameIndexEv(ptr noundef nonnull align 16 dereferenceable(832)) local_unnamed_addr #6 align 2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef ptr @_ZNK3JPH3RefI15RenderInstancesEcvPS1_Ev(ptr noundef nonnull align 8 dereferenceable(8)) local_unnamed_addr #4 align 2

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef ptr @_ZNKSt16initializer_listIPN3JPH12UnorderedMapINS0_3RefINS0_13DebugRenderer8GeometryEEEN16DebugRendererImp9InstancesENS0_4HashIS5_EESt8equal_toIS5_EEEE5beginEv(ptr noundef nonnull align 8 dereferenceable(16)) local_unnamed_addr #5 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef ptr @_ZNKSt16initializer_listIPN3JPH12UnorderedMapINS0_3RefINS0_13DebugRenderer8GeometryEEEN16DebugRendererImp9InstancesENS0_4HashIS5_EESt8equal_toIS5_EEEE3endEv(ptr noundef nonnull align 8 dereferenceable(16)) local_unnamed_addr #5 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN3JPH9HashTableINS_3RefINS_13DebugRenderer8GeometryEEESt4pairIS4_N16DebugRendererImp9InstancesEENS_18UnorderedMapDetailIS4_S7_EENS_4HashIS4_EESt8equal_toIS4_EE5beginEv(ptr dead_on_unwind noalias writable sret(%"class.JPH::HashTable<JPH::Ref<JPH::DebugRenderer::Geometry>, std::pair<JPH::Ref<JPH::DebugRenderer::Geometry>, DebugRendererImp::Instances>, JPH::UnorderedMapDetail<JPH::Ref<JPH::DebugRenderer::Geometry>, DebugRendererImp::Instances>, JPH::Hash<JPH::Ref<JPH::DebugRenderer::Geometry>>, std::equal_to<JPH::Ref<JPH::DebugRenderer::Geometry>>>::iterator") align 8, ptr noundef nonnull align 8 dereferenceable(28)) local_unnamed_addr #6 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN3JPH9HashTableINS_3RefINS_13DebugRenderer8GeometryEEESt4pairIS4_N16DebugRendererImp9InstancesEENS_18UnorderedMapDetailIS4_S7_EENS_4HashIS4_EESt8equal_toIS4_EE3endEv(ptr dead_on_unwind noalias writable sret(%"class.JPH::HashTable<JPH::Ref<JPH::DebugRenderer::Geometry>, std::pair<JPH::Ref<JPH::DebugRenderer::Geometry>, DebugRendererImp::Instances>, JPH::UnorderedMapDetail<JPH::Ref<JPH::DebugRenderer::Geometry>, DebugRendererImp::Instances>, JPH::Hash<JPH::Ref<JPH::DebugRenderer::Geometry>>, std::equal_to<JPH::Ref<JPH::DebugRenderer::Geometry>>>::iterator") align 8, ptr noundef nonnull align 8 dereferenceable(28)) local_unnamed_addr #6 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef zeroext i1 @_ZNK3JPH9HashTableINS_3RefINS_13DebugRenderer8GeometryEEESt4pairIS4_N16DebugRendererImp9InstancesEENS_18UnorderedMapDetailIS4_S7_EENS_4HashIS4_EESt8equal_toIS4_EE12IteratorBaseISF_NSF_8iteratorEEneERKSH_(ptr noundef nonnull align 8 dereferenceable(12), ptr noundef nonnull align 8 dereferenceable(12)) local_unnamed_addr #6 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(80) ptr @_ZN3JPH9HashTableINS_3RefINS_13DebugRenderer8GeometryEEESt4pairIS4_N16DebugRendererImp9InstancesEENS_18UnorderedMapDetailIS4_S7_EENS_4HashIS4_EESt8equal_toIS4_EE8iteratordeEv(ptr noundef nonnull align 8 dereferenceable(12)) local_unnamed_addr #6 align 2

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

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

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

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

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef zeroext i1 @_ZNK7Frustum8OverlapsERKN3JPH5AABoxE(ptr noundef nonnull align 16 dereferenceable(80), ptr noundef nonnull align 16 dereferenceable(32)) local_unnamed_addr #3 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(12) ptr @_ZNK3JPH13DebugRenderer8Geometry6GetLODENS_4Vec3ERKNS_5AABoxEf(ptr noundef nonnull align 16 dereferenceable(64), double, double, ptr noundef nonnull align 16 dereferenceable(32), float noundef) local_unnamed_addr #6 align 2

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

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

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

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(12) ptr @_ZN3JPH9HashTableINS_3RefINS_13DebugRenderer8GeometryEEESt4pairIS4_N16DebugRendererImp9InstancesEENS_18UnorderedMapDetailIS4_S7_EENS_4HashIS4_EESt8equal_toIS4_EE12IteratorBaseISF_NSF_8iteratorEEppEv(ptr noundef nonnull align 8 dereferenceable(12)) local_unnamed_addr #6 align 2

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZNK3JPH9HashTableINS_3RefINS_13DebugRenderer8GeometryEEESt4pairIS4_N16DebugRendererImp9InstancesEENS_18UnorderedMapDetailIS4_S7_EENS_4HashIS4_EESt8equal_toIS4_EE5emptyEv(ptr noundef nonnull align 8 dereferenceable(28)) local_unnamed_addr #5 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZN16DebugRendererImp13DrawInstancesEPKN3JPH13DebugRenderer8GeometryERKNS0_5ArrayIiNS0_12STLAllocatorIiEEEE(ptr noundef nonnull align 16 dereferenceable(816), ptr noundef, ptr noundef nonnull align 8 dereferenceable(24)) local_unnamed_addr #3 align 2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef ptr @_ZNK3JPH3RefINS_13DebugRenderer8GeometryEEcvPS2_Ev(ptr noundef nonnull align 8 dereferenceable(8)) local_unnamed_addr #4 align 2

attributes #0 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #1 = { mustprogress nocallback nofree nounwind willreturn memory(argmem: readwrite) }
attributes #2 = { alwaysinline mustprogress uwtable "min-legal-vector-width"="128" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #3 = { 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 #4 = { 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 #5 = { 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 = { 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, !9, i64 320}
!6 = !{!"_ZTS16DebugRendererImp", !7, i64 0, !9, i64 320, !21, i64 328, !21, i64 336, !21, i64 344, !21, i64 352, !21, i64 360, !21, i64 368, !27, i64 376, !32, i64 424, !33, i64 432, !33, i64 464, !33, i64 496, !33, i64 528, !14, i64 560, !10, i64 568, !35, i64 584, !9, i64 592, !9, i64 600, !9, i64 608, !36, i64 624, !38, i64 656, !27, i64 680, !39, i64 728, !40, i64 736, !27, i64 760, !21, i64 808}
!7 = !{!"_ZTSN3JPH13DebugRendererE", !8, i64 8, !8, i64 16, !8, i64 24, !8, i64 32, !8, i64 40, !8, i64 48, !8, i64 56, !12, i64 64, !12, i64 96, !15, i64 128, !15, i64 160, !17, i64 192, !17, i64 224, !19, i64 256, !19, i64 288}
!8 = !{!"_ZTSN3JPH3RefINS_13DebugRenderer8GeometryEEE", !9, i64 0}
!9 = !{!"any pointer", !10, i64 0}
!10 = !{!"omnipotent char", !11, i64 0}
!11 = !{!"Simple C++ TBAA"}
!12 = !{!"_ZTSN3JPH12UnorderedMapINS_13DebugRenderer15SwingConeLimitsENS_3RefINS1_8GeometryEEENS1_21SwingConeLimitsHasherESt8equal_toIS2_EEE", !13, i64 0}
!13 = !{!"_ZTSN3JPH9HashTableINS_13DebugRenderer15SwingConeLimitsESt4pairIS2_NS_3RefINS1_8GeometryEEEENS_18UnorderedMapDetailIS2_S6_EENS1_21SwingConeLimitsHasherESt8equal_toIS2_EEE", !9, i64 0, !9, i64 8, !14, i64 16, !14, i64 20, !14, i64 24}
!14 = !{!"int", !10, i64 0}
!15 = !{!"_ZTSN3JPH12UnorderedMapINS_13DebugRenderer18SwingPyramidLimitsENS_3RefINS1_8GeometryEEENS1_24SwingPyramidLimitsHasherESt8equal_toIS2_EEE", !16, i64 0}
!16 = !{!"_ZTSN3JPH9HashTableINS_13DebugRenderer18SwingPyramidLimitsESt4pairIS2_NS_3RefINS1_8GeometryEEEENS_18UnorderedMapDetailIS2_S6_EENS1_24SwingPyramidLimitsHasherESt8equal_toIS2_EEE", !9, i64 0, !9, i64 8, !14, i64 16, !14, i64 20, !14, i64 24}
!17 = !{!"_ZTSN3JPH12UnorderedMapIfNS_3RefINS_13DebugRenderer8GeometryEEENS_4HashIfEESt8equal_toIfEEE", !18, i64 0}
!18 = !{!"_ZTSN3JPH9HashTableIfSt4pairIfNS_3RefINS_13DebugRenderer8GeometryEEEENS_18UnorderedMapDetailIfS5_EENS_4HashIfEESt8equal_toIfEEE", !9, i64 0, !9, i64 8, !14, i64 16, !14, i64 20, !14, i64 24}
!19 = !{!"_ZTSN3JPH12UnorderedMapINS_13DebugRenderer15TaperedCylinderENS_3RefINS1_8GeometryEEENS1_21TaperedCylinderHasherESt8equal_toIS2_EEE", !20, i64 0}
!20 = !{!"_ZTSN3JPH9HashTableINS_13DebugRenderer15TaperedCylinderESt4pairIS2_NS_3RefINS1_8GeometryEEEENS_18UnorderedMapDetailIS2_S6_EENS1_21TaperedCylinderHasherESt8equal_toIS2_EEE", !9, i64 0, !9, i64 8, !14, i64 16, !14, i64 20, !14, i64 24}
!21 = !{!"_ZTSSt10unique_ptrI13PipelineStateSt14default_deleteIS0_EE", !22, i64 0}
!22 = !{!"_ZTSSt15__uniq_ptr_dataI13PipelineStateSt14default_deleteIS0_ELb1ELb1EE", !23, i64 0}
!23 = !{!"_ZTSSt15__uniq_ptr_implI13PipelineStateSt14default_deleteIS0_EE", !24, i64 0}
!24 = !{!"_ZTSSt5tupleIJP13PipelineStateSt14default_deleteIS0_EEE", !25, i64 0}
!25 = !{!"_ZTSSt11_Tuple_implILm0EJP13PipelineStateSt14default_deleteIS0_EEE", !26, i64 0}
!26 = !{!"_ZTSSt10_Head_baseILm0EP13PipelineStateLb0EE", !9, i64 0}
!27 = !{!"_ZTSN3JPH5MutexE", !28, i64 0, !30, i64 40}
!28 = !{!"_ZTSSt5mutex", !29, i64 0}
!29 = !{!"_ZTSSt12__mutex_base", !10, i64 0}
!30 = !{!"_ZTSNSt6thread2idE", !31, i64 0}
!31 = !{!"long", !10, i64 0}
!32 = !{!"_ZTSN3JPH3RefINS_16RefTargetVirtualEEE", !9, i64 0}
!33 = !{!"_ZTSN3JPH12UnorderedMapINS_3RefINS_13DebugRenderer8GeometryEEEN16DebugRendererImp9InstancesENS_4HashIS4_EESt8equal_toIS4_EEE", !34, i64 0}
!34 = !{!"_ZTSN3JPH9HashTableINS_3RefINS_13DebugRenderer8GeometryEEESt4pairIS4_N16DebugRendererImp9InstancesEENS_18UnorderedMapDetailIS4_S7_EENS_4HashIS4_EESt8equal_toIS4_EEE", !9, i64 0, !9, i64 8, !14, i64 16, !14, i64 20, !14, i64 24}
!35 = !{!"_ZTSN3JPH3RefI15RenderPrimitiveEE", !9, i64 0}
!36 = !{!"_ZTSN3JPH5AABoxE", !37, i64 0, !37, i64 16}
!37 = !{!"_ZTSN3JPH4Vec3E", !10, i64 0}
!38 = !{!"_ZTSN3JPH5ArrayIN16DebugRendererImp4TextENS_12STLAllocatorIS2_EEEE", !31, i64 0, !31, i64 8, !9, i64 16}
!39 = !{!"_ZTSN3JPH8RefConstI4FontEE", !9, i64 0}
!40 = !{!"_ZTSN3JPH5ArrayIN16DebugRendererImp4LineENS_12STLAllocatorIS2_EEEE", !31, i64 0, !31, i64 8, !9, i64 16}
!41 = !{!6, !14, i64 560}
!42 = !{!43, !43, i64 0}
!43 = !{!"vtable pointer", !11, i64 0}
!44 = !{!9, !9, i64 0}
!45 = !{!46, !9, i64 0}
!46 = !{!"_ZTSSt16initializer_listIPN3JPH12UnorderedMapINS0_3RefINS0_13DebugRenderer8GeometryEEEN16DebugRendererImp9InstancesENS0_4HashIS5_EESt8equal_toIS5_EEEE", !9, i64 0, !31, i64 8}
!47 = !{!46, !31, i64 8}
!48 = !{i64 2158316671}
!49 = !{!14, !14, i64 0}
!50 = !{i64 0, i64 64, !51, i64 64, i64 64, !51, i64 128, i64 4, !51}
!51 = !{!10, !10, i64 0}
!52 = distinct !{!52, !53}
!53 = !{!"llvm.loop.mustprogress"}
!54 = !{!55, !59, i64 176}
!55 = !{!"_ZTSN16DebugRendererImp19InstanceWithLODInfoE", !56, i64 0, !36, i64 144, !59, i64 176}
!56 = !{!"_ZTSN16DebugRendererImp8InstanceE", !57, i64 0, !57, i64 64, !58, i64 128}
!57 = !{!"_ZTSN3JPH5Mat44E", !10, i64 0}
!58 = !{!"_ZTSN3JPH5ColorE", !10, i64 0}
!59 = !{!"float", !10, i64 0}
!60 = distinct !{!60, !53}


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