; LLVM IR from jrouwe/JoltPhysics :: Samples/SamplesApp.ll (ZN10SamplesApp16CreateProbeShapeEv)

; 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.JPH::RefConst.74" = type { ptr }
%"class.JPH::Vec3" = type { %union.anon }
%union.anon = type { <4 x float> }
%"class.JPH::Array.77" = type { i64, i64, ptr }
%"class.JPH::Result" = type <{ %union.anon.80, i8, [7 x i8] }>
%union.anon.80 = type { %"class.std::__cxx11::basic_string" }
%"class.std::__cxx11::basic_string" = type { %"struct.std::__cxx11::basic_string<char, std::char_traits<char>, JPH::STLAllocator<char>>::_Alloc_hider", i64, %union.anon.0 }
%"struct.std::__cxx11::basic_string<char, std::char_traits<char>, JPH::STLAllocator<char>>::_Alloc_hider" = type { ptr }
%union.anon.0 = type { i64, [8 x i8] }
%"class.JPH::ConvexHullShapeSettings" = type <{ %"class.JPH::ConvexShapeSettings.base", [4 x i8], %"class.JPH::Array.77", float, float, float, [4 x i8] }>
%"class.JPH::ConvexShapeSettings.base" = type <{ %"class.JPH::ShapeSettings", %"class.JPH::RefConst.76", float }>
%"class.JPH::ShapeSettings" = type { %"class.JPH::SerializableObject", %"class.JPH::RefTarget.82", i64, %"class.JPH::Result" }
%"class.JPH::SerializableObject" = type { ptr }
%"class.JPH::RefTarget.82" = type { %"struct.std::atomic" }
%"struct.std::atomic" = type { %"struct.std::__atomic_base" }
%"struct.std::__atomic_base" = type { i32 }
%"class.JPH::RefConst.76" = type { ptr }
%"class.JPH::TaperedCapsuleShapeSettings" = type { %"class.JPH::ConvexShapeSettings.base", float, float, float }
%"class.JPH::Quat" = type { %"class.JPH::Vec4" }
%"class.JPH::Vec4" = type { %union.anon.55 }
%union.anon.55 = type { <4 x float> }
%"class.JPH::StaticCompoundShapeSettings" = type { %"class.JPH::CompoundShapeSettings" }
%"class.JPH::CompoundShapeSettings" = type { %"class.JPH::ShapeSettings", %"class.JPH::Array.83" }
%"class.JPH::Array.83" = type { i64, i64, ptr }
%"class.JPH::Ref.86" = type { ptr }
%"class.JPH::MutableCompoundShapeSettings" = type { %"class.JPH::CompoundShapeSettings" }
%"struct.JPH::AssertLastParam" = type { i8 }
%class.SamplesApp = type <{ %class.Application, i32, float, i32, [4 x i8], ptr, ptr, ptr, %class.BPLayerInterfaceImpl, %class.ObjectVsBroadPhaseLayerFilterImpl, %class.ObjectLayerPairFilterImpl, ptr, ptr, %"struct.JPH::PhysicsSettings", [4 x i8], %"class.JPH::UnorderedMap", ptr, ptr, ptr, i32, i8, [3 x i8], float, i8, i8, i8, i8, %"class.JPH::Array", i32, i32, i32, i32, i8, [15 x i8], %"class.JPH::Vec3", i8, i8, i8, i8, float, i8, i8, i8, i8, i32, i8, [3 x i8], i32, float, i8, [3 x i8], float, float, i8, [7 x i8], %"class.JPH::Vec3", i8, [7 x i8], ptr, %"class.JPH::BodyID", [4 x i8], %"class.JPH::Ref", i32, float, float, i32, %"class.std::chrono::duration.3", [8 x i8] }>
%class.Application = type { ptr, [8 x i8], %struct.CameraState, %struct.CameraState, ptr, ptr, ptr, %"class.JPH::RefConst", ptr, ptr, ptr, ptr, %"class.std::__cxx11::basic_string", %"class.std::chrono::time_point", i8, i8, i8, i8, float, float, float, float, i32 }
%struct.CameraState = type <{ %"class.JPH::Vec3", %"class.JPH::Vec3", %"class.JPH::Vec3", float, [12 x i8] }>
%"class.JPH::RefConst" = type { ptr }
%"class.std::chrono::time_point" = type { %"class.std::chrono::duration" }
%"class.std::chrono::duration" = type { i64 }
%class.BPLayerInterfaceImpl = type <{ %"class.JPH::BroadPhaseLayerInterface", [2 x %"class.JPH::BroadPhaseLayer"], [6 x i8] }>
%"class.JPH::BroadPhaseLayerInterface" = type { ptr }
%"class.JPH::BroadPhaseLayer" = type { i8 }
%class.ObjectVsBroadPhaseLayerFilterImpl = type { %"class.JPH::ObjectVsBroadPhaseLayerFilter" }
%"class.JPH::ObjectVsBroadPhaseLayerFilter" = type { ptr }
%class.ObjectLayerPairFilterImpl = type { %"class.JPH::ObjectLayerPairFilter" }
%"class.JPH::ObjectLayerPairFilter" = type { ptr }
%"struct.JPH::PhysicsSettings" = type <{ i32, i32, i32, float, float, float, float, float, float, float, float, float, float, float, i32, i32, float, float, float, i8, i8, i8, i8, i8, i8, i8, i8 }>
%"class.JPH::UnorderedMap" = type { %"class.JPH::HashTable.base", [4 x i8] }
%"class.JPH::HashTable.base" = type <{ ptr, ptr, i32, i32, i32 }>
%"class.JPH::Array" = type { i64, i64, ptr }
%"class.JPH::BodyID" = type { i32 }
%"class.JPH::Ref" = type { ptr }
%"class.std::chrono::duration.3" = type { i64 }

@.str.146 = external hidden unnamed_addr constant [17 x i8], align 1
@.str.147 = external hidden unnamed_addr constant [75 x i8], align 1
@.str.148 = external hidden unnamed_addr constant [27 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: alwaysinline mustprogress uwtable
declare dso_local { double, double } @_ZN3JPH4Vec34sOneEv() #1 align 2

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

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

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

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN10SamplesApp16CreateProbeShapeEv(ptr dead_on_unwind noalias writable sret(%"class.JPH::RefConst.74") align 8 %0, ptr noundef nonnull align 16 dereferenceable(712) %1) #5 align 2 personality ptr @__gxx_personality_v0 {
  %3 = alloca ptr, align 8
  %4 = alloca ptr, align 8
  %5 = alloca i1, align 1
  %6 = alloca ptr, align 8
  %7 = alloca i32, align 4
  %8 = alloca %"class.JPH::Vec3", align 16
  %9 = alloca %"class.JPH::Array.77", align 8
  %10 = alloca %"class.JPH::Vec3", align 16
  %11 = alloca %"class.JPH::Vec3", align 16
  %12 = alloca %"class.JPH::Vec3", align 16
  %13 = alloca %"class.JPH::Vec3", align 16
  %14 = alloca %"class.JPH::Result", align 8
  %15 = alloca %"class.JPH::ConvexHullShapeSettings", align 8
  %16 = alloca %"class.JPH::Result", align 8
  %17 = alloca %"class.JPH::TaperedCapsuleShapeSettings", align 8
  %18 = alloca %"class.JPH::Vec3", align 16
  %19 = alloca %"class.JPH::Vec3", align 16
  %20 = alloca %"class.JPH::Vec3", align 16
  %21 = alloca %"class.JPH::Vec3", align 16
  %22 = alloca %"class.JPH::Quat", align 16
  %23 = alloca %"class.JPH::Vec3", align 16
  %24 = alloca %"class.JPH::Vec3", align 16
  %25 = alloca %"class.JPH::Array.77", align 8
  %26 = alloca %"class.JPH::Vec3", align 16
  %27 = alloca %"class.JPH::Vec3", align 16
  %28 = alloca %"class.JPH::Vec3", align 16
  %29 = alloca %"class.JPH::Vec3", align 16
  %30 = alloca %"class.JPH::RefConst.74", align 8
  %31 = alloca %"class.JPH::Result", align 8
  %32 = alloca %"class.JPH::ConvexHullShapeSettings", align 8
  %33 = alloca %"class.JPH::StaticCompoundShapeSettings", align 8
  %34 = alloca %"class.JPH::Vec3", align 16
  %35 = alloca %"class.JPH::Quat", align 16
  %36 = alloca %"class.JPH::Vec3", align 16
  %37 = alloca %"class.JPH::Quat", align 16
  %38 = alloca %"class.JPH::Vec3", align 16
  %39 = alloca %"class.JPH::Result", align 8
  %40 = alloca %"class.JPH::Ref.86", align 8
  %41 = alloca %"class.JPH::Vec3", align 16
  %42 = alloca %"class.JPH::Quat", align 16
  %43 = alloca %"class.JPH::Vec3", align 16
  %44 = alloca %"class.JPH::Vec3", align 16
  %45 = alloca %"class.JPH::Vec3", align 16
  %46 = alloca %"class.JPH::Quat", align 16
  %47 = alloca %"class.JPH::Vec3", align 16
  %48 = alloca %"class.JPH::Vec3", align 16
  %49 = alloca %"class.JPH::Quat", align 16
  %50 = alloca %"class.JPH::Vec3", align 16
  %51 = alloca %"class.JPH::StaticCompoundShapeSettings", align 8
  %52 = alloca %"class.JPH::Vec3", align 16
  %53 = alloca %"class.JPH::Quat", align 16
  %54 = alloca %"class.JPH::Quat", align 16
  %55 = alloca %"class.JPH::Vec3", align 16
  %56 = alloca %"class.JPH::Quat", align 16
  %57 = alloca %"class.JPH::Vec3", align 16
  %58 = alloca %"class.JPH::Vec3", align 16
  %59 = alloca %"class.JPH::Quat", align 16
  %60 = alloca %"class.JPH::Quat", align 16
  %61 = alloca %"class.JPH::Vec3", align 16
  %62 = alloca %"class.JPH::Quat", align 16
  %63 = alloca %"class.JPH::Vec3", align 16
  %64 = alloca %"class.JPH::Result", align 8
  %65 = alloca %"class.JPH::Array.77", align 8
  %66 = alloca %"class.JPH::Vec3", align 16
  %67 = alloca %"class.JPH::Vec3", align 16
  %68 = alloca %"class.JPH::Vec3", align 16
  %69 = alloca %"class.JPH::Vec3", align 16
  %70 = alloca %"class.JPH::RefConst.74", align 8
  %71 = alloca %"class.JPH::Result", align 8
  %72 = alloca %"class.JPH::ConvexHullShapeSettings", align 8
  %73 = alloca %"class.JPH::MutableCompoundShapeSettings", align 8
  %74 = alloca %"class.JPH::Vec3", align 16
  %75 = alloca %"class.JPH::Quat", align 16
  %76 = alloca %"class.JPH::Vec3", align 16
  %77 = alloca %"class.JPH::Quat", align 16
  %78 = alloca %"class.JPH::Vec3", align 16
  %79 = alloca %"class.JPH::Result", align 8
  %80 = alloca %"class.JPH::RefConst.74", align 8
  %81 = alloca %"struct.JPH::AssertLastParam", align 1
  %82 = alloca %"class.JPH::Vec3", align 16
  %83 = alloca %"class.JPH::Vec3", align 16
  %84 = alloca %"class.JPH::Vec3", align 16
  %85 = alloca %"struct.JPH::AssertLastParam", align 1
  %86 = alloca %"class.JPH::Vec3", align 16
  %87 = alloca %"class.JPH::Vec3", align 16
  store ptr %0, ptr %3, align 8
  store ptr %1, ptr %4, align 8, !tbaa !5
  %88 = load ptr, ptr %4, align 8
  store i1 false, ptr %5, align 1
  call void @_ZN3JPH8RefConstINS_5ShapeEEC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %0)
  %89 = getelementptr inbounds %class.SamplesApp, ptr %88, i32 0, i32 31
  %90 = load i32, ptr %89, align 4, !tbaa !9
  switch i32 %90, label %874 [
    i32 0, label %91
    i32 1, label %105
    i32 2, label %120
    i32 3, label %173
    i32 4, label %183
    i32 5, label %204
    i32 6, label %214
    i32 7, label %239
    i32 8, label %292
    i32 9, label %424
    i32 10, label %735
    i32 11, label %867
  ]

91:                                               ; preds = %2
  %92 = invoke noundef ptr @_ZN3JPH11SphereShapenwEm(i64 noundef 48)
          to label %93 unwind label %97

93:                                               ; preds = %91
  invoke void @_ZN3JPH11SphereShapeC2EfPKNS_15PhysicsMaterialE(ptr noundef nonnull align 8 dereferenceable(48) %92, float noundef 0x3FC99999A0000000, ptr noundef null)
          to label %94 unwind label %101

94:                                               ; preds = %93
  %95 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3JPH8RefConstINS_5ShapeEEaSEPKS1_(ptr noundef nonnull align 8 dereferenceable(8) %0, ptr noundef %92)
          to label %96 unwind label %97

96:                                               ; preds = %94
  br label %874

97:                                               ; preds = %878, %875, %280, %239, %232, %214, %207, %204, %176, %173, %113, %105, %94, %91
  %98 = landingpad { ptr, i32 }
          cleanup
  %99 = extractvalue { ptr, i32 } %98, 0
  store ptr %99, ptr %6, align 8
  %100 = extractvalue { ptr, i32 } %98, 1
  store i32 %100, ptr %7, align 4
  br label %967

101:                                              ; preds = %93
  %102 = landingpad { ptr, i32 }
          cleanup
  %103 = extractvalue { ptr, i32 } %102, 0
  store ptr %103, ptr %6, align 8
  %104 = extractvalue { ptr, i32 } %102, 1
  store i32 %104, ptr %7, align 4
  call void @_ZN3JPH11SphereShapedlEPv(ptr noundef %92) #11
  br label %967

105:                                              ; preds = %2
  %106 = invoke noundef ptr @_ZN3JPH8BoxShapenwEm(i64 noundef 80)
          to label %107 unwind label %97

107:                                              ; preds = %105
  invoke void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %8, float noundef 0x3FB99999A0000000, float noundef 0x3FC99999A0000000, float noundef 0x3FD3333340000000)
          to label %108 unwind label %116

108:                                              ; preds = %107
  %109 = getelementptr inbounds { double, double }, ptr %8, i32 0, i32 0
  %110 = load double, ptr %109, align 16
  %111 = getelementptr inbounds { double, double }, ptr %8, i32 0, i32 1
  %112 = load double, ptr %111, align 8
  invoke void @_ZN3JPH8BoxShapeC2ENS_4Vec3EfPKNS_15PhysicsMaterialE(ptr noundef nonnull align 16 dereferenceable(80) %106, double %110, double %112, float noundef 0x3FA99999A0000000, ptr noundef null)
          to label %113 unwind label %116

113:                                              ; preds = %108
  %114 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3JPH8RefConstINS_5ShapeEEaSEPKS1_(ptr noundef nonnull align 8 dereferenceable(8) %0, ptr noundef %106)
          to label %115 unwind label %97

115:                                              ; preds = %113
  br label %874

116:                                              ; preds = %108, %107
  %117 = landingpad { ptr, i32 }
          cleanup
  %118 = extractvalue { ptr, i32 } %117, 0
  store ptr %118, ptr %6, align 8
  %119 = extractvalue { ptr, i32 } %117, 1
  store i32 %119, ptr %7, align 4
  call void @_ZN3JPH8BoxShapedlEPv(ptr noundef %106) #11
  br label %967

120:                                              ; preds = %2
  call void @llvm.lifetime.start.p0(i64 24, ptr %9) #11
  call void @_ZN3JPH5ArrayINS_4Vec3ENS_12STLAllocatorIS1_EEEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %9) #11
  call void @llvm.lifetime.start.p0(i64 16, ptr %10) #11
  %121 = invoke { double, double } @_ZN3JPH4Vec35sZeroEv()
          to label %122 unwind label %142

122:                                              ; preds = %120
  %123 = getelementptr inbounds %"class.JPH::Vec3", ptr %10, i32 0, i32 0
  %124 = getelementptr inbounds %union.anon, ptr %123, i32 0, i32 0
  %125 = getelementptr inbounds { double, double }, ptr %124, i32 0, i32 0
  %126 = extractvalue { double, double } %121, 0
  store double %126, ptr %125, align 16
  %127 = getelementptr inbounds { double, double }, ptr %124, i32 0, i32 1
  %128 = extractvalue { double, double } %121, 1
  store double %128, ptr %127, align 8
  invoke void @_ZN3JPH5ArrayINS_4Vec3ENS_12STLAllocatorIS1_EEE9push_backEOS1_(ptr noundef nonnull align 8 dereferenceable(24) %9, ptr noundef nonnull align 16 dereferenceable(16) %10)
          to label %129 unwind label %142

129:                                              ; preds = %122
  call void @llvm.lifetime.end.p0(i64 16, ptr %10) #11
  call void @llvm.lifetime.start.p0(i64 16, ptr %11) #11
  invoke void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %11, float noundef 0x3FC99999A0000000, float noundef 0.000000e+00, float noundef 0x3FD99999A0000000)
          to label %130 unwind label %146

130:                                              ; preds = %129
  invoke void @_ZN3JPH5ArrayINS_4Vec3ENS_12STLAllocatorIS1_EEE9push_backEOS1_(ptr noundef nonnull align 8 dereferenceable(24) %9, ptr noundef nonnull align 16 dereferenceable(16) %11)
          to label %131 unwind label %146

131:                                              ; preds = %130
  call void @llvm.lifetime.end.p0(i64 16, ptr %11) #11
  call void @llvm.lifetime.start.p0(i64 16, ptr %12) #11
  invoke void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %12, float noundef 0x3FD99999A0000000, float noundef 0.000000e+00, float noundef 0.000000e+00)
          to label %132 unwind label %150

132:                                              ; preds = %131
  invoke void @_ZN3JPH5ArrayINS_4Vec3ENS_12STLAllocatorIS1_EEE9push_backEOS1_(ptr noundef nonnull align 8 dereferenceable(24) %9, ptr noundef nonnull align 16 dereferenceable(16) %12)
          to label %133 unwind label %150

133:                                              ; preds = %132
  call void @llvm.lifetime.end.p0(i64 16, ptr %12) #11
  call void @llvm.lifetime.start.p0(i64 16, ptr %13) #11
  invoke void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %13, float noundef 0x3FC99999A0000000, float noundef 0xBFC99999A0000000, float noundef 1.000000e+00)
          to label %134 unwind label %154

134:                                              ; preds = %133
  invoke void @_ZN3JPH5ArrayINS_4Vec3ENS_12STLAllocatorIS1_EEE9push_backEOS1_(ptr noundef nonnull align 8 dereferenceable(24) %9, ptr noundef nonnull align 16 dereferenceable(16) %13)
          to label %135 unwind label %154

135:                                              ; preds = %134
  call void @llvm.lifetime.end.p0(i64 16, ptr %13) #11
  call void @llvm.lifetime.start.p0(i64 40, ptr %14) #11
  call void @llvm.lifetime.start.p0(i64 120, ptr %15) #11
  invoke void @_ZN3JPH23ConvexHullShapeSettingsC2ERKNS_5ArrayINS_4Vec3ENS_12STLAllocatorIS2_EEEEfPKNS_15PhysicsMaterialE(ptr noundef nonnull align 8 dereferenceable(120) %15, ptr noundef nonnull align 8 dereferenceable(24) %9, float noundef 0x3F847AE140000000, ptr noundef null)
          to label %136 unwind label %158

136:                                              ; preds = %135
  invoke void @_ZNK3JPH23ConvexHullShapeSettings6CreateEv(ptr dead_on_unwind writable sret(%"class.JPH::Result") align 8 %14, ptr noundef nonnull align 8 dereferenceable(120) %15)
          to label %137 unwind label %162

137:                                              ; preds = %136
  %138 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK3JPH6ResultINS_3RefINS_5ShapeEEEE3GetEv(ptr noundef nonnull align 8 dereferenceable(33) %14)
          to label %139 unwind label %166

139:                                              ; preds = %137
  %140 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3JPH8RefConstINS_5ShapeEEaSERKNS_3RefIS1_EE(ptr noundef nonnull align 8 dereferenceable(8) %0, ptr noundef nonnull align 8 dereferenceable(8) %138)
          to label %141 unwind label %166

141:                                              ; preds = %139
  call void @_ZN3JPH6ResultINS_3RefINS_5ShapeEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(33) %14) #11
  call void @_ZN3JPH23ConvexHullShapeSettingsD2Ev(ptr noundef nonnull align 8 dereferenceable(120) %15) #11
  call void @llvm.lifetime.end.p0(i64 120, ptr %15) #11
  call void @llvm.lifetime.end.p0(i64 40, ptr %14) #11
  call void @_ZN3JPH5ArrayINS_4Vec3ENS_12STLAllocatorIS1_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %9) #11
  call void @llvm.lifetime.end.p0(i64 24, ptr %9) #11
  br label %874

142:                                              ; preds = %122, %120
  %143 = landingpad { ptr, i32 }
          cleanup
  %144 = extractvalue { ptr, i32 } %143, 0
  store ptr %144, ptr %6, align 8
  %145 = extractvalue { ptr, i32 } %143, 1
  store i32 %145, ptr %7, align 4
  call void @llvm.lifetime.end.p0(i64 16, ptr %10) #11
  br label %172

146:                                              ; preds = %130, %129
  %147 = landingpad { ptr, i32 }
          cleanup
  %148 = extractvalue { ptr, i32 } %147, 0
  store ptr %148, ptr %6, align 8
  %149 = extractvalue { ptr, i32 } %147, 1
  store i32 %149, ptr %7, align 4
  call void @llvm.lifetime.end.p0(i64 16, ptr %11) #11
  br label %172

150:                                              ; preds = %132, %131
  %151 = landingpad { ptr, i32 }
          cleanup
  %152 = extractvalue { ptr, i32 } %151, 0
  store ptr %152, ptr %6, align 8
  %153 = extractvalue { ptr, i32 } %151, 1
  store i32 %153, ptr %7, align 4
  call void @llvm.lifetime.end.p0(i64 16, ptr %12) #11
  br label %172

154:                                              ; preds = %134, %133
  %155 = landingpad { ptr, i32 }
          cleanup
  %156 = extractvalue { ptr, i32 } %155, 0
  store ptr %156, ptr %6, align 8
  %157 = extractvalue { ptr, i32 } %155, 1
  store i32 %157, ptr %7, align 4
  call void @llvm.lifetime.end.p0(i64 16, ptr %13) #11
  br label %172

158:                                              ; preds = %135
  %159 = landingpad { ptr, i32 }
          cleanup
  %160 = extractvalue { ptr, i32 } %159, 0
  store ptr %160, ptr %6, align 8
  %161 = extractvalue { ptr, i32 } %159, 1
  store i32 %161, ptr %7, align 4
  br label %171

162:                                              ; preds = %136
  %163 = landingpad { ptr, i32 }
          cleanup
  %164 = extractvalue { ptr, i32 } %163, 0
  store ptr %164, ptr %6, align 8
  %165 = extractvalue { ptr, i32 } %163, 1
  store i32 %165, ptr %7, align 4
  br label %170

166:                                              ; preds = %139, %137
  %167 = landingpad { ptr, i32 }
          cleanup
  %168 = extractvalue { ptr, i32 } %167, 0
  store ptr %168, ptr %6, align 8
  %169 = extractvalue { ptr, i32 } %167, 1
  store i32 %169, ptr %7, align 4
  call void @_ZN3JPH6ResultINS_3RefINS_5ShapeEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(33) %14) #11
  br label %170

170:                                              ; preds = %166, %162
  call void @_ZN3JPH23ConvexHullShapeSettingsD2Ev(ptr noundef nonnull align 8 dereferenceable(120) %15) #11
  br label %171

171:                                              ; preds = %170, %158
  call void @llvm.lifetime.end.p0(i64 120, ptr %15) #11
  call void @llvm.lifetime.end.p0(i64 40, ptr %14) #11
  br label %172

172:                                              ; preds = %171, %154, %150, %146, %142
  call void @_ZN3JPH5ArrayINS_4Vec3ENS_12STLAllocatorIS1_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %9) #11
  call void @llvm.lifetime.end.p0(i64 24, ptr %9) #11
  br label %967

173:                                              ; preds = %2
  %174 = invoke noundef ptr @_ZN3JPH12CapsuleShapenwEm(i64 noundef 56)
          to label %175 unwind label %97

175:                                              ; preds = %173
  invoke void @_ZN3JPH12CapsuleShapeC2EffPKNS_15PhysicsMaterialE(ptr noundef nonnull align 8 dereferenceable(56) %174, float noundef 0x3FC99999A0000000, float noundef 0x3FB99999A0000000, ptr noundef null)
          to label %176 unwind label %179

176:                                              ; preds = %175
  %177 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3JPH8RefConstINS_5ShapeEEaSEPKS1_(ptr noundef nonnull align 8 dereferenceable(8) %0, ptr noundef %174)
          to label %178 unwind label %97

178:                                              ; preds = %176
  br label %874

179:                                              ; preds = %175
  %180 = landingpad { ptr, i32 }
          cleanup
  %181 = extractvalue { ptr, i32 } %180, 0
  store ptr %181, ptr %6, align 8
  %182 = extractvalue { ptr, i32 } %180, 1
  store i32 %182, ptr %7, align 4
  call void @_ZN3JPH12CapsuleShapedlEPv(ptr noundef %174) #11
  br label %967

183:                                              ; preds = %2
  call void @llvm.lifetime.start.p0(i64 40, ptr %16) #11
  call void @llvm.lifetime.start.p0(i64 88, ptr %17) #11
  invoke void @_ZN3JPH27TaperedCapsuleShapeSettingsC1EfffPKNS_15PhysicsMaterialE(ptr noundef nonnull align 8 dereferenceable(88) %17, float noundef 0x3FC99999A0000000, float noundef 0x3FB99999A0000000, float noundef 0x3FC99999A0000000, ptr noundef null)
          to label %184 unwind label %190

184:                                              ; preds = %183
  invoke void @_ZNK3JPH27TaperedCapsuleShapeSettings6CreateEv(ptr dead_on_unwind writable sret(%"class.JPH::Result") align 8 %16, ptr noundef nonnull align 8 dereferenceable(88) %17)
          to label %185 unwind label %194

185:                                              ; preds = %184
  %186 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK3JPH6ResultINS_3RefINS_5ShapeEEEE3GetEv(ptr noundef nonnull align 8 dereferenceable(33) %16)
          to label %187 unwind label %198

187:                                              ; preds = %185
  %188 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3JPH8RefConstINS_5ShapeEEaSERKNS_3RefIS1_EE(ptr noundef nonnull align 8 dereferenceable(8) %0, ptr noundef nonnull align 8 dereferenceable(8) %186)
          to label %189 unwind label %198

189:                                              ; preds = %187
  call void @_ZN3JPH6ResultINS_3RefINS_5ShapeEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(33) %16) #11
  call void @_ZN3JPH19ConvexShapeSettingsD2Ev(ptr noundef nonnull align 8 dereferenceable(88) %17) #11
  call void @llvm.lifetime.end.p0(i64 88, ptr %17) #11
  call void @llvm.lifetime.end.p0(i64 40, ptr %16) #11
  br label %874

190:                                              ; preds = %183
  %191 = landingpad { ptr, i32 }
          cleanup
  %192 = extractvalue { ptr, i32 } %191, 0
  store ptr %192, ptr %6, align 8
  %193 = extractvalue { ptr, i32 } %191, 1
  store i32 %193, ptr %7, align 4
  br label %203

194:                                              ; preds = %184
  %195 = landingpad { ptr, i32 }
          cleanup
  %196 = extractvalue { ptr, i32 } %195, 0
  store ptr %196, ptr %6, align 8
  %197 = extractvalue { ptr, i32 } %195, 1
  store i32 %197, ptr %7, align 4
  br label %202

198:                                              ; preds = %187, %185
  %199 = landingpad { ptr, i32 }
          cleanup
  %200 = extractvalue { ptr, i32 } %199, 0
  store ptr %200, ptr %6, align 8
  %201 = extractvalue { ptr, i32 } %199, 1
  store i32 %201, ptr %7, align 4
  call void @_ZN3JPH6ResultINS_3RefINS_5ShapeEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(33) %16) #11
  br label %202

202:                                              ; preds = %198, %194
  call void @_ZN3JPH19ConvexShapeSettingsD2Ev(ptr noundef nonnull align 8 dereferenceable(88) %17) #11
  br label %203

203:                                              ; preds = %202, %190
  call void @llvm.lifetime.end.p0(i64 88, ptr %17) #11
  call void @llvm.lifetime.end.p0(i64 40, ptr %16) #11
  br label %967

204:                                              ; preds = %2
  %205 = invoke noundef ptr @_ZN3JPH13CylinderShapenwEm(i64 noundef 56)
          to label %206 unwind label %97

206:                                              ; preds = %204
  invoke void @_ZN3JPH13CylinderShapeC1EfffPKNS_15PhysicsMaterialE(ptr noundef nonnull align 8 dereferenceable(56) %205, float noundef 0x3FC99999A0000000, float noundef 0x3FB99999A0000000, float noundef 0x3FA99999A0000000, ptr noundef null)
          to label %207 unwind label %210

207:                                              ; preds = %206
  %208 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3JPH8RefConstINS_5ShapeEEaSEPKS1_(ptr noundef nonnull align 8 dereferenceable(8) %0, ptr noundef %205)
          to label %209 unwind label %97

209:                                              ; preds = %207
  br label %874

210:                                              ; preds = %206
  %211 = landingpad { ptr, i32 }
          cleanup
  %212 = extractvalue { ptr, i32 } %211, 0
  store ptr %212, ptr %6, align 8
  %213 = extractvalue { ptr, i32 } %211, 1
  store i32 %213, ptr %7, align 4
  call void @_ZN3JPH13CylinderShapedlEPv(ptr noundef %205) #11
  br label %967

214:                                              ; preds = %2
  %215 = invoke noundef ptr @_ZN3JPH13TriangleShapenwEm(i64 noundef 112)
          to label %216 unwind label %97

216:                                              ; preds = %214
  invoke void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %18, float noundef 0x3FB99999A0000000, float noundef 0x3FECCCCCC0000000, float noundef 0x3FD3333340000000)
          to label %217 unwind label %235

217:                                              ; preds = %216
  invoke void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %19, float noundef 0xBFECCCCCC0000000, float noundef -5.000000e-01, float noundef 0x3FC99999A0000000)
          to label %218 unwind label %235

218:                                              ; preds = %217
  invoke void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %20, float noundef 0x3FE6666660000000, float noundef 0xBFD3333340000000, float noundef 0xBFB99999A0000000)
          to label %219 unwind label %235

219:                                              ; preds = %218
  %220 = getelementptr inbounds { double, double }, ptr %18, i32 0, i32 0
  %221 = load double, ptr %220, align 16
  %222 = getelementptr inbounds { double, double }, ptr %18, i32 0, i32 1
  %223 = load double, ptr %222, align 8
  %224 = getelementptr inbounds { double, double }, ptr %19, i32 0, i32 0
  %225 = load double, ptr %224, align 16
  %226 = getelementptr inbounds { double, double }, ptr %19, i32 0, i32 1
  %227 = load double, ptr %226, align 8
  %228 = getelementptr inbounds { double, double }, ptr %20, i32 0, i32 0
  %229 = load double, ptr %228, align 16
  %230 = getelementptr inbounds { double, double }, ptr %20, i32 0, i32 1
  %231 = load double, ptr %230, align 8
  invoke void @_ZN3JPH13TriangleShapeC2ENS_4Vec3ES1_S1_fPKNS_15PhysicsMaterialE(ptr noundef nonnull align 16 dereferenceable(112) %215, double %221, double %223, double %225, double %227, double %229, double %231, float noundef 0.000000e+00, ptr noundef null)
          to label %232 unwind label %235

232:                                              ; preds = %219
  %233 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3JPH8RefConstINS_5ShapeEEaSEPKS1_(ptr noundef nonnull align 8 dereferenceable(8) %0, ptr noundef %215)
          to label %234 unwind label %97

234:                                              ; preds = %232
  br label %874

235:                                              ; preds = %219, %218, %217, %216
  %236 = landingpad { ptr, i32 }
          cleanup
  %237 = extractvalue { ptr, i32 } %236, 0
  store ptr %237, ptr %6, align 8
  %238 = extractvalue { ptr, i32 } %236, 1
  store i32 %238, ptr %7, align 4
  call void @_ZN3JPH13TriangleShapedlEPv(ptr noundef %215) #11
  br label %967

239:                                              ; preds = %2
  %240 = invoke noundef ptr @_ZN3JPH22RotatedTranslatedShapenwEm(i64 noundef 80)
          to label %241 unwind label %97

241:                                              ; preds = %239
  invoke void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %21, float noundef 0x3FB99999A0000000, float noundef 0x3FC99999A0000000, float noundef 0x3FD3333340000000)
          to label %242 unwind label %283

242:                                              ; preds = %241
  %243 = invoke { double, double } @_ZN3JPH4Vec36sAxisYEv()
          to label %244 unwind label %283

244:                                              ; preds = %242
  %245 = getelementptr inbounds %"class.JPH::Vec3", ptr %23, i32 0, i32 0
  %246 = getelementptr inbounds %union.anon, ptr %245, i32 0, i32 0
  %247 = getelementptr inbounds { double, double }, ptr %246, i32 0, i32 0
  %248 = extractvalue { double, double } %243, 0
  store double %248, ptr %247, align 16
  %249 = getelementptr inbounds { double, double }, ptr %246, i32 0, i32 1
  %250 = extractvalue { double, double } %243, 1
  store double %250, ptr %249, align 8
  %251 = getelementptr inbounds { double, double }, ptr %23, i32 0, i32 0
  %252 = load double, ptr %251, align 16
  %253 = getelementptr inbounds { double, double }, ptr %23, i32 0, i32 1
  %254 = load double, ptr %253, align 8
  %255 = invoke { double, double } @_ZN3JPH4Quat9sRotationENS_4Vec3Ef(double %252, double %254, float noundef 0x3FE921FB60000000)
          to label %256 unwind label %283

256:                                              ; preds = %244
  %257 = getelementptr inbounds %"class.JPH::Quat", ptr %22, i32 0, i32 0
  %258 = getelementptr inbounds %"class.JPH::Vec4", ptr %257, i32 0, i32 0
  %259 = getelementptr inbounds %union.anon.55, ptr %258, i32 0, i32 0
  %260 = getelementptr inbounds { double, double }, ptr %259, i32 0, i32 0
  %261 = extractvalue { double, double } %255, 0
  store double %261, ptr %260, align 16
  %262 = getelementptr inbounds { double, double }, ptr %259, i32 0, i32 1
  %263 = extractvalue { double, double } %255, 1
  store double %263, ptr %262, align 8
  %264 = invoke noundef ptr @_ZN3JPH8BoxShapenwEm(i64 noundef 80)
          to label %265 unwind label %283

265:                                              ; preds = %256
  invoke void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %24, float noundef 0x3FB99999A0000000, float noundef 0x3FC99999A0000000, float noundef 0x3FD3333340000000)
          to label %266 unwind label %287

266:                                              ; preds = %265
  %267 = getelementptr inbounds { double, double }, ptr %24, i32 0, i32 0
  %268 = load double, ptr %267, align 16
  %269 = getelementptr inbounds { double, double }, ptr %24, i32 0, i32 1
  %270 = load double, ptr %269, align 8
  invoke void @_ZN3JPH8BoxShapeC2ENS_4Vec3EfPKNS_15PhysicsMaterialE(ptr noundef nonnull align 16 dereferenceable(80) %264, double %268, double %270, float noundef 0x3FA99999A0000000, ptr noundef null)
          to label %271 unwind label %287

271:                                              ; preds = %266
  %272 = getelementptr inbounds { double, double }, ptr %21, i32 0, i32 0
  %273 = load double, ptr %272, align 16
  %274 = getelementptr inbounds { double, double }, ptr %21, i32 0, i32 1
  %275 = load double, ptr %274, align 8
  %276 = getelementptr inbounds { double, double }, ptr %22, i32 0, i32 0
  %277 = load double, ptr %276, align 16
  %278 = getelementptr inbounds { double, double }, ptr %22, i32 0, i32 1
  %279 = load double, ptr %278, align 8
  invoke void @_ZN3JPH22RotatedTranslatedShapeC1ENS_4Vec3ENS_4QuatEPKNS_5ShapeE(ptr noundef nonnull align 16 dereferenceable(80) %240, double %273, double %275, double %277, double %279, ptr noundef %264)
          to label %280 unwind label %283

280:                                              ; preds = %271
  %281 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3JPH8RefConstINS_5ShapeEEaSEPKS1_(ptr noundef nonnull align 8 dereferenceable(8) %0, ptr noundef %240)
          to label %282 unwind label %97

282:                                              ; preds = %280
  br label %874

283:                                              ; preds = %271, %256, %244, %242, %241
  %284 = landingpad { ptr, i32 }
          cleanup
  %285 = extractvalue { ptr, i32 } %284, 0
  store ptr %285, ptr %6, align 8
  %286 = extractvalue { ptr, i32 } %284, 1
  store i32 %286, ptr %7, align 4
  br label %291

287:                                              ; preds = %266, %265
  %288 = landingpad { ptr, i32 }
          cleanup
  %289 = extractvalue { ptr, i32 } %288, 0
  store ptr %289, ptr %6, align 8
  %290 = extractvalue { ptr, i32 } %288, 1
  store i32 %290, ptr %7, align 4
  call void @_ZN3JPH8BoxShapedlEPv(ptr noundef %264) #11
  br label %291

291:                                              ; preds = %287, %283
  call void @_ZN3JPH22RotatedTranslatedShapedlEPv(ptr noundef %240) #11
  br label %967

292:                                              ; preds = %2
  call void @llvm.lifetime.start.p0(i64 24, ptr %25) #11
  call void @_ZN3JPH5ArrayINS_4Vec3ENS_12STLAllocatorIS1_EEEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %25) #11
  call void @llvm.lifetime.start.p0(i64 16, ptr %26) #11
  %293 = invoke { double, double } @_ZN3JPH4Vec35sZeroEv()
          to label %294 unwind label %373

294:                                              ; preds = %292
  %295 = getelementptr inbounds %"class.JPH::Vec3", ptr %26, i32 0, i32 0
  %296 = getelementptr inbounds %union.anon, ptr %295, i32 0, i32 0
  %297 = getelementptr inbounds { double, double }, ptr %296, i32 0, i32 0
  %298 = extractvalue { double, double } %293, 0
  store double %298, ptr %297, align 16
  %299 = getelementptr inbounds { double, double }, ptr %296, i32 0, i32 1
  %300 = extractvalue { double, double } %293, 1
  store double %300, ptr %299, align 8
  invoke void @_ZN3JPH5ArrayINS_4Vec3ENS_12STLAllocatorIS1_EEE9push_backEOS1_(ptr noundef nonnull align 8 dereferenceable(24) %25, ptr noundef nonnull align 16 dereferenceable(16) %26)
          to label %301 unwind label %373

301:                                              ; preds = %294
  call void @llvm.lifetime.end.p0(i64 16, ptr %26) #11
  call void @llvm.lifetime.start.p0(i64 16, ptr %27) #11
  invoke void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %27, float noundef 0xBFC99999A0000000, float noundef 0.000000e+00, float noundef 0x3FD99999A0000000)
          to label %302 unwind label %377

302:                                              ; preds = %301
  invoke void @_ZN3JPH5ArrayINS_4Vec3ENS_12STLAllocatorIS1_EEE9push_backEOS1_(ptr noundef nonnull align 8 dereferenceable(24) %25, ptr noundef nonnull align 16 dereferenceable(16) %27)
          to label %303 unwind label %377

303:                                              ; preds = %302
  call void @llvm.lifetime.end.p0(i64 16, ptr %27) #11
  call void @llvm.lifetime.start.p0(i64 16, ptr %28) #11
  invoke void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %28, float noundef 0.000000e+00, float noundef 0x3FC99999A0000000, float noundef 0.000000e+00)
          to label %304 unwind label %381

304:                                              ; preds = %303
  invoke void @_ZN3JPH5ArrayINS_4Vec3ENS_12STLAllocatorIS1_EEE9push_backEOS1_(ptr noundef nonnull align 8 dereferenceable(24) %25, ptr noundef nonnull align 16 dereferenceable(16) %28)
          to label %305 unwind label %381

305:                                              ; preds = %304
  call void @llvm.lifetime.end.p0(i64 16, ptr %28) #11
  call void @llvm.lifetime.start.p0(i64 16, ptr %29) #11
  invoke void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %29, float noundef 0x3FC99999A0000000, float noundef 0.000000e+00, float noundef 0x3FD99999A0000000)
          to label %306 unwind label %385

306:                                              ; preds = %305
  invoke void @_ZN3JPH5ArrayINS_4Vec3ENS_12STLAllocatorIS1_EEE9push_backEOS1_(ptr noundef nonnull align 8 dereferenceable(24) %25, ptr noundef nonnull align 16 dereferenceable(16) %29)
          to label %307 unwind label %385

307:                                              ; preds = %306
  call void @llvm.lifetime.end.p0(i64 16, ptr %29) #11
  call void @llvm.lifetime.start.p0(i64 8, ptr %30) #11
  call void @llvm.lifetime.start.p0(i64 40, ptr %31) #11
  call void @llvm.lifetime.start.p0(i64 120, ptr %32) #11
  invoke void @_ZN3JPH23ConvexHullShapeSettingsC2ERKNS_5ArrayINS_4Vec3ENS_12STLAllocatorIS2_EEEEfPKNS_15PhysicsMaterialE(ptr noundef nonnull align 8 dereferenceable(120) %32, ptr noundef nonnull align 8 dereferenceable(24) %25, float noundef 0x3F847AE140000000, ptr noundef null)
          to label %308 unwind label %389

308:                                              ; preds = %307
  invoke void @_ZNK3JPH23ConvexHullShapeSettings6CreateEv(ptr dead_on_unwind writable sret(%"class.JPH::Result") align 8 %31, ptr noundef nonnull align 8 dereferenceable(120) %32)
          to label %309 unwind label %393

309:                                              ; preds = %308
  %310 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK3JPH6ResultINS_3RefINS_5ShapeEEEE3GetEv(ptr noundef nonnull align 8 dereferenceable(33) %31)
          to label %311 unwind label %397

311:                                              ; preds = %309
  invoke void @_ZN3JPH8RefConstINS_5ShapeEEC2ERKNS_3RefIS1_EE(ptr noundef nonnull align 8 dereferenceable(8) %30, ptr noundef nonnull align 8 dereferenceable(8) %310)
          to label %312 unwind label %397

312:                                              ; preds = %311
  call void @_ZN3JPH6ResultINS_3RefINS_5ShapeEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(33) %31) #11
  call void @_ZN3JPH23ConvexHullShapeSettingsD2Ev(ptr noundef nonnull align 8 dereferenceable(120) %32) #11
  call void @llvm.lifetime.end.p0(i64 120, ptr %32) #11
  call void @llvm.lifetime.end.p0(i64 40, ptr %31) #11
  call void @llvm.lifetime.start.p0(i64 88, ptr %33) #11
  invoke void @_ZN3JPH27StaticCompoundShapeSettingsC2Ev(ptr noundef nonnull align 8 dereferenceable(88) %33)
          to label %313 unwind label %403

313:                                              ; preds = %312
  invoke void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %34, float noundef -5.000000e-01, float noundef 0.000000e+00, float noundef 0.000000e+00)
          to label %314 unwind label %407

314:                                              ; preds = %313
  %315 = invoke { double, double } @_ZN3JPH4Quat9sIdentityEv()
          to label %316 unwind label %407

316:                                              ; preds = %314
  %317 = getelementptr inbounds %"class.JPH::Quat", ptr %35, i32 0, i32 0
  %318 = getelementptr inbounds %"class.JPH::Vec4", ptr %317, i32 0, i32 0
  %319 = getelementptr inbounds %union.anon.55, ptr %318, i32 0, i32 0
  %320 = getelementptr inbounds { double, double }, ptr %319, i32 0, i32 0
  %321 = extractvalue { double, double } %315, 0
  store double %321, ptr %320, align 16
  %322 = getelementptr inbounds { double, double }, ptr %319, i32 0, i32 1
  %323 = extractvalue { double, double } %315, 1
  store double %323, ptr %322, align 8
  %324 = invoke noundef ptr @_ZNK3JPH8RefConstINS_5ShapeEEcvPKS1_Ev(ptr noundef nonnull align 8 dereferenceable(8) %30)
          to label %325 unwind label %407

325:                                              ; preds = %316
  %326 = getelementptr inbounds { double, double }, ptr %34, i32 0, i32 0
  %327 = load double, ptr %326, align 16
  %328 = getelementptr inbounds { double, double }, ptr %34, i32 0, i32 1
  %329 = load double, ptr %328, align 8
  %330 = getelementptr inbounds { double, double }, ptr %35, i32 0, i32 0
  %331 = load double, ptr %330, align 16
  %332 = getelementptr inbounds { double, double }, ptr %35, i32 0, i32 1
  %333 = load double, ptr %332, align 8
  invoke void @_ZN3JPH21CompoundShapeSettings8AddShapeENS_4Vec3ENS_4QuatEPKNS_5ShapeEj(ptr noundef nonnull align 8 dereferenceable(88) %33, double %327, double %329, double %331, double %333, ptr noundef %324, i32 noundef 0)
          to label %334 unwind label %407

334:                                              ; preds = %325
  invoke void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %36, float noundef 5.000000e-01, float noundef 0.000000e+00, float noundef 0.000000e+00)
          to label %335 unwind label %407

335:                                              ; preds = %334
  %336 = invoke { double, double } @_ZN3JPH4Vec36sAxisXEv()
          to label %337 unwind label %407

337:                                              ; preds = %335
  %338 = getelementptr inbounds %"class.JPH::Vec3", ptr %38, i32 0, i32 0
  %339 = getelementptr inbounds %union.anon, ptr %338, i32 0, i32 0
  %340 = getelementptr inbounds { double, double }, ptr %339, i32 0, i32 0
  %341 = extractvalue { double, double } %336, 0
  store double %341, ptr %340, align 16
  %342 = getelementptr inbounds { double, double }, ptr %339, i32 0, i32 1
  %343 = extractvalue { double, double } %336, 1
  store double %343, ptr %342, align 8
  %344 = getelementptr inbounds { double, double }, ptr %38, i32 0, i32 0
  %345 = load double, ptr %344, align 16
  %346 = getelementptr inbounds { double, double }, ptr %38, i32 0, i32 1
  %347 = load double, ptr %346, align 8
  %348 = invoke { double, double } @_ZN3JPH4Quat9sRotationENS_4Vec3Ef(double %345, double %347, float noundef 0x3FF921FB60000000)
          to label %349 unwind label %407

349:                                              ; preds = %337
  %350 = getelementptr inbounds %"class.JPH::Quat", ptr %37, i32 0, i32 0
  %351 = getelementptr inbounds %"class.JPH::Vec4", ptr %350, i32 0, i32 0
  %352 = getelementptr inbounds %union.anon.55, ptr %351, i32 0, i32 0
  %353 = getelementptr inbounds { double, double }, ptr %352, i32 0, i32 0
  %354 = extractvalue { double, double } %348, 0
  store double %354, ptr %353, align 16
  %355 = getelementptr inbounds { double, double }, ptr %352, i32 0, i32 1
  %356 = extractvalue { double, double } %348, 1
  store double %356, ptr %355, align 8
  %357 = invoke noundef ptr @_ZNK3JPH8RefConstINS_5ShapeEEcvPKS1_Ev(ptr noundef nonnull align 8 dereferenceable(8) %30)
          to label %358 unwind label %407

358:                                              ; preds = %349
  %359 = getelementptr inbounds { double, double }, ptr %36, i32 0, i32 0
  %360 = load double, ptr %359, align 16
  %361 = getelementptr inbounds { double, double }, ptr %36, i32 0, i32 1
  %362 = load double, ptr %361, align 8
  %363 = getelementptr inbounds { double, double }, ptr %37, i32 0, i32 0
  %364 = load double, ptr %363, align 16
  %365 = getelementptr inbounds { double, double }, ptr %37, i32 0, i32 1
  %366 = load double, ptr %365, align 8
  invoke void @_ZN3JPH21CompoundShapeSettings8AddShapeENS_4Vec3ENS_4QuatEPKNS_5ShapeEj(ptr noundef nonnull align 8 dereferenceable(88) %33, double %360, double %362, double %364, double %366, ptr noundef %357, i32 noundef 0)
          to label %367 unwind label %407

367:                                              ; preds = %358
  call void @llvm.lifetime.start.p0(i64 40, ptr %39) #11
  invoke void @_ZNK3JPH27StaticCompoundShapeSettings6CreateEv(ptr dead_on_unwind writable sret(%"class.JPH::Result") align 8 %39, ptr noundef nonnull align 8 dereferenceable(88) %33)
          to label %368 unwind label %411

368:                                              ; preds = %367
  %369 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK3JPH6ResultINS_3RefINS_5ShapeEEEE3GetEv(ptr noundef nonnull align 8 dereferenceable(33) %39)
          to label %370 unwind label %415

370:                                              ; preds = %368
  %371 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3JPH8RefConstINS_5ShapeEEaSERKNS_3RefIS1_EE(ptr noundef nonnull align 8 dereferenceable(8) %0, ptr noundef nonnull align 8 dereferenceable(8) %369)
          to label %372 unwind label %415

372:                                              ; preds = %370
  call void @_ZN3JPH6ResultINS_3RefINS_5ShapeEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(33) %39) #11
  call void @llvm.lifetime.end.p0(i64 40, ptr %39) #11
  call void @_ZN3JPH21CompoundShapeSettingsD2Ev(ptr noundef nonnull align 8 dereferenceable(88) %33) #11
  call void @llvm.lifetime.end.p0(i64 88, ptr %33) #11
  call void @_ZN3JPH8RefConstINS_5ShapeEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %30) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %30) #11
  call void @_ZN3JPH5ArrayINS_4Vec3ENS_12STLAllocatorIS1_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %25) #11
  call void @llvm.lifetime.end.p0(i64 24, ptr %25) #11
  br label %874

373:                                              ; preds = %294, %292
  %374 = landingpad { ptr, i32 }
          cleanup
  %375 = extractvalue { ptr, i32 } %374, 0
  store ptr %375, ptr %6, align 8
  %376 = extractvalue { ptr, i32 } %374, 1
  store i32 %376, ptr %7, align 4
  call void @llvm.lifetime.end.p0(i64 16, ptr %26) #11
  br label %423

377:                                              ; preds = %302, %301
  %378 = landingpad { ptr, i32 }
          cleanup
  %379 = extractvalue { ptr, i32 } %378, 0
  store ptr %379, ptr %6, align 8
  %380 = extractvalue { ptr, i32 } %378, 1
  store i32 %380, ptr %7, align 4
  call void @llvm.lifetime.end.p0(i64 16, ptr %27) #11
  br label %423

381:                                              ; preds = %304, %303
  %382 = landingpad { ptr, i32 }
          cleanup
  %383 = extractvalue { ptr, i32 } %382, 0
  store ptr %383, ptr %6, align 8
  %384 = extractvalue { ptr, i32 } %382, 1
  store i32 %384, ptr %7, align 4
  call void @llvm.lifetime.end.p0(i64 16, ptr %28) #11
  br label %423

385:                                              ; preds = %306, %305
  %386 = landingpad { ptr, i32 }
          cleanup
  %387 = extractvalue { ptr, i32 } %386, 0
  store ptr %387, ptr %6, align 8
  %388 = extractvalue { ptr, i32 } %386, 1
  store i32 %388, ptr %7, align 4
  call void @llvm.lifetime.end.p0(i64 16, ptr %29) #11
  br label %423

389:                                              ; preds = %307
  %390 = landingpad { ptr, i32 }
          cleanup
  %391 = extractvalue { ptr, i32 } %390, 0
  store ptr %391, ptr %6, align 8
  %392 = extractvalue { ptr, i32 } %390, 1
  store i32 %392, ptr %7, align 4
  br label %402

393:                                              ; preds = %308
  %394 = landingpad { ptr, i32 }
          cleanup
  %395 = extractvalue { ptr, i32 } %394, 0
  store ptr %395, ptr %6, align 8
  %396 = extractvalue { ptr, i32 } %394, 1
  store i32 %396, ptr %7, align 4
  br label %401

397:                                              ; preds = %311, %309
  %398 = landingpad { ptr, i32 }
          cleanup
  %399 = extractvalue { ptr, i32 } %398, 0
  store ptr %399, ptr %6, align 8
  %400 = extractvalue { ptr, i32 } %398, 1
  store i32 %400, ptr %7, align 4
  call void @_ZN3JPH6ResultINS_3RefINS_5ShapeEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(33) %31) #11
  br label %401

401:                                              ; preds = %397, %393
  call void @_ZN3JPH23ConvexHullShapeSettingsD2Ev(ptr noundef nonnull align 8 dereferenceable(120) %32) #11
  br label %402

402:                                              ; preds = %401, %389
  call void @llvm.lifetime.end.p0(i64 120, ptr %32) #11
  call void @llvm.lifetime.end.p0(i64 40, ptr %31) #11
  br label %422

403:                                              ; preds = %312
  %404 = landingpad { ptr, i32 }
          cleanup
  %405 = extractvalue { ptr, i32 } %404, 0
  store ptr %405, ptr %6, align 8
  %406 = extractvalue { ptr, i32 } %404, 1
  store i32 %406, ptr %7, align 4
  br label %421

407:                                              ; preds = %358, %349, %337, %335, %334, %325, %316, %314, %313
  %408 = landingpad { ptr, i32 }
          cleanup
  %409 = extractvalue { ptr, i32 } %408, 0
  store ptr %409, ptr %6, align 8
  %410 = extractvalue { ptr, i32 } %408, 1
  store i32 %410, ptr %7, align 4
  br label %420

411:                                              ; preds = %367
  %412 = landingpad { ptr, i32 }
          cleanup
  %413 = extractvalue { ptr, i32 } %412, 0
  store ptr %413, ptr %6, align 8
  %414 = extractvalue { ptr, i32 } %412, 1
  store i32 %414, ptr %7, align 4
  br label %419

415:                                              ; preds = %370, %368
  %416 = landingpad { ptr, i32 }
          cleanup
  %417 = extractvalue { ptr, i32 } %416, 0
  store ptr %417, ptr %6, align 8
  %418 = extractvalue { ptr, i32 } %416, 1
  store i32 %418, ptr %7, align 4
  call void @_ZN3JPH6ResultINS_3RefINS_5ShapeEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(33) %39) #11
  br label %419

419:                                              ; preds = %415, %411
  call void @llvm.lifetime.end.p0(i64 40, ptr %39) #11
  br label %420

420:                                              ; preds = %419, %407
  call void @_ZN3JPH21CompoundShapeSettingsD2Ev(ptr noundef nonnull align 8 dereferenceable(88) %33) #11
  br label %421

421:                                              ; preds = %420, %403
  call void @llvm.lifetime.end.p0(i64 88, ptr %33) #11
  call void @_ZN3JPH8RefConstINS_5ShapeEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %30) #11
  br label %422

422:                                              ; preds = %421, %402
  call void @llvm.lifetime.end.p0(i64 8, ptr %30) #11
  br label %423

423:                                              ; preds = %422, %385, %381, %377, %373
  call void @_ZN3JPH5ArrayINS_4Vec3ENS_12STLAllocatorIS1_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %25) #11
  call void @llvm.lifetime.end.p0(i64 24, ptr %25) #11
  br label %967

424:                                              ; preds = %2
  call void @llvm.lifetime.start.p0(i64 8, ptr %40) #11
  %425 = invoke noundef ptr @_ZN3JPH27StaticCompoundShapeSettingsnwEm(i64 noundef 88)
          to label %426 unwind label %682

426:                                              ; preds = %424
  call void @llvm.memset.p0.i64(ptr align 8 %425, i8 0, i64 88, i1 false)
  invoke void @_ZN3JPH27StaticCompoundShapeSettingsC2Ev(ptr noundef nonnull align 8 dereferenceable(88) %425)
          to label %427 unwind label %686

427:                                              ; preds = %426
  invoke void @_ZN3JPH3RefINS_27StaticCompoundShapeSettingsEEC2EPS1_(ptr noundef nonnull align 8 dereferenceable(8) %40, ptr noundef %425)
          to label %428 unwind label %682

428:                                              ; preds = %427
  %429 = invoke noundef ptr @_ZNK3JPH3RefINS_27StaticCompoundShapeSettingsEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %40)
          to label %430 unwind label %690

430:                                              ; preds = %428
  invoke void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %41, float noundef 0.000000e+00, float noundef 5.000000e-01, float noundef 0.000000e+00)
          to label %431 unwind label %690

431:                                              ; preds = %430
  %432 = invoke { double, double } @_ZN3JPH4Vec36sAxisZEv()
          to label %433 unwind label %690

433:                                              ; preds = %431
  %434 = getelementptr inbounds %"class.JPH::Vec3", ptr %43, i32 0, i32 0
  %435 = getelementptr inbounds %union.anon, ptr %434, i32 0, i32 0
  %436 = getelementptr inbounds { double, double }, ptr %435, i32 0, i32 0
  %437 = extractvalue { double, double } %432, 0
  store double %437, ptr %436, align 16
  %438 = getelementptr inbounds { double, double }, ptr %435, i32 0, i32 1
  %439 = extractvalue { double, double } %432, 1
  store double %439, ptr %438, align 8
  %440 = getelementptr inbounds { double, double }, ptr %43, i32 0, i32 0
  %441 = load double, ptr %440, align 16
  %442 = getelementptr inbounds { double, double }, ptr %43, i32 0, i32 1
  %443 = load double, ptr %442, align 8
  %444 = invoke { double, double } @_ZN3JPH4Quat9sRotationENS_4Vec3Ef(double %441, double %443, float noundef 0x3FF921FB60000000)
          to label %445 unwind label %690

445:                                              ; preds = %433
  %446 = getelementptr inbounds %"class.JPH::Quat", ptr %42, i32 0, i32 0
  %447 = getelementptr inbounds %"class.JPH::Vec4", ptr %446, i32 0, i32 0
  %448 = getelementptr inbounds %union.anon.55, ptr %447, i32 0, i32 0
  %449 = getelementptr inbounds { double, double }, ptr %448, i32 0, i32 0
  %450 = extractvalue { double, double } %444, 0
  store double %450, ptr %449, align 16
  %451 = getelementptr inbounds { double, double }, ptr %448, i32 0, i32 1
  %452 = extractvalue { double, double } %444, 1
  store double %452, ptr %451, align 8
  %453 = invoke noundef ptr @_ZN3JPH8BoxShapenwEm(i64 noundef 80)
          to label %454 unwind label %690

454:                                              ; preds = %445
  invoke void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %44, float noundef 5.000000e-01, float noundef 0x3FC3333340000000, float noundef 0x3FB99999A0000000)
          to label %455 unwind label %694

455:                                              ; preds = %454
  %456 = getelementptr inbounds { double, double }, ptr %44, i32 0, i32 0
  %457 = load double, ptr %456, align 16
  %458 = getelementptr inbounds { double, double }, ptr %44, i32 0, i32 1
  %459 = load double, ptr %458, align 8
  invoke void @_ZN3JPH8BoxShapeC2ENS_4Vec3EfPKNS_15PhysicsMaterialE(ptr noundef nonnull align 16 dereferenceable(80) %453, double %457, double %459, float noundef 0x3FA99999A0000000, ptr noundef null)
          to label %460 unwind label %694

460:                                              ; preds = %455
  %461 = getelementptr inbounds { double, double }, ptr %41, i32 0, i32 0
  %462 = load double, ptr %461, align 16
  %463 = getelementptr inbounds { double, double }, ptr %41, i32 0, i32 1
  %464 = load double, ptr %463, align 8
  %465 = getelementptr inbounds { double, double }, ptr %42, i32 0, i32 0
  %466 = load double, ptr %465, align 16
  %467 = getelementptr inbounds { double, double }, ptr %42, i32 0, i32 1
  %468 = load double, ptr %467, align 8
  invoke void @_ZN3JPH21CompoundShapeSettings8AddShapeENS_4Vec3ENS_4QuatEPKNS_5ShapeEj(ptr noundef nonnull align 8 dereferenceable(88) %429, double %462, double %464, double %466, double %468, ptr noundef %453, i32 noundef 0)
          to label %469 unwind label %690

469:                                              ; preds = %460
  %470 = invoke noundef ptr @_ZNK3JPH3RefINS_27StaticCompoundShapeSettingsEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %40)
          to label %471 unwind label %690

471:                                              ; preds = %469
  invoke void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %45, float noundef 5.000000e-01, float noundef 0.000000e+00, float noundef 0.000000e+00)
          to label %472 unwind label %690

472:                                              ; preds = %471
  %473 = invoke { double, double } @_ZN3JPH4Vec36sAxisZEv()
          to label %474 unwind label %690

474:                                              ; preds = %472
  %475 = getelementptr inbounds %"class.JPH::Vec3", ptr %47, i32 0, i32 0
  %476 = getelementptr inbounds %union.anon, ptr %475, i32 0, i32 0
  %477 = getelementptr inbounds { double, double }, ptr %476, i32 0, i32 0
  %478 = extractvalue { double, double } %473, 0
  store double %478, ptr %477, align 16
  %479 = getelementptr inbounds { double, double }, ptr %476, i32 0, i32 1
  %480 = extractvalue { double, double } %473, 1
  store double %480, ptr %479, align 8
  %481 = getelementptr inbounds { double, double }, ptr %47, i32 0, i32 0
  %482 = load double, ptr %481, align 16
  %483 = getelementptr inbounds { double, double }, ptr %47, i32 0, i32 1
  %484 = load double, ptr %483, align 8
  %485 = invoke { double, double } @_ZN3JPH4Quat9sRotationENS_4Vec3Ef(double %482, double %484, float noundef 0x3FF921FB60000000)
          to label %486 unwind label %690

486:                                              ; preds = %474
  %487 = getelementptr inbounds %"class.JPH::Quat", ptr %46, i32 0, i32 0
  %488 = getelementptr inbounds %"class.JPH::Vec4", ptr %487, i32 0, i32 0
  %489 = getelementptr inbounds %union.anon.55, ptr %488, i32 0, i32 0
  %490 = getelementptr inbounds { double, double }, ptr %489, i32 0, i32 0
  %491 = extractvalue { double, double } %485, 0
  store double %491, ptr %490, align 16
  %492 = getelementptr inbounds { double, double }, ptr %489, i32 0, i32 1
  %493 = extractvalue { double, double } %485, 1
  store double %493, ptr %492, align 8
  %494 = invoke noundef ptr @_ZN3JPH13CylinderShapenwEm(i64 noundef 56)
          to label %495 unwind label %690

495:                                              ; preds = %486
  invoke void @_ZN3JPH13CylinderShapeC1EfffPKNS_15PhysicsMaterialE(ptr noundef nonnull align 8 dereferenceable(56) %494, float noundef 5.000000e-01, float noundef 0x3FB99999A0000000, float noundef 0x3FA99999A0000000, ptr noundef null)
          to label %496 unwind label %698

496:                                              ; preds = %495
  %497 = getelementptr inbounds { double, double }, ptr %45, i32 0, i32 0
  %498 = load double, ptr %497, align 16
  %499 = getelementptr inbounds { double, double }, ptr %45, i32 0, i32 1
  %500 = load double, ptr %499, align 8
  %501 = getelementptr inbounds { double, double }, ptr %46, i32 0, i32 0
  %502 = load double, ptr %501, align 16
  %503 = getelementptr inbounds { double, double }, ptr %46, i32 0, i32 1
  %504 = load double, ptr %503, align 8
  invoke void @_ZN3JPH21CompoundShapeSettings8AddShapeENS_4Vec3ENS_4QuatEPKNS_5ShapeEj(ptr noundef nonnull align 8 dereferenceable(88) %470, double %498, double %500, double %502, double %504, ptr noundef %494, i32 noundef 0)
          to label %505 unwind label %690

505:                                              ; preds = %496
  %506 = invoke noundef ptr @_ZNK3JPH3RefINS_27StaticCompoundShapeSettingsEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %40)
          to label %507 unwind label %690

507:                                              ; preds = %505
  invoke void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %48, float noundef 0.000000e+00, float noundef 0.000000e+00, float noundef 5.000000e-01)
          to label %508 unwind label %690

508:                                              ; preds = %507
  %509 = invoke { double, double } @_ZN3JPH4Vec36sAxisXEv()
          to label %510 unwind label %690

510:                                              ; preds = %508
  %511 = getelementptr inbounds %"class.JPH::Vec3", ptr %50, i32 0, i32 0
  %512 = getelementptr inbounds %union.anon, ptr %511, i32 0, i32 0
  %513 = getelementptr inbounds { double, double }, ptr %512, i32 0, i32 0
  %514 = extractvalue { double, double } %509, 0
  store double %514, ptr %513, align 16
  %515 = getelementptr inbounds { double, double }, ptr %512, i32 0, i32 1
  %516 = extractvalue { double, double } %509, 1
  store double %516, ptr %515, align 8
  %517 = getelementptr inbounds { double, double }, ptr %50, i32 0, i32 0
  %518 = load double, ptr %517, align 16
  %519 = getelementptr inbounds { double, double }, ptr %50, i32 0, i32 1
  %520 = load double, ptr %519, align 8
  %521 = invoke { double, double } @_ZN3JPH4Quat9sRotationENS_4Vec3Ef(double %518, double %520, float noundef 0x3FF921FB60000000)
          to label %522 unwind label %690

522:                                              ; preds = %510
  %523 = getelementptr inbounds %"class.JPH::Quat", ptr %49, i32 0, i32 0
  %524 = getelementptr inbounds %"class.JPH::Vec4", ptr %523, i32 0, i32 0
  %525 = getelementptr inbounds %union.anon.55, ptr %524, i32 0, i32 0
  %526 = getelementptr inbounds { double, double }, ptr %525, i32 0, i32 0
  %527 = extractvalue { double, double } %521, 0
  store double %527, ptr %526, align 16
  %528 = getelementptr inbounds { double, double }, ptr %525, i32 0, i32 1
  %529 = extractvalue { double, double } %521, 1
  store double %529, ptr %528, align 8
  %530 = invoke noundef ptr @_ZN3JPH27TaperedCapsuleShapeSettingsnwEm(i64 noundef 88)
          to label %531 unwind label %690

531:                                              ; preds = %522
  invoke void @_ZN3JPH27TaperedCapsuleShapeSettingsC1EfffPKNS_15PhysicsMaterialE(ptr noundef nonnull align 8 dereferenceable(88) %530, float noundef 5.000000e-01, float noundef 0x3FC3333340000000, float noundef 0x3FB99999A0000000, ptr noundef null)
          to label %532 unwind label %702

532:                                              ; preds = %531
  %533 = getelementptr inbounds { double, double }, ptr %48, i32 0, i32 0
  %534 = load double, ptr %533, align 16
  %535 = getelementptr inbounds { double, double }, ptr %48, i32 0, i32 1
  %536 = load double, ptr %535, align 8
  %537 = getelementptr inbounds { double, double }, ptr %49, i32 0, i32 0
  %538 = load double, ptr %537, align 16
  %539 = getelementptr inbounds { double, double }, ptr %49, i32 0, i32 1
  %540 = load double, ptr %539, align 8
  invoke void @_ZN3JPH21CompoundShapeSettings8AddShapeENS_4Vec3ENS_4QuatEPKNS_13ShapeSettingsEj(ptr noundef nonnull align 8 dereferenceable(88) %506, double %534, double %536, double %538, double %540, ptr noundef %530, i32 noundef 0)
          to label %541 unwind label %690

541:                                              ; preds = %532
  call void @llvm.lifetime.start.p0(i64 88, ptr %51) #11
  invoke void @_ZN3JPH27StaticCompoundShapeSettingsC2Ev(ptr noundef nonnull align 8 dereferenceable(88) %51)
          to label %542 unwind label %706

542:                                              ; preds = %541
  invoke void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %52, float noundef 0.000000e+00, float noundef 0.000000e+00, float noundef 0.000000e+00)
          to label %543 unwind label %710

543:                                              ; preds = %542
  call void @llvm.lifetime.start.p0(i64 16, ptr %54) #11
  %544 = invoke { double, double } @_ZN3JPH4Vec36sAxisXEv()
          to label %545 unwind label %714

545:                                              ; preds = %543
  %546 = getelementptr inbounds %"class.JPH::Vec3", ptr %55, i32 0, i32 0
  %547 = getelementptr inbounds %union.anon, ptr %546, i32 0, i32 0
  %548 = getelementptr inbounds { double, double }, ptr %547, i32 0, i32 0
  %549 = extractvalue { double, double } %544, 0
  store double %549, ptr %548, align 16
  %550 = getelementptr inbounds { double, double }, ptr %547, i32 0, i32 1
  %551 = extractvalue { double, double } %544, 1
  store double %551, ptr %550, align 8
  %552 = getelementptr inbounds { double, double }, ptr %55, i32 0, i32 0
  %553 = load double, ptr %552, align 16
  %554 = getelementptr inbounds { double, double }, ptr %55, i32 0, i32 1
  %555 = load double, ptr %554, align 8
  %556 = invoke { double, double } @_ZN3JPH4Quat9sRotationENS_4Vec3Ef(double %553, double %555, float noundef 0xBFE921FB60000000)
          to label %557 unwind label %714

557:                                              ; preds = %545
  %558 = getelementptr inbounds %"class.JPH::Quat", ptr %54, i32 0, i32 0
  %559 = getelementptr inbounds %"class.JPH::Vec4", ptr %558, i32 0, i32 0
  %560 = getelementptr inbounds %union.anon.55, ptr %559, i32 0, i32 0
  %561 = getelementptr inbounds { double, double }, ptr %560, i32 0, i32 0
  %562 = extractvalue { double, double } %556, 0
  store double %562, ptr %561, align 16
  %563 = getelementptr inbounds { double, double }, ptr %560, i32 0, i32 1
  %564 = extractvalue { double, double } %556, 1
  store double %564, ptr %563, align 8
  %565 = invoke { double, double } @_ZN3JPH4Vec36sAxisZEv()
          to label %566 unwind label %714

566:                                              ; preds = %557
  %567 = getelementptr inbounds %"class.JPH::Vec3", ptr %57, i32 0, i32 0
  %568 = getelementptr inbounds %union.anon, ptr %567, i32 0, i32 0
  %569 = getelementptr inbounds { double, double }, ptr %568, i32 0, i32 0
  %570 = extractvalue { double, double } %565, 0
  store double %570, ptr %569, align 16
  %571 = getelementptr inbounds { double, double }, ptr %568, i32 0, i32 1
  %572 = extractvalue { double, double } %565, 1
  store double %572, ptr %571, align 8
  %573 = getelementptr inbounds { double, double }, ptr %57, i32 0, i32 0
  %574 = load double, ptr %573, align 16
  %575 = getelementptr inbounds { double, double }, ptr %57, i32 0, i32 1
  %576 = load double, ptr %575, align 8
  %577 = invoke { double, double } @_ZN3JPH4Quat9sRotationENS_4Vec3Ef(double %574, double %576, float noundef 0x3FE921FB60000000)
          to label %578 unwind label %714

578:                                              ; preds = %566
  %579 = getelementptr inbounds %"class.JPH::Quat", ptr %56, i32 0, i32 0
  %580 = getelementptr inbounds %"class.JPH::Vec4", ptr %579, i32 0, i32 0
  %581 = getelementptr inbounds %union.anon.55, ptr %580, i32 0, i32 0
  %582 = getelementptr inbounds { double, double }, ptr %581, i32 0, i32 0
  %583 = extractvalue { double, double } %577, 0
  store double %583, ptr %582, align 16
  %584 = getelementptr inbounds { double, double }, ptr %581, i32 0, i32 1
  %585 = extractvalue { double, double } %577, 1
  store double %585, ptr %584, align 8
  %586 = getelementptr inbounds { double, double }, ptr %56, i32 0, i32 0
  %587 = load double, ptr %586, align 16
  %588 = getelementptr inbounds { double, double }, ptr %56, i32 0, i32 1
  %589 = load double, ptr %588, align 8
  %590 = invoke { double, double } @_ZNK3JPH4QuatmlES0_(ptr noundef nonnull align 16 dereferenceable(16) %54, double %587, double %589)
          to label %591 unwind label %714

591:                                              ; preds = %578
  %592 = getelementptr inbounds %"class.JPH::Quat", ptr %53, i32 0, i32 0
  %593 = getelementptr inbounds %"class.JPH::Vec4", ptr %592, i32 0, i32 0
  %594 = getelementptr inbounds %union.anon.55, ptr %593, i32 0, i32 0
  %595 = getelementptr inbounds { double, double }, ptr %594, i32 0, i32 0
  %596 = extractvalue { double, double } %590, 0
  store double %596, ptr %595, align 16
  %597 = getelementptr inbounds { double, double }, ptr %594, i32 0, i32 1
  %598 = extractvalue { double, double } %590, 1
  store double %598, ptr %597, align 8
  %599 = invoke noundef ptr @_ZNK3JPH3RefINS_27StaticCompoundShapeSettingsEEcvPS1_Ev(ptr noundef nonnull align 8 dereferenceable(8) %40)
          to label %600 unwind label %714

600:                                              ; preds = %591
  %601 = getelementptr inbounds { double, double }, ptr %52, i32 0, i32 0
  %602 = load double, ptr %601, align 16
  %603 = getelementptr inbounds { double, double }, ptr %52, i32 0, i32 1
  %604 = load double, ptr %603, align 8
  %605 = getelementptr inbounds { double, double }, ptr %53, i32 0, i32 0
  %606 = load double, ptr %605, align 16
  %607 = getelementptr inbounds { double, double }, ptr %53, i32 0, i32 1
  %608 = load double, ptr %607, align 8
  invoke void @_ZN3JPH21CompoundShapeSettings8AddShapeENS_4Vec3ENS_4QuatEPKNS_13ShapeSettingsEj(ptr noundef nonnull align 8 dereferenceable(88) %51, double %602, double %604, double %606, double %608, ptr noundef %599, i32 noundef 0)
          to label %609 unwind label %714

609:                                              ; preds = %600
  call void @llvm.lifetime.end.p0(i64 16, ptr %54) #11
  invoke void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %58, float noundef 0.000000e+00, float noundef 0xBFD99999A0000000, float noundef 0.000000e+00)
          to label %610 unwind label %710

610:                                              ; preds = %609
  call void @llvm.lifetime.start.p0(i64 16, ptr %60) #11
  %611 = invoke { double, double } @_ZN3JPH4Vec36sAxisXEv()
          to label %612 unwind label %718

612:                                              ; preds = %610
  %613 = getelementptr inbounds %"class.JPH::Vec3", ptr %61, i32 0, i32 0
  %614 = getelementptr inbounds %union.anon, ptr %613, i32 0, i32 0
  %615 = getelementptr inbounds { double, double }, ptr %614, i32 0, i32 0
  %616 = extractvalue { double, double } %611, 0
  store double %616, ptr %615, align 16
  %617 = getelementptr inbounds { double, double }, ptr %614, i32 0, i32 1
  %618 = extractvalue { double, double } %611, 1
  store double %618, ptr %617, align 8
  %619 = getelementptr inbounds { double, double }, ptr %61, i32 0, i32 0
  %620 = load double, ptr %619, align 16
  %621 = getelementptr inbounds { double, double }, ptr %61, i32 0, i32 1
  %622 = load double, ptr %621, align 8
  %623 = invoke { double, double } @_ZN3JPH4Quat9sRotationENS_4Vec3Ef(double %620, double %622, float noundef 0x3FE921FB60000000)
          to label %624 unwind label %718

624:                                              ; preds = %612
  %625 = getelementptr inbounds %"class.JPH::Quat", ptr %60, i32 0, i32 0
  %626 = getelementptr inbounds %"class.JPH::Vec4", ptr %625, i32 0, i32 0
  %627 = getelementptr inbounds %union.anon.55, ptr %626, i32 0, i32 0
  %628 = getelementptr inbounds { double, double }, ptr %627, i32 0, i32 0
  %629 = extractvalue { double, double } %623, 0
  store double %629, ptr %628, align 16
  %630 = getelementptr inbounds { double, double }, ptr %627, i32 0, i32 1
  %631 = extractvalue { double, double } %623, 1
  store double %631, ptr %630, align 8
  %632 = invoke { double, double } @_ZN3JPH4Vec36sAxisZEv()
          to label %633 unwind label %718

633:                                              ; preds = %624
  %634 = getelementptr inbounds %"class.JPH::Vec3", ptr %63, i32 0, i32 0
  %635 = getelementptr inbounds %union.anon, ptr %634, i32 0, i32 0
  %636 = getelementptr inbounds { double, double }, ptr %635, i32 0, i32 0
  %637 = extractvalue { double, double } %632, 0
  store double %637, ptr %636, align 16
  %638 = getelementptr inbounds { double, double }, ptr %635, i32 0, i32 1
  %639 = extractvalue { double, double } %632, 1
  store double %639, ptr %638, align 8
  %640 = getelementptr inbounds { double, double }, ptr %63, i32 0, i32 0
  %641 = load double, ptr %640, align 16
  %642 = getelementptr inbounds { double, double }, ptr %63, i32 0, i32 1
  %643 = load double, ptr %642, align 8
  %644 = invoke { double, double } @_ZN3JPH4Quat9sRotationENS_4Vec3Ef(double %641, double %643, float noundef 0xC002D97C80000000)
          to label %645 unwind label %718

645:                                              ; preds = %633
  %646 = getelementptr inbounds %"class.JPH::Quat", ptr %62, i32 0, i32 0
  %647 = getelementptr inbounds %"class.JPH::Vec4", ptr %646, i32 0, i32 0
  %648 = getelementptr inbounds %union.anon.55, ptr %647, i32 0, i32 0
  %649 = getelementptr inbounds { double, double }, ptr %648, i32 0, i32 0
  %650 = extractvalue { double, double } %644, 0
  store double %650, ptr %649, align 16
  %651 = getelementptr inbounds { double, double }, ptr %648, i32 0, i32 1
  %652 = extractvalue { double, double } %644, 1
  store double %652, ptr %651, align 8
  %653 = getelementptr inbounds { double, double }, ptr %62, i32 0, i32 0
  %654 = load double, ptr %653, align 16
  %655 = getelementptr inbounds { double, double }, ptr %62, i32 0, i32 1
  %656 = load double, ptr %655, align 8
  %657 = invoke { double, double } @_ZNK3JPH4QuatmlES0_(ptr noundef nonnull align 16 dereferenceable(16) %60, double %654, double %656)
          to label %658 unwind label %718

658:                                              ; preds = %645
  %659 = getelementptr inbounds %"class.JPH::Quat", ptr %59, i32 0, i32 0
  %660 = getelementptr inbounds %"class.JPH::Vec4", ptr %659, i32 0, i32 0
  %661 = getelementptr inbounds %union.anon.55, ptr %660, i32 0, i32 0
  %662 = getelementptr inbounds { double, double }, ptr %661, i32 0, i32 0
  %663 = extractvalue { double, double } %657, 0
  store double %663, ptr %662, align 16
  %664 = getelementptr inbounds { double, double }, ptr %661, i32 0, i32 1
  %665 = extractvalue { double, double } %657, 1
  store double %665, ptr %664, align 8
  %666 = invoke noundef ptr @_ZNK3JPH3RefINS_27StaticCompoundShapeSettingsEEcvPS1_Ev(ptr noundef nonnull align 8 dereferenceable(8) %40)
          to label %667 unwind label %718

667:                                              ; preds = %658
  %668 = getelementptr inbounds { double, double }, ptr %58, i32 0, i32 0
  %669 = load double, ptr %668, align 16
  %670 = getelementptr inbounds { double, double }, ptr %58, i32 0, i32 1
  %671 = load double, ptr %670, align 8
  %672 = getelementptr inbounds { double, double }, ptr %59, i32 0, i32 0
  %673 = load double, ptr %672, align 16
  %674 = getelementptr inbounds { double, double }, ptr %59, i32 0, i32 1
  %675 = load double, ptr %674, align 8
  invoke void @_ZN3JPH21CompoundShapeSettings8AddShapeENS_4Vec3ENS_4QuatEPKNS_13ShapeSettingsEj(ptr noundef nonnull align 8 dereferenceable(88) %51, double %669, double %671, double %673, double %675, ptr noundef %666, i32 noundef 0)
          to label %676 unwind label %718

676:                                              ; preds = %667
  call void @llvm.lifetime.end.p0(i64 16, ptr %60) #11
  call void @llvm.lifetime.start.p0(i64 40, ptr %64) #11
  invoke void @_ZNK3JPH27StaticCompoundShapeSettings6CreateEv(ptr dead_on_unwind writable sret(%"class.JPH::Result") align 8 %64, ptr noundef nonnull align 8 dereferenceable(88) %51)
          to label %677 unwind label %722

677:                                              ; preds = %676
  %678 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK3JPH6ResultINS_3RefINS_5ShapeEEEE3GetEv(ptr noundef nonnull align 8 dereferenceable(33) %64)
          to label %679 unwind label %726

679:                                              ; preds = %677
  %680 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3JPH8RefConstINS_5ShapeEEaSERKNS_3RefIS1_EE(ptr noundef nonnull align 8 dereferenceable(8) %0, ptr noundef nonnull align 8 dereferenceable(8) %678)
          to label %681 unwind label %726

681:                                              ; preds = %679
  call void @_ZN3JPH6ResultINS_3RefINS_5ShapeEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(33) %64) #11
  call void @llvm.lifetime.end.p0(i64 40, ptr %64) #11
  call void @_ZN3JPH21CompoundShapeSettingsD2Ev(ptr noundef nonnull align 8 dereferenceable(88) %51) #11
  call void @llvm.lifetime.end.p0(i64 88, ptr %51) #11
  call void @_ZN3JPH3RefINS_27StaticCompoundShapeSettingsEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %40) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %40) #11
  br label %874

682:                                              ; preds = %427, %424
  %683 = landingpad { ptr, i32 }
          cleanup
  %684 = extractvalue { ptr, i32 } %683, 0
  store ptr %684, ptr %6, align 8
  %685 = extractvalue { ptr, i32 } %683, 1
  store i32 %685, ptr %7, align 4
  br label %734

686:                                              ; preds = %426
  %687 = landingpad { ptr, i32 }
          cleanup
  %688 = extractvalue { ptr, i32 } %687, 0
  store ptr %688, ptr %6, align 8
  %689 = extractvalue { ptr, i32 } %687, 1
  store i32 %689, ptr %7, align 4
  call void @_ZN3JPH27StaticCompoundShapeSettingsdlEPv(ptr noundef %425) #11
  br label %734

690:                                              ; preds = %532, %522, %510, %508, %507, %505, %496, %486, %474, %472, %471, %469, %460, %445, %433, %431, %430, %428
  %691 = landingpad { ptr, i32 }
          cleanup
  %692 = extractvalue { ptr, i32 } %691, 0
  store ptr %692, ptr %6, align 8
  %693 = extractvalue { ptr, i32 } %691, 1
  store i32 %693, ptr %7, align 4
  br label %733

694:                                              ; preds = %455, %454
  %695 = landingpad { ptr, i32 }
          cleanup
  %696 = extractvalue { ptr, i32 } %695, 0
  store ptr %696, ptr %6, align 8
  %697 = extractvalue { ptr, i32 } %695, 1
  store i32 %697, ptr %7, align 4
  call void @_ZN3JPH8BoxShapedlEPv(ptr noundef %453) #11
  br label %733

698:                                              ; preds = %495
  %699 = landingpad { ptr, i32 }
          cleanup
  %700 = extractvalue { ptr, i32 } %699, 0
  store ptr %700, ptr %6, align 8
  %701 = extractvalue { ptr, i32 } %699, 1
  store i32 %701, ptr %7, align 4
  call void @_ZN3JPH13CylinderShapedlEPv(ptr noundef %494) #11
  br label %733

702:                                              ; preds = %531
  %703 = landingpad { ptr, i32 }
          cleanup
  %704 = extractvalue { ptr, i32 } %703, 0
  store ptr %704, ptr %6, align 8
  %705 = extractvalue { ptr, i32 } %703, 1
  store i32 %705, ptr %7, align 4
  call void @_ZN3JPH27TaperedCapsuleShapeSettingsdlEPv(ptr noundef %530) #11
  br label %733

706:                                              ; preds = %541
  %707 = landingpad { ptr, i32 }
          cleanup
  %708 = extractvalue { ptr, i32 } %707, 0
  store ptr %708, ptr %6, align 8
  %709 = extractvalue { ptr, i32 } %707, 1
  store i32 %709, ptr %7, align 4
  br label %732

710:                                              ; preds = %609, %542
  %711 = landingpad { ptr, i32 }
          cleanup
  %712 = extractvalue { ptr, i32 } %711, 0
  store ptr %712, ptr %6, align 8
  %713 = extractvalue { ptr, i32 } %711, 1
  store i32 %713, ptr %7, align 4
  br label %731

714:                                              ; preds = %600, %591, %578, %566, %557, %545, %543
  %715 = landingpad { ptr, i32 }
          cleanup
  %716 = extractvalue { ptr, i32 } %715, 0
  store ptr %716, ptr %6, align 8
  %717 = extractvalue { ptr, i32 } %715, 1
  store i32 %717, ptr %7, align 4
  call void @llvm.lifetime.end.p0(i64 16, ptr %54) #11
  br label %731

718:                                              ; preds = %667, %658, %645, %633, %624, %612, %610
  %719 = landingpad { ptr, i32 }
          cleanup
  %720 = extractvalue { ptr, i32 } %719, 0
  store ptr %720, ptr %6, align 8
  %721 = extractvalue { ptr, i32 } %719, 1
  store i32 %721, ptr %7, align 4
  call void @llvm.lifetime.end.p0(i64 16, ptr %60) #11
  br label %731

722:                                              ; preds = %676
  %723 = landingpad { ptr, i32 }
          cleanup
  %724 = extractvalue { ptr, i32 } %723, 0
  store ptr %724, ptr %6, align 8
  %725 = extractvalue { ptr, i32 } %723, 1
  store i32 %725, ptr %7, align 4
  br label %730

726:                                              ; preds = %679, %677
  %727 = landingpad { ptr, i32 }
          cleanup
  %728 = extractvalue { ptr, i32 } %727, 0
  store ptr %728, ptr %6, align 8
  %729 = extractvalue { ptr, i32 } %727, 1
  store i32 %729, ptr %7, align 4
  call void @_ZN3JPH6ResultINS_3RefINS_5ShapeEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(33) %64) #11
  br label %730

730:                                              ; preds = %726, %722
  call void @llvm.lifetime.end.p0(i64 40, ptr %64) #11
  br label %731

731:                                              ; preds = %730, %718, %714, %710
  call void @_ZN3JPH21CompoundShapeSettingsD2Ev(ptr noundef nonnull align 8 dereferenceable(88) %51) #11
  br label %732

732:                                              ; preds = %731, %706
  call void @llvm.lifetime.end.p0(i64 88, ptr %51) #11
  br label %733

733:                                              ; preds = %732, %702, %698, %694, %690
  call void @_ZN3JPH3RefINS_27StaticCompoundShapeSettingsEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %40) #11
  br label %734

734:                                              ; preds = %733, %686, %682
  call void @llvm.lifetime.end.p0(i64 8, ptr %40) #11
  br label %967

735:                                              ; preds = %2
  call void @llvm.lifetime.start.p0(i64 24, ptr %65) #11
  call void @_ZN3JPH5ArrayINS_4Vec3ENS_12STLAllocatorIS1_EEEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %65) #11
  call void @llvm.lifetime.start.p0(i64 16, ptr %66) #11
  %736 = invoke { double, double } @_ZN3JPH4Vec35sZeroEv()
          to label %737 unwind label %816

737:                                              ; preds = %735
  %738 = getelementptr inbounds %"class.JPH::Vec3", ptr %66, i32 0, i32 0
  %739 = getelementptr inbounds %union.anon, ptr %738, i32 0, i32 0
  %740 = getelementptr inbounds { double, double }, ptr %739, i32 0, i32 0
  %741 = extractvalue { double, double } %736, 0
  store double %741, ptr %740, align 16
  %742 = getelementptr inbounds { double, double }, ptr %739, i32 0, i32 1
  %743 = extractvalue { double, double } %736, 1
  store double %743, ptr %742, align 8
  invoke void @_ZN3JPH5ArrayINS_4Vec3ENS_12STLAllocatorIS1_EEE9push_backEOS1_(ptr noundef nonnull align 8 dereferenceable(24) %65, ptr noundef nonnull align 16 dereferenceable(16) %66)
          to label %744 unwind label %816

744:                                              ; preds = %737
  call void @llvm.lifetime.end.p0(i64 16, ptr %66) #11
  call void @llvm.lifetime.start.p0(i64 16, ptr %67) #11
  invoke void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %67, float noundef 0xBFC99999A0000000, float noundef 0.000000e+00, float noundef 0x3FD99999A0000000)
          to label %745 unwind label %820

745:                                              ; preds = %744
  invoke void @_ZN3JPH5ArrayINS_4Vec3ENS_12STLAllocatorIS1_EEE9push_backEOS1_(ptr noundef nonnull align 8 dereferenceable(24) %65, ptr noundef nonnull align 16 dereferenceable(16) %67)
          to label %746 unwind label %820

746:                                              ; preds = %745
  call void @llvm.lifetime.end.p0(i64 16, ptr %67) #11
  call void @llvm.lifetime.start.p0(i64 16, ptr %68) #11
  invoke void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %68, float noundef 0.000000e+00, float noundef 0x3FC99999A0000000, float noundef 0.000000e+00)
          to label %747 unwind label %824

747:                                              ; preds = %746
  invoke void @_ZN3JPH5ArrayINS_4Vec3ENS_12STLAllocatorIS1_EEE9push_backEOS1_(ptr noundef nonnull align 8 dereferenceable(24) %65, ptr noundef nonnull align 16 dereferenceable(16) %68)
          to label %748 unwind label %824

748:                                              ; preds = %747
  call void @llvm.lifetime.end.p0(i64 16, ptr %68) #11
  call void @llvm.lifetime.start.p0(i64 16, ptr %69) #11
  invoke void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %69, float noundef 0x3FC99999A0000000, float noundef 0.000000e+00, float noundef 0x3FD99999A0000000)
          to label %749 unwind label %828

749:                                              ; preds = %748
  invoke void @_ZN3JPH5ArrayINS_4Vec3ENS_12STLAllocatorIS1_EEE9push_backEOS1_(ptr noundef nonnull align 8 dereferenceable(24) %65, ptr noundef nonnull align 16 dereferenceable(16) %69)
          to label %750 unwind label %828

750:                                              ; preds = %749
  call void @llvm.lifetime.end.p0(i64 16, ptr %69) #11
  call void @llvm.lifetime.start.p0(i64 8, ptr %70) #11
  call void @llvm.lifetime.start.p0(i64 40, ptr %71) #11
  call void @llvm.lifetime.start.p0(i64 120, ptr %72) #11
  invoke void @_ZN3JPH23ConvexHullShapeSettingsC2ERKNS_5ArrayINS_4Vec3ENS_12STLAllocatorIS2_EEEEfPKNS_15PhysicsMaterialE(ptr noundef nonnull align 8 dereferenceable(120) %72, ptr noundef nonnull align 8 dereferenceable(24) %65, float noundef 0x3F847AE140000000, ptr noundef null)
          to label %751 unwind label %832

751:                                              ; preds = %750
  invoke void @_ZNK3JPH23ConvexHullShapeSettings6CreateEv(ptr dead_on_unwind writable sret(%"class.JPH::Result") align 8 %71, ptr noundef nonnull align 8 dereferenceable(120) %72)
          to label %752 unwind label %836

752:                                              ; preds = %751
  %753 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK3JPH6ResultINS_3RefINS_5ShapeEEEE3GetEv(ptr noundef nonnull align 8 dereferenceable(33) %71)
          to label %754 unwind label %840

754:                                              ; preds = %752
  invoke void @_ZN3JPH8RefConstINS_5ShapeEEC2ERKNS_3RefIS1_EE(ptr noundef nonnull align 8 dereferenceable(8) %70, ptr noundef nonnull align 8 dereferenceable(8) %753)
          to label %755 unwind label %840

755:                                              ; preds = %754
  call void @_ZN3JPH6ResultINS_3RefINS_5ShapeEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(33) %71) #11
  call void @_ZN3JPH23ConvexHullShapeSettingsD2Ev(ptr noundef nonnull align 8 dereferenceable(120) %72) #11
  call void @llvm.lifetime.end.p0(i64 120, ptr %72) #11
  call void @llvm.lifetime.end.p0(i64 40, ptr %71) #11
  call void @llvm.lifetime.start.p0(i64 88, ptr %73) #11
  invoke void @_ZN3JPH28MutableCompoundShapeSettingsC2Ev(ptr noundef nonnull align 8 dereferenceable(88) %73)
          to label %756 unwind label %846

756:                                              ; preds = %755
  invoke void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %74, float noundef -5.000000e-01, float noundef 0.000000e+00, float noundef 0.000000e+00)
          to label %757 unwind label %850

757:                                              ; preds = %756
  %758 = invoke { double, double } @_ZN3JPH4Quat9sIdentityEv()
          to label %759 unwind label %850

759:                                              ; preds = %757
  %760 = getelementptr inbounds %"class.JPH::Quat", ptr %75, i32 0, i32 0
  %761 = getelementptr inbounds %"class.JPH::Vec4", ptr %760, i32 0, i32 0
  %762 = getelementptr inbounds %union.anon.55, ptr %761, i32 0, i32 0
  %763 = getelementptr inbounds { double, double }, ptr %762, i32 0, i32 0
  %764 = extractvalue { double, double } %758, 0
  store double %764, ptr %763, align 16
  %765 = getelementptr inbounds { double, double }, ptr %762, i32 0, i32 1
  %766 = extractvalue { double, double } %758, 1
  store double %766, ptr %765, align 8
  %767 = invoke noundef ptr @_ZNK3JPH8RefConstINS_5ShapeEEcvPKS1_Ev(ptr noundef nonnull align 8 dereferenceable(8) %70)
          to label %768 unwind label %850

768:                                              ; preds = %759
  %769 = getelementptr inbounds { double, double }, ptr %74, i32 0, i32 0
  %770 = load double, ptr %769, align 16
  %771 = getelementptr inbounds { double, double }, ptr %74, i32 0, i32 1
  %772 = load double, ptr %771, align 8
  %773 = getelementptr inbounds { double, double }, ptr %75, i32 0, i32 0
  %774 = load double, ptr %773, align 16
  %775 = getelementptr inbounds { double, double }, ptr %75, i32 0, i32 1
  %776 = load double, ptr %775, align 8
  invoke void @_ZN3JPH21CompoundShapeSettings8AddShapeENS_4Vec3ENS_4QuatEPKNS_5ShapeEj(ptr noundef nonnull align 8 dereferenceable(88) %73, double %770, double %772, double %774, double %776, ptr noundef %767, i32 noundef 0)
          to label %777 unwind label %850

777:                                              ; preds = %768
  invoke void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %76, float noundef 5.000000e-01, float noundef 0.000000e+00, float noundef 0.000000e+00)
          to label %778 unwind label %850

778:                                              ; preds = %777
  %779 = invoke { double, double } @_ZN3JPH4Vec36sAxisXEv()
          to label %780 unwind label %850

780:                                              ; preds = %778
  %781 = getelementptr inbounds %"class.JPH::Vec3", ptr %78, i32 0, i32 0
  %782 = getelementptr inbounds %union.anon, ptr %781, i32 0, i32 0
  %783 = getelementptr inbounds { double, double }, ptr %782, i32 0, i32 0
  %784 = extractvalue { double, double } %779, 0
  store double %784, ptr %783, align 16
  %785 = getelementptr inbounds { double, double }, ptr %782, i32 0, i32 1
  %786 = extractvalue { double, double } %779, 1
  store double %786, ptr %785, align 8
  %787 = getelementptr inbounds { double, double }, ptr %78, i32 0, i32 0
  %788 = load double, ptr %787, align 16
  %789 = getelementptr inbounds { double, double }, ptr %78, i32 0, i32 1
  %790 = load double, ptr %789, align 8
  %791 = invoke { double, double } @_ZN3JPH4Quat9sRotationENS_4Vec3Ef(double %788, double %790, float noundef 0x3FF921FB60000000)
          to label %792 unwind label %850

792:                                              ; preds = %780
  %793 = getelementptr inbounds %"class.JPH::Quat", ptr %77, i32 0, i32 0
  %794 = getelementptr inbounds %"class.JPH::Vec4", ptr %793, i32 0, i32 0
  %795 = getelementptr inbounds %union.anon.55, ptr %794, i32 0, i32 0
  %796 = getelementptr inbounds { double, double }, ptr %795, i32 0, i32 0
  %797 = extractvalue { double, double } %791, 0
  store double %797, ptr %796, align 16
  %798 = getelementptr inbounds { double, double }, ptr %795, i32 0, i32 1
  %799 = extractvalue { double, double } %791, 1
  store double %799, ptr %798, align 8
  %800 = invoke noundef ptr @_ZNK3JPH8RefConstINS_5ShapeEEcvPKS1_Ev(ptr noundef nonnull align 8 dereferenceable(8) %70)
          to label %801 unwind label %850

801:                                              ; preds = %792
  %802 = getelementptr inbounds { double, double }, ptr %76, i32 0, i32 0
  %803 = load double, ptr %802, align 16
  %804 = getelementptr inbounds { double, double }, ptr %76, i32 0, i32 1
  %805 = load double, ptr %804, align 8
  %806 = getelementptr inbounds { double, double }, ptr %77, i32 0, i32 0
  %807 = load double, ptr %806, align 16
  %808 = getelementptr inbounds { double, double }, ptr %77, i32 0, i32 1
  %809 = load double, ptr %808, align 8
  invoke void @_ZN3JPH21CompoundShapeSettings8AddShapeENS_4Vec3ENS_4QuatEPKNS_5ShapeEj(ptr noundef nonnull align 8 dereferenceable(88) %73, double %803, double %805, double %807, double %809, ptr noundef %800, i32 noundef 0)
          to label %810 unwind label %850

810:                                              ; preds = %801
  call void @llvm.lifetime.start.p0(i64 40, ptr %79) #11
  invoke void @_ZNK3JPH28MutableCompoundShapeSettings6CreateEv(ptr dead_on_unwind writable sret(%"class.JPH::Result") align 8 %79, ptr noundef nonnull align 8 dereferenceable(88) %73)
          to label %811 unwind label %854

811:                                              ; preds = %810
  %812 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK3JPH6ResultINS_3RefINS_5ShapeEEEE3GetEv(ptr noundef nonnull align 8 dereferenceable(33) %79)
          to label %813 unwind label %858

813:                                              ; preds = %811
  %814 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3JPH8RefConstINS_5ShapeEEaSERKNS_3RefIS1_EE(ptr noundef nonnull align 8 dereferenceable(8) %0, ptr noundef nonnull align 8 dereferenceable(8) %812)
          to label %815 unwind label %858

815:                                              ; preds = %813
  call void @_ZN3JPH6ResultINS_3RefINS_5ShapeEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(33) %79) #11
  call void @llvm.lifetime.end.p0(i64 40, ptr %79) #11
  call void @_ZN3JPH21CompoundShapeSettingsD2Ev(ptr noundef nonnull align 8 dereferenceable(88) %73) #11
  call void @llvm.lifetime.end.p0(i64 88, ptr %73) #11
  call void @_ZN3JPH8RefConstINS_5ShapeEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %70) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %70) #11
  call void @_ZN3JPH5ArrayINS_4Vec3ENS_12STLAllocatorIS1_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %65) #11
  call void @llvm.lifetime.end.p0(i64 24, ptr %65) #11
  br label %874

816:                                              ; preds = %737, %735
  %817 = landingpad { ptr, i32 }
          cleanup
  %818 = extractvalue { ptr, i32 } %817, 0
  store ptr %818, ptr %6, align 8
  %819 = extractvalue { ptr, i32 } %817, 1
  store i32 %819, ptr %7, align 4
  call void @llvm.lifetime.end.p0(i64 16, ptr %66) #11
  br label %866

820:                                              ; preds = %745, %744
  %821 = landingpad { ptr, i32 }
          cleanup
  %822 = extractvalue { ptr, i32 } %821, 0
  store ptr %822, ptr %6, align 8
  %823 = extractvalue { ptr, i32 } %821, 1
  store i32 %823, ptr %7, align 4
  call void @llvm.lifetime.end.p0(i64 16, ptr %67) #11
  br label %866

824:                                              ; preds = %747, %746
  %825 = landingpad { ptr, i32 }
          cleanup
  %826 = extractvalue { ptr, i32 } %825, 0
  store ptr %826, ptr %6, align 8
  %827 = extractvalue { ptr, i32 } %825, 1
  store i32 %827, ptr %7, align 4
  call void @llvm.lifetime.end.p0(i64 16, ptr %68) #11
  br label %866

828:                                              ; preds = %749, %748
  %829 = landingpad { ptr, i32 }
          cleanup
  %830 = extractvalue { ptr, i32 } %829, 0
  store ptr %830, ptr %6, align 8
  %831 = extractvalue { ptr, i32 } %829, 1
  store i32 %831, ptr %7, align 4
  call void @llvm.lifetime.end.p0(i64 16, ptr %69) #11
  br label %866

832:                                              ; preds = %750
  %833 = landingpad { ptr, i32 }
          cleanup
  %834 = extractvalue { ptr, i32 } %833, 0
  store ptr %834, ptr %6, align 8
  %835 = extractvalue { ptr, i32 } %833, 1
  store i32 %835, ptr %7, align 4
  br label %845

836:                                              ; preds = %751
  %837 = landingpad { ptr, i32 }
          cleanup
  %838 = extractvalue { ptr, i32 } %837, 0
  store ptr %838, ptr %6, align 8
  %839 = extractvalue { ptr, i32 } %837, 1
  store i32 %839, ptr %7, align 4
  br label %844

840:                                              ; preds = %754, %752
  %841 = landingpad { ptr, i32 }
          cleanup
  %842 = extractvalue { ptr, i32 } %841, 0
  store ptr %842, ptr %6, align 8
  %843 = extractvalue { ptr, i32 } %841, 1
  store i32 %843, ptr %7, align 4
  call void @_ZN3JPH6ResultINS_3RefINS_5ShapeEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(33) %71) #11
  br label %844

844:                                              ; preds = %840, %836
  call void @_ZN3JPH23ConvexHullShapeSettingsD2Ev(ptr noundef nonnull align 8 dereferenceable(120) %72) #11
  br label %845

845:                                              ; preds = %844, %832
  call void @llvm.lifetime.end.p0(i64 120, ptr %72) #11
  call void @llvm.lifetime.end.p0(i64 40, ptr %71) #11
  br label %865

846:                                              ; preds = %755
  %847 = landingpad { ptr, i32 }
          cleanup
  %848 = extractvalue { ptr, i32 } %847, 0
  store ptr %848, ptr %6, align 8
  %849 = extractvalue { ptr, i32 } %847, 1
  store i32 %849, ptr %7, align 4
  br label %864

850:                                              ; preds = %801, %792, %780, %778, %777, %768, %759, %757, %756
  %851 = landingpad { ptr, i32 }
          cleanup
  %852 = extractvalue { ptr, i32 } %851, 0
  store ptr %852, ptr %6, align 8
  %853 = extractvalue { ptr, i32 } %851, 1
  store i32 %853, ptr %7, align 4
  br label %863

854:                                              ; preds = %810
  %855 = landingpad { ptr, i32 }
          cleanup
  %856 = extractvalue { ptr, i32 } %855, 0
  store ptr %856, ptr %6, align 8
  %857 = extractvalue { ptr, i32 } %855, 1
  store i32 %857, ptr %7, align 4
  br label %862

858:                                              ; preds = %813, %811
  %859 = landingpad { ptr, i32 }
          cleanup
  %860 = extractvalue { ptr, i32 } %859, 0
  store ptr %860, ptr %6, align 8
  %861 = extractvalue { ptr, i32 } %859, 1
  store i32 %861, ptr %7, align 4
  call void @_ZN3JPH6ResultINS_3RefINS_5ShapeEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(33) %79) #11
  br label %862

862:                                              ; preds = %858, %854
  call void @llvm.lifetime.end.p0(i64 40, ptr %79) #11
  br label %863

863:                                              ; preds = %862, %850
  call void @_ZN3JPH21CompoundShapeSettingsD2Ev(ptr noundef nonnull align 8 dereferenceable(88) %73) #11
  br label %864

864:                                              ; preds = %863, %846
  call void @llvm.lifetime.end.p0(i64 88, ptr %73) #11
  call void @_ZN3JPH8RefConstINS_5ShapeEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %70) #11
  br label %865

865:                                              ; preds = %864, %845
  call void @llvm.lifetime.end.p0(i64 8, ptr %70) #11
  br label %866

866:                                              ; preds = %865, %828, %824, %820, %816
  call void @_ZN3JPH5ArrayINS_4Vec3ENS_12STLAllocatorIS1_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %65) #11
  call void @llvm.lifetime.end.p0(i64 24, ptr %65) #11
  br label %967

867:                                              ; preds = %2
  call void @llvm.lifetime.start.p0(i64 8, ptr %80) #11
  invoke void @_ZN12ShapeCreator15CreateTorusMeshEffjj(ptr dead_on_unwind writable sret(%"class.JPH::RefConst.74") align 8 %80, float noundef 2.000000e+00, float noundef 2.500000e-01, i32 noundef 16, i32 noundef 16)
          to label %868 unwind label %870

868:                                              ; preds = %867
  %869 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN3JPH8RefConstINS_5ShapeEEaSEOS2_(ptr noundef nonnull align 8 dereferenceable(8) %0, ptr noundef nonnull align 8 dereferenceable(8) %80) #11
  call void @_ZN3JPH8RefConstINS_5ShapeEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %80) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %80) #11
  br label %874

870:                                              ; preds = %867
  %871 = landingpad { ptr, i32 }
          cleanup
  %872 = extractvalue { ptr, i32 } %871, 0
  store ptr %872, ptr %6, align 8
  %873 = extractvalue { ptr, i32 } %871, 1
  store i32 %873, ptr %7, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %80) #11
  br label %967

874:                                              ; preds = %868, %815, %681, %372, %282, %234, %209, %189, %178, %141, %115, %96, %2
  br label %875

875:                                              ; preds = %874
  %876 = invoke noundef zeroext i1 @_ZNK3JPH8RefConstINS_5ShapeEEneEPKS1_(ptr noundef nonnull align 8 dereferenceable(8) %0, ptr noundef null)
          to label %877 unwind label %97

877:                                              ; preds = %875
  br i1 %876, label %882, label %878

878:                                              ; preds = %877
  %879 = invoke noundef zeroext i1 @_ZN3JPH23AssertFailedParamHelperEPKcS1_jNS_15AssertLastParamE(ptr noundef @.str.146, ptr noundef @.str.147, i32 noundef 953)
          to label %880 unwind label %97

880:                                              ; preds = %878
  br i1 %879, label %881, label %882

881:                                              ; preds = %880
  call void asm sideeffect "int $$0x3", "~{dirflag},~{fpsr},~{flags}"() #11, !srcloc !44
  br label %882

882:                                              ; preds = %881, %880, %877
  br label %883

883:                                              ; preds = %882
  br label %884

884:                                              ; preds = %883
  call void @llvm.lifetime.start.p0(i64 16, ptr %82) #11
  %885 = getelementptr inbounds %class.SamplesApp, ptr %88, i32 0, i32 32
  %886 = load i8, ptr %885, align 16, !tbaa !45, !range !46, !noundef !47
  %887 = trunc i8 %886 to i1
  br i1 %887, label %888, label %907

888:                                              ; preds = %884
  %889 = invoke noundef ptr @_ZNK3JPH8RefConstINS_5ShapeEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %0)
          to label %890 unwind label %933

890:                                              ; preds = %888
  %891 = getelementptr inbounds %class.SamplesApp, ptr %88, i32 0, i32 34
  call void @llvm.memcpy.p0.p0.i64(ptr align 16 %83, ptr align 16 %891, i64 16, i1 false), !tbaa.struct !48
  %892 = getelementptr inbounds { double, double }, ptr %83, i32 0, i32 0
  %893 = load double, ptr %892, align 16
  %894 = getelementptr inbounds { double, double }, ptr %83, i32 0, i32 1
  %895 = load double, ptr %894, align 8
  %896 = load ptr, ptr %889, align 8, !tbaa !50
  %897 = getelementptr inbounds ptr, ptr %896, i64 33
  %898 = load ptr, ptr %897, align 8
  %899 = invoke { double, double } %898(ptr noundef nonnull align 8 dereferenceable(26) %889, double %893, double %895)
          to label %900 unwind label %933

900:                                              ; preds = %890
  %901 = getelementptr inbounds %"class.JPH::Vec3", ptr %82, i32 0, i32 0
  %902 = getelementptr inbounds %union.anon, ptr %901, i32 0, i32 0
  %903 = getelementptr inbounds { double, double }, ptr %902, i32 0, i32 0
  %904 = extractvalue { double, double } %899, 0
  store double %904, ptr %903, align 16
  %905 = getelementptr inbounds { double, double }, ptr %902, i32 0, i32 1
  %906 = extractvalue { double, double } %899, 1
  store double %906, ptr %905, align 8
  br label %916

907:                                              ; preds = %884
  %908 = invoke { double, double } @_ZN3JPH4Vec34sOneEv()
          to label %909 unwind label %933

909:                                              ; preds = %907
  %910 = getelementptr inbounds %"class.JPH::Vec3", ptr %82, i32 0, i32 0
  %911 = getelementptr inbounds %union.anon, ptr %910, i32 0, i32 0
  %912 = getelementptr inbounds { double, double }, ptr %911, i32 0, i32 0
  %913 = extractvalue { double, double } %908, 0
  store double %913, ptr %912, align 16
  %914 = getelementptr inbounds { double, double }, ptr %911, i32 0, i32 1
  %915 = extractvalue { double, double } %908, 1
  store double %915, ptr %914, align 8
  br label %916

916:                                              ; preds = %909, %900
  br label %917

917:                                              ; preds = %916
  %918 = invoke noundef ptr @_ZNK3JPH8RefConstINS_5ShapeEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %0)
          to label %919 unwind label %933

919:                                              ; preds = %917
  call void @llvm.memcpy.p0.p0.i64(ptr align 16 %84, ptr align 16 %82, i64 16, i1 false), !tbaa.struct !48
  %920 = getelementptr inbounds { double, double }, ptr %84, i32 0, i32 0
  %921 = load double, ptr %920, align 16
  %922 = getelementptr inbounds { double, double }, ptr %84, i32 0, i32 1
  %923 = load double, ptr %922, align 8
  %924 = load ptr, ptr %918, align 8, !tbaa !50
  %925 = getelementptr inbounds ptr, ptr %924, i64 32
  %926 = load ptr, ptr %925, align 8
  %927 = invoke noundef zeroext i1 %926(ptr noundef nonnull align 8 dereferenceable(26) %918, double %921, double %923)
          to label %928 unwind label %933

928:                                              ; preds = %919
  br i1 %927, label %937, label %929

929:                                              ; preds = %928
  %930 = invoke noundef zeroext i1 @_ZN3JPH23AssertFailedParamHelperEPKcS1_jNS_15AssertLastParamE(ptr noundef @.str.148, ptr noundef @.str.147, i32 noundef 957)
          to label %931 unwind label %933

931:                                              ; preds = %929
  br i1 %930, label %932, label %937

932:                                              ; preds = %931
  call void asm sideeffect "int $$0x3", "~{dirflag},~{fpsr},~{flags}"() #11, !srcloc !52
  br label %937

933:                                              ; preds = %955, %946, %939, %929, %919, %917, %907, %890, %888
  %934 = landingpad { ptr, i32 }
          cleanup
  %935 = extractvalue { ptr, i32 } %934, 0
  store ptr %935, ptr %6, align 8
  %936 = extractvalue { ptr, i32 } %934, 1
  store i32 %936, ptr %7, align 4
  br label %964

937:                                              ; preds = %932, %931, %928
  br label %938

938:                                              ; preds = %937
  br label %939

939:                                              ; preds = %938
  call void @llvm.memcpy.p0.p0.i64(ptr align 16 %86, ptr align 16 %82, i64 16, i1 false), !tbaa.struct !48
  %940 = getelementptr inbounds { double, double }, ptr %86, i32 0, i32 0
  %941 = load double, ptr %940, align 16
  %942 = getelementptr inbounds { double, double }, ptr %86, i32 0, i32 1
  %943 = load double, ptr %942, align 8
  %944 = invoke noundef zeroext i1 @_ZN3JPH12ScaleHelpers11IsNotScaledENS_4Vec3E(double %941, double %943)
          to label %945 unwind label %933

945:                                              ; preds = %939
  br i1 %944, label %962, label %946

946:                                              ; preds = %945
  %947 = invoke noundef ptr @_ZN3JPH11ScaledShapenwEm(i64 noundef 64)
          to label %948 unwind label %933

948:                                              ; preds = %946
  %949 = invoke noundef ptr @_ZNK3JPH8RefConstINS_5ShapeEEcvPKS1_Ev(ptr noundef nonnull align 8 dereferenceable(8) %0)
          to label %950 unwind label %958

950:                                              ; preds = %948
  call void @llvm.memcpy.p0.p0.i64(ptr align 16 %87, ptr align 16 %82, i64 16, i1 false), !tbaa.struct !48
  %951 = getelementptr inbounds { double, double }, ptr %87, i32 0, i32 0
  %952 = load double, ptr %951, align 16
  %953 = getelementptr inbounds { double, double }, ptr %87, i32 0, i32 1
  %954 = load double, ptr %953, align 8
  invoke void @_ZN3JPH11ScaledShapeC2EPKNS_5ShapeENS_4Vec3E(ptr noundef nonnull align 16 dereferenceable(64) %947, ptr noundef %949, double %952, double %954)
          to label %955 unwind label %958

955:                                              ; preds = %950
  %956 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3JPH8RefConstINS_5ShapeEEaSEPKS1_(ptr noundef nonnull align 8 dereferenceable(8) %0, ptr noundef %947)
          to label %957 unwind label %933

957:                                              ; preds = %955
  br label %962

958:                                              ; preds = %950, %948
  %959 = landingpad { ptr, i32 }
          cleanup
  %960 = extractvalue { ptr, i32 } %959, 0
  store ptr %960, ptr %6, align 8
  %961 = extractvalue { ptr, i32 } %959, 1
  store i32 %961, ptr %7, align 4
  call void @_ZN3JPH11ScaledShapedlEPv(ptr noundef %947) #11
  br label %964

962:                                              ; preds = %957, %945
  store i1 true, ptr %5, align 1
  call void @llvm.lifetime.end.p0(i64 16, ptr %82) #11
  %963 = load i1, ptr %5, align 1
  br i1 %963, label %966, label %965

964:                                              ; preds = %958, %933
  call void @llvm.lifetime.end.p0(i64 16, ptr %82) #11
  br label %967

965:                                              ; preds = %962
  call void @_ZN3JPH8RefConstINS_5ShapeEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %0) #11
  br label %966

966:                                              ; preds = %965, %962
  ret void

967:                                              ; preds = %964, %870, %866, %734, %423, %291, %235, %210, %203, %179, %172, %116, %101, %97
  call void @_ZN3JPH8RefConstINS_5ShapeEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %0) #11
  br label %968

968:                                              ; preds = %967
  %969 = load ptr, ptr %6, align 8
  %970 = load i32, ptr %7, align 4
  %971 = insertvalue { ptr, i32 } poison, ptr %969, 0
  %972 = insertvalue { ptr, i32 } %971, i32 %970, 1
  resume { ptr, i32 } %972
}

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

; Function Attrs: alwaysinline mustprogress uwtable
declare dso_local noundef ptr @_ZN3JPH11SphereShapenwEm(i64 noundef) #1 align 2

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

; Function Attrs: alwaysinline mustprogress nounwind uwtable
declare dso_local void @_ZN3JPH11SphereShapedlEPv(ptr noundef) #7 align 2

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

; Function Attrs: alwaysinline mustprogress uwtable
declare dso_local noundef ptr @_ZN3JPH8BoxShapenwEm(i64 noundef) #1 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN3JPH8BoxShapeC2ENS_4Vec3EfPKNS_15PhysicsMaterialE(ptr noundef nonnull align 16 dereferenceable(80), double, double, float noundef, ptr noundef) unnamed_addr #5 align 2

; Function Attrs: alwaysinline mustprogress nounwind uwtable
declare dso_local void @_ZN3JPH8BoxShapedlEPv(ptr noundef) #7 align 2

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

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

; Function Attrs: alwaysinline mustprogress uwtable
declare dso_local { double, double } @_ZN3JPH4Vec35sZeroEv() #2 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN3JPH23ConvexHullShapeSettingsC2ERKNS_5ArrayINS_4Vec3ENS_12STLAllocatorIS2_EEEEfPKNS_15PhysicsMaterialE(ptr noundef nonnull align 8 dereferenceable(120), ptr noundef nonnull align 8 dereferenceable(24), float noundef, ptr noundef) unnamed_addr #5 align 2

declare void @_ZNK3JPH23ConvexHullShapeSettings6CreateEv(ptr dead_on_unwind writable sret(%"class.JPH::Result") align 8, ptr noundef nonnull align 8 dereferenceable(120)) unnamed_addr #10

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

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

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

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

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

; Function Attrs: alwaysinline mustprogress uwtable
declare dso_local noundef ptr @_ZN3JPH12CapsuleShapenwEm(i64 noundef) #1 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN3JPH12CapsuleShapeC2EffPKNS_15PhysicsMaterialE(ptr noundef nonnull align 8 dereferenceable(56), float noundef, float noundef, ptr noundef) unnamed_addr #5 align 2

; Function Attrs: alwaysinline mustprogress nounwind uwtable
declare dso_local void @_ZN3JPH12CapsuleShapedlEPv(ptr noundef) #7 align 2

declare void @_ZN3JPH27TaperedCapsuleShapeSettingsC1EfffPKNS_15PhysicsMaterialE(ptr noundef nonnull align 8 dereferenceable(88), float noundef, float noundef, float noundef, ptr noundef) unnamed_addr #10

declare void @_ZNK3JPH27TaperedCapsuleShapeSettings6CreateEv(ptr dead_on_unwind writable sret(%"class.JPH::Result") align 8, ptr noundef nonnull align 8 dereferenceable(88)) unnamed_addr #10

; Function Attrs: alwaysinline mustprogress uwtable
declare dso_local noundef ptr @_ZN3JPH13CylinderShapenwEm(i64 noundef) #1 align 2

declare void @_ZN3JPH13CylinderShapeC1EfffPKNS_15PhysicsMaterialE(ptr noundef nonnull align 8 dereferenceable(56), float noundef, float noundef, float noundef, ptr noundef) unnamed_addr #10

; Function Attrs: alwaysinline mustprogress nounwind uwtable
declare dso_local void @_ZN3JPH13CylinderShapedlEPv(ptr noundef) #7 align 2

; Function Attrs: alwaysinline mustprogress uwtable
declare dso_local noundef ptr @_ZN3JPH13TriangleShapenwEm(i64 noundef) #1 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN3JPH13TriangleShapeC2ENS_4Vec3ES1_S1_fPKNS_15PhysicsMaterialE(ptr noundef nonnull align 16 dereferenceable(112), double, double, double, double, double, double, float noundef, ptr noundef) unnamed_addr #5 align 2

; Function Attrs: alwaysinline mustprogress nounwind uwtable
declare dso_local void @_ZN3JPH13TriangleShapedlEPv(ptr noundef) #7 align 2

; Function Attrs: alwaysinline mustprogress uwtable
declare dso_local noundef ptr @_ZN3JPH22RotatedTranslatedShapenwEm(i64 noundef) #1 align 2

; Function Attrs: alwaysinline mustprogress uwtable
declare dso_local { double, double } @_ZN3JPH4Quat9sRotationENS_4Vec3Ef(double, double, float noundef) #1 align 2

; Function Attrs: alwaysinline mustprogress uwtable
declare dso_local { double, double } @_ZN3JPH4Vec36sAxisYEv() #1 align 2

declare void @_ZN3JPH22RotatedTranslatedShapeC1ENS_4Vec3ENS_4QuatEPKNS_5ShapeE(ptr noundef nonnull align 16 dereferenceable(80), double, double, double, double, ptr noundef) unnamed_addr #10

; Function Attrs: alwaysinline mustprogress nounwind uwtable
declare dso_local void @_ZN3JPH22RotatedTranslatedShapedlEPv(ptr noundef) #7 align 2

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

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

declare void @_ZN3JPH21CompoundShapeSettings8AddShapeENS_4Vec3ENS_4QuatEPKNS_5ShapeEj(ptr noundef nonnull align 8 dereferenceable(88), double, double, double, double, ptr noundef, i32 noundef) #10

; Function Attrs: alwaysinline mustprogress uwtable
declare dso_local { double, double } @_ZN3JPH4Quat9sIdentityEv() #1 align 2

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

; Function Attrs: alwaysinline mustprogress uwtable
declare dso_local { double, double } @_ZN3JPH4Vec36sAxisXEv() #1 align 2

declare void @_ZNK3JPH27StaticCompoundShapeSettings6CreateEv(ptr dead_on_unwind writable sret(%"class.JPH::Result") align 8, ptr noundef nonnull align 8 dereferenceable(88)) unnamed_addr #10

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

; Function Attrs: alwaysinline mustprogress uwtable
declare dso_local noundef ptr @_ZN3JPH27StaticCompoundShapeSettingsnwEm(i64 noundef) #1 align 2

; Function Attrs: alwaysinline mustprogress nounwind uwtable
declare dso_local void @_ZN3JPH27StaticCompoundShapeSettingsdlEPv(ptr noundef) #7 align 2

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

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

; Function Attrs: alwaysinline mustprogress uwtable
declare dso_local { double, double } @_ZN3JPH4Vec36sAxisZEv() #1 align 2

declare void @_ZN3JPH21CompoundShapeSettings8AddShapeENS_4Vec3ENS_4QuatEPKNS_13ShapeSettingsEj(ptr noundef nonnull align 8 dereferenceable(88), double, double, double, double, ptr noundef, i32 noundef) #10

; Function Attrs: alwaysinline mustprogress uwtable
declare dso_local noundef ptr @_ZN3JPH27TaperedCapsuleShapeSettingsnwEm(i64 noundef) #1 align 2

; Function Attrs: alwaysinline mustprogress nounwind uwtable
declare dso_local void @_ZN3JPH27TaperedCapsuleShapeSettingsdlEPv(ptr noundef) #7 align 2

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

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

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

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

declare void @_ZNK3JPH28MutableCompoundShapeSettings6CreateEv(ptr dead_on_unwind writable sret(%"class.JPH::Result") align 8, ptr noundef nonnull align 8 dereferenceable(88)) unnamed_addr #10

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

declare void @_ZN12ShapeCreator15CreateTorusMeshEffjj(ptr dead_on_unwind writable sret(%"class.JPH::RefConst.74") align 8, float noundef, float noundef, i32 noundef, i32 noundef) #10

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

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

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

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef zeroext i1 @_ZN3JPH12ScaleHelpers11IsNotScaledENS_4Vec3E(double, double) #8

; Function Attrs: alwaysinline mustprogress uwtable
declare dso_local noundef ptr @_ZN3JPH11ScaledShapenwEm(i64 noundef) #1 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN3JPH11ScaledShapeC2EPKNS_5ShapeENS_4Vec3E(ptr noundef nonnull align 16 dereferenceable(64), ptr noundef, double, double) unnamed_addr #5 align 2

; Function Attrs: alwaysinline mustprogress nounwind uwtable
declare dso_local void @_ZN3JPH11ScaledShapedlEPv(ptr noundef) #7 align 2

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

attributes #0 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #1 = { alwaysinline mustprogress uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #2 = { 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 = { nocallback nofree nounwind willreturn memory(argmem: readwrite) }
attributes #4 = { nocallback nofree nounwind willreturn memory(argmem: write) }
attributes #5 = { 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 #6 = { 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 #7 = { alwaysinline 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 #8 = { 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 #9 = { 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 #10 = { "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 #11 = { 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, !35, i64 556}
!10 = !{!"_ZTS10SamplesApp", !11, i64 0, !22, i64 272, !14, i64 276, !22, i64 280, !6, i64 288, !6, i64 296, !6, i64 304, !23, i64 312, !25, i64 328, !27, i64 336, !6, i64 344, !6, i64 352, !29, i64 360, !30, i64 448, !6, i64 480, !6, i64 488, !6, i64 496, !22, i64 504, !21, i64 508, !14, i64 512, !21, i64 516, !21, i64 517, !21, i64 518, !21, i64 519, !32, i64 520, !33, i64 544, !22, i64 548, !34, i64 552, !35, i64 556, !21, i64 560, !13, i64 576, !36, i64 592, !36, i64 593, !37, i64 594, !38, i64 595, !14, i64 596, !21, i64 600, !21, i64 601, !21, i64 602, !21, i64 603, !22, i64 604, !21, i64 608, !39, i64 612, !14, i64 616, !40, i64 620, !14, i64 624, !14, i64 628, !21, i64 632, !13, i64 640, !21, i64 656, !6, i64 664, !41, i64 672, !42, i64 680, !22, i64 688, !14, i64 692, !14, i64 696, !22, i64 700, !43, i64 704}
!11 = !{!"_ZTS11Application", !12, i64 16, !12, i64 80, !6, i64 144, !6, i64 152, !6, i64 160, !15, i64 168, !6, i64 176, !6, i64 184, !6, i64 192, !6, i64 200, !16, i64 208, !19, i64 240, !21, i64 248, !21, i64 249, !21, i64 250, !21, i64 251, !14, i64 252, !14, i64 256, !14, i64 260, !14, i64 264, !22, i64 268}
!12 = !{!"_ZTS11CameraState", !13, i64 0, !13, i64 16, !13, i64 32, !14, i64 48}
!13 = !{!"_ZTSN3JPH4Vec3E", !7, i64 0}
!14 = !{!"float", !7, i64 0}
!15 = !{!"_ZTSN3JPH8RefConstI4FontEE", !6, i64 0}
!16 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcEN3JPH12STLAllocatorIcEEEE", !17, i64 0, !18, i64 8, !7, i64 16}
!17 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcEN3JPH12STLAllocatorIcEEE12_Alloc_hiderE", !6, i64 0}
!18 = !{!"long", !7, i64 0}
!19 = !{!"_ZTSNSt6chrono10time_pointINS_3_V212system_clockENS_8durationIlSt5ratioILl1ELl1000000000EEEEEE", !20, i64 0}
!20 = !{!"_ZTSNSt6chrono8durationIlSt5ratioILl1ELl1000000000EEEE", !18, i64 0}
!21 = !{!"bool", !7, i64 0}
!22 = !{!"int", !7, i64 0}
!23 = !{!"_ZTS20BPLayerInterfaceImpl", !24, i64 0, !7, i64 8}
!24 = !{!"_ZTSN3JPH24BroadPhaseLayerInterfaceE"}
!25 = !{!"_ZTS33ObjectVsBroadPhaseLayerFilterImpl", !26, i64 0}
!26 = !{!"_ZTSN3JPH29ObjectVsBroadPhaseLayerFilterE"}
!27 = !{!"_ZTS25ObjectLayerPairFilterImpl", !28, i64 0}
!28 = !{!"_ZTSN3JPH21ObjectLayerPairFilterE"}
!29 = !{!"_ZTSN3JPH15PhysicsSettingsE", !22, i64 0, !22, i64 4, !22, i64 8, !14, i64 12, !14, i64 16, !14, i64 20, !14, i64 24, !14, i64 28, !14, i64 32, !14, i64 36, !14, i64 40, !14, i64 44, !14, i64 48, !14, i64 52, !22, i64 56, !22, i64 60, !14, i64 64, !14, i64 68, !14, i64 72, !21, i64 76, !21, i64 77, !21, i64 78, !21, i64 79, !21, i64 80, !21, i64 81, !21, i64 82}
!30 = !{!"_ZTSN3JPH12UnorderedMapINS_8RefConstINS_5ShapeEEENS_3RefINS_13DebugRenderer8GeometryEEENS_4HashIS3_EESt8equal_toIS3_EEE", !31, i64 0}
!31 = !{!"_ZTSN3JPH9HashTableINS_8RefConstINS_5ShapeEEESt4pairIS3_NS_3RefINS_13DebugRenderer8GeometryEEEENS_18UnorderedMapDetailIS3_S8_EENS_4HashIS3_EESt8equal_toIS3_EEE", !6, i64 0, !6, i64 8, !22, i64 16, !22, i64 20, !22, i64 24}
!32 = !{!"_ZTSN3JPH5ArrayIN10SamplesApp13PlayBackFrameENS_12STLAllocatorIS2_EEEE", !18, i64 0, !18, i64 8, !6, i64 16}
!33 = !{!"_ZTSN10SamplesApp13EPlaybackModeE", !7, i64 0}
!34 = !{!"_ZTSN10SamplesApp10EProbeModeE", !7, i64 0}
!35 = !{!"_ZTSN10SamplesApp11EProbeShapeE", !7, i64 0}
!36 = !{!"_ZTSN3JPH13EBackFaceModeE", !7, i64 0}
!37 = !{!"_ZTSN3JPH15EActiveEdgeModeE", !7, i64 0}
!38 = !{!"_ZTSN3JPH17ECollectFacesModeE", !7, i64 0}
!39 = !{!"_ZTSN10SamplesApp17EShootObjectShapeE", !7, i64 0}
!40 = !{!"_ZTSN3JPH14EMotionQualityE", !7, i64 0}
!41 = !{!"_ZTSN3JPH6BodyIDE", !22, i64 0}
!42 = !{!"_ZTSN3JPH3RefINS_10ConstraintEEE", !6, i64 0}
!43 = !{!"_ZTSNSt6chrono8durationIlSt5ratioILl1ELl1000000EEEE", !18, i64 0}
!44 = !{i64 2161774947}
!45 = !{!10, !21, i64 560}
!46 = !{i8 0, i8 2}
!47 = !{}
!48 = !{i64 0, i64 16, !49}
!49 = !{!7, !7, i64 0}
!50 = !{!51, !51, i64 0}
!51 = !{!"vtable pointer", !8, i64 0}
!52 = !{i64 2161775282}


; 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.JPH::RefConst.74" = type { ptr }
%"class.JPH::Vec3" = type { %union.anon }
%union.anon = type { <4 x float> }
%"class.JPH::Array.77" = type { i64, i64, ptr }
%"class.JPH::Result" = type <{ %union.anon.80, i8, [7 x i8] }>
%union.anon.80 = type { %"class.std::__cxx11::basic_string" }
%"class.std::__cxx11::basic_string" = type { %"struct.std::__cxx11::basic_string<char, std::char_traits<char>, JPH::STLAllocator<char>>::_Alloc_hider", i64, %union.anon.0 }
%"struct.std::__cxx11::basic_string<char, std::char_traits<char>, JPH::STLAllocator<char>>::_Alloc_hider" = type { ptr }
%union.anon.0 = type { i64, [8 x i8] }
%"class.JPH::ConvexHullShapeSettings" = type <{ %"class.JPH::ConvexShapeSettings.base", [4 x i8], %"class.JPH::Array.77", float, float, float, [4 x i8] }>
%"class.JPH::ConvexShapeSettings.base" = type <{ %"class.JPH::ShapeSettings", %"class.JPH::RefConst.76", float }>
%"class.JPH::ShapeSettings" = type { %"class.JPH::SerializableObject", %"class.JPH::RefTarget.82", i64, %"class.JPH::Result" }
%"class.JPH::SerializableObject" = type { ptr }
%"class.JPH::RefTarget.82" = type { %"struct.std::atomic" }
%"struct.std::atomic" = type { %"struct.std::__atomic_base" }
%"struct.std::__atomic_base" = type { i32 }
%"class.JPH::RefConst.76" = type { ptr }
%"class.JPH::TaperedCapsuleShapeSettings" = type { %"class.JPH::ConvexShapeSettings.base", float, float, float }
%"class.JPH::StaticCompoundShapeSettings" = type { %"class.JPH::CompoundShapeSettings" }
%"class.JPH::CompoundShapeSettings" = type { %"class.JPH::ShapeSettings", %"class.JPH::Array.83" }
%"class.JPH::Array.83" = type { i64, i64, ptr }
%"class.JPH::Ref.86" = type { ptr }
%"class.JPH::Quat" = type { %"class.JPH::Vec4" }
%"class.JPH::Vec4" = type { %union.anon.55 }
%union.anon.55 = type { <4 x float> }
%"class.JPH::MutableCompoundShapeSettings" = type { %"class.JPH::CompoundShapeSettings" }

@.str.146 = external hidden unnamed_addr constant [17 x i8], align 1
@.str.147 = external hidden unnamed_addr constant [75 x i8], align 1
@.str.148 = external hidden unnamed_addr constant [27 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: alwaysinline mustprogress uwtable
declare dso_local { double, double } @_ZN3JPH4Vec34sOneEv() local_unnamed_addr #1 align 2

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

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

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN10SamplesApp16CreateProbeShapeEv(ptr dead_on_unwind noalias nonnull writable sret(%"class.JPH::RefConst.74") align 8 %0, ptr nocapture noundef nonnull readonly align 16 dereferenceable(712) %1) local_unnamed_addr #4 align 2 personality ptr @__gxx_personality_v0 {
  %3 = alloca %"class.JPH::Vec3", align 16
  %4 = alloca %"class.JPH::Array.77", align 8
  %5 = alloca %"class.JPH::Vec3", align 16
  %6 = alloca %"class.JPH::Vec3", align 16
  %7 = alloca %"class.JPH::Vec3", align 16
  %8 = alloca %"class.JPH::Vec3", align 16
  %9 = alloca %"class.JPH::Result", align 8
  %10 = alloca %"class.JPH::ConvexHullShapeSettings", align 8
  %11 = alloca %"class.JPH::Result", align 8
  %12 = alloca %"class.JPH::TaperedCapsuleShapeSettings", align 8
  %13 = alloca %"class.JPH::Vec3", align 16
  %14 = alloca %"class.JPH::Vec3", align 16
  %15 = alloca %"class.JPH::Vec3", align 16
  %16 = alloca %"class.JPH::Vec3", align 16
  %17 = alloca %"class.JPH::Vec3", align 16
  %18 = alloca %"class.JPH::Array.77", align 8
  %19 = alloca %"class.JPH::Vec3", align 16
  %20 = alloca %"class.JPH::Vec3", align 16
  %21 = alloca %"class.JPH::Vec3", align 16
  %22 = alloca %"class.JPH::Vec3", align 16
  %23 = alloca %"class.JPH::RefConst.74", align 8
  %24 = alloca %"class.JPH::Result", align 8
  %25 = alloca %"class.JPH::ConvexHullShapeSettings", align 8
  %26 = alloca %"class.JPH::StaticCompoundShapeSettings", align 8
  %27 = alloca %"class.JPH::Vec3", align 16
  %28 = alloca %"class.JPH::Vec3", align 16
  %29 = alloca %"class.JPH::Result", align 8
  %30 = alloca %"class.JPH::Ref.86", align 8
  %31 = alloca %"class.JPH::Vec3", align 16
  %32 = alloca %"class.JPH::Vec3", align 16
  %33 = alloca %"class.JPH::Vec3", align 16
  %34 = alloca %"class.JPH::Vec3", align 16
  %35 = alloca %"class.JPH::StaticCompoundShapeSettings", align 8
  %36 = alloca %"class.JPH::Vec3", align 16
  %37 = alloca %"class.JPH::Quat", align 16
  %38 = alloca %"class.JPH::Vec3", align 16
  %39 = alloca %"class.JPH::Quat", align 16
  %40 = alloca %"class.JPH::Result", align 8
  %41 = alloca %"class.JPH::Array.77", align 8
  %42 = alloca %"class.JPH::Vec3", align 16
  %43 = alloca %"class.JPH::Vec3", align 16
  %44 = alloca %"class.JPH::Vec3", align 16
  %45 = alloca %"class.JPH::Vec3", align 16
  %46 = alloca %"class.JPH::RefConst.74", align 8
  %47 = alloca %"class.JPH::Result", align 8
  %48 = alloca %"class.JPH::ConvexHullShapeSettings", align 8
  %49 = alloca %"class.JPH::MutableCompoundShapeSettings", align 8
  %50 = alloca %"class.JPH::Vec3", align 16
  %51 = alloca %"class.JPH::Vec3", align 16
  %52 = alloca %"class.JPH::Result", align 8
  %53 = alloca %"class.JPH::RefConst.74", align 8
  tail call void @_ZN3JPH8RefConstINS_5ShapeEEC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %0)
  %54 = getelementptr inbounds i8, ptr %1, i64 556
  %55 = load i32, ptr %54, align 4, !tbaa !5
  switch i32 %55, label %487 [
    i32 0, label %56
    i32 1, label %63
    i32 2, label %72
    i32 3, label %108
    i32 4, label %113
    i32 5, label %128
    i32 6, label %133
    i32 7, label %150
    i32 8, label %179
    i32 9, label %256
    i32 10, label %405
    i32 11, label %482
  ]

56:                                               ; preds = %2
  %57 = invoke noundef ptr @_ZN3JPH11SphereShapenwEm(i64 noundef 48)
          to label %58 unwind label %59

58:                                               ; preds = %56
  invoke void @_ZN3JPH11SphereShapeC2EfPKNS_15PhysicsMaterialE(ptr noundef nonnull align 8 dereferenceable(48) %57, float noundef 0x3FC99999A0000000, ptr noundef null)
          to label %.invoke unwind label %61

59:                                               ; preds = %.invoke, %489, %150, %133, %128, %108, %63, %56
  %60 = landingpad { ptr, i32 }
          cleanup
  br label %531

61:                                               ; preds = %58
  %62 = landingpad { ptr, i32 }
          cleanup
  tail call void @_ZN3JPH11SphereShapedlEPv(ptr noundef %57) #10
  br label %531

63:                                               ; preds = %2
  %64 = invoke noundef ptr @_ZN3JPH8BoxShapenwEm(i64 noundef 80)
          to label %65 unwind label %59

65:                                               ; preds = %63
  invoke void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %3, float noundef 0x3FB99999A0000000, float noundef 0x3FC99999A0000000, float noundef 0x3FD3333340000000)
          to label %66 unwind label %70

66:                                               ; preds = %65
  %67 = load double, ptr %3, align 16
  %68 = getelementptr inbounds i8, ptr %3, i64 8
  %69 = load double, ptr %68, align 8
  invoke void @_ZN3JPH8BoxShapeC2ENS_4Vec3EfPKNS_15PhysicsMaterialE(ptr noundef nonnull align 16 dereferenceable(80) %64, double %67, double %69, float noundef 0x3FA99999A0000000, ptr noundef null)
          to label %.invoke unwind label %70

70:                                               ; preds = %66, %65
  %71 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3JPH8BoxShapedlEPv(ptr noundef %64) #10
  br label %531

72:                                               ; preds = %2
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %4) #10
  call void @_ZN3JPH5ArrayINS_4Vec3ENS_12STLAllocatorIS1_EEEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %4) #10
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %5) #10
  %73 = invoke { double, double } @_ZN3JPH4Vec35sZeroEv()
          to label %74 unwind label %91

74:                                               ; preds = %72
  %75 = extractvalue { double, double } %73, 0
  store double %75, ptr %5, align 16
  %76 = getelementptr inbounds i8, ptr %5, i64 8
  %77 = extractvalue { double, double } %73, 1
  store double %77, ptr %76, align 8
  invoke void @_ZN3JPH5ArrayINS_4Vec3ENS_12STLAllocatorIS1_EEE9push_backEOS1_(ptr noundef nonnull align 8 dereferenceable(24) %4, ptr noundef nonnull align 16 dereferenceable(16) %5)
          to label %78 unwind label %91

78:                                               ; preds = %74
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %5) #10
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %6) #10
  invoke void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %6, float noundef 0x3FC99999A0000000, float noundef 0.000000e+00, float noundef 0x3FD99999A0000000)
          to label %79 unwind label %93

79:                                               ; preds = %78
  invoke void @_ZN3JPH5ArrayINS_4Vec3ENS_12STLAllocatorIS1_EEE9push_backEOS1_(ptr noundef nonnull align 8 dereferenceable(24) %4, ptr noundef nonnull align 16 dereferenceable(16) %6)
          to label %80 unwind label %93

80:                                               ; preds = %79
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %6) #10
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %7) #10
  invoke void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %7, float noundef 0x3FD99999A0000000, float noundef 0.000000e+00, float noundef 0.000000e+00)
          to label %81 unwind label %95

81:                                               ; preds = %80
  invoke void @_ZN3JPH5ArrayINS_4Vec3ENS_12STLAllocatorIS1_EEE9push_backEOS1_(ptr noundef nonnull align 8 dereferenceable(24) %4, ptr noundef nonnull align 16 dereferenceable(16) %7)
          to label %82 unwind label %95

82:                                               ; preds = %81
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %7) #10
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %8) #10
  invoke void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %8, float noundef 0x3FC99999A0000000, float noundef 0xBFC99999A0000000, float noundef 1.000000e+00)
          to label %83 unwind label %97

83:                                               ; preds = %82
  invoke void @_ZN3JPH5ArrayINS_4Vec3ENS_12STLAllocatorIS1_EEE9push_backEOS1_(ptr noundef nonnull align 8 dereferenceable(24) %4, ptr noundef nonnull align 16 dereferenceable(16) %8)
          to label %84 unwind label %97

84:                                               ; preds = %83
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %8) #10
  call void @llvm.lifetime.start.p0(i64 40, ptr nonnull %9) #10
  call void @llvm.lifetime.start.p0(i64 120, ptr nonnull %10) #10
  invoke void @_ZN3JPH23ConvexHullShapeSettingsC2ERKNS_5ArrayINS_4Vec3ENS_12STLAllocatorIS2_EEEEfPKNS_15PhysicsMaterialE(ptr noundef nonnull align 8 dereferenceable(120) %10, ptr noundef nonnull align 8 dereferenceable(24) %4, float noundef 0x3F847AE140000000, ptr noundef null)
          to label %85 unwind label %99

85:                                               ; preds = %84
  invoke void @_ZNK3JPH23ConvexHullShapeSettings6CreateEv(ptr dead_on_unwind nonnull writable sret(%"class.JPH::Result") align 8 %9, ptr noundef nonnull align 8 dereferenceable(120) %10)
          to label %86 unwind label %101

86:                                               ; preds = %85
  %87 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK3JPH6ResultINS_3RefINS_5ShapeEEEE3GetEv(ptr noundef nonnull align 8 dereferenceable(33) %9)
          to label %88 unwind label %103

88:                                               ; preds = %86
  %89 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3JPH8RefConstINS_5ShapeEEaSERKNS_3RefIS1_EE(ptr noundef nonnull align 8 dereferenceable(8) %0, ptr noundef nonnull align 8 dereferenceable(8) %87)
          to label %90 unwind label %103

90:                                               ; preds = %88
  call void @_ZN3JPH6ResultINS_3RefINS_5ShapeEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(33) %9) #10
  call void @_ZN3JPH23ConvexHullShapeSettingsD2Ev(ptr noundef nonnull align 8 dereferenceable(120) %10) #10
  call void @llvm.lifetime.end.p0(i64 120, ptr nonnull %10) #10
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %9) #10
  call void @_ZN3JPH5ArrayINS_4Vec3ENS_12STLAllocatorIS1_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %4) #10
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %4) #10
  br label %487

91:                                               ; preds = %74, %72
  %92 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %5) #10
  br label %107

93:                                               ; preds = %79, %78
  %94 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %6) #10
  br label %107

95:                                               ; preds = %81, %80
  %96 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %7) #10
  br label %107

97:                                               ; preds = %83, %82
  %98 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %8) #10
  br label %107

99:                                               ; preds = %84
  %100 = landingpad { ptr, i32 }
          cleanup
  br label %106

101:                                              ; preds = %85
  %102 = landingpad { ptr, i32 }
          cleanup
  br label %105

103:                                              ; preds = %88, %86
  %104 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3JPH6ResultINS_3RefINS_5ShapeEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(33) %9) #10
  br label %105

105:                                              ; preds = %103, %101
  %.pn109 = phi { ptr, i32 } [ %104, %103 ], [ %102, %101 ]
  call void @_ZN3JPH23ConvexHullShapeSettingsD2Ev(ptr noundef nonnull align 8 dereferenceable(120) %10) #10
  br label %106

106:                                              ; preds = %105, %99
  %.pn109.pn = phi { ptr, i32 } [ %.pn109, %105 ], [ %100, %99 ]
  call void @llvm.lifetime.end.p0(i64 120, ptr nonnull %10) #10
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %9) #10
  br label %107

107:                                              ; preds = %106, %97, %95, %93, %91
  %.pn109.pn.pn = phi { ptr, i32 } [ %.pn109.pn, %106 ], [ %98, %97 ], [ %96, %95 ], [ %94, %93 ], [ %92, %91 ]
  call void @_ZN3JPH5ArrayINS_4Vec3ENS_12STLAllocatorIS1_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %4) #10
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %4) #10
  br label %531

108:                                              ; preds = %2
  %109 = invoke noundef ptr @_ZN3JPH12CapsuleShapenwEm(i64 noundef 56)
          to label %110 unwind label %59

110:                                              ; preds = %108
  invoke void @_ZN3JPH12CapsuleShapeC2EffPKNS_15PhysicsMaterialE(ptr noundef nonnull align 8 dereferenceable(56) %109, float noundef 0x3FC99999A0000000, float noundef 0x3FB99999A0000000, ptr noundef null)
          to label %.invoke unwind label %111

111:                                              ; preds = %110
  %112 = landingpad { ptr, i32 }
          cleanup
  tail call void @_ZN3JPH12CapsuleShapedlEPv(ptr noundef %109) #10
  br label %531

113:                                              ; preds = %2
  call void @llvm.lifetime.start.p0(i64 40, ptr nonnull %11) #10
  call void @llvm.lifetime.start.p0(i64 88, ptr nonnull %12) #10
  invoke void @_ZN3JPH27TaperedCapsuleShapeSettingsC1EfffPKNS_15PhysicsMaterialE(ptr noundef nonnull align 8 dereferenceable(88) %12, float noundef 0x3FC99999A0000000, float noundef 0x3FB99999A0000000, float noundef 0x3FC99999A0000000, ptr noundef null)
          to label %114 unwind label %120

114:                                              ; preds = %113
  invoke void @_ZNK3JPH27TaperedCapsuleShapeSettings6CreateEv(ptr dead_on_unwind nonnull writable sret(%"class.JPH::Result") align 8 %11, ptr noundef nonnull align 8 dereferenceable(88) %12)
          to label %115 unwind label %122

115:                                              ; preds = %114
  %116 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK3JPH6ResultINS_3RefINS_5ShapeEEEE3GetEv(ptr noundef nonnull align 8 dereferenceable(33) %11)
          to label %117 unwind label %124

117:                                              ; preds = %115
  %118 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3JPH8RefConstINS_5ShapeEEaSERKNS_3RefIS1_EE(ptr noundef nonnull align 8 dereferenceable(8) %0, ptr noundef nonnull align 8 dereferenceable(8) %116)
          to label %119 unwind label %124

119:                                              ; preds = %117
  call void @_ZN3JPH6ResultINS_3RefINS_5ShapeEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(33) %11) #10
  call void @_ZN3JPH19ConvexShapeSettingsD2Ev(ptr noundef nonnull align 8 dereferenceable(88) %12) #10
  call void @llvm.lifetime.end.p0(i64 88, ptr nonnull %12) #10
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %11) #10
  br label %487

120:                                              ; preds = %113
  %121 = landingpad { ptr, i32 }
          cleanup
  br label %127

122:                                              ; preds = %114
  %123 = landingpad { ptr, i32 }
          cleanup
  br label %126

124:                                              ; preds = %117, %115
  %125 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3JPH6ResultINS_3RefINS_5ShapeEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(33) %11) #10
  br label %126

126:                                              ; preds = %124, %122
  %.pn106 = phi { ptr, i32 } [ %125, %124 ], [ %123, %122 ]
  call void @_ZN3JPH19ConvexShapeSettingsD2Ev(ptr noundef nonnull align 8 dereferenceable(88) %12) #10
  br label %127

127:                                              ; preds = %126, %120
  %.pn106.pn = phi { ptr, i32 } [ %.pn106, %126 ], [ %121, %120 ]
  call void @llvm.lifetime.end.p0(i64 88, ptr nonnull %12) #10
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %11) #10
  br label %531

128:                                              ; preds = %2
  %129 = invoke noundef ptr @_ZN3JPH13CylinderShapenwEm(i64 noundef 56)
          to label %130 unwind label %59

130:                                              ; preds = %128
  invoke void @_ZN3JPH13CylinderShapeC1EfffPKNS_15PhysicsMaterialE(ptr noundef nonnull align 8 dereferenceable(56) %129, float noundef 0x3FC99999A0000000, float noundef 0x3FB99999A0000000, float noundef 0x3FA99999A0000000, ptr noundef null)
          to label %.invoke unwind label %131

131:                                              ; preds = %130
  %132 = landingpad { ptr, i32 }
          cleanup
  tail call void @_ZN3JPH13CylinderShapedlEPv(ptr noundef %129) #10
  br label %531

133:                                              ; preds = %2
  %134 = invoke noundef ptr @_ZN3JPH13TriangleShapenwEm(i64 noundef 112)
          to label %135 unwind label %59

135:                                              ; preds = %133
  invoke void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %13, float noundef 0x3FB99999A0000000, float noundef 0x3FECCCCCC0000000, float noundef 0x3FD3333340000000)
          to label %136 unwind label %148

136:                                              ; preds = %135
  invoke void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %14, float noundef 0xBFECCCCCC0000000, float noundef -5.000000e-01, float noundef 0x3FC99999A0000000)
          to label %137 unwind label %148

137:                                              ; preds = %136
  invoke void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %15, float noundef 0x3FE6666660000000, float noundef 0xBFD3333340000000, float noundef 0xBFB99999A0000000)
          to label %138 unwind label %148

138:                                              ; preds = %137
  %139 = load double, ptr %13, align 16
  %140 = getelementptr inbounds i8, ptr %13, i64 8
  %141 = load double, ptr %140, align 8
  %142 = load double, ptr %14, align 16
  %143 = getelementptr inbounds i8, ptr %14, i64 8
  %144 = load double, ptr %143, align 8
  %145 = load double, ptr %15, align 16
  %146 = getelementptr inbounds i8, ptr %15, i64 8
  %147 = load double, ptr %146, align 8
  invoke void @_ZN3JPH13TriangleShapeC2ENS_4Vec3ES1_S1_fPKNS_15PhysicsMaterialE(ptr noundef nonnull align 16 dereferenceable(112) %134, double %139, double %141, double %142, double %144, double %145, double %147, float noundef 0.000000e+00, ptr noundef null)
          to label %.invoke unwind label %148

148:                                              ; preds = %138, %137, %136, %135
  %149 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3JPH13TriangleShapedlEPv(ptr noundef %134) #10
  br label %531

150:                                              ; preds = %2
  %151 = invoke noundef ptr @_ZN3JPH22RotatedTranslatedShapenwEm(i64 noundef 80)
          to label %152 unwind label %59

152:                                              ; preds = %150
  invoke void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %16, float noundef 0x3FB99999A0000000, float noundef 0x3FC99999A0000000, float noundef 0x3FD3333340000000)
          to label %153 unwind label %174

153:                                              ; preds = %152
  %154 = invoke { double, double } @_ZN3JPH4Vec36sAxisYEv()
          to label %155 unwind label %174

155:                                              ; preds = %153
  %156 = extractvalue { double, double } %154, 0
  %157 = extractvalue { double, double } %154, 1
  %158 = invoke { double, double } @_ZN3JPH4Quat9sRotationENS_4Vec3Ef(double %156, double %157, float noundef 0x3FE921FB60000000)
          to label %159 unwind label %174

159:                                              ; preds = %155
  %160 = extractvalue { double, double } %158, 0
  %161 = extractvalue { double, double } %158, 1
  %162 = invoke noundef ptr @_ZN3JPH8BoxShapenwEm(i64 noundef 80)
          to label %163 unwind label %174

163:                                              ; preds = %159
  invoke void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %17, float noundef 0x3FB99999A0000000, float noundef 0x3FC99999A0000000, float noundef 0x3FD3333340000000)
          to label %164 unwind label %176

164:                                              ; preds = %163
  %165 = load double, ptr %17, align 16
  %166 = getelementptr inbounds i8, ptr %17, i64 8
  %167 = load double, ptr %166, align 8
  invoke void @_ZN3JPH8BoxShapeC2ENS_4Vec3EfPKNS_15PhysicsMaterialE(ptr noundef nonnull align 16 dereferenceable(80) %162, double %165, double %167, float noundef 0x3FA99999A0000000, ptr noundef null)
          to label %168 unwind label %176

168:                                              ; preds = %164
  %169 = load double, ptr %16, align 16
  %170 = getelementptr inbounds i8, ptr %16, i64 8
  %171 = load double, ptr %170, align 8
  invoke void @_ZN3JPH22RotatedTranslatedShapeC1ENS_4Vec3ENS_4QuatEPKNS_5ShapeE(ptr noundef nonnull align 16 dereferenceable(80) %151, double %169, double %171, double %160, double %161, ptr noundef nonnull %162)
          to label %.invoke unwind label %174

.invoke:                                          ; preds = %58, %168, %138, %130, %110, %66
  %172 = phi ptr [ %64, %66 ], [ %109, %110 ], [ %129, %130 ], [ %134, %138 ], [ %151, %168 ], [ %57, %58 ]
  %173 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3JPH8RefConstINS_5ShapeEEaSEPKS1_(ptr noundef nonnull align 8 dereferenceable(8) %0, ptr noundef nonnull %172)
          to label %487 unwind label %59

174:                                              ; preds = %168, %159, %155, %153, %152
  %175 = landingpad { ptr, i32 }
          cleanup
  br label %178

176:                                              ; preds = %164, %163
  %177 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3JPH8BoxShapedlEPv(ptr noundef %162) #10
  br label %178

178:                                              ; preds = %176, %174
  %.pn104 = phi { ptr, i32 } [ %175, %174 ], [ %177, %176 ]
  call void @_ZN3JPH22RotatedTranslatedShapedlEPv(ptr noundef %151) #10
  br label %531

179:                                              ; preds = %2
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %18) #10
  call void @_ZN3JPH5ArrayINS_4Vec3ENS_12STLAllocatorIS1_EEEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %18) #10
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %19) #10
  %180 = invoke { double, double } @_ZN3JPH4Vec35sZeroEv()
          to label %181 unwind label %227

181:                                              ; preds = %179
  %182 = extractvalue { double, double } %180, 0
  store double %182, ptr %19, align 16
  %183 = getelementptr inbounds i8, ptr %19, i64 8
  %184 = extractvalue { double, double } %180, 1
  store double %184, ptr %183, align 8
  invoke void @_ZN3JPH5ArrayINS_4Vec3ENS_12STLAllocatorIS1_EEE9push_backEOS1_(ptr noundef nonnull align 8 dereferenceable(24) %18, ptr noundef nonnull align 16 dereferenceable(16) %19)
          to label %185 unwind label %227

185:                                              ; preds = %181
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %19) #10
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %20) #10
  invoke void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %20, float noundef 0xBFC99999A0000000, float noundef 0.000000e+00, float noundef 0x3FD99999A0000000)
          to label %186 unwind label %229

186:                                              ; preds = %185
  invoke void @_ZN3JPH5ArrayINS_4Vec3ENS_12STLAllocatorIS1_EEE9push_backEOS1_(ptr noundef nonnull align 8 dereferenceable(24) %18, ptr noundef nonnull align 16 dereferenceable(16) %20)
          to label %187 unwind label %229

187:                                              ; preds = %186
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %20) #10
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %21) #10
  invoke void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %21, float noundef 0.000000e+00, float noundef 0x3FC99999A0000000, float noundef 0.000000e+00)
          to label %188 unwind label %231

188:                                              ; preds = %187
  invoke void @_ZN3JPH5ArrayINS_4Vec3ENS_12STLAllocatorIS1_EEE9push_backEOS1_(ptr noundef nonnull align 8 dereferenceable(24) %18, ptr noundef nonnull align 16 dereferenceable(16) %21)
          to label %189 unwind label %231

189:                                              ; preds = %188
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %21) #10
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %22) #10
  invoke void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %22, float noundef 0x3FC99999A0000000, float noundef 0.000000e+00, float noundef 0x3FD99999A0000000)
          to label %190 unwind label %233

190:                                              ; preds = %189
  invoke void @_ZN3JPH5ArrayINS_4Vec3ENS_12STLAllocatorIS1_EEE9push_backEOS1_(ptr noundef nonnull align 8 dereferenceable(24) %18, ptr noundef nonnull align 16 dereferenceable(16) %22)
          to label %191 unwind label %233

191:                                              ; preds = %190
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %22) #10
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %23) #10
  call void @llvm.lifetime.start.p0(i64 40, ptr nonnull %24) #10
  call void @llvm.lifetime.start.p0(i64 120, ptr nonnull %25) #10
  invoke void @_ZN3JPH23ConvexHullShapeSettingsC2ERKNS_5ArrayINS_4Vec3ENS_12STLAllocatorIS2_EEEEfPKNS_15PhysicsMaterialE(ptr noundef nonnull align 8 dereferenceable(120) %25, ptr noundef nonnull align 8 dereferenceable(24) %18, float noundef 0x3F847AE140000000, ptr noundef null)
          to label %192 unwind label %235

192:                                              ; preds = %191
  invoke void @_ZNK3JPH23ConvexHullShapeSettings6CreateEv(ptr dead_on_unwind nonnull writable sret(%"class.JPH::Result") align 8 %24, ptr noundef nonnull align 8 dereferenceable(120) %25)
          to label %193 unwind label %237

193:                                              ; preds = %192
  %194 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK3JPH6ResultINS_3RefINS_5ShapeEEEE3GetEv(ptr noundef nonnull align 8 dereferenceable(33) %24)
          to label %195 unwind label %239

195:                                              ; preds = %193
  invoke void @_ZN3JPH8RefConstINS_5ShapeEEC2ERKNS_3RefIS1_EE(ptr noundef nonnull align 8 dereferenceable(8) %23, ptr noundef nonnull align 8 dereferenceable(8) %194)
          to label %196 unwind label %239

196:                                              ; preds = %195
  call void @_ZN3JPH6ResultINS_3RefINS_5ShapeEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(33) %24) #10
  call void @_ZN3JPH23ConvexHullShapeSettingsD2Ev(ptr noundef nonnull align 8 dereferenceable(120) %25) #10
  call void @llvm.lifetime.end.p0(i64 120, ptr nonnull %25) #10
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %24) #10
  call void @llvm.lifetime.start.p0(i64 88, ptr nonnull %26) #10
  invoke void @_ZN3JPH27StaticCompoundShapeSettingsC2Ev(ptr noundef nonnull align 8 dereferenceable(88) %26)
          to label %197 unwind label %243

197:                                              ; preds = %196
  invoke void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %27, float noundef -5.000000e-01, float noundef 0.000000e+00, float noundef 0.000000e+00)
          to label %198 unwind label %245

198:                                              ; preds = %197
  %199 = invoke { double, double } @_ZN3JPH4Quat9sIdentityEv()
          to label %200 unwind label %245

200:                                              ; preds = %198
  %201 = extractvalue { double, double } %199, 0
  %202 = extractvalue { double, double } %199, 1
  %203 = call noundef ptr @_ZNK3JPH8RefConstINS_5ShapeEEcvPKS1_Ev(ptr noundef nonnull align 8 dereferenceable(8) %23)
  %204 = load double, ptr %27, align 16
  %205 = getelementptr inbounds i8, ptr %27, i64 8
  %206 = load double, ptr %205, align 8
  invoke void @_ZN3JPH21CompoundShapeSettings8AddShapeENS_4Vec3ENS_4QuatEPKNS_5ShapeEj(ptr noundef nonnull align 8 dereferenceable(88) %26, double %204, double %206, double %201, double %202, ptr noundef %203, i32 noundef 0)
          to label %207 unwind label %245

207:                                              ; preds = %200
  invoke void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %28, float noundef 5.000000e-01, float noundef 0.000000e+00, float noundef 0.000000e+00)
          to label %208 unwind label %245

208:                                              ; preds = %207
  %209 = invoke { double, double } @_ZN3JPH4Vec36sAxisXEv()
          to label %210 unwind label %245

210:                                              ; preds = %208
  %211 = extractvalue { double, double } %209, 0
  %212 = extractvalue { double, double } %209, 1
  %213 = invoke { double, double } @_ZN3JPH4Quat9sRotationENS_4Vec3Ef(double %211, double %212, float noundef 0x3FF921FB60000000)
          to label %214 unwind label %245

214:                                              ; preds = %210
  %215 = extractvalue { double, double } %213, 0
  %216 = extractvalue { double, double } %213, 1
  %217 = call noundef ptr @_ZNK3JPH8RefConstINS_5ShapeEEcvPKS1_Ev(ptr noundef nonnull align 8 dereferenceable(8) %23)
  %218 = load double, ptr %28, align 16
  %219 = getelementptr inbounds i8, ptr %28, i64 8
  %220 = load double, ptr %219, align 8
  invoke void @_ZN3JPH21CompoundShapeSettings8AddShapeENS_4Vec3ENS_4QuatEPKNS_5ShapeEj(ptr noundef nonnull align 8 dereferenceable(88) %26, double %218, double %220, double %215, double %216, ptr noundef %217, i32 noundef 0)
          to label %221 unwind label %245

221:                                              ; preds = %214
  call void @llvm.lifetime.start.p0(i64 40, ptr nonnull %29) #10
  invoke void @_ZNK3JPH27StaticCompoundShapeSettings6CreateEv(ptr dead_on_unwind nonnull writable sret(%"class.JPH::Result") align 8 %29, ptr noundef nonnull align 8 dereferenceable(88) %26)
          to label %222 unwind label %247

222:                                              ; preds = %221
  %223 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK3JPH6ResultINS_3RefINS_5ShapeEEEE3GetEv(ptr noundef nonnull align 8 dereferenceable(33) %29)
          to label %224 unwind label %249

224:                                              ; preds = %222
  %225 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3JPH8RefConstINS_5ShapeEEaSERKNS_3RefIS1_EE(ptr noundef nonnull align 8 dereferenceable(8) %0, ptr noundef nonnull align 8 dereferenceable(8) %223)
          to label %226 unwind label %249

226:                                              ; preds = %224
  call void @_ZN3JPH6ResultINS_3RefINS_5ShapeEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(33) %29) #10
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %29) #10
  call void @_ZN3JPH21CompoundShapeSettingsD2Ev(ptr noundef nonnull align 8 dereferenceable(88) %26) #10
  call void @llvm.lifetime.end.p0(i64 88, ptr nonnull %26) #10
  call void @_ZN3JPH8RefConstINS_5ShapeEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %23) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %23) #10
  call void @_ZN3JPH5ArrayINS_4Vec3ENS_12STLAllocatorIS1_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %18) #10
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %18) #10
  br label %487

227:                                              ; preds = %181, %179
  %228 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %19) #10
  br label %255

229:                                              ; preds = %186, %185
  %230 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %20) #10
  br label %255

231:                                              ; preds = %188, %187
  %232 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %21) #10
  br label %255

233:                                              ; preds = %190, %189
  %234 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %22) #10
  br label %255

235:                                              ; preds = %191
  %236 = landingpad { ptr, i32 }
          cleanup
  br label %242

237:                                              ; preds = %192
  %238 = landingpad { ptr, i32 }
          cleanup
  br label %241

239:                                              ; preds = %195, %193
  %240 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3JPH6ResultINS_3RefINS_5ShapeEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(33) %24) #10
  br label %241

241:                                              ; preds = %239, %237
  %.pn95 = phi { ptr, i32 } [ %240, %239 ], [ %238, %237 ]
  call void @_ZN3JPH23ConvexHullShapeSettingsD2Ev(ptr noundef nonnull align 8 dereferenceable(120) %25) #10
  br label %242

242:                                              ; preds = %241, %235
  %.pn95.pn = phi { ptr, i32 } [ %.pn95, %241 ], [ %236, %235 ]
  call void @llvm.lifetime.end.p0(i64 120, ptr nonnull %25) #10
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %24) #10
  br label %254

243:                                              ; preds = %196
  %244 = landingpad { ptr, i32 }
          cleanup
  br label %253

245:                                              ; preds = %214, %210, %208, %207, %200, %198, %197
  %246 = landingpad { ptr, i32 }
          cleanup
  br label %252

247:                                              ; preds = %221
  %248 = landingpad { ptr, i32 }
          cleanup
  br label %251

249:                                              ; preds = %224, %222
  %250 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3JPH6ResultINS_3RefINS_5ShapeEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(33) %29) #10
  br label %251

251:                                              ; preds = %249, %247
  %.pn98 = phi { ptr, i32 } [ %250, %249 ], [ %248, %247 ]
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %29) #10
  br label %252

252:                                              ; preds = %251, %245
  %.pn98.pn = phi { ptr, i32 } [ %.pn98, %251 ], [ %246, %245 ]
  call void @_ZN3JPH21CompoundShapeSettingsD2Ev(ptr noundef nonnull align 8 dereferenceable(88) %26) #10
  br label %253

253:                                              ; preds = %252, %243
  %.pn98.pn.pn = phi { ptr, i32 } [ %.pn98.pn, %252 ], [ %244, %243 ]
  call void @llvm.lifetime.end.p0(i64 88, ptr nonnull %26) #10
  call void @_ZN3JPH8RefConstINS_5ShapeEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %23) #10
  br label %254

254:                                              ; preds = %253, %242
  %.pn98.pn.pn.pn = phi { ptr, i32 } [ %.pn98.pn.pn, %253 ], [ %.pn95.pn, %242 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %23) #10
  br label %255

255:                                              ; preds = %254, %233, %231, %229, %227
  %.pn98.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn98.pn.pn.pn, %254 ], [ %234, %233 ], [ %232, %231 ], [ %230, %229 ], [ %228, %227 ]
  call void @_ZN3JPH5ArrayINS_4Vec3ENS_12STLAllocatorIS1_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %18) #10
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %18) #10
  br label %531

256:                                              ; preds = %2
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %30) #10
  %257 = invoke noundef ptr @_ZN3JPH27StaticCompoundShapeSettingsnwEm(i64 noundef 88)
          to label %258 unwind label %376

258:                                              ; preds = %256
  tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(88) %257, i8 0, i64 88, i1 false)
  invoke void @_ZN3JPH27StaticCompoundShapeSettingsC2Ev(ptr noundef nonnull align 8 dereferenceable(88) %257)
          to label %259 unwind label %378

259:                                              ; preds = %258
  invoke void @_ZN3JPH3RefINS_27StaticCompoundShapeSettingsEEC2EPS1_(ptr noundef nonnull align 8 dereferenceable(8) %30, ptr noundef nonnull %257)
          to label %260 unwind label %376

260:                                              ; preds = %259
  %261 = call noundef ptr @_ZNK3JPH3RefINS_27StaticCompoundShapeSettingsEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %30)
  invoke void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %31, float noundef 0.000000e+00, float noundef 5.000000e-01, float noundef 0.000000e+00)
          to label %262 unwind label %380

262:                                              ; preds = %260
  %263 = invoke { double, double } @_ZN3JPH4Vec36sAxisZEv()
          to label %264 unwind label %380

264:                                              ; preds = %262
  %265 = extractvalue { double, double } %263, 0
  %266 = extractvalue { double, double } %263, 1
  %267 = invoke { double, double } @_ZN3JPH4Quat9sRotationENS_4Vec3Ef(double %265, double %266, float noundef 0x3FF921FB60000000)
          to label %268 unwind label %380

268:                                              ; preds = %264
  %269 = extractvalue { double, double } %267, 0
  %270 = extractvalue { double, double } %267, 1
  %271 = invoke noundef ptr @_ZN3JPH8BoxShapenwEm(i64 noundef 80)
          to label %272 unwind label %380

272:                                              ; preds = %268
  invoke void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %32, float noundef 5.000000e-01, float noundef 0x3FC3333340000000, float noundef 0x3FB99999A0000000)
          to label %273 unwind label %382

273:                                              ; preds = %272
  %274 = load double, ptr %32, align 16
  %275 = getelementptr inbounds i8, ptr %32, i64 8
  %276 = load double, ptr %275, align 8
  invoke void @_ZN3JPH8BoxShapeC2ENS_4Vec3EfPKNS_15PhysicsMaterialE(ptr noundef nonnull align 16 dereferenceable(80) %271, double %274, double %276, float noundef 0x3FA99999A0000000, ptr noundef null)
          to label %277 unwind label %382

277:                                              ; preds = %273
  %278 = load double, ptr %31, align 16
  %279 = getelementptr inbounds i8, ptr %31, i64 8
  %280 = load double, ptr %279, align 8
  invoke void @_ZN3JPH21CompoundShapeSettings8AddShapeENS_4Vec3ENS_4QuatEPKNS_5ShapeEj(ptr noundef nonnull align 8 dereferenceable(88) %261, double %278, double %280, double %269, double %270, ptr noundef nonnull %271, i32 noundef 0)
          to label %281 unwind label %380

281:                                              ; preds = %277
  %282 = call noundef ptr @_ZNK3JPH3RefINS_27StaticCompoundShapeSettingsEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %30)
  invoke void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %33, float noundef 5.000000e-01, float noundef 0.000000e+00, float noundef 0.000000e+00)
          to label %283 unwind label %380

283:                                              ; preds = %281
  %284 = invoke { double, double } @_ZN3JPH4Vec36sAxisZEv()
          to label %285 unwind label %380

285:                                              ; preds = %283
  %286 = extractvalue { double, double } %284, 0
  %287 = extractvalue { double, double } %284, 1
  %288 = invoke { double, double } @_ZN3JPH4Quat9sRotationENS_4Vec3Ef(double %286, double %287, float noundef 0x3FF921FB60000000)
          to label %289 unwind label %380

289:                                              ; preds = %285
  %290 = extractvalue { double, double } %288, 0
  %291 = extractvalue { double, double } %288, 1
  %292 = invoke noundef ptr @_ZN3JPH13CylinderShapenwEm(i64 noundef 56)
          to label %293 unwind label %380

293:                                              ; preds = %289
  invoke void @_ZN3JPH13CylinderShapeC1EfffPKNS_15PhysicsMaterialE(ptr noundef nonnull align 8 dereferenceable(56) %292, float noundef 5.000000e-01, float noundef 0x3FB99999A0000000, float noundef 0x3FA99999A0000000, ptr noundef null)
          to label %294 unwind label %384

294:                                              ; preds = %293
  %295 = load double, ptr %33, align 16
  %296 = getelementptr inbounds i8, ptr %33, i64 8
  %297 = load double, ptr %296, align 8
  invoke void @_ZN3JPH21CompoundShapeSettings8AddShapeENS_4Vec3ENS_4QuatEPKNS_5ShapeEj(ptr noundef nonnull align 8 dereferenceable(88) %282, double %295, double %297, double %290, double %291, ptr noundef nonnull %292, i32 noundef 0)
          to label %298 unwind label %380

298:                                              ; preds = %294
  %299 = call noundef ptr @_ZNK3JPH3RefINS_27StaticCompoundShapeSettingsEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %30)
  invoke void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %34, float noundef 0.000000e+00, float noundef 0.000000e+00, float noundef 5.000000e-01)
          to label %300 unwind label %380

300:                                              ; preds = %298
  %301 = invoke { double, double } @_ZN3JPH4Vec36sAxisXEv()
          to label %302 unwind label %380

302:                                              ; preds = %300
  %303 = extractvalue { double, double } %301, 0
  %304 = extractvalue { double, double } %301, 1
  %305 = invoke { double, double } @_ZN3JPH4Quat9sRotationENS_4Vec3Ef(double %303, double %304, float noundef 0x3FF921FB60000000)
          to label %306 unwind label %380

306:                                              ; preds = %302
  %307 = extractvalue { double, double } %305, 0
  %308 = extractvalue { double, double } %305, 1
  %309 = invoke noundef ptr @_ZN3JPH27TaperedCapsuleShapeSettingsnwEm(i64 noundef 88)
          to label %310 unwind label %380

310:                                              ; preds = %306
  invoke void @_ZN3JPH27TaperedCapsuleShapeSettingsC1EfffPKNS_15PhysicsMaterialE(ptr noundef nonnull align 8 dereferenceable(88) %309, float noundef 5.000000e-01, float noundef 0x3FC3333340000000, float noundef 0x3FB99999A0000000, ptr noundef null)
          to label %311 unwind label %386

311:                                              ; preds = %310
  %312 = load double, ptr %34, align 16
  %313 = getelementptr inbounds i8, ptr %34, i64 8
  %314 = load double, ptr %313, align 8
  invoke void @_ZN3JPH21CompoundShapeSettings8AddShapeENS_4Vec3ENS_4QuatEPKNS_13ShapeSettingsEj(ptr noundef nonnull align 8 dereferenceable(88) %299, double %312, double %314, double %307, double %308, ptr noundef nonnull %309, i32 noundef 0)
          to label %315 unwind label %380

315:                                              ; preds = %311
  call void @llvm.lifetime.start.p0(i64 88, ptr nonnull %35) #10
  invoke void @_ZN3JPH27StaticCompoundShapeSettingsC2Ev(ptr noundef nonnull align 8 dereferenceable(88) %35)
          to label %316 unwind label %388

316:                                              ; preds = %315
  invoke void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %36, float noundef 0.000000e+00, float noundef 0.000000e+00, float noundef 0.000000e+00)
          to label %317 unwind label %390

317:                                              ; preds = %316
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %37) #10
  %318 = invoke { double, double } @_ZN3JPH4Vec36sAxisXEv()
          to label %319 unwind label %392

319:                                              ; preds = %317
  %320 = extractvalue { double, double } %318, 0
  %321 = extractvalue { double, double } %318, 1
  %322 = invoke { double, double } @_ZN3JPH4Quat9sRotationENS_4Vec3Ef(double %320, double %321, float noundef 0xBFE921FB60000000)
          to label %323 unwind label %392

323:                                              ; preds = %319
  %324 = extractvalue { double, double } %322, 0
  store double %324, ptr %37, align 16
  %325 = getelementptr inbounds i8, ptr %37, i64 8
  %326 = extractvalue { double, double } %322, 1
  store double %326, ptr %325, align 8
  %327 = invoke { double, double } @_ZN3JPH4Vec36sAxisZEv()
          to label %328 unwind label %392

328:                                              ; preds = %323
  %329 = extractvalue { double, double } %327, 0
  %330 = extractvalue { double, double } %327, 1
  %331 = invoke { double, double } @_ZN3JPH4Quat9sRotationENS_4Vec3Ef(double %329, double %330, float noundef 0x3FE921FB60000000)
          to label %332 unwind label %392

332:                                              ; preds = %328
  %333 = extractvalue { double, double } %331, 0
  %334 = extractvalue { double, double } %331, 1
  %335 = invoke { double, double } @_ZNK3JPH4QuatmlES0_(ptr noundef nonnull align 16 dereferenceable(16) %37, double %333, double %334)
          to label %336 unwind label %392

336:                                              ; preds = %332
  %337 = extractvalue { double, double } %335, 0
  %338 = extractvalue { double, double } %335, 1
  %339 = call noundef ptr @_ZNK3JPH3RefINS_27StaticCompoundShapeSettingsEEcvPS1_Ev(ptr noundef nonnull align 8 dereferenceable(8) %30)
  %340 = load double, ptr %36, align 16
  %341 = getelementptr inbounds i8, ptr %36, i64 8
  %342 = load double, ptr %341, align 8
  invoke void @_ZN3JPH21CompoundShapeSettings8AddShapeENS_4Vec3ENS_4QuatEPKNS_13ShapeSettingsEj(ptr noundef nonnull align 8 dereferenceable(88) %35, double %340, double %342, double %337, double %338, ptr noundef %339, i32 noundef 0)
          to label %343 unwind label %392

343:                                              ; preds = %336
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %37) #10
  invoke void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %38, float noundef 0.000000e+00, float noundef 0xBFD99999A0000000, float noundef 0.000000e+00)
          to label %344 unwind label %390

344:                                              ; preds = %343
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %39) #10
  %345 = invoke { double, double } @_ZN3JPH4Vec36sAxisXEv()
          to label %346 unwind label %394

346:                                              ; preds = %344
  %347 = extractvalue { double, double } %345, 0
  %348 = extractvalue { double, double } %345, 1
  %349 = invoke { double, double } @_ZN3JPH4Quat9sRotationENS_4Vec3Ef(double %347, double %348, float noundef 0x3FE921FB60000000)
          to label %350 unwind label %394

350:                                              ; preds = %346
  %351 = extractvalue { double, double } %349, 0
  store double %351, ptr %39, align 16
  %352 = getelementptr inbounds i8, ptr %39, i64 8
  %353 = extractvalue { double, double } %349, 1
  store double %353, ptr %352, align 8
  %354 = invoke { double, double } @_ZN3JPH4Vec36sAxisZEv()
          to label %355 unwind label %394

355:                                              ; preds = %350
  %356 = extractvalue { double, double } %354, 0
  %357 = extractvalue { double, double } %354, 1
  %358 = invoke { double, double } @_ZN3JPH4Quat9sRotationENS_4Vec3Ef(double %356, double %357, float noundef 0xC002D97C80000000)
          to label %359 unwind label %394

359:                                              ; preds = %355
  %360 = extractvalue { double, double } %358, 0
  %361 = extractvalue { double, double } %358, 1
  %362 = invoke { double, double } @_ZNK3JPH4QuatmlES0_(ptr noundef nonnull align 16 dereferenceable(16) %39, double %360, double %361)
          to label %363 unwind label %394

363:                                              ; preds = %359
  %364 = extractvalue { double, double } %362, 0
  %365 = extractvalue { double, double } %362, 1
  %366 = call noundef ptr @_ZNK3JPH3RefINS_27StaticCompoundShapeSettingsEEcvPS1_Ev(ptr noundef nonnull align 8 dereferenceable(8) %30)
  %367 = load double, ptr %38, align 16
  %368 = getelementptr inbounds i8, ptr %38, i64 8
  %369 = load double, ptr %368, align 8
  invoke void @_ZN3JPH21CompoundShapeSettings8AddShapeENS_4Vec3ENS_4QuatEPKNS_13ShapeSettingsEj(ptr noundef nonnull align 8 dereferenceable(88) %35, double %367, double %369, double %364, double %365, ptr noundef %366, i32 noundef 0)
          to label %370 unwind label %394

370:                                              ; preds = %363
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %39) #10
  call void @llvm.lifetime.start.p0(i64 40, ptr nonnull %40) #10
  invoke void @_ZNK3JPH27StaticCompoundShapeSettings6CreateEv(ptr dead_on_unwind nonnull writable sret(%"class.JPH::Result") align 8 %40, ptr noundef nonnull align 8 dereferenceable(88) %35)
          to label %371 unwind label %396

371:                                              ; preds = %370
  %372 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK3JPH6ResultINS_3RefINS_5ShapeEEEE3GetEv(ptr noundef nonnull align 8 dereferenceable(33) %40)
          to label %373 unwind label %398

373:                                              ; preds = %371
  %374 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3JPH8RefConstINS_5ShapeEEaSERKNS_3RefIS1_EE(ptr noundef nonnull align 8 dereferenceable(8) %0, ptr noundef nonnull align 8 dereferenceable(8) %372)
          to label %375 unwind label %398

375:                                              ; preds = %373
  call void @_ZN3JPH6ResultINS_3RefINS_5ShapeEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(33) %40) #10
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %40) #10
  call void @_ZN3JPH21CompoundShapeSettingsD2Ev(ptr noundef nonnull align 8 dereferenceable(88) %35) #10
  call void @llvm.lifetime.end.p0(i64 88, ptr nonnull %35) #10
  call void @_ZN3JPH3RefINS_27StaticCompoundShapeSettingsEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %30) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %30) #10
  br label %487

376:                                              ; preds = %259, %256
  %377 = landingpad { ptr, i32 }
          cleanup
  br label %404

378:                                              ; preds = %258
  %379 = landingpad { ptr, i32 }
          cleanup
  tail call void @_ZN3JPH27StaticCompoundShapeSettingsdlEPv(ptr noundef nonnull %257) #10
  br label %404

380:                                              ; preds = %311, %306, %302, %300, %298, %294, %289, %285, %283, %281, %277, %268, %264, %262, %260
  %381 = landingpad { ptr, i32 }
          cleanup
  br label %403

382:                                              ; preds = %273, %272
  %383 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3JPH8BoxShapedlEPv(ptr noundef %271) #10
  br label %403

384:                                              ; preds = %293
  %385 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3JPH13CylinderShapedlEPv(ptr noundef %292) #10
  br label %403

386:                                              ; preds = %310
  %387 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3JPH27TaperedCapsuleShapeSettingsdlEPv(ptr noundef %309) #10
  br label %403

388:                                              ; preds = %315
  %389 = landingpad { ptr, i32 }
          cleanup
  br label %402

390:                                              ; preds = %343, %316
  %391 = landingpad { ptr, i32 }
          cleanup
  br label %401

392:                                              ; preds = %336, %332, %328, %323, %319, %317
  %393 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %37) #10
  br label %401

394:                                              ; preds = %363, %359, %355, %350, %346, %344
  %395 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %39) #10
  br label %401

396:                                              ; preds = %370
  %397 = landingpad { ptr, i32 }
          cleanup
  br label %400

398:                                              ; preds = %373, %371
  %399 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3JPH6ResultINS_3RefINS_5ShapeEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(33) %40) #10
  br label %400

400:                                              ; preds = %398, %396
  %.pn89 = phi { ptr, i32 } [ %399, %398 ], [ %397, %396 ]
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %40) #10
  br label %401

401:                                              ; preds = %400, %394, %392, %390
  %.pn89.pn = phi { ptr, i32 } [ %.pn89, %400 ], [ %395, %394 ], [ %391, %390 ], [ %393, %392 ]
  call void @_ZN3JPH21CompoundShapeSettingsD2Ev(ptr noundef nonnull align 8 dereferenceable(88) %35) #10
  br label %402

402:                                              ; preds = %401, %388
  %.pn89.pn.pn = phi { ptr, i32 } [ %.pn89.pn, %401 ], [ %389, %388 ]
  call void @llvm.lifetime.end.p0(i64 88, ptr nonnull %35) #10
  br label %403

403:                                              ; preds = %402, %386, %384, %382, %380
  %.pn89.pn.pn.pn = phi { ptr, i32 } [ %.pn89.pn.pn, %402 ], [ %381, %380 ], [ %387, %386 ], [ %385, %384 ], [ %383, %382 ]
  call void @_ZN3JPH3RefINS_27StaticCompoundShapeSettingsEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %30) #10
  br label %404

404:                                              ; preds = %403, %378, %376
  %.pn89.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn89.pn.pn.pn, %403 ], [ %377, %376 ], [ %379, %378 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %30) #10
  br label %531

405:                                              ; preds = %2
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %41) #10
  call void @_ZN3JPH5ArrayINS_4Vec3ENS_12STLAllocatorIS1_EEEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %41) #10
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %42) #10
  %406 = invoke { double, double } @_ZN3JPH4Vec35sZeroEv()
          to label %407 unwind label %453

407:                                              ; preds = %405
  %408 = extractvalue { double, double } %406, 0
  store double %408, ptr %42, align 16
  %409 = getelementptr inbounds i8, ptr %42, i64 8
  %410 = extractvalue { double, double } %406, 1
  store double %410, ptr %409, align 8
  invoke void @_ZN3JPH5ArrayINS_4Vec3ENS_12STLAllocatorIS1_EEE9push_backEOS1_(ptr noundef nonnull align 8 dereferenceable(24) %41, ptr noundef nonnull align 16 dereferenceable(16) %42)
          to label %411 unwind label %453

411:                                              ; preds = %407
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %42) #10
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %43) #10
  invoke void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %43, float noundef 0xBFC99999A0000000, float noundef 0.000000e+00, float noundef 0x3FD99999A0000000)
          to label %412 unwind label %455

412:                                              ; preds = %411
  invoke void @_ZN3JPH5ArrayINS_4Vec3ENS_12STLAllocatorIS1_EEE9push_backEOS1_(ptr noundef nonnull align 8 dereferenceable(24) %41, ptr noundef nonnull align 16 dereferenceable(16) %43)
          to label %413 unwind label %455

413:                                              ; preds = %412
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %43) #10
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %44) #10
  invoke void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %44, float noundef 0.000000e+00, float noundef 0x3FC99999A0000000, float noundef 0.000000e+00)
          to label %414 unwind label %457

414:                                              ; preds = %413
  invoke void @_ZN3JPH5ArrayINS_4Vec3ENS_12STLAllocatorIS1_EEE9push_backEOS1_(ptr noundef nonnull align 8 dereferenceable(24) %41, ptr noundef nonnull align 16 dereferenceable(16) %44)
          to label %415 unwind label %457

415:                                              ; preds = %414
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %44) #10
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %45) #10
  invoke void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %45, float noundef 0x3FC99999A0000000, float noundef 0.000000e+00, float noundef 0x3FD99999A0000000)
          to label %416 unwind label %459

416:                                              ; preds = %415
  invoke void @_ZN3JPH5ArrayINS_4Vec3ENS_12STLAllocatorIS1_EEE9push_backEOS1_(ptr noundef nonnull align 8 dereferenceable(24) %41, ptr noundef nonnull align 16 dereferenceable(16) %45)
          to label %417 unwind label %459

417:                                              ; preds = %416
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %45) #10
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %46) #10
  call void @llvm.lifetime.start.p0(i64 40, ptr nonnull %47) #10
  call void @llvm.lifetime.start.p0(i64 120, ptr nonnull %48) #10
  invoke void @_ZN3JPH23ConvexHullShapeSettingsC2ERKNS_5ArrayINS_4Vec3ENS_12STLAllocatorIS2_EEEEfPKNS_15PhysicsMaterialE(ptr noundef nonnull align 8 dereferenceable(120) %48, ptr noundef nonnull align 8 dereferenceable(24) %41, float noundef 0x3F847AE140000000, ptr noundef null)
          to label %418 unwind label %461

418:                                              ; preds = %417
  invoke void @_ZNK3JPH23ConvexHullShapeSettings6CreateEv(ptr dead_on_unwind nonnull writable sret(%"class.JPH::Result") align 8 %47, ptr noundef nonnull align 8 dereferenceable(120) %48)
          to label %419 unwind label %463

419:                                              ; preds = %418
  %420 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK3JPH6ResultINS_3RefINS_5ShapeEEEE3GetEv(ptr noundef nonnull align 8 dereferenceable(33) %47)
          to label %421 unwind label %465

421:                                              ; preds = %419
  invoke void @_ZN3JPH8RefConstINS_5ShapeEEC2ERKNS_3RefIS1_EE(ptr noundef nonnull align 8 dereferenceable(8) %46, ptr noundef nonnull align 8 dereferenceable(8) %420)
          to label %422 unwind label %465

422:                                              ; preds = %421
  call void @_ZN3JPH6ResultINS_3RefINS_5ShapeEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(33) %47) #10
  call void @_ZN3JPH23ConvexHullShapeSettingsD2Ev(ptr noundef nonnull align 8 dereferenceable(120) %48) #10
  call void @llvm.lifetime.end.p0(i64 120, ptr nonnull %48) #10
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %47) #10
  call void @llvm.lifetime.start.p0(i64 88, ptr nonnull %49) #10
  invoke void @_ZN3JPH28MutableCompoundShapeSettingsC2Ev(ptr noundef nonnull align 8 dereferenceable(88) %49)
          to label %423 unwind label %469

423:                                              ; preds = %422
  invoke void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %50, float noundef -5.000000e-01, float noundef 0.000000e+00, float noundef 0.000000e+00)
          to label %424 unwind label %471

424:                                              ; preds = %423
  %425 = invoke { double, double } @_ZN3JPH4Quat9sIdentityEv()
          to label %426 unwind label %471

426:                                              ; preds = %424
  %427 = extractvalue { double, double } %425, 0
  %428 = extractvalue { double, double } %425, 1
  %429 = call noundef ptr @_ZNK3JPH8RefConstINS_5ShapeEEcvPKS1_Ev(ptr noundef nonnull align 8 dereferenceable(8) %46)
  %430 = load double, ptr %50, align 16
  %431 = getelementptr inbounds i8, ptr %50, i64 8
  %432 = load double, ptr %431, align 8
  invoke void @_ZN3JPH21CompoundShapeSettings8AddShapeENS_4Vec3ENS_4QuatEPKNS_5ShapeEj(ptr noundef nonnull align 8 dereferenceable(88) %49, double %430, double %432, double %427, double %428, ptr noundef %429, i32 noundef 0)
          to label %433 unwind label %471

433:                                              ; preds = %426
  invoke void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %51, float noundef 5.000000e-01, float noundef 0.000000e+00, float noundef 0.000000e+00)
          to label %434 unwind label %471

434:                                              ; preds = %433
  %435 = invoke { double, double } @_ZN3JPH4Vec36sAxisXEv()
          to label %436 unwind label %471

436:                                              ; preds = %434
  %437 = extractvalue { double, double } %435, 0
  %438 = extractvalue { double, double } %435, 1
  %439 = invoke { double, double } @_ZN3JPH4Quat9sRotationENS_4Vec3Ef(double %437, double %438, float noundef 0x3FF921FB60000000)
          to label %440 unwind label %471

440:                                              ; preds = %436
  %441 = extractvalue { double, double } %439, 0
  %442 = extractvalue { double, double } %439, 1
  %443 = call noundef ptr @_ZNK3JPH8RefConstINS_5ShapeEEcvPKS1_Ev(ptr noundef nonnull align 8 dereferenceable(8) %46)
  %444 = load double, ptr %51, align 16
  %445 = getelementptr inbounds i8, ptr %51, i64 8
  %446 = load double, ptr %445, align 8
  invoke void @_ZN3JPH21CompoundShapeSettings8AddShapeENS_4Vec3ENS_4QuatEPKNS_5ShapeEj(ptr noundef nonnull align 8 dereferenceable(88) %49, double %444, double %446, double %441, double %442, ptr noundef %443, i32 noundef 0)
          to label %447 unwind label %471

447:                                              ; preds = %440
  call void @llvm.lifetime.start.p0(i64 40, ptr nonnull %52) #10
  invoke void @_ZNK3JPH28MutableCompoundShapeSettings6CreateEv(ptr dead_on_unwind nonnull writable sret(%"class.JPH::Result") align 8 %52, ptr noundef nonnull align 8 dereferenceable(88) %49)
          to label %448 unwind label %473

448:                                              ; preds = %447
  %449 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK3JPH6ResultINS_3RefINS_5ShapeEEEE3GetEv(ptr noundef nonnull align 8 dereferenceable(33) %52)
          to label %450 unwind label %475

450:                                              ; preds = %448
  %451 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3JPH8RefConstINS_5ShapeEEaSERKNS_3RefIS1_EE(ptr noundef nonnull align 8 dereferenceable(8) %0, ptr noundef nonnull align 8 dereferenceable(8) %449)
          to label %452 unwind label %475

452:                                              ; preds = %450
  call void @_ZN3JPH6ResultINS_3RefINS_5ShapeEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(33) %52) #10
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %52) #10
  call void @_ZN3JPH21CompoundShapeSettingsD2Ev(ptr noundef nonnull align 8 dereferenceable(88) %49) #10
  call void @llvm.lifetime.end.p0(i64 88, ptr nonnull %49) #10
  call void @_ZN3JPH8RefConstINS_5ShapeEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %46) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %46) #10
  call void @_ZN3JPH5ArrayINS_4Vec3ENS_12STLAllocatorIS1_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %41) #10
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %41) #10
  br label %487

453:                                              ; preds = %407, %405
  %454 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %42) #10
  br label %481

455:                                              ; preds = %412, %411
  %456 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %43) #10
  br label %481

457:                                              ; preds = %414, %413
  %458 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %44) #10
  br label %481

459:                                              ; preds = %416, %415
  %460 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %45) #10
  br label %481

461:                                              ; preds = %417
  %462 = landingpad { ptr, i32 }
          cleanup
  br label %468

463:                                              ; preds = %418
  %464 = landingpad { ptr, i32 }
          cleanup
  br label %467

465:                                              ; preds = %421, %419
  %466 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3JPH6ResultINS_3RefINS_5ShapeEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(33) %47) #10
  br label %467

467:                                              ; preds = %465, %463
  %.pn = phi { ptr, i32 } [ %466, %465 ], [ %464, %463 ]
  call void @_ZN3JPH23ConvexHullShapeSettingsD2Ev(ptr noundef nonnull align 8 dereferenceable(120) %48) #10
  br label %468

468:                                              ; preds = %467, %461
  %.pn.pn = phi { ptr, i32 } [ %.pn, %467 ], [ %462, %461 ]
  call void @llvm.lifetime.end.p0(i64 120, ptr nonnull %48) #10
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %47) #10
  br label %480

469:                                              ; preds = %422
  %470 = landingpad { ptr, i32 }
          cleanup
  br label %479

471:                                              ; preds = %440, %436, %434, %433, %426, %424, %423
  %472 = landingpad { ptr, i32 }
          cleanup
  br label %478

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

475:                                              ; preds = %450, %448
  %476 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3JPH6ResultINS_3RefINS_5ShapeEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(33) %52) #10
  br label %477

477:                                              ; preds = %475, %473
  %.pn83 = phi { ptr, i32 } [ %476, %475 ], [ %474, %473 ]
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %52) #10
  br label %478

478:                                              ; preds = %477, %471
  %.pn83.pn = phi { ptr, i32 } [ %.pn83, %477 ], [ %472, %471 ]
  call void @_ZN3JPH21CompoundShapeSettingsD2Ev(ptr noundef nonnull align 8 dereferenceable(88) %49) #10
  br label %479

479:                                              ; preds = %478, %469
  %.pn83.pn.pn = phi { ptr, i32 } [ %.pn83.pn, %478 ], [ %470, %469 ]
  call void @llvm.lifetime.end.p0(i64 88, ptr nonnull %49) #10
  call void @_ZN3JPH8RefConstINS_5ShapeEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %46) #10
  br label %480

480:                                              ; preds = %479, %468
  %.pn83.pn.pn.pn = phi { ptr, i32 } [ %.pn83.pn.pn, %479 ], [ %.pn.pn, %468 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %46) #10
  br label %481

481:                                              ; preds = %480, %459, %457, %455, %453
  %.pn83.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn83.pn.pn.pn, %480 ], [ %460, %459 ], [ %458, %457 ], [ %456, %455 ], [ %454, %453 ]
  call void @_ZN3JPH5ArrayINS_4Vec3ENS_12STLAllocatorIS1_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %41) #10
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %41) #10
  br label %531

482:                                              ; preds = %2
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %53) #10
  invoke void @_ZN12ShapeCreator15CreateTorusMeshEffjj(ptr dead_on_unwind nonnull writable sret(%"class.JPH::RefConst.74") align 8 %53, float noundef 2.000000e+00, float noundef 2.500000e-01, i32 noundef 16, i32 noundef 16)
          to label %483 unwind label %485

483:                                              ; preds = %482
  %484 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN3JPH8RefConstINS_5ShapeEEaSEOS2_(ptr noundef nonnull align 8 dereferenceable(8) %0, ptr noundef nonnull align 8 dereferenceable(8) %53) #10
  call void @_ZN3JPH8RefConstINS_5ShapeEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %53) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %53) #10
  br label %487

485:                                              ; preds = %482
  %486 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %53) #10
  br label %531

487:                                              ; preds = %.invoke, %2, %90, %119, %226, %375, %452, %483
  %488 = call noundef zeroext i1 @_ZNK3JPH8RefConstINS_5ShapeEEneEPKS1_(ptr noundef nonnull align 8 dereferenceable(8) %0, ptr noundef null)
  br i1 %488, label %493, label %489

489:                                              ; preds = %487
  %490 = invoke noundef zeroext i1 @_ZN3JPH23AssertFailedParamHelperEPKcS1_jNS_15AssertLastParamE(ptr noundef nonnull @.str.146, ptr noundef nonnull @.str.147, i32 noundef 953)
          to label %491 unwind label %59

491:                                              ; preds = %489
  br i1 %490, label %492, label %493

492:                                              ; preds = %491
  call void asm sideeffect "int $$0x3", "~{dirflag},~{fpsr},~{flags}"() #10, !srcloc !43
  br label %493

493:                                              ; preds = %492, %491, %487
  %494 = getelementptr inbounds i8, ptr %1, i64 560
  %495 = load i8, ptr %494, align 16, !tbaa !44, !range !45, !noundef !46
  %496 = trunc nuw i8 %495 to i1
  br i1 %496, label %497, label %504

497:                                              ; preds = %493
  %498 = call noundef ptr @_ZNK3JPH8RefConstINS_5ShapeEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %0)
  %499 = getelementptr inbounds i8, ptr %1, i64 576
  %.sroa.05.0.copyload = load double, ptr %499, align 16
  %.sroa.26.0..sroa_idx = getelementptr inbounds i8, ptr %1, i64 584
  %.sroa.26.0.copyload = load double, ptr %.sroa.26.0..sroa_idx, align 8, !tbaa !47
  %500 = load ptr, ptr %498, align 8, !tbaa !48
  %501 = getelementptr inbounds i8, ptr %500, i64 264
  %502 = load ptr, ptr %501, align 8
  %503 = invoke { double, double } %502(ptr noundef nonnull align 8 dereferenceable(26) %498, double %.sroa.05.0.copyload, double %.sroa.26.0.copyload)
          to label %506 unwind label %517

504:                                              ; preds = %493
  %505 = invoke { double, double } @_ZN3JPH4Vec34sOneEv()
          to label %506 unwind label %517

506:                                              ; preds = %504, %497
  %.pn113 = phi { double, double } [ %503, %497 ], [ %505, %504 ]
  %.sroa.8.0 = extractvalue { double, double } %.pn113, 1
  %.sroa.07.0 = extractvalue { double, double } %.pn113, 0
  %507 = call noundef ptr @_ZNK3JPH8RefConstINS_5ShapeEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %0)
  %508 = load ptr, ptr %507, align 8, !tbaa !48
  %509 = getelementptr inbounds i8, ptr %508, i64 256
  %510 = load ptr, ptr %509, align 8
  %511 = invoke noundef zeroext i1 %510(ptr noundef nonnull align 8 dereferenceable(26) %507, double %.sroa.07.0, double %.sroa.8.0)
          to label %512 unwind label %517

512:                                              ; preds = %506
  br i1 %511, label %519, label %513

513:                                              ; preds = %512
  %514 = invoke noundef zeroext i1 @_ZN3JPH23AssertFailedParamHelperEPKcS1_jNS_15AssertLastParamE(ptr noundef nonnull @.str.148, ptr noundef nonnull @.str.147, i32 noundef 957)
          to label %515 unwind label %517

515:                                              ; preds = %513
  br i1 %514, label %516, label %519

516:                                              ; preds = %515
  call void asm sideeffect "int $$0x3", "~{dirflag},~{fpsr},~{flags}"() #10, !srcloc !50
  br label %519

517:                                              ; preds = %526, %522, %519, %513, %506, %504, %497
  %518 = landingpad { ptr, i32 }
          cleanup
  br label %531

519:                                              ; preds = %516, %515, %512
  %520 = invoke noundef zeroext i1 @_ZN3JPH12ScaleHelpers11IsNotScaledENS_4Vec3E(double %.sroa.07.0, double %.sroa.8.0)
          to label %521 unwind label %517

521:                                              ; preds = %519
  br i1 %520, label %530, label %522

522:                                              ; preds = %521
  %523 = invoke noundef ptr @_ZN3JPH11ScaledShapenwEm(i64 noundef 64)
          to label %524 unwind label %517

524:                                              ; preds = %522
  %525 = call noundef ptr @_ZNK3JPH8RefConstINS_5ShapeEEcvPKS1_Ev(ptr noundef nonnull align 8 dereferenceable(8) %0)
  invoke void @_ZN3JPH11ScaledShapeC2EPKNS_5ShapeENS_4Vec3E(ptr noundef nonnull align 16 dereferenceable(64) %523, ptr noundef %525, double %.sroa.07.0, double %.sroa.8.0)
          to label %526 unwind label %528

526:                                              ; preds = %524
  %527 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3JPH8RefConstINS_5ShapeEEaSEPKS1_(ptr noundef nonnull align 8 dereferenceable(8) %0, ptr noundef nonnull %523)
          to label %530 unwind label %517

528:                                              ; preds = %524
  %529 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3JPH11ScaledShapedlEPv(ptr noundef %523) #10
  br label %531

530:                                              ; preds = %521, %526
  ret void

531:                                              ; preds = %517, %528, %485, %481, %404, %255, %178, %148, %131, %127, %111, %107, %70, %61, %59
  %.pn115.pn = phi { ptr, i32 } [ %60, %59 ], [ %486, %485 ], [ %.pn83.pn.pn.pn.pn, %481 ], [ %.pn89.pn.pn.pn.pn, %404 ], [ %.pn98.pn.pn.pn.pn, %255 ], [ %.pn104, %178 ], [ %149, %148 ], [ %132, %131 ], [ %.pn106.pn, %127 ], [ %112, %111 ], [ %.pn109.pn.pn, %107 ], [ %71, %70 ], [ %62, %61 ], [ %518, %517 ], [ %529, %528 ]
  call void @_ZN3JPH8RefConstINS_5ShapeEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %0) #10
  resume { ptr, i32 } %.pn115.pn
}

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

; Function Attrs: alwaysinline mustprogress uwtable
declare dso_local noundef ptr @_ZN3JPH11SphereShapenwEm(i64 noundef) local_unnamed_addr #1 align 2

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

; Function Attrs: alwaysinline mustprogress nounwind uwtable
declare dso_local void @_ZN3JPH11SphereShapedlEPv(ptr noundef) local_unnamed_addr #6 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(8) ptr @_ZN3JPH8RefConstINS_5ShapeEEaSEPKS1_(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef) local_unnamed_addr #7 align 2

; Function Attrs: alwaysinline mustprogress uwtable
declare dso_local noundef ptr @_ZN3JPH8BoxShapenwEm(i64 noundef) local_unnamed_addr #1 align 2

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

; Function Attrs: alwaysinline mustprogress nounwind uwtable
declare dso_local void @_ZN3JPH8BoxShapedlEPv(ptr noundef) local_unnamed_addr #6 align 2

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

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

; Function Attrs: alwaysinline mustprogress uwtable
declare dso_local { double, double } @_ZN3JPH4Vec35sZeroEv() local_unnamed_addr #2 align 2

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

declare void @_ZNK3JPH23ConvexHullShapeSettings6CreateEv(ptr dead_on_unwind writable sret(%"class.JPH::Result") align 8, ptr noundef nonnull align 8 dereferenceable(120)) unnamed_addr #9

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(8) ptr @_ZN3JPH8RefConstINS_5ShapeEEaSERKNS_3RefIS1_EE(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8)) local_unnamed_addr #7 align 2

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

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

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

; Function Attrs: alwaysinline mustprogress uwtable
declare dso_local noundef ptr @_ZN3JPH12CapsuleShapenwEm(i64 noundef) local_unnamed_addr #1 align 2

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

; Function Attrs: alwaysinline mustprogress nounwind uwtable
declare dso_local void @_ZN3JPH12CapsuleShapedlEPv(ptr noundef) local_unnamed_addr #6 align 2

declare void @_ZN3JPH27TaperedCapsuleShapeSettingsC1EfffPKNS_15PhysicsMaterialE(ptr noundef nonnull align 8 dereferenceable(88), float noundef, float noundef, float noundef, ptr noundef) unnamed_addr #9

declare void @_ZNK3JPH27TaperedCapsuleShapeSettings6CreateEv(ptr dead_on_unwind writable sret(%"class.JPH::Result") align 8, ptr noundef nonnull align 8 dereferenceable(88)) unnamed_addr #9

; Function Attrs: alwaysinline mustprogress uwtable
declare dso_local noundef ptr @_ZN3JPH13CylinderShapenwEm(i64 noundef) local_unnamed_addr #1 align 2

declare void @_ZN3JPH13CylinderShapeC1EfffPKNS_15PhysicsMaterialE(ptr noundef nonnull align 8 dereferenceable(56), float noundef, float noundef, float noundef, ptr noundef) unnamed_addr #9

; Function Attrs: alwaysinline mustprogress nounwind uwtable
declare dso_local void @_ZN3JPH13CylinderShapedlEPv(ptr noundef) local_unnamed_addr #6 align 2

; Function Attrs: alwaysinline mustprogress uwtable
declare dso_local noundef ptr @_ZN3JPH13TriangleShapenwEm(i64 noundef) local_unnamed_addr #1 align 2

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

; Function Attrs: alwaysinline mustprogress nounwind uwtable
declare dso_local void @_ZN3JPH13TriangleShapedlEPv(ptr noundef) local_unnamed_addr #6 align 2

; Function Attrs: alwaysinline mustprogress uwtable
declare dso_local noundef ptr @_ZN3JPH22RotatedTranslatedShapenwEm(i64 noundef) local_unnamed_addr #1 align 2

; Function Attrs: alwaysinline mustprogress uwtable
declare dso_local { double, double } @_ZN3JPH4Quat9sRotationENS_4Vec3Ef(double, double, float noundef) local_unnamed_addr #1 align 2

; Function Attrs: alwaysinline mustprogress uwtable
declare dso_local { double, double } @_ZN3JPH4Vec36sAxisYEv() local_unnamed_addr #1 align 2

declare void @_ZN3JPH22RotatedTranslatedShapeC1ENS_4Vec3ENS_4QuatEPKNS_5ShapeE(ptr noundef nonnull align 16 dereferenceable(80), double, double, double, double, ptr noundef) unnamed_addr #9

; Function Attrs: alwaysinline mustprogress nounwind uwtable
declare dso_local void @_ZN3JPH22RotatedTranslatedShapedlEPv(ptr noundef) local_unnamed_addr #6 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZN3JPH8RefConstINS_5ShapeEEC2ERKNS_3RefIS1_EE(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8)) unnamed_addr #7 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZN3JPH27StaticCompoundShapeSettingsC2Ev(ptr noundef nonnull align 8 dereferenceable(88)) unnamed_addr #7 align 2

declare void @_ZN3JPH21CompoundShapeSettings8AddShapeENS_4Vec3ENS_4QuatEPKNS_5ShapeEj(ptr noundef nonnull align 8 dereferenceable(88), double, double, double, double, ptr noundef, i32 noundef) local_unnamed_addr #9

; Function Attrs: alwaysinline mustprogress uwtable
declare dso_local { double, double } @_ZN3JPH4Quat9sIdentityEv() local_unnamed_addr #1 align 2

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

; Function Attrs: alwaysinline mustprogress uwtable
declare dso_local { double, double } @_ZN3JPH4Vec36sAxisXEv() local_unnamed_addr #1 align 2

declare void @_ZNK3JPH27StaticCompoundShapeSettings6CreateEv(ptr dead_on_unwind writable sret(%"class.JPH::Result") align 8, ptr noundef nonnull align 8 dereferenceable(88)) unnamed_addr #9

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

; Function Attrs: alwaysinline mustprogress uwtable
declare dso_local noundef ptr @_ZN3JPH27StaticCompoundShapeSettingsnwEm(i64 noundef) local_unnamed_addr #1 align 2

; Function Attrs: alwaysinline mustprogress nounwind uwtable
declare dso_local void @_ZN3JPH27StaticCompoundShapeSettingsdlEPv(ptr noundef) local_unnamed_addr #6 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZN3JPH3RefINS_27StaticCompoundShapeSettingsEEC2EPS1_(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef) unnamed_addr #7 align 2

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

; Function Attrs: alwaysinline mustprogress uwtable
declare dso_local { double, double } @_ZN3JPH4Vec36sAxisZEv() local_unnamed_addr #1 align 2

declare void @_ZN3JPH21CompoundShapeSettings8AddShapeENS_4Vec3ENS_4QuatEPKNS_13ShapeSettingsEj(ptr noundef nonnull align 8 dereferenceable(88), double, double, double, double, ptr noundef, i32 noundef) local_unnamed_addr #9

; Function Attrs: alwaysinline mustprogress uwtable
declare dso_local noundef ptr @_ZN3JPH27TaperedCapsuleShapeSettingsnwEm(i64 noundef) local_unnamed_addr #1 align 2

; Function Attrs: alwaysinline mustprogress nounwind uwtable
declare dso_local void @_ZN3JPH27TaperedCapsuleShapeSettingsdlEPv(ptr noundef) local_unnamed_addr #6 align 2

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

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

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZN3JPH28MutableCompoundShapeSettingsC2Ev(ptr noundef nonnull align 8 dereferenceable(88)) unnamed_addr #7 align 2

declare void @_ZNK3JPH28MutableCompoundShapeSettings6CreateEv(ptr dead_on_unwind writable sret(%"class.JPH::Result") align 8, ptr noundef nonnull align 8 dereferenceable(88)) unnamed_addr #9

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

declare void @_ZN12ShapeCreator15CreateTorusMeshEffjj(ptr dead_on_unwind writable sret(%"class.JPH::RefConst.74") align 8, float noundef, float noundef, i32 noundef, i32 noundef) local_unnamed_addr #9

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZNK3JPH8RefConstINS_5ShapeEEneEPKS1_(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef) local_unnamed_addr #5 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 #7

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef zeroext i1 @_ZN3JPH12ScaleHelpers11IsNotScaledENS_4Vec3E(double, double) local_unnamed_addr #7

; Function Attrs: alwaysinline mustprogress uwtable
declare dso_local noundef ptr @_ZN3JPH11ScaledShapenwEm(i64 noundef) local_unnamed_addr #1 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN3JPH11ScaledShapeC2EPKNS_5ShapeENS_4Vec3E(ptr noundef nonnull align 16 dereferenceable(64), ptr noundef, double, double) unnamed_addr #4 align 2

; Function Attrs: alwaysinline mustprogress nounwind uwtable
declare dso_local void @_ZN3JPH11ScaledShapedlEPv(ptr noundef) local_unnamed_addr #6 align 2

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

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !34, i64 556}
!6 = !{!"_ZTS10SamplesApp", !7, i64 0, !21, i64 272, !12, i64 276, !21, i64 280, !13, i64 288, !13, i64 296, !13, i64 304, !22, i64 312, !24, i64 328, !26, i64 336, !13, i64 344, !13, i64 352, !28, i64 360, !29, i64 448, !13, i64 480, !13, i64 488, !13, i64 496, !21, i64 504, !20, i64 508, !12, i64 512, !20, i64 516, !20, i64 517, !20, i64 518, !20, i64 519, !31, i64 520, !32, i64 544, !21, i64 548, !33, i64 552, !34, i64 556, !20, i64 560, !9, i64 576, !35, i64 592, !35, i64 593, !36, i64 594, !37, i64 595, !12, i64 596, !20, i64 600, !20, i64 601, !20, i64 602, !20, i64 603, !21, i64 604, !20, i64 608, !38, i64 612, !12, i64 616, !39, i64 620, !12, i64 624, !12, i64 628, !20, i64 632, !9, i64 640, !20, i64 656, !13, i64 664, !40, i64 672, !41, i64 680, !21, i64 688, !12, i64 692, !12, i64 696, !21, i64 700, !42, i64 704}
!7 = !{!"_ZTS11Application", !8, i64 16, !8, i64 80, !13, i64 144, !13, i64 152, !13, i64 160, !14, i64 168, !13, i64 176, !13, i64 184, !13, i64 192, !13, i64 200, !15, i64 208, !18, i64 240, !20, i64 248, !20, i64 249, !20, i64 250, !20, i64 251, !12, i64 252, !12, i64 256, !12, i64 260, !12, i64 264, !21, i64 268}
!8 = !{!"_ZTS11CameraState", !9, i64 0, !9, i64 16, !9, i64 32, !12, i64 48}
!9 = !{!"_ZTSN3JPH4Vec3E", !10, i64 0}
!10 = !{!"omnipotent char", !11, i64 0}
!11 = !{!"Simple C++ TBAA"}
!12 = !{!"float", !10, i64 0}
!13 = !{!"any pointer", !10, i64 0}
!14 = !{!"_ZTSN3JPH8RefConstI4FontEE", !13, i64 0}
!15 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcEN3JPH12STLAllocatorIcEEEE", !16, i64 0, !17, i64 8, !10, i64 16}
!16 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcEN3JPH12STLAllocatorIcEEE12_Alloc_hiderE", !13, i64 0}
!17 = !{!"long", !10, i64 0}
!18 = !{!"_ZTSNSt6chrono10time_pointINS_3_V212system_clockENS_8durationIlSt5ratioILl1ELl1000000000EEEEEE", !19, i64 0}
!19 = !{!"_ZTSNSt6chrono8durationIlSt5ratioILl1ELl1000000000EEEE", !17, i64 0}
!20 = !{!"bool", !10, i64 0}
!21 = !{!"int", !10, i64 0}
!22 = !{!"_ZTS20BPLayerInterfaceImpl", !23, i64 0, !10, i64 8}
!23 = !{!"_ZTSN3JPH24BroadPhaseLayerInterfaceE"}
!24 = !{!"_ZTS33ObjectVsBroadPhaseLayerFilterImpl", !25, i64 0}
!25 = !{!"_ZTSN3JPH29ObjectVsBroadPhaseLayerFilterE"}
!26 = !{!"_ZTS25ObjectLayerPairFilterImpl", !27, i64 0}
!27 = !{!"_ZTSN3JPH21ObjectLayerPairFilterE"}
!28 = !{!"_ZTSN3JPH15PhysicsSettingsE", !21, i64 0, !21, i64 4, !21, i64 8, !12, i64 12, !12, i64 16, !12, i64 20, !12, i64 24, !12, i64 28, !12, i64 32, !12, i64 36, !12, i64 40, !12, i64 44, !12, i64 48, !12, i64 52, !21, i64 56, !21, i64 60, !12, i64 64, !12, i64 68, !12, i64 72, !20, i64 76, !20, i64 77, !20, i64 78, !20, i64 79, !20, i64 80, !20, i64 81, !20, i64 82}
!29 = !{!"_ZTSN3JPH12UnorderedMapINS_8RefConstINS_5ShapeEEENS_3RefINS_13DebugRenderer8GeometryEEENS_4HashIS3_EESt8equal_toIS3_EEE", !30, i64 0}
!30 = !{!"_ZTSN3JPH9HashTableINS_8RefConstINS_5ShapeEEESt4pairIS3_NS_3RefINS_13DebugRenderer8GeometryEEEENS_18UnorderedMapDetailIS3_S8_EENS_4HashIS3_EESt8equal_toIS3_EEE", !13, i64 0, !13, i64 8, !21, i64 16, !21, i64 20, !21, i64 24}
!31 = !{!"_ZTSN3JPH5ArrayIN10SamplesApp13PlayBackFrameENS_12STLAllocatorIS2_EEEE", !17, i64 0, !17, i64 8, !13, i64 16}
!32 = !{!"_ZTSN10SamplesApp13EPlaybackModeE", !10, i64 0}
!33 = !{!"_ZTSN10SamplesApp10EProbeModeE", !10, i64 0}
!34 = !{!"_ZTSN10SamplesApp11EProbeShapeE", !10, i64 0}
!35 = !{!"_ZTSN3JPH13EBackFaceModeE", !10, i64 0}
!36 = !{!"_ZTSN3JPH15EActiveEdgeModeE", !10, i64 0}
!37 = !{!"_ZTSN3JPH17ECollectFacesModeE", !10, i64 0}
!38 = !{!"_ZTSN10SamplesApp17EShootObjectShapeE", !10, i64 0}
!39 = !{!"_ZTSN3JPH14EMotionQualityE", !10, i64 0}
!40 = !{!"_ZTSN3JPH6BodyIDE", !21, i64 0}
!41 = !{!"_ZTSN3JPH3RefINS_10ConstraintEEE", !13, i64 0}
!42 = !{!"_ZTSNSt6chrono8durationIlSt5ratioILl1ELl1000000EEEE", !17, i64 0}
!43 = !{i64 2161774947}
!44 = !{!6, !20, i64 560}
!45 = !{i8 0, i8 2}
!46 = !{}
!47 = !{!10, !10, i64 0}
!48 = !{!49, !49, i64 0}
!49 = !{!"vtable pointer", !11, i64 0}
!50 = !{i64 2161775282}


; Effective O3 passes: CorrelatedValuePropagationPass,EarlyCSEPass,GlobalOptPass,IPSCCPPass,InferFunctionAttrsPass,InstCombinePass,PostOrderFunctionAttrsPass,SROAPass,SimplifyCFGPass,TailCallElimPass