; LLVM IR from jrouwe/JoltPhysics :: Samples/Tests/General (EnhancedInternalEdgeRemovalTest)

; 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::StaticCompoundShapeSettings" = type { %"class.JPH::CompoundShapeSettings" }
%"class.JPH::CompoundShapeSettings" = type { %"class.JPH::ShapeSettings", %"class.JPH::Array" }
%"class.JPH::ShapeSettings" = type { %"class.JPH::SerializableObject", %"class.JPH::RefTarget.9", i64, %"class.JPH::Result" }
%"class.JPH::SerializableObject" = type { ptr }
%"class.JPH::RefTarget.9" = type { %"struct.std::atomic" }
%"struct.std::atomic" = type { %"struct.std::__atomic_base" }
%"struct.std::__atomic_base" = type { i32 }
%"class.JPH::Result" = type <{ %union.anon.10, i8, [7 x i8] }>
%union.anon.10 = 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.8 }
%"struct.std::__cxx11::basic_string<char, std::char_traits<char>, JPH::STLAllocator<char>>::_Alloc_hider" = type { ptr }
%union.anon.8 = type { i64, [8 x i8] }
%"class.JPH::Array" = type { i64, i64, ptr }
%"class.JPH::RefConst.6" = type { ptr }
%"class.JPH::Vec3" = type { %union.anon }
%union.anon = type { <4 x float> }
%"class.JPH::Quat" = type { %"class.JPH::Vec4" }
%"class.JPH::Vec4" = type { %union.anon.4 }
%union.anon.4 = type { <4 x float> }
%"class.JPH::BodyID" = type { i32 }
%"class.JPH::BodyCreationSettings" = type { %"class.JPH::Vec3", %"class.JPH::Quat", %"class.JPH::Vec3", %"class.JPH::Vec3", i64, i16, %"class.JPH::CollisionGroup", i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, float, float, float, float, float, float, float, i32, i32, i8, float, %"class.JPH::MassProperties", %"class.JPH::RefConst.5", %"class.JPH::RefConst.6" }
%"class.JPH::CollisionGroup" = type { %"class.JPH::RefConst", i32, i32 }
%"class.JPH::RefConst" = type { ptr }
%"class.JPH::MassProperties" = type { float, %"class.JPH::Mat44" }
%"class.JPH::Mat44" = type { [4 x %"class.JPH::Vec4"] }
%"class.JPH::RefConst.5" = type { ptr }
%"class.JPH::STLAllocator" = type { i8 }
%"class.JPH::Array.13" = type { i64, i64, ptr }
%"class.JPH::Float3" = type { float, float, float }
%"class.JPH::Triangle" = type { [3 x %"class.JPH::Float3"], i32, i32 }
%"class.JPH::MeshShapeSettings" = type { %"class.JPH::ShapeSettings", %"class.JPH::Array.16", %"class.JPH::Array.19", %"class.JPH::Array.22", i32, float, i8, i32 }
%"class.JPH::Array.16" = type { i64, i64, ptr }
%"class.JPH::Array.19" = type { i64, i64, ptr }
%"class.JPH::Array.22" = type { i64, i64, ptr }
%"class.std::initializer_list" = type { ptr, i64 }
%"class.JPH::STLAllocator.14" = type { i8 }
%class.Test = type { ptr, ptr, ptr, ptr, ptr, ptr, i8, %"class.std::unordered_map" }
%"class.std::unordered_map" = type { %"class.std::_Hashtable" }
%"class.std::_Hashtable" = type { ptr, i64, %"struct.std::__detail::_Hash_node_base", i64, %"struct.std::__detail::_Prime_rehash_policy", ptr }
%"struct.std::__detail::_Hash_node_base" = type { ptr }
%"struct.std::__detail::_Prime_rehash_policy" = type { float, i64 }
%class.EnhancedInternalEdgeRemovalTest = type <{ %class.Test, %"class.JPH::BodyID", [4 x i8] }>

@.str.3 = external hidden unnamed_addr constant [20 x i8], align 1
@.str.4 = external hidden unnamed_addr constant [20 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: mustprogress uwtable
declare dso_local void @_ZN31EnhancedInternalEdgeRemovalTest20CreateSlidingObjectsEN3JPH4Vec3E(ptr noundef nonnull align 8 dereferenceable(116), double, double) #1 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef float @_ZN3JPH8literalsli2_rEe(x86_fp80 noundef) #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 #3 align 2

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

; Function Attrs: alwaysinline mustprogress uwtable
declare dso_local { double, double } @_ZN3JPH4Vec310sReplicateEf(float noundef) #3 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 #1 align 2

; Function Attrs: alwaysinline mustprogress nounwind uwtable
declare dso_local void @_ZN3JPH8BoxShapedlEPv(ptr noundef) #5 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) #6

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN3JPH20BodyCreationSettingsC2EPKNS_5ShapeENS_4Vec3ENS_4QuatENS_11EMotionTypeEt(ptr noundef nonnull align 16 dereferenceable(256), ptr noundef, double, double, double, double, i8 noundef zeroext, i16 noundef zeroext) unnamed_addr #1 align 2

declare i32 @_ZN3JPH13BodyInterface16CreateAndAddBodyERKNS_20BodyCreationSettingsENS_11EActivationE(ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 16 dereferenceable(256), i32 noundef) #7

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN4Test12SetBodyLabelERKN3JPH6BodyIDERKNSt7__cxx1112basic_stringIcSt11char_traitsIcENS0_12STLAllocatorIcEEEE(ptr noundef nonnull align 8 dereferenceable(112), ptr noundef nonnull align 4 dereferenceable(4), ptr noundef nonnull align 8 dereferenceable(32)) #1 align 2

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

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

; Function Attrs: alwaysinline mustprogress uwtable
declare dso_local noundef ptr @_ZN3JPH11SphereShapenwEm(i64 noundef) #4 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 #1 align 2

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZN3JPH8RefConstINS_5ShapeEEC2EPKS1_(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef) 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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN3JPH20BodyCreationSettingsC2EPKNS_13ShapeSettingsENS_4Vec3ENS_4QuatENS_11EMotionTypeEt(ptr noundef nonnull align 16 dereferenceable(256), ptr noundef, double, double, double, double, i8 noundef zeroext, i16 noundef zeroext) unnamed_addr #1 align 2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local void @_ZN3JPH20BodyCreationSettingsD2Ev(ptr noundef nonnull align 16 dereferenceable(256)) unnamed_addr #9 align 2

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

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

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN31EnhancedInternalEdgeRemovalTest10InitializeEv(ptr noundef nonnull align 8 dereferenceable(116) %0) unnamed_addr #1 align 2 personality ptr @__gxx_personality_v0 {
  %2 = alloca ptr, align 8
  %3 = alloca %"class.JPH::StaticCompoundShapeSettings", align 8
  %4 = alloca ptr, align 8
  %5 = alloca i32, align 4
  %6 = alloca float, align 4
  %7 = alloca %"class.JPH::RefConst.6", align 8
  %8 = alloca %"class.JPH::Vec3", align 16
  %9 = alloca i32, align 4
  %10 = alloca i32, align 4
  %11 = alloca i32, align 4
  %12 = alloca %"class.JPH::Vec3", align 16
  %13 = alloca %"class.JPH::Quat", align 16
  %14 = alloca %"class.JPH::BodyID", align 4
  %15 = alloca %"class.JPH::BodyCreationSettings", align 16
  %16 = alloca %"class.JPH::Vec3", align 16
  %17 = alloca %"class.JPH::Quat", align 16
  %18 = alloca %"class.std::__cxx11::basic_string", align 8
  %19 = alloca %"class.JPH::STLAllocator", align 1
  %20 = alloca %"class.JPH::Vec3", align 16
  %21 = alloca float, align 4
  %22 = alloca %"class.JPH::Array.13", align 8
  %23 = alloca i32, align 4
  %24 = alloca i32, align 4
  %25 = alloca float, align 4
  %26 = alloca float, align 4
  %27 = alloca float, align 4
  %28 = alloca float, align 4
  %29 = alloca %"class.JPH::Float3", align 4
  %30 = alloca %"class.JPH::Float3", align 4
  %31 = alloca %"class.JPH::Float3", align 4
  %32 = alloca %"class.JPH::Float3", align 4
  %33 = alloca %"class.JPH::Triangle", align 4
  %34 = alloca %"class.JPH::Triangle", align 4
  %35 = alloca %"class.JPH::MeshShapeSettings", align 8
  %36 = alloca %"class.JPH::Array.22", align 8
  %37 = alloca %"class.JPH::BodyID", align 4
  %38 = alloca %"class.JPH::BodyCreationSettings", align 16
  %39 = alloca %"class.JPH::Vec3", align 16
  %40 = alloca %"class.JPH::Quat", align 16
  %41 = alloca %"class.std::__cxx11::basic_string", align 8
  %42 = alloca %"class.JPH::STLAllocator", align 1
  %43 = alloca %"class.JPH::Vec3", align 16
  %44 = alloca %"class.JPH::Array.13", align 8
  %45 = alloca float, align 4
  %46 = alloca float, align 4
  %47 = alloca float, align 4
  %48 = alloca %"class.JPH::Triangle", align 4
  %49 = alloca %"class.JPH::Float3", align 4
  %50 = alloca %"class.JPH::Float3", align 4
  %51 = alloca %"class.JPH::Float3", align 4
  %52 = alloca %"class.JPH::Triangle", align 4
  %53 = alloca %"class.JPH::Float3", align 4
  %54 = alloca %"class.JPH::Float3", align 4
  %55 = alloca %"class.JPH::Float3", align 4
  %56 = alloca %"class.JPH::Triangle", align 4
  %57 = alloca %"class.JPH::Float3", align 4
  %58 = alloca %"class.JPH::Float3", align 4
  %59 = alloca %"class.JPH::Float3", align 4
  %60 = alloca %"class.JPH::Triangle", align 4
  %61 = alloca %"class.JPH::Float3", align 4
  %62 = alloca %"class.JPH::Float3", align 4
  %63 = alloca %"class.JPH::Float3", align 4
  %64 = alloca %"class.JPH::BodyCreationSettings", align 16
  %65 = alloca %"class.JPH::Array.22", align 8
  %66 = alloca i1, align 1
  %67 = alloca %"class.JPH::Vec3", align 16
  %68 = alloca %"class.JPH::Quat", align 16
  %69 = alloca %"class.JPH::BodyID", align 4
  %70 = alloca float, align 4
  %71 = alloca i32, align 4
  %72 = alloca %"class.JPH::BodyCreationSettings", align 16
  %73 = alloca %"class.JPH::Vec3", align 16
  %74 = alloca %"class.JPH::Quat", align 16
  %75 = alloca %"class.JPH::Vec3", align 16
  %76 = alloca %"class.JPH::BodyID", align 4
  %77 = alloca %"class.JPH::MeshShapeSettings", align 8
  %78 = alloca %"class.JPH::Array.13", align 8
  %79 = alloca %"class.std::initializer_list", align 8
  %80 = alloca [2 x %"class.JPH::Triangle"], align 4
  %81 = alloca %"class.JPH::Float3", align 4
  %82 = alloca %"class.JPH::Float3", align 4
  %83 = alloca %"class.JPH::Float3", align 4
  %84 = alloca %"class.JPH::Float3", align 4
  %85 = alloca %"class.JPH::Float3", align 4
  %86 = alloca %"class.JPH::Float3", align 4
  %87 = alloca %"class.JPH::STLAllocator.14", align 1
  %88 = alloca %"class.JPH::Array.22", align 8
  %89 = alloca %"class.JPH::BodyCreationSettings", align 16
  %90 = alloca %"class.JPH::Vec3", align 16
  %91 = alloca %"class.JPH::Quat", align 16
  %92 = alloca %"class.JPH::BodyID", align 4
  %93 = alloca %"class.std::__cxx11::basic_string", align 8
  %94 = alloca %"class.JPH::STLAllocator", align 1
  %95 = alloca %"class.JPH::BodyCreationSettings", align 16
  %96 = alloca %"class.JPH::Vec3", align 16
  %97 = alloca %"class.JPH::Quat", align 16
  %98 = alloca %"class.JPH::BodyID", align 4
  %99 = alloca %"class.JPH::BodyCreationSettings", align 16
  %100 = alloca %"class.JPH::Vec3", align 16
  %101 = alloca %"class.JPH::Quat", align 16
  %102 = alloca %"class.JPH::Vec3", align 16
  %103 = alloca %"class.JPH::BodyID", align 4
  %104 = alloca %"class.std::__cxx11::basic_string", align 8
  %105 = alloca %"class.JPH::STLAllocator", align 1
  %106 = alloca %"class.JPH::BodyCreationSettings", align 16
  %107 = alloca %"class.JPH::Vec3", align 16
  %108 = alloca %"class.JPH::Quat", align 16
  %109 = alloca %"class.JPH::BodyID", align 4
  %110 = alloca %"class.JPH::BodyCreationSettings", align 16
  %111 = alloca %"class.JPH::Vec3", align 16
  %112 = alloca %"class.JPH::Vec3", align 16
  %113 = alloca %"class.JPH::Quat", align 16
  %114 = alloca %"class.JPH::BodyID", align 4
  %115 = alloca %"class.JPH::StaticCompoundShapeSettings", align 8
  %116 = alloca %"class.JPH::Vec3", align 16
  %117 = alloca %"class.JPH::Quat", align 16
  %118 = alloca %"class.JPH::Vec3", align 16
  %119 = alloca %"class.JPH::Vec3", align 16
  %120 = alloca %"class.JPH::Quat", align 16
  %121 = alloca %"class.JPH::Vec3", align 16
  %122 = alloca %"class.JPH::BodyCreationSettings", align 16
  %123 = alloca %"class.JPH::Vec3", align 16
  %124 = alloca %"class.JPH::Quat", align 16
  %125 = alloca %"class.JPH::BodyID", align 4
  %126 = alloca float, align 4
  %127 = alloca %"class.JPH::Array.13", align 8
  %128 = alloca i32, align 4
  %129 = alloca i32, align 4
  %130 = alloca float, align 4
  %131 = alloca float, align 4
  %132 = alloca float, align 4
  %133 = alloca float, align 4
  %134 = alloca %"class.JPH::Float3", align 4
  %135 = alloca %"class.JPH::Float3", align 4
  %136 = alloca %"class.JPH::Float3", align 4
  %137 = alloca %"class.JPH::Float3", align 4
  %138 = alloca %"class.JPH::Triangle", align 4
  %139 = alloca %"class.JPH::Triangle", align 4
  %140 = alloca %"class.JPH::MeshShapeSettings", align 8
  %141 = alloca %"class.JPH::Array.22", align 8
  %142 = alloca %"class.JPH::BodyID", align 4
  %143 = alloca %"class.JPH::BodyCreationSettings", align 16
  %144 = alloca %"class.JPH::Vec3", align 16
  %145 = alloca %"class.JPH::Quat", align 16
  %146 = alloca %"class.std::__cxx11::basic_string", align 8
  %147 = alloca %"class.JPH::STLAllocator", align 1
  %148 = alloca %"class.JPH::BodyCreationSettings", align 16
  %149 = alloca %"class.JPH::Vec3", align 16
  %150 = alloca %"class.JPH::Vec3", align 16
  %151 = alloca %"class.JPH::Quat", align 16
  %152 = alloca %"class.JPH::Vec3", align 16
  %153 = alloca %"class.JPH::BodyID", align 4
  store ptr %0, ptr %2, align 8, !tbaa !5
  %154 = load ptr, ptr %2, align 8
  call void @llvm.lifetime.start.p0(i64 88, ptr %3) #11
  call void @_ZN3JPH27StaticCompoundShapeSettingsC2Ev(ptr noundef nonnull align 8 dereferenceable(88) %3)
  %155 = getelementptr inbounds i8, ptr %3, i64 8
  invoke void @_ZNK3JPH9RefTargetINS_13ShapeSettingsEE11SetEmbeddedEv(ptr noundef nonnull align 4 dereferenceable(4) %155)
          to label %156 unwind label %177

156:                                              ; preds = %1
  call void @llvm.lifetime.start.p0(i64 4, ptr %6) #11
  store float 2.000000e+00, ptr %6, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %7) #11
  %157 = invoke noundef ptr @_ZN3JPH8BoxShapenwEm(i64 noundef 80)
          to label %158 unwind label %181

158:                                              ; preds = %156
  %159 = invoke { double, double } @_ZN3JPH4Vec310sReplicateEf(float noundef 1.000000e+00)
          to label %160 unwind label %185

160:                                              ; preds = %158
  %161 = getelementptr inbounds %"class.JPH::Vec3", ptr %8, i32 0, i32 0
  %162 = getelementptr inbounds %union.anon, ptr %161, i32 0, i32 0
  %163 = getelementptr inbounds { double, double }, ptr %162, i32 0, i32 0
  %164 = extractvalue { double, double } %159, 0
  store double %164, ptr %163, align 16
  %165 = getelementptr inbounds { double, double }, ptr %162, i32 0, i32 1
  %166 = extractvalue { double, double } %159, 1
  store double %166, ptr %165, align 8
  %167 = getelementptr inbounds { double, double }, ptr %8, i32 0, i32 0
  %168 = load double, ptr %167, align 16
  %169 = getelementptr inbounds { double, double }, ptr %8, i32 0, i32 1
  %170 = load double, ptr %169, align 8
  invoke void @_ZN3JPH8BoxShapeC2ENS_4Vec3EfPKNS_15PhysicsMaterialE(ptr noundef nonnull align 16 dereferenceable(80) %157, double %168, double %170, float noundef 0x3FA99999A0000000, ptr noundef null)
          to label %171 unwind label %185

171:                                              ; preds = %160
  invoke void @_ZN3JPH8RefConstINS_5ShapeEEC2EPKS1_(ptr noundef nonnull align 8 dereferenceable(8) %7, ptr noundef %157)
          to label %172 unwind label %181

172:                                              ; preds = %171
  call void @llvm.lifetime.start.p0(i64 4, ptr %9) #11
  store i32 -10, ptr %9, align 4, !tbaa !11
  br label %173

173:                                              ; preds = %230, %172
  %174 = load i32, ptr %9, align 4, !tbaa !11
  %175 = icmp slt i32 %174, 10
  br i1 %175, label %189, label %176

176:                                              ; preds = %173
  store i32 2, ptr %10, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %9) #11
  br label %233

177:                                              ; preds = %1
  %178 = landingpad { ptr, i32 }
          cleanup
  %179 = extractvalue { ptr, i32 } %178, 0
  store ptr %179, ptr %4, align 8
  %180 = extractvalue { ptr, i32 } %178, 1
  store i32 %180, ptr %5, align 4
  br label %300

181:                                              ; preds = %171, %156
  %182 = landingpad { ptr, i32 }
          cleanup
  %183 = extractvalue { ptr, i32 } %182, 0
  store ptr %183, ptr %4, align 8
  %184 = extractvalue { ptr, i32 } %182, 1
  store i32 %184, ptr %5, align 4
  br label %299

185:                                              ; preds = %160, %158
  %186 = landingpad { ptr, i32 }
          cleanup
  %187 = extractvalue { ptr, i32 } %186, 0
  store ptr %187, ptr %4, align 8
  %188 = extractvalue { ptr, i32 } %186, 1
  store i32 %188, ptr %5, align 4
  call void @_ZN3JPH8BoxShapedlEPv(ptr noundef %157) #11
  br label %299

189:                                              ; preds = %173
  call void @llvm.lifetime.start.p0(i64 4, ptr %11) #11
  store i32 -10, ptr %11, align 4, !tbaa !11
  br label %190

190:                                              ; preds = %222, %189
  %191 = load i32, ptr %11, align 4, !tbaa !11
  %192 = icmp slt i32 %191, 10
  br i1 %192, label %194, label %193

193:                                              ; preds = %190
  store i32 5, ptr %10, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %11) #11
  br label %229

194:                                              ; preds = %190
  %195 = load i32, ptr %9, align 4, !tbaa !11
  %196 = sitofp i32 %195 to float
  %197 = fmul float 2.000000e+00, %196
  %198 = load i32, ptr %11, align 4, !tbaa !11
  %199 = sitofp i32 %198 to float
  %200 = fmul float 2.000000e+00, %199
  invoke void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %12, float noundef %197, float noundef 0.000000e+00, float noundef %200)
          to label %201 unwind label %225

201:                                              ; preds = %194
  %202 = invoke { double, double } @_ZN3JPH4Quat9sIdentityEv()
          to label %203 unwind label %225

203:                                              ; preds = %201
  %204 = getelementptr inbounds %"class.JPH::Quat", ptr %13, i32 0, i32 0
  %205 = getelementptr inbounds %"class.JPH::Vec4", ptr %204, i32 0, i32 0
  %206 = getelementptr inbounds %union.anon.4, ptr %205, i32 0, i32 0
  %207 = getelementptr inbounds { double, double }, ptr %206, i32 0, i32 0
  %208 = extractvalue { double, double } %202, 0
  store double %208, ptr %207, align 16
  %209 = getelementptr inbounds { double, double }, ptr %206, i32 0, i32 1
  %210 = extractvalue { double, double } %202, 1
  store double %210, ptr %209, align 8
  %211 = invoke noundef ptr @_ZNK3JPH8RefConstINS_5ShapeEEcvPKS1_Ev(ptr noundef nonnull align 8 dereferenceable(8) %7)
          to label %212 unwind label %225

212:                                              ; preds = %203
  %213 = getelementptr inbounds { double, double }, ptr %12, i32 0, i32 0
  %214 = load double, ptr %213, align 16
  %215 = getelementptr inbounds { double, double }, ptr %12, i32 0, i32 1
  %216 = load double, ptr %215, align 8
  %217 = getelementptr inbounds { double, double }, ptr %13, i32 0, i32 0
  %218 = load double, ptr %217, align 16
  %219 = getelementptr inbounds { double, double }, ptr %13, i32 0, i32 1
  %220 = load double, ptr %219, align 8
  invoke void @_ZN3JPH21CompoundShapeSettings8AddShapeENS_4Vec3ENS_4QuatEPKNS_5ShapeEj(ptr noundef nonnull align 8 dereferenceable(88) %3, double %214, double %216, double %218, double %220, ptr noundef %211, i32 noundef 0)
          to label %221 unwind label %225

221:                                              ; preds = %212
  br label %222

222:                                              ; preds = %221
  %223 = load i32, ptr %11, align 4, !tbaa !11
  %224 = add nsw i32 %223, 1
  store i32 %224, ptr %11, align 4, !tbaa !11
  br label %190, !llvm.loop !13

225:                                              ; preds = %212, %203, %201, %194
  %226 = landingpad { ptr, i32 }
          cleanup
  %227 = extractvalue { ptr, i32 } %226, 0
  store ptr %227, ptr %4, align 8
  %228 = extractvalue { ptr, i32 } %226, 1
  store i32 %228, ptr %5, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %11) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr %9) #11
  br label %298

229:                                              ; preds = %193
  br label %230

230:                                              ; preds = %229
  %231 = load i32, ptr %9, align 4, !tbaa !11
  %232 = add nsw i32 %231, 1
  store i32 %232, ptr %9, align 4, !tbaa !11
  br label %173, !llvm.loop !15

233:                                              ; preds = %176
  call void @llvm.lifetime.start.p0(i64 4, ptr %14) #11
  %234 = getelementptr inbounds %class.Test, ptr %154, i32 0, i32 3
  %235 = load ptr, ptr %234, align 8, !tbaa !16
  call void @llvm.lifetime.start.p0(i64 256, ptr %15) #11
  invoke void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %16, float noundef 0.000000e+00, float noundef -1.000000e+00, float noundef -4.000000e+01)
          to label %236 unwind label %275

236:                                              ; preds = %233
  %237 = invoke { double, double } @_ZN3JPH4Quat9sIdentityEv()
          to label %238 unwind label %275

238:                                              ; preds = %236
  %239 = getelementptr inbounds %"class.JPH::Quat", ptr %17, i32 0, i32 0
  %240 = getelementptr inbounds %"class.JPH::Vec4", ptr %239, i32 0, i32 0
  %241 = getelementptr inbounds %union.anon.4, ptr %240, i32 0, i32 0
  %242 = getelementptr inbounds { double, double }, ptr %241, i32 0, i32 0
  %243 = extractvalue { double, double } %237, 0
  store double %243, ptr %242, align 16
  %244 = getelementptr inbounds { double, double }, ptr %241, i32 0, i32 1
  %245 = extractvalue { double, double } %237, 1
  store double %245, ptr %244, align 8
  %246 = getelementptr inbounds { double, double }, ptr %16, i32 0, i32 0
  %247 = load double, ptr %246, align 16
  %248 = getelementptr inbounds { double, double }, ptr %16, i32 0, i32 1
  %249 = load double, ptr %248, align 8
  %250 = getelementptr inbounds { double, double }, ptr %17, i32 0, i32 0
  %251 = load double, ptr %250, align 16
  %252 = getelementptr inbounds { double, double }, ptr %17, i32 0, i32 1
  %253 = load double, ptr %252, align 8
  invoke void @_ZN3JPH20BodyCreationSettingsC2EPKNS_13ShapeSettingsENS_4Vec3ENS_4QuatENS_11EMotionTypeEt(ptr noundef nonnull align 16 dereferenceable(256) %15, ptr noundef %3, double %247, double %249, double %251, double %253, i8 noundef zeroext 0, i16 noundef zeroext 0)
          to label %254 unwind label %275

254:                                              ; preds = %238
  %255 = invoke i32 @_ZN3JPH13BodyInterface16CreateAndAddBodyERKNS_20BodyCreationSettingsENS_11EActivationE(ptr noundef nonnull align 8 dereferenceable(24) %235, ptr noundef nonnull align 16 dereferenceable(256) %15, i32 noundef 1)
          to label %256 unwind label %279

256:                                              ; preds = %254
  %257 = getelementptr inbounds %"class.JPH::BodyID", ptr %14, i32 0, i32 0
  store i32 %255, ptr %257, align 4
  call void @_ZN3JPH20BodyCreationSettingsD2Ev(ptr noundef nonnull align 16 dereferenceable(256) %15) #11
  call void @llvm.lifetime.end.p0(i64 256, ptr %15) #11
  call void @llvm.lifetime.start.p0(i64 32, ptr %18) #11
  call void @llvm.lifetime.start.p0(i64 1, ptr %19) #11
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcEN3JPH12STLAllocatorIcEEEC2IS5_EEPKcRKS5_(ptr noundef nonnull align 8 dereferenceable(32) %18, ptr noundef @.str.3, ptr noundef nonnull align 1 dereferenceable(1) %19)
          to label %258 unwind label %284

258:                                              ; preds = %256
  invoke void @_ZN4Test12SetBodyLabelERKN3JPH6BodyIDERKNSt7__cxx1112basic_stringIcSt11char_traitsIcENS0_12STLAllocatorIcEEEE(ptr noundef nonnull align 8 dereferenceable(112) %154, ptr noundef nonnull align 4 dereferenceable(4) %14, ptr noundef nonnull align 8 dereferenceable(32) %18)
          to label %259 unwind label %288

259:                                              ; preds = %258
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcEN3JPH12STLAllocatorIcEEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %18) #11
  call void @llvm.lifetime.end.p0(i64 1, ptr %19) #11
  call void @llvm.lifetime.end.p0(i64 32, ptr %18) #11
  %260 = invoke noundef float @_ZN3JPH8literalsli2_rEe(x86_fp80 noundef 0xK3FFFF333333333333333)
          to label %261 unwind label %293

261:                                              ; preds = %259
  %262 = invoke noundef float @_ZN3JPH8literalsli2_rEe(x86_fp80 noundef 0xK4004A000000000000000)
          to label %263 unwind label %293

263:                                              ; preds = %261
  %264 = fneg float %262
  invoke void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %20, float noundef -1.800000e+01, float noundef %260, float noundef %264)
          to label %265 unwind label %293

265:                                              ; preds = %263
  %266 = getelementptr inbounds { double, double }, ptr %20, i32 0, i32 0
  %267 = load double, ptr %266, align 16
  %268 = getelementptr inbounds { double, double }, ptr %20, i32 0, i32 1
  %269 = load double, ptr %268, align 8
  invoke void @_ZN31EnhancedInternalEdgeRemovalTest20CreateSlidingObjectsEN3JPH4Vec3E(ptr noundef nonnull align 8 dereferenceable(116) %154, double %267, double %269)
          to label %270 unwind label %293

270:                                              ; preds = %265
  call void @llvm.lifetime.end.p0(i64 4, ptr %14) #11
  call void @_ZN3JPH8RefConstINS_5ShapeEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %7) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %7) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr %6) #11
  call void @_ZN3JPH21CompoundShapeSettingsD2Ev(ptr noundef nonnull align 8 dereferenceable(88) %3) #11
  call void @llvm.lifetime.end.p0(i64 88, ptr %3) #11
  call void @llvm.lifetime.start.p0(i64 4, ptr %21) #11
  store float 2.000000e+00, ptr %21, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 24, ptr %22) #11
  call void @_ZN3JPH5ArrayINS_8TriangleENS_12STLAllocatorIS1_EEEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %22) #11
  call void @llvm.lifetime.start.p0(i64 4, ptr %23) #11
  store i32 -10, ptr %23, align 4, !tbaa !11
  br label %271

271:                                              ; preds = %365, %270
  %272 = load i32, ptr %23, align 4, !tbaa !11
  %273 = icmp slt i32 %272, 10
  br i1 %273, label %301, label %274

274:                                              ; preds = %271
  store i32 8, ptr %10, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %23) #11
  br label %368

275:                                              ; preds = %238, %236, %233
  %276 = landingpad { ptr, i32 }
          cleanup
  %277 = extractvalue { ptr, i32 } %276, 0
  store ptr %277, ptr %4, align 8
  %278 = extractvalue { ptr, i32 } %276, 1
  store i32 %278, ptr %5, align 4
  br label %283

279:                                              ; preds = %254
  %280 = landingpad { ptr, i32 }
          cleanup
  %281 = extractvalue { ptr, i32 } %280, 0
  store ptr %281, ptr %4, align 8
  %282 = extractvalue { ptr, i32 } %280, 1
  store i32 %282, ptr %5, align 4
  call void @_ZN3JPH20BodyCreationSettingsD2Ev(ptr noundef nonnull align 16 dereferenceable(256) %15) #11
  br label %283

283:                                              ; preds = %279, %275
  call void @llvm.lifetime.end.p0(i64 256, ptr %15) #11
  br label %297

284:                                              ; preds = %256
  %285 = landingpad { ptr, i32 }
          cleanup
  %286 = extractvalue { ptr, i32 } %285, 0
  store ptr %286, ptr %4, align 8
  %287 = extractvalue { ptr, i32 } %285, 1
  store i32 %287, ptr %5, align 4
  br label %292

288:                                              ; preds = %258
  %289 = landingpad { ptr, i32 }
          cleanup
  %290 = extractvalue { ptr, i32 } %289, 0
  store ptr %290, ptr %4, align 8
  %291 = extractvalue { ptr, i32 } %289, 1
  store i32 %291, ptr %5, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcEN3JPH12STLAllocatorIcEEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %18) #11
  br label %292

292:                                              ; preds = %288, %284
  call void @llvm.lifetime.end.p0(i64 1, ptr %19) #11
  call void @llvm.lifetime.end.p0(i64 32, ptr %18) #11
  br label %297

293:                                              ; preds = %265, %263, %261, %259
  %294 = landingpad { ptr, i32 }
          cleanup
  %295 = extractvalue { ptr, i32 } %294, 0
  store ptr %295, ptr %4, align 8
  %296 = extractvalue { ptr, i32 } %294, 1
  store i32 %296, ptr %5, align 4
  br label %297

297:                                              ; preds = %293, %292, %283
  call void @llvm.lifetime.end.p0(i64 4, ptr %14) #11
  br label %298

298:                                              ; preds = %297, %225
  call void @_ZN3JPH8RefConstINS_5ShapeEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %7) #11
  br label %299

299:                                              ; preds = %298, %185, %181
  call void @llvm.lifetime.end.p0(i64 8, ptr %7) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr %6) #11
  br label %300

300:                                              ; preds = %299, %177
  call void @_ZN3JPH21CompoundShapeSettingsD2Ev(ptr noundef nonnull align 8 dereferenceable(88) %3) #11
  call void @llvm.lifetime.end.p0(i64 88, ptr %3) #11
  br label %1198

301:                                              ; preds = %271
  call void @llvm.lifetime.start.p0(i64 4, ptr %24) #11
  store i32 -10, ptr %24, align 4, !tbaa !11
  br label %302

302:                                              ; preds = %333, %301
  %303 = load i32, ptr %24, align 4, !tbaa !11
  %304 = icmp slt i32 %303, 10
  br i1 %304, label %306, label %305

305:                                              ; preds = %302
  store i32 11, ptr %10, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %24) #11
  br label %364

306:                                              ; preds = %302
  call void @llvm.lifetime.start.p0(i64 4, ptr %25) #11
  %307 = load i32, ptr %23, align 4, !tbaa !11
  %308 = sitofp i32 %307 to float
  %309 = fmul float 2.000000e+00, %308
  store float %309, ptr %25, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %26) #11
  %310 = load i32, ptr %24, align 4, !tbaa !11
  %311 = sitofp i32 %310 to float
  %312 = fmul float 2.000000e+00, %311
  store float %312, ptr %26, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %27) #11
  %313 = load float, ptr %25, align 4, !tbaa !9
  %314 = fadd float %313, 2.000000e+00
  store float %314, ptr %27, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %28) #11
  %315 = load float, ptr %26, align 4, !tbaa !9
  %316 = fadd float %315, 2.000000e+00
  store float %316, ptr %28, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 12, ptr %29) #11
  %317 = load float, ptr %25, align 4, !tbaa !9
  %318 = load float, ptr %26, align 4, !tbaa !9
  invoke void @_ZN3JPH6Float3C2Efff(ptr noundef nonnull align 4 dereferenceable(12) %29, float noundef %317, float noundef 0.000000e+00, float noundef %318)
          to label %319 unwind label %336

319:                                              ; preds = %306
  call void @llvm.lifetime.start.p0(i64 12, ptr %30) #11
  %320 = load float, ptr %27, align 4, !tbaa !9
  %321 = load float, ptr %26, align 4, !tbaa !9
  invoke void @_ZN3JPH6Float3C2Efff(ptr noundef nonnull align 4 dereferenceable(12) %30, float noundef %320, float noundef 0.000000e+00, float noundef %321)
          to label %322 unwind label %340

322:                                              ; preds = %319
  call void @llvm.lifetime.start.p0(i64 12, ptr %31) #11
  %323 = load float, ptr %25, align 4, !tbaa !9
  %324 = load float, ptr %28, align 4, !tbaa !9
  invoke void @_ZN3JPH6Float3C2Efff(ptr noundef nonnull align 4 dereferenceable(12) %31, float noundef %323, float noundef 0.000000e+00, float noundef %324)
          to label %325 unwind label %344

325:                                              ; preds = %322
  call void @llvm.lifetime.start.p0(i64 12, ptr %32) #11
  %326 = load float, ptr %27, align 4, !tbaa !9
  %327 = load float, ptr %28, align 4, !tbaa !9
  invoke void @_ZN3JPH6Float3C2Efff(ptr noundef nonnull align 4 dereferenceable(12) %32, float noundef %326, float noundef 0.000000e+00, float noundef %327)
          to label %328 unwind label %348

328:                                              ; preds = %325
  call void @llvm.lifetime.start.p0(i64 44, ptr %33) #11
  invoke void @_ZN3JPH8TriangleC2ERKNS_6Float3ES3_S3_jj(ptr noundef nonnull align 4 dereferenceable(44) %33, ptr noundef nonnull align 4 dereferenceable(12) %29, ptr noundef nonnull align 4 dereferenceable(12) %31, ptr noundef nonnull align 4 dereferenceable(12) %32, i32 noundef 0, i32 noundef 0)
          to label %329 unwind label %352

329:                                              ; preds = %328
  invoke void @_ZN3JPH5ArrayINS_8TriangleENS_12STLAllocatorIS1_EEE9push_backEOS1_(ptr noundef nonnull align 8 dereferenceable(24) %22, ptr noundef nonnull align 4 dereferenceable(44) %33)
          to label %330 unwind label %352

330:                                              ; preds = %329
  call void @llvm.lifetime.end.p0(i64 44, ptr %33) #11
  call void @llvm.lifetime.start.p0(i64 44, ptr %34) #11
  invoke void @_ZN3JPH8TriangleC2ERKNS_6Float3ES3_S3_jj(ptr noundef nonnull align 4 dereferenceable(44) %34, ptr noundef nonnull align 4 dereferenceable(12) %29, ptr noundef nonnull align 4 dereferenceable(12) %32, ptr noundef nonnull align 4 dereferenceable(12) %30, i32 noundef 0, i32 noundef 0)
          to label %331 unwind label %356

331:                                              ; preds = %330
  invoke void @_ZN3JPH5ArrayINS_8TriangleENS_12STLAllocatorIS1_EEE9push_backEOS1_(ptr noundef nonnull align 8 dereferenceable(24) %22, ptr noundef nonnull align 4 dereferenceable(44) %34)
          to label %332 unwind label %356

332:                                              ; preds = %331
  call void @llvm.lifetime.end.p0(i64 44, ptr %34) #11
  call void @llvm.lifetime.end.p0(i64 12, ptr %32) #11
  call void @llvm.lifetime.end.p0(i64 12, ptr %31) #11
  call void @llvm.lifetime.end.p0(i64 12, ptr %30) #11
  call void @llvm.lifetime.end.p0(i64 12, ptr %29) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr %28) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr %27) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr %26) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr %25) #11
  br label %333

333:                                              ; preds = %332
  %334 = load i32, ptr %24, align 4, !tbaa !11
  %335 = add nsw i32 %334, 1
  store i32 %335, ptr %24, align 4, !tbaa !11
  br label %302, !llvm.loop !24

336:                                              ; preds = %306
  %337 = landingpad { ptr, i32 }
          cleanup
  %338 = extractvalue { ptr, i32 } %337, 0
  store ptr %338, ptr %4, align 8
  %339 = extractvalue { ptr, i32 } %337, 1
  store i32 %339, ptr %5, align 4
  br label %363

340:                                              ; preds = %319
  %341 = landingpad { ptr, i32 }
          cleanup
  %342 = extractvalue { ptr, i32 } %341, 0
  store ptr %342, ptr %4, align 8
  %343 = extractvalue { ptr, i32 } %341, 1
  store i32 %343, ptr %5, align 4
  br label %362

344:                                              ; preds = %322
  %345 = landingpad { ptr, i32 }
          cleanup
  %346 = extractvalue { ptr, i32 } %345, 0
  store ptr %346, ptr %4, align 8
  %347 = extractvalue { ptr, i32 } %345, 1
  store i32 %347, ptr %5, align 4
  br label %361

348:                                              ; preds = %325
  %349 = landingpad { ptr, i32 }
          cleanup
  %350 = extractvalue { ptr, i32 } %349, 0
  store ptr %350, ptr %4, align 8
  %351 = extractvalue { ptr, i32 } %349, 1
  store i32 %351, ptr %5, align 4
  br label %360

352:                                              ; preds = %329, %328
  %353 = landingpad { ptr, i32 }
          cleanup
  %354 = extractvalue { ptr, i32 } %353, 0
  store ptr %354, ptr %4, align 8
  %355 = extractvalue { ptr, i32 } %353, 1
  store i32 %355, ptr %5, align 4
  call void @llvm.lifetime.end.p0(i64 44, ptr %33) #11
  br label %360

356:                                              ; preds = %331, %330
  %357 = landingpad { ptr, i32 }
          cleanup
  %358 = extractvalue { ptr, i32 } %357, 0
  store ptr %358, ptr %4, align 8
  %359 = extractvalue { ptr, i32 } %357, 1
  store i32 %359, ptr %5, align 4
  call void @llvm.lifetime.end.p0(i64 44, ptr %34) #11
  br label %360

360:                                              ; preds = %356, %352, %348
  call void @llvm.lifetime.end.p0(i64 12, ptr %32) #11
  br label %361

361:                                              ; preds = %360, %344
  call void @llvm.lifetime.end.p0(i64 12, ptr %31) #11
  br label %362

362:                                              ; preds = %361, %340
  call void @llvm.lifetime.end.p0(i64 12, ptr %30) #11
  br label %363

363:                                              ; preds = %362, %336
  call void @llvm.lifetime.end.p0(i64 12, ptr %29) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr %28) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr %27) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr %26) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr %25) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr %24) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr %23) #11
  br label %498

364:                                              ; preds = %305
  br label %365

365:                                              ; preds = %364
  %366 = load i32, ptr %23, align 4, !tbaa !11
  %367 = add nsw i32 %366, 1
  store i32 %367, ptr %23, align 4, !tbaa !11
  br label %271, !llvm.loop !25

368:                                              ; preds = %274
  call void @llvm.lifetime.start.p0(i64 152, ptr %35) #11
  call void @llvm.memset.p0.i64(ptr align 8 %36, i8 0, i64 24, i1 false)
  call void @_ZN3JPH5ArrayINS_8RefConstINS_15PhysicsMaterialEEENS_12STLAllocatorIS3_EEEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %36) #11
  invoke void @_ZN3JPH17MeshShapeSettingsC1ERKNS_5ArrayINS_8TriangleENS_12STLAllocatorIS2_EEEENS1_INS_8RefConstINS_15PhysicsMaterialEEENS3_ISA_EEEE(ptr noundef nonnull align 8 dereferenceable(152) %35, ptr noundef nonnull align 8 dereferenceable(24) %22, ptr noundef %36)
          to label %369 unwind label %465

369:                                              ; preds = %368
  call void @_ZN3JPH5ArrayINS_8RefConstINS_15PhysicsMaterialEEENS_12STLAllocatorIS3_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %36) #11
  %370 = getelementptr inbounds %"class.JPH::MeshShapeSettings", ptr %35, i32 0, i32 5
  store float -1.000000e+00, ptr %370, align 4, !tbaa !26
  %371 = getelementptr inbounds i8, ptr %35, i64 8
  invoke void @_ZNK3JPH9RefTargetINS_13ShapeSettingsEE11SetEmbeddedEv(ptr noundef nonnull align 4 dereferenceable(4) %371)
          to label %372 unwind label %469

372:                                              ; preds = %369
  call void @llvm.lifetime.start.p0(i64 4, ptr %37) #11
  %373 = getelementptr inbounds %class.Test, ptr %154, i32 0, i32 3
  %374 = load ptr, ptr %373, align 8, !tbaa !16
  call void @llvm.lifetime.start.p0(i64 256, ptr %38) #11
  %375 = invoke { double, double } @_ZN3JPH4Vec35sZeroEv()
          to label %376 unwind label %473

376:                                              ; preds = %372
  %377 = getelementptr inbounds %"class.JPH::Vec3", ptr %39, i32 0, i32 0
  %378 = getelementptr inbounds %union.anon, ptr %377, i32 0, i32 0
  %379 = getelementptr inbounds { double, double }, ptr %378, i32 0, i32 0
  %380 = extractvalue { double, double } %375, 0
  store double %380, ptr %379, align 16
  %381 = getelementptr inbounds { double, double }, ptr %378, i32 0, i32 1
  %382 = extractvalue { double, double } %375, 1
  store double %382, ptr %381, align 8
  %383 = invoke { double, double } @_ZN3JPH4Quat9sIdentityEv()
          to label %384 unwind label %473

384:                                              ; preds = %376
  %385 = getelementptr inbounds %"class.JPH::Quat", ptr %40, i32 0, i32 0
  %386 = getelementptr inbounds %"class.JPH::Vec4", ptr %385, i32 0, i32 0
  %387 = getelementptr inbounds %union.anon.4, ptr %386, i32 0, i32 0
  %388 = getelementptr inbounds { double, double }, ptr %387, i32 0, i32 0
  %389 = extractvalue { double, double } %383, 0
  store double %389, ptr %388, align 16
  %390 = getelementptr inbounds { double, double }, ptr %387, i32 0, i32 1
  %391 = extractvalue { double, double } %383, 1
  store double %391, ptr %390, align 8
  %392 = getelementptr inbounds { double, double }, ptr %39, i32 0, i32 0
  %393 = load double, ptr %392, align 16
  %394 = getelementptr inbounds { double, double }, ptr %39, i32 0, i32 1
  %395 = load double, ptr %394, align 8
  %396 = getelementptr inbounds { double, double }, ptr %40, i32 0, i32 0
  %397 = load double, ptr %396, align 16
  %398 = getelementptr inbounds { double, double }, ptr %40, i32 0, i32 1
  %399 = load double, ptr %398, align 8
  invoke void @_ZN3JPH20BodyCreationSettingsC2EPKNS_13ShapeSettingsENS_4Vec3ENS_4QuatENS_11EMotionTypeEt(ptr noundef nonnull align 16 dereferenceable(256) %38, ptr noundef %35, double %393, double %395, double %397, double %399, i8 noundef zeroext 0, i16 noundef zeroext 0)
          to label %400 unwind label %473

400:                                              ; preds = %384
  %401 = invoke i32 @_ZN3JPH13BodyInterface16CreateAndAddBodyERKNS_20BodyCreationSettingsENS_11EActivationE(ptr noundef nonnull align 8 dereferenceable(24) %374, ptr noundef nonnull align 16 dereferenceable(256) %38, i32 noundef 1)
          to label %402 unwind label %477

402:                                              ; preds = %400
  %403 = getelementptr inbounds %"class.JPH::BodyID", ptr %37, i32 0, i32 0
  store i32 %401, ptr %403, align 4
  call void @_ZN3JPH20BodyCreationSettingsD2Ev(ptr noundef nonnull align 16 dereferenceable(256) %38) #11
  call void @llvm.lifetime.end.p0(i64 256, ptr %38) #11
  call void @llvm.lifetime.start.p0(i64 32, ptr %41) #11
  call void @llvm.lifetime.start.p0(i64 1, ptr %42) #11
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcEN3JPH12STLAllocatorIcEEEC2IS5_EEPKcRKS5_(ptr noundef nonnull align 8 dereferenceable(32) %41, ptr noundef @.str.4, ptr noundef nonnull align 1 dereferenceable(1) %42)
          to label %404 unwind label %482

404:                                              ; preds = %402
  invoke void @_ZN4Test12SetBodyLabelERKN3JPH6BodyIDERKNSt7__cxx1112basic_stringIcSt11char_traitsIcENS0_12STLAllocatorIcEEEE(ptr noundef nonnull align 8 dereferenceable(112) %154, ptr noundef nonnull align 4 dereferenceable(4) %37, ptr noundef nonnull align 8 dereferenceable(32) %41)
          to label %405 unwind label %486

405:                                              ; preds = %404
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcEN3JPH12STLAllocatorIcEEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %41) #11
  call void @llvm.lifetime.end.p0(i64 1, ptr %42) #11
  call void @llvm.lifetime.end.p0(i64 32, ptr %41) #11
  %406 = invoke noundef float @_ZN3JPH8literalsli2_rEe(x86_fp80 noundef 0xK3FFFF333333333333333)
          to label %407 unwind label %491

407:                                              ; preds = %405
  invoke void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %43, float noundef -1.800000e+01, float noundef %406, float noundef 0.000000e+00)
          to label %408 unwind label %491

408:                                              ; preds = %407
  %409 = getelementptr inbounds { double, double }, ptr %43, i32 0, i32 0
  %410 = load double, ptr %409, align 16
  %411 = getelementptr inbounds { double, double }, ptr %43, i32 0, i32 1
  %412 = load double, ptr %411, align 8
  invoke void @_ZN31EnhancedInternalEdgeRemovalTest20CreateSlidingObjectsEN3JPH4Vec3E(ptr noundef nonnull align 8 dereferenceable(116) %154, double %410, double %412)
          to label %413 unwind label %491

413:                                              ; preds = %408
  call void @llvm.lifetime.end.p0(i64 4, ptr %37) #11
  call void @_ZN3JPH17MeshShapeSettingsD2Ev(ptr noundef nonnull align 8 dereferenceable(152) %35) #11
  call void @llvm.lifetime.end.p0(i64 152, ptr %35) #11
  call void @_ZN3JPH5ArrayINS_8TriangleENS_12STLAllocatorIS1_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %22) #11
  call void @llvm.lifetime.end.p0(i64 24, ptr %22) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr %21) #11
  call void @llvm.lifetime.start.p0(i64 24, ptr %44) #11
  call void @_ZN3JPH5ArrayINS_8TriangleENS_12STLAllocatorIS1_EEEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %44) #11
  call void @llvm.lifetime.start.p0(i64 4, ptr %45) #11
  store float 5.000000e-01, ptr %45, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %46) #11
  store float 5.000000e+00, ptr %46, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %47) #11
  store float 2.000000e+00, ptr %47, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 44, ptr %48) #11
  call void @llvm.lifetime.start.p0(i64 12, ptr %49) #11
  invoke void @_ZN3JPH6Float3C2Efff(ptr noundef nonnull align 4 dereferenceable(12) %49, float noundef -2.000000e+00, float noundef 0.000000e+00, float noundef 5.000000e+00)
          to label %414 unwind label %499

414:                                              ; preds = %413
  call void @llvm.lifetime.start.p0(i64 12, ptr %50) #11
  invoke void @_ZN3JPH6Float3C2Efff(ptr noundef nonnull align 4 dereferenceable(12) %50, float noundef 2.000000e+00, float noundef 0.000000e+00, float noundef -5.000000e+00)
          to label %415 unwind label %503

415:                                              ; preds = %414
  call void @llvm.lifetime.start.p0(i64 12, ptr %51) #11
  invoke void @_ZN3JPH6Float3C2Efff(ptr noundef nonnull align 4 dereferenceable(12) %51, float noundef -2.000000e+00, float noundef 0.000000e+00, float noundef -5.000000e+00)
          to label %416 unwind label %507

416:                                              ; preds = %415
  invoke void @_ZN3JPH8TriangleC2ERKNS_6Float3ES3_S3_jj(ptr noundef nonnull align 4 dereferenceable(44) %48, ptr noundef nonnull align 4 dereferenceable(12) %49, ptr noundef nonnull align 4 dereferenceable(12) %50, ptr noundef nonnull align 4 dereferenceable(12) %51, i32 noundef 0, i32 noundef 0)
          to label %417 unwind label %507

417:                                              ; preds = %416
  invoke void @_ZN3JPH5ArrayINS_8TriangleENS_12STLAllocatorIS1_EEE9push_backEOS1_(ptr noundef nonnull align 8 dereferenceable(24) %44, ptr noundef nonnull align 4 dereferenceable(44) %48)
          to label %418 unwind label %507

418:                                              ; preds = %417
  call void @llvm.lifetime.end.p0(i64 12, ptr %51) #11
  call void @llvm.lifetime.end.p0(i64 12, ptr %50) #11
  call void @llvm.lifetime.end.p0(i64 12, ptr %49) #11
  call void @llvm.lifetime.end.p0(i64 44, ptr %48) #11
  call void @llvm.lifetime.start.p0(i64 44, ptr %52) #11
  call void @llvm.lifetime.start.p0(i64 12, ptr %53) #11
  invoke void @_ZN3JPH6Float3C2Efff(ptr noundef nonnull align 4 dereferenceable(12) %53, float noundef -2.000000e+00, float noundef 0.000000e+00, float noundef 5.000000e+00)
          to label %419 unwind label %513

419:                                              ; preds = %418
  call void @llvm.lifetime.start.p0(i64 12, ptr %54) #11
  invoke void @_ZN3JPH6Float3C2Efff(ptr noundef nonnull align 4 dereferenceable(12) %54, float noundef 2.000000e+00, float noundef 0.000000e+00, float noundef 5.000000e+00)
          to label %420 unwind label %517

420:                                              ; preds = %419
  call void @llvm.lifetime.start.p0(i64 12, ptr %55) #11
  invoke void @_ZN3JPH6Float3C2Efff(ptr noundef nonnull align 4 dereferenceable(12) %55, float noundef 2.000000e+00, float noundef 0.000000e+00, float noundef -5.000000e+00)
          to label %421 unwind label %521

421:                                              ; preds = %420
  invoke void @_ZN3JPH8TriangleC2ERKNS_6Float3ES3_S3_jj(ptr noundef nonnull align 4 dereferenceable(44) %52, ptr noundef nonnull align 4 dereferenceable(12) %53, ptr noundef nonnull align 4 dereferenceable(12) %54, ptr noundef nonnull align 4 dereferenceable(12) %55, i32 noundef 0, i32 noundef 0)
          to label %422 unwind label %521

422:                                              ; preds = %421
  invoke void @_ZN3JPH5ArrayINS_8TriangleENS_12STLAllocatorIS1_EEE9push_backEOS1_(ptr noundef nonnull align 8 dereferenceable(24) %44, ptr noundef nonnull align 4 dereferenceable(44) %52)
          to label %423 unwind label %521

423:                                              ; preds = %422
  call void @llvm.lifetime.end.p0(i64 12, ptr %55) #11
  call void @llvm.lifetime.end.p0(i64 12, ptr %54) #11
  call void @llvm.lifetime.end.p0(i64 12, ptr %53) #11
  call void @llvm.lifetime.end.p0(i64 44, ptr %52) #11
  call void @llvm.lifetime.start.p0(i64 44, ptr %56) #11
  call void @llvm.lifetime.start.p0(i64 12, ptr %57) #11
  invoke void @_ZN3JPH6Float3C2Efff(ptr noundef nonnull align 4 dereferenceable(12) %57, float noundef 2.000000e+00, float noundef 5.000000e-01, float noundef 5.000000e+00)
          to label %424 unwind label %527

424:                                              ; preds = %423
  call void @llvm.lifetime.start.p0(i64 12, ptr %58) #11
  invoke void @_ZN3JPH6Float3C2Efff(ptr noundef nonnull align 4 dereferenceable(12) %58, float noundef 2.000000e+00, float noundef 5.000000e-01, float noundef -5.000000e+00)
          to label %425 unwind label %531

425:                                              ; preds = %424
  call void @llvm.lifetime.start.p0(i64 12, ptr %59) #11
  invoke void @_ZN3JPH6Float3C2Efff(ptr noundef nonnull align 4 dereferenceable(12) %59, float noundef 2.000000e+00, float noundef 0.000000e+00, float noundef 5.000000e+00)
          to label %426 unwind label %535

426:                                              ; preds = %425
  invoke void @_ZN3JPH8TriangleC2ERKNS_6Float3ES3_S3_jj(ptr noundef nonnull align 4 dereferenceable(44) %56, ptr noundef nonnull align 4 dereferenceable(12) %57, ptr noundef nonnull align 4 dereferenceable(12) %58, ptr noundef nonnull align 4 dereferenceable(12) %59, i32 noundef 0, i32 noundef 0)
          to label %427 unwind label %535

427:                                              ; preds = %426
  invoke void @_ZN3JPH5ArrayINS_8TriangleENS_12STLAllocatorIS1_EEE9push_backEOS1_(ptr noundef nonnull align 8 dereferenceable(24) %44, ptr noundef nonnull align 4 dereferenceable(44) %56)
          to label %428 unwind label %535

428:                                              ; preds = %427
  call void @llvm.lifetime.end.p0(i64 12, ptr %59) #11
  call void @llvm.lifetime.end.p0(i64 12, ptr %58) #11
  call void @llvm.lifetime.end.p0(i64 12, ptr %57) #11
  call void @llvm.lifetime.end.p0(i64 44, ptr %56) #11
  call void @llvm.lifetime.start.p0(i64 44, ptr %60) #11
  call void @llvm.lifetime.start.p0(i64 12, ptr %61) #11
  invoke void @_ZN3JPH6Float3C2Efff(ptr noundef nonnull align 4 dereferenceable(12) %61, float noundef 2.000000e+00, float noundef 0.000000e+00, float noundef 5.000000e+00)
          to label %429 unwind label %541

429:                                              ; preds = %428
  call void @llvm.lifetime.start.p0(i64 12, ptr %62) #11
  invoke void @_ZN3JPH6Float3C2Efff(ptr noundef nonnull align 4 dereferenceable(12) %62, float noundef 2.000000e+00, float noundef 5.000000e-01, float noundef -5.000000e+00)
          to label %430 unwind label %545

430:                                              ; preds = %429
  call void @llvm.lifetime.start.p0(i64 12, ptr %63) #11
  invoke void @_ZN3JPH6Float3C2Efff(ptr noundef nonnull align 4 dereferenceable(12) %63, float noundef 2.000000e+00, float noundef 0.000000e+00, float noundef -5.000000e+00)
          to label %431 unwind label %549

431:                                              ; preds = %430
  invoke void @_ZN3JPH8TriangleC2ERKNS_6Float3ES3_S3_jj(ptr noundef nonnull align 4 dereferenceable(44) %60, ptr noundef nonnull align 4 dereferenceable(12) %61, ptr noundef nonnull align 4 dereferenceable(12) %62, ptr noundef nonnull align 4 dereferenceable(12) %63, i32 noundef 0, i32 noundef 0)
          to label %432 unwind label %549

432:                                              ; preds = %431
  invoke void @_ZN3JPH5ArrayINS_8TriangleENS_12STLAllocatorIS1_EEE9push_backEOS1_(ptr noundef nonnull align 8 dereferenceable(24) %44, ptr noundef nonnull align 4 dereferenceable(44) %60)
          to label %433 unwind label %549

433:                                              ; preds = %432
  call void @llvm.lifetime.end.p0(i64 12, ptr %63) #11
  call void @llvm.lifetime.end.p0(i64 12, ptr %62) #11
  call void @llvm.lifetime.end.p0(i64 12, ptr %61) #11
  call void @llvm.lifetime.end.p0(i64 44, ptr %60) #11
  %434 = getelementptr inbounds %class.Test, ptr %154, i32 0, i32 3
  %435 = load ptr, ptr %434, align 8, !tbaa !16
  call void @llvm.lifetime.start.p0(i64 256, ptr %64) #11
  %436 = invoke noundef ptr @_ZN3JPH17MeshShapeSettingsnwEm(i64 noundef 152)
          to label %437 unwind label %555

437:                                              ; preds = %433
  store i1 true, ptr %66, align 1
  call void @llvm.memset.p0.i64(ptr align 8 %65, i8 0, i64 24, i1 false)
  call void @_ZN3JPH5ArrayINS_8RefConstINS_15PhysicsMaterialEEENS_12STLAllocatorIS3_EEEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %65) #11
  invoke void @_ZN3JPH17MeshShapeSettingsC1ERKNS_5ArrayINS_8TriangleENS_12STLAllocatorIS2_EEEENS1_INS_8RefConstINS_15PhysicsMaterialEEENS3_ISA_EEEE(ptr noundef nonnull align 8 dereferenceable(152) %436, ptr noundef nonnull align 8 dereferenceable(24) %44, ptr noundef %65)
          to label %438 unwind label %559

438:                                              ; preds = %437
  store i1 false, ptr %66, align 1
  invoke void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %67, float noundef 0.000000e+00, float noundef 0.000000e+00, float noundef 3.000000e+01)
          to label %439 unwind label %559

439:                                              ; preds = %438
  %440 = invoke { double, double } @_ZN3JPH4Quat9sIdentityEv()
          to label %441 unwind label %559

441:                                              ; preds = %439
  %442 = getelementptr inbounds %"class.JPH::Quat", ptr %68, i32 0, i32 0
  %443 = getelementptr inbounds %"class.JPH::Vec4", ptr %442, i32 0, i32 0
  %444 = getelementptr inbounds %union.anon.4, ptr %443, i32 0, i32 0
  %445 = getelementptr inbounds { double, double }, ptr %444, i32 0, i32 0
  %446 = extractvalue { double, double } %440, 0
  store double %446, ptr %445, align 16
  %447 = getelementptr inbounds { double, double }, ptr %444, i32 0, i32 1
  %448 = extractvalue { double, double } %440, 1
  store double %448, ptr %447, align 8
  %449 = getelementptr inbounds { double, double }, ptr %67, i32 0, i32 0
  %450 = load double, ptr %449, align 16
  %451 = getelementptr inbounds { double, double }, ptr %67, i32 0, i32 1
  %452 = load double, ptr %451, align 8
  %453 = getelementptr inbounds { double, double }, ptr %68, i32 0, i32 0
  %454 = load double, ptr %453, align 16
  %455 = getelementptr inbounds { double, double }, ptr %68, i32 0, i32 1
  %456 = load double, ptr %455, align 8
  invoke void @_ZN3JPH20BodyCreationSettingsC2EPKNS_13ShapeSettingsENS_4Vec3ENS_4QuatENS_11EMotionTypeEt(ptr noundef nonnull align 16 dereferenceable(256) %64, ptr noundef %436, double %450, double %452, double %454, double %456, i8 noundef zeroext 0, i16 noundef zeroext 0)
          to label %457 unwind label %559

457:                                              ; preds = %441
  %458 = invoke i32 @_ZN3JPH13BodyInterface16CreateAndAddBodyERKNS_20BodyCreationSettingsENS_11EActivationE(ptr noundef nonnull align 8 dereferenceable(24) %435, ptr noundef nonnull align 16 dereferenceable(256) %64, i32 noundef 1)
          to label %459 unwind label %563

459:                                              ; preds = %457
  %460 = getelementptr inbounds %"class.JPH::BodyID", ptr %69, i32 0, i32 0
  store i32 %458, ptr %460, align 4
  call void @_ZN3JPH20BodyCreationSettingsD2Ev(ptr noundef nonnull align 16 dereferenceable(256) %64) #11
  call void @_ZN3JPH5ArrayINS_8RefConstINS_15PhysicsMaterialEEENS_12STLAllocatorIS3_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %65) #11
  call void @llvm.lifetime.end.p0(i64 256, ptr %64) #11
  call void @llvm.lifetime.start.p0(i64 4, ptr %70) #11
  store float 2.800000e+01, ptr %70, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %71) #11
  store i32 0, ptr %71, align 4, !tbaa !11
  br label %461

461:                                              ; preds = %609, %459
  %462 = load i32, ptr %71, align 4, !tbaa !11
  %463 = icmp slt i32 %462, 2
  br i1 %463, label %572, label %464

464:                                              ; preds = %461
  store i32 14, ptr %10, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %71) #11
  br label %630

465:                                              ; preds = %368
  %466 = landingpad { ptr, i32 }
          cleanup
  %467 = extractvalue { ptr, i32 } %466, 0
  store ptr %467, ptr %4, align 8
  %468 = extractvalue { ptr, i32 } %466, 1
  store i32 %468, ptr %5, align 4
  call void @_ZN3JPH5ArrayINS_8RefConstINS_15PhysicsMaterialEEENS_12STLAllocatorIS3_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %36) #11
  br label %497

469:                                              ; preds = %369
  %470 = landingpad { ptr, i32 }
          cleanup
  %471 = extractvalue { ptr, i32 } %470, 0
  store ptr %471, ptr %4, align 8
  %472 = extractvalue { ptr, i32 } %470, 1
  store i32 %472, ptr %5, align 4
  br label %496

473:                                              ; preds = %384, %376, %372
  %474 = landingpad { ptr, i32 }
          cleanup
  %475 = extractvalue { ptr, i32 } %474, 0
  store ptr %475, ptr %4, align 8
  %476 = extractvalue { ptr, i32 } %474, 1
  store i32 %476, ptr %5, align 4
  br label %481

477:                                              ; preds = %400
  %478 = landingpad { ptr, i32 }
          cleanup
  %479 = extractvalue { ptr, i32 } %478, 0
  store ptr %479, ptr %4, align 8
  %480 = extractvalue { ptr, i32 } %478, 1
  store i32 %480, ptr %5, align 4
  call void @_ZN3JPH20BodyCreationSettingsD2Ev(ptr noundef nonnull align 16 dereferenceable(256) %38) #11
  br label %481

481:                                              ; preds = %477, %473
  call void @llvm.lifetime.end.p0(i64 256, ptr %38) #11
  br label %495

482:                                              ; preds = %402
  %483 = landingpad { ptr, i32 }
          cleanup
  %484 = extractvalue { ptr, i32 } %483, 0
  store ptr %484, ptr %4, align 8
  %485 = extractvalue { ptr, i32 } %483, 1
  store i32 %485, ptr %5, align 4
  br label %490

486:                                              ; preds = %404
  %487 = landingpad { ptr, i32 }
          cleanup
  %488 = extractvalue { ptr, i32 } %487, 0
  store ptr %488, ptr %4, align 8
  %489 = extractvalue { ptr, i32 } %487, 1
  store i32 %489, ptr %5, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcEN3JPH12STLAllocatorIcEEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %41) #11
  br label %490

490:                                              ; preds = %486, %482
  call void @llvm.lifetime.end.p0(i64 1, ptr %42) #11
  call void @llvm.lifetime.end.p0(i64 32, ptr %41) #11
  br label %495

491:                                              ; preds = %408, %407, %405
  %492 = landingpad { ptr, i32 }
          cleanup
  %493 = extractvalue { ptr, i32 } %492, 0
  store ptr %493, ptr %4, align 8
  %494 = extractvalue { ptr, i32 } %492, 1
  store i32 %494, ptr %5, align 4
  br label %495

495:                                              ; preds = %491, %490, %481
  call void @llvm.lifetime.end.p0(i64 4, ptr %37) #11
  br label %496

496:                                              ; preds = %495, %469
  call void @_ZN3JPH17MeshShapeSettingsD2Ev(ptr noundef nonnull align 8 dereferenceable(152) %35) #11
  br label %497

497:                                              ; preds = %496, %465
  call void @llvm.lifetime.end.p0(i64 152, ptr %35) #11
  br label %498

498:                                              ; preds = %497, %363
  call void @_ZN3JPH5ArrayINS_8TriangleENS_12STLAllocatorIS1_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %22) #11
  call void @llvm.lifetime.end.p0(i64 24, ptr %22) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr %21) #11
  br label %1198

499:                                              ; preds = %413
  %500 = landingpad { ptr, i32 }
          cleanup
  %501 = extractvalue { ptr, i32 } %500, 0
  store ptr %501, ptr %4, align 8
  %502 = extractvalue { ptr, i32 } %500, 1
  store i32 %502, ptr %5, align 4
  br label %512

503:                                              ; preds = %414
  %504 = landingpad { ptr, i32 }
          cleanup
  %505 = extractvalue { ptr, i32 } %504, 0
  store ptr %505, ptr %4, align 8
  %506 = extractvalue { ptr, i32 } %504, 1
  store i32 %506, ptr %5, align 4
  br label %511

507:                                              ; preds = %417, %416, %415
  %508 = landingpad { ptr, i32 }
          cleanup
  %509 = extractvalue { ptr, i32 } %508, 0
  store ptr %509, ptr %4, align 8
  %510 = extractvalue { ptr, i32 } %508, 1
  store i32 %510, ptr %5, align 4
  call void @llvm.lifetime.end.p0(i64 12, ptr %51) #11
  br label %511

511:                                              ; preds = %507, %503
  call void @llvm.lifetime.end.p0(i64 12, ptr %50) #11
  br label %512

512:                                              ; preds = %511, %499
  call void @llvm.lifetime.end.p0(i64 12, ptr %49) #11
  call void @llvm.lifetime.end.p0(i64 44, ptr %48) #11
  br label %895

513:                                              ; preds = %418
  %514 = landingpad { ptr, i32 }
          cleanup
  %515 = extractvalue { ptr, i32 } %514, 0
  store ptr %515, ptr %4, align 8
  %516 = extractvalue { ptr, i32 } %514, 1
  store i32 %516, ptr %5, align 4
  br label %526

517:                                              ; preds = %419
  %518 = landingpad { ptr, i32 }
          cleanup
  %519 = extractvalue { ptr, i32 } %518, 0
  store ptr %519, ptr %4, align 8
  %520 = extractvalue { ptr, i32 } %518, 1
  store i32 %520, ptr %5, align 4
  br label %525

521:                                              ; preds = %422, %421, %420
  %522 = landingpad { ptr, i32 }
          cleanup
  %523 = extractvalue { ptr, i32 } %522, 0
  store ptr %523, ptr %4, align 8
  %524 = extractvalue { ptr, i32 } %522, 1
  store i32 %524, ptr %5, align 4
  call void @llvm.lifetime.end.p0(i64 12, ptr %55) #11
  br label %525

525:                                              ; preds = %521, %517
  call void @llvm.lifetime.end.p0(i64 12, ptr %54) #11
  br label %526

526:                                              ; preds = %525, %513
  call void @llvm.lifetime.end.p0(i64 12, ptr %53) #11
  call void @llvm.lifetime.end.p0(i64 44, ptr %52) #11
  br label %895

527:                                              ; preds = %423
  %528 = landingpad { ptr, i32 }
          cleanup
  %529 = extractvalue { ptr, i32 } %528, 0
  store ptr %529, ptr %4, align 8
  %530 = extractvalue { ptr, i32 } %528, 1
  store i32 %530, ptr %5, align 4
  br label %540

531:                                              ; preds = %424
  %532 = landingpad { ptr, i32 }
          cleanup
  %533 = extractvalue { ptr, i32 } %532, 0
  store ptr %533, ptr %4, align 8
  %534 = extractvalue { ptr, i32 } %532, 1
  store i32 %534, ptr %5, align 4
  br label %539

535:                                              ; preds = %427, %426, %425
  %536 = landingpad { ptr, i32 }
          cleanup
  %537 = extractvalue { ptr, i32 } %536, 0
  store ptr %537, ptr %4, align 8
  %538 = extractvalue { ptr, i32 } %536, 1
  store i32 %538, ptr %5, align 4
  call void @llvm.lifetime.end.p0(i64 12, ptr %59) #11
  br label %539

539:                                              ; preds = %535, %531
  call void @llvm.lifetime.end.p0(i64 12, ptr %58) #11
  br label %540

540:                                              ; preds = %539, %527
  call void @llvm.lifetime.end.p0(i64 12, ptr %57) #11
  call void @llvm.lifetime.end.p0(i64 44, ptr %56) #11
  br label %895

541:                                              ; preds = %428
  %542 = landingpad { ptr, i32 }
          cleanup
  %543 = extractvalue { ptr, i32 } %542, 0
  store ptr %543, ptr %4, align 8
  %544 = extractvalue { ptr, i32 } %542, 1
  store i32 %544, ptr %5, align 4
  br label %554

545:                                              ; preds = %429
  %546 = landingpad { ptr, i32 }
          cleanup
  %547 = extractvalue { ptr, i32 } %546, 0
  store ptr %547, ptr %4, align 8
  %548 = extractvalue { ptr, i32 } %546, 1
  store i32 %548, ptr %5, align 4
  br label %553

549:                                              ; preds = %432, %431, %430
  %550 = landingpad { ptr, i32 }
          cleanup
  %551 = extractvalue { ptr, i32 } %550, 0
  store ptr %551, ptr %4, align 8
  %552 = extractvalue { ptr, i32 } %550, 1
  store i32 %552, ptr %5, align 4
  call void @llvm.lifetime.end.p0(i64 12, ptr %63) #11
  br label %553

553:                                              ; preds = %549, %545
  call void @llvm.lifetime.end.p0(i64 12, ptr %62) #11
  br label %554

554:                                              ; preds = %553, %541
  call void @llvm.lifetime.end.p0(i64 12, ptr %61) #11
  call void @llvm.lifetime.end.p0(i64 44, ptr %60) #11
  br label %895

555:                                              ; preds = %433
  %556 = landingpad { ptr, i32 }
          cleanup
  %557 = extractvalue { ptr, i32 } %556, 0
  store ptr %557, ptr %4, align 8
  %558 = extractvalue { ptr, i32 } %556, 1
  store i32 %558, ptr %5, align 4
  br label %571

559:                                              ; preds = %441, %439, %438, %437
  %560 = landingpad { ptr, i32 }
          cleanup
  %561 = extractvalue { ptr, i32 } %560, 0
  store ptr %561, ptr %4, align 8
  %562 = extractvalue { ptr, i32 } %560, 1
  store i32 %562, ptr %5, align 4
  br label %567

563:                                              ; preds = %457
  %564 = landingpad { ptr, i32 }
          cleanup
  %565 = extractvalue { ptr, i32 } %564, 0
  store ptr %565, ptr %4, align 8
  %566 = extractvalue { ptr, i32 } %564, 1
  store i32 %566, ptr %5, align 4
  call void @_ZN3JPH20BodyCreationSettingsD2Ev(ptr noundef nonnull align 16 dereferenceable(256) %64) #11
  br label %567

567:                                              ; preds = %563, %559
  call void @_ZN3JPH5ArrayINS_8RefConstINS_15PhysicsMaterialEEENS_12STLAllocatorIS3_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %65) #11
  %568 = load i1, ptr %66, align 1
  br i1 %568, label %569, label %570

569:                                              ; preds = %567
  call void @_ZN3JPH17MeshShapeSettingsdlEPv(ptr noundef %436) #11
  br label %570

570:                                              ; preds = %569, %567
  br label %571

571:                                              ; preds = %570, %555
  call void @llvm.lifetime.end.p0(i64 256, ptr %64) #11
  br label %895

572:                                              ; preds = %461
  call void @llvm.lifetime.start.p0(i64 256, ptr %72) #11
  %573 = invoke noundef ptr @_ZN3JPH11SphereShapenwEm(i64 noundef 48)
          to label %574 unwind label %612

574:                                              ; preds = %572
  invoke void @_ZN3JPH11SphereShapeC2EfPKNS_15PhysicsMaterialE(ptr noundef nonnull align 8 dereferenceable(48) %573, float noundef 1.000000e+00, ptr noundef null)
          to label %575 unwind label %616

575:                                              ; preds = %574
  %576 = load float, ptr %70, align 4, !tbaa !9
  invoke void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %73, float noundef 0.000000e+00, float noundef 1.000000e+00, float noundef %576)
          to label %577 unwind label %612

577:                                              ; preds = %575
  %578 = invoke { double, double } @_ZN3JPH4Quat9sIdentityEv()
          to label %579 unwind label %612

579:                                              ; preds = %577
  %580 = getelementptr inbounds %"class.JPH::Quat", ptr %74, i32 0, i32 0
  %581 = getelementptr inbounds %"class.JPH::Vec4", ptr %580, i32 0, i32 0
  %582 = getelementptr inbounds %union.anon.4, ptr %581, i32 0, i32 0
  %583 = getelementptr inbounds { double, double }, ptr %582, i32 0, i32 0
  %584 = extractvalue { double, double } %578, 0
  store double %584, ptr %583, align 16
  %585 = getelementptr inbounds { double, double }, ptr %582, i32 0, i32 1
  %586 = extractvalue { double, double } %578, 1
  store double %586, ptr %585, align 8
  %587 = getelementptr inbounds { double, double }, ptr %73, i32 0, i32 0
  %588 = load double, ptr %587, align 16
  %589 = getelementptr inbounds { double, double }, ptr %73, i32 0, i32 1
  %590 = load double, ptr %589, align 8
  %591 = getelementptr inbounds { double, double }, ptr %74, i32 0, i32 0
  %592 = load double, ptr %591, align 16
  %593 = getelementptr inbounds { double, double }, ptr %74, i32 0, i32 1
  %594 = load double, ptr %593, align 8
  invoke void @_ZN3JPH20BodyCreationSettingsC2EPKNS_5ShapeENS_4Vec3ENS_4QuatENS_11EMotionTypeEt(ptr noundef nonnull align 16 dereferenceable(256) %72, ptr noundef %573, double %588, double %590, double %592, double %594, i8 noundef zeroext 2, i16 noundef zeroext 1)
          to label %595 unwind label %612

595:                                              ; preds = %579
  call void @llvm.lifetime.start.p0(i64 16, ptr %75) #11
  invoke void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %75, float noundef 2.000000e+01, float noundef 0.000000e+00, float noundef 0.000000e+00)
          to label %596 unwind label %620

596:                                              ; preds = %595
  %597 = getelementptr inbounds %"class.JPH::BodyCreationSettings", ptr %72, i32 0, i32 2
  call void @llvm.memcpy.p0.p0.i64(ptr align 16 %597, ptr align 16 %75, i64 16, i1 false), !tbaa.struct !39
  call void @llvm.lifetime.end.p0(i64 16, ptr %75) #11
  %598 = load i32, ptr %71, align 4, !tbaa !11
  %599 = icmp eq i32 %598, 1
  %600 = getelementptr inbounds %"class.JPH::BodyCreationSettings", ptr %72, i32 0, i32 15
  %601 = zext i1 %599 to i8
  store i8 %601, ptr %600, align 8, !tbaa !41
  %602 = getelementptr inbounds %class.Test, ptr %154, i32 0, i32 3
  %603 = load ptr, ptr %602, align 8, !tbaa !16
  %604 = invoke i32 @_ZN3JPH13BodyInterface16CreateAndAddBodyERKNS_20BodyCreationSettingsENS_11EActivationE(ptr noundef nonnull align 8 dereferenceable(24) %603, ptr noundef nonnull align 16 dereferenceable(256) %72, i32 noundef 0)
          to label %605 unwind label %624

605:                                              ; preds = %596
  %606 = getelementptr inbounds %"class.JPH::BodyID", ptr %76, i32 0, i32 0
  store i32 %604, ptr %606, align 4
  %607 = load float, ptr %70, align 4, !tbaa !9
  %608 = fadd float %607, 4.000000e+00
  store float %608, ptr %70, align 4, !tbaa !9
  call void @_ZN3JPH20BodyCreationSettingsD2Ev(ptr noundef nonnull align 16 dereferenceable(256) %72) #11
  call void @llvm.lifetime.end.p0(i64 256, ptr %72) #11
  br label %609

609:                                              ; preds = %605
  %610 = load i32, ptr %71, align 4, !tbaa !11
  %611 = add nsw i32 %610, 1
  store i32 %611, ptr %71, align 4, !tbaa !11
  br label %461, !llvm.loop !57

612:                                              ; preds = %579, %577, %575, %572
  %613 = landingpad { ptr, i32 }
          cleanup
  %614 = extractvalue { ptr, i32 } %613, 0
  store ptr %614, ptr %4, align 8
  %615 = extractvalue { ptr, i32 } %613, 1
  store i32 %615, ptr %5, align 4
  br label %629

616:                                              ; preds = %574
  %617 = landingpad { ptr, i32 }
          cleanup
  %618 = extractvalue { ptr, i32 } %617, 0
  store ptr %618, ptr %4, align 8
  %619 = extractvalue { ptr, i32 } %617, 1
  store i32 %619, ptr %5, align 4
  call void @_ZN3JPH11SphereShapedlEPv(ptr noundef %573) #11
  br label %629

620:                                              ; preds = %595
  %621 = landingpad { ptr, i32 }
          cleanup
  %622 = extractvalue { ptr, i32 } %621, 0
  store ptr %622, ptr %4, align 8
  %623 = extractvalue { ptr, i32 } %621, 1
  store i32 %623, ptr %5, align 4
  call void @llvm.lifetime.end.p0(i64 16, ptr %75) #11
  br label %628

624:                                              ; preds = %596
  %625 = landingpad { ptr, i32 }
          cleanup
  %626 = extractvalue { ptr, i32 } %625, 0
  store ptr %626, ptr %4, align 8
  %627 = extractvalue { ptr, i32 } %625, 1
  store i32 %627, ptr %5, align 4
  br label %628

628:                                              ; preds = %624, %620
  call void @_ZN3JPH20BodyCreationSettingsD2Ev(ptr noundef nonnull align 16 dereferenceable(256) %72) #11
  br label %629

629:                                              ; preds = %628, %616, %612
  call void @llvm.lifetime.end.p0(i64 256, ptr %72) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr %71) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr %70) #11
  br label %895

630:                                              ; preds = %464
  call void @llvm.lifetime.end.p0(i64 4, ptr %70) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr %47) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr %46) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr %45) #11
  call void @_ZN3JPH5ArrayINS_8TriangleENS_12STLAllocatorIS1_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %44) #11
  call void @llvm.lifetime.end.p0(i64 24, ptr %44) #11
  call void @llvm.lifetime.start.p0(i64 152, ptr %77) #11
  call void @llvm.lifetime.start.p0(i64 24, ptr %78) #11
  call void @llvm.lifetime.start.p0(i64 88, ptr %80) #11
  call void @llvm.lifetime.start.p0(i64 12, ptr %81) #11
  call void @_ZN3JPH6Float3C2Efff(ptr noundef nonnull align 4 dereferenceable(12) %81, float noundef -1.000000e+01, float noundef 0.000000e+00, float noundef -1.000000e+01)
  call void @llvm.lifetime.start.p0(i64 12, ptr %82) #11
  call void @_ZN3JPH6Float3C2Efff(ptr noundef nonnull align 4 dereferenceable(12) %82, float noundef -1.000000e+01, float noundef 0.000000e+00, float noundef 1.000000e+01)
  call void @llvm.lifetime.start.p0(i64 12, ptr %83) #11
  call void @_ZN3JPH6Float3C2Efff(ptr noundef nonnull align 4 dereferenceable(12) %83, float noundef 1.000000e+01, float noundef 0.000000e+00, float noundef 1.000000e+01)
  call void @_ZN3JPH8TriangleC2ERKNS_6Float3ES3_S3_jj(ptr noundef nonnull align 4 dereferenceable(44) %80, ptr noundef nonnull align 4 dereferenceable(12) %81, ptr noundef nonnull align 4 dereferenceable(12) %82, ptr noundef nonnull align 4 dereferenceable(12) %83, i32 noundef 0, i32 noundef 0)
  %631 = getelementptr inbounds %"class.JPH::Triangle", ptr %80, i64 1
  call void @llvm.lifetime.start.p0(i64 12, ptr %84) #11
  call void @_ZN3JPH6Float3C2Efff(ptr noundef nonnull align 4 dereferenceable(12) %84, float noundef -1.000000e+01, float noundef 0.000000e+00, float noundef -1.000000e+01)
  call void @llvm.lifetime.start.p0(i64 12, ptr %85) #11
  call void @_ZN3JPH6Float3C2Efff(ptr noundef nonnull align 4 dereferenceable(12) %85, float noundef 1.000000e+01, float noundef 0.000000e+00, float noundef 1.000000e+01)
  call void @llvm.lifetime.start.p0(i64 12, ptr %86) #11
  call void @_ZN3JPH6Float3C2Efff(ptr noundef nonnull align 4 dereferenceable(12) %86, float noundef 1.000000e+01, float noundef 0.000000e+00, float noundef -1.000000e+01)
  call void @_ZN3JPH8TriangleC2ERKNS_6Float3ES3_S3_jj(ptr noundef nonnull align 4 dereferenceable(44) %631, ptr noundef nonnull align 4 dereferenceable(12) %84, ptr noundef nonnull align 4 dereferenceable(12) %85, ptr noundef nonnull align 4 dereferenceable(12) %86, i32 noundef 0, i32 noundef 0)
  %632 = getelementptr inbounds %"class.std::initializer_list", ptr %79, i32 0, i32 0
  store ptr %80, ptr %632, align 8, !tbaa !58
  %633 = getelementptr inbounds %"class.std::initializer_list", ptr %79, i32 0, i32 1
  store i64 2, ptr %633, align 8, !tbaa !60
  call void @llvm.lifetime.start.p0(i64 1, ptr %87) #11
  %634 = getelementptr inbounds { ptr, i64 }, ptr %79, i32 0, i32 0
  %635 = load ptr, ptr %634, align 8
  %636 = getelementptr inbounds { ptr, i64 }, ptr %79, i32 0, i32 1
  %637 = load i64, ptr %636, align 8
  call void @_ZN3JPH5ArrayINS_8TriangleENS_12STLAllocatorIS1_EEEC2ESt16initializer_listIS1_ERKS3_(ptr noundef nonnull align 8 dereferenceable(24) %78, ptr %635, i64 %637, ptr noundef nonnull align 1 dereferenceable(1) %87)
  call void @llvm.memset.p0.i64(ptr align 8 %88, i8 0, i64 24, i1 false)
  call void @_ZN3JPH5ArrayINS_8RefConstINS_15PhysicsMaterialEEENS_12STLAllocatorIS3_EEEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %88) #11
  invoke void @_ZN3JPH17MeshShapeSettingsC1ERKNS_5ArrayINS_8TriangleENS_12STLAllocatorIS2_EEEENS1_INS_8RefConstINS_15PhysicsMaterialEEENS3_ISA_EEEE(ptr noundef nonnull align 8 dereferenceable(152) %77, ptr noundef nonnull align 8 dereferenceable(24) %78, ptr noundef %88)
          to label %638 unwind label %896

638:                                              ; preds = %630
  call void @_ZN3JPH5ArrayINS_8RefConstINS_15PhysicsMaterialEEENS_12STLAllocatorIS3_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %88) #11
  call void @_ZN3JPH5ArrayINS_8TriangleENS_12STLAllocatorIS1_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %78) #11
  call void @llvm.lifetime.end.p0(i64 1, ptr %87) #11
  call void @llvm.lifetime.end.p0(i64 12, ptr %86) #11
  call void @llvm.lifetime.end.p0(i64 12, ptr %85) #11
  call void @llvm.lifetime.end.p0(i64 12, ptr %84) #11
  call void @llvm.lifetime.end.p0(i64 12, ptr %83) #11
  call void @llvm.lifetime.end.p0(i64 12, ptr %82) #11
  call void @llvm.lifetime.end.p0(i64 12, ptr %81) #11
  call void @llvm.lifetime.end.p0(i64 88, ptr %80) #11
  call void @llvm.lifetime.end.p0(i64 24, ptr %78) #11
  %639 = getelementptr inbounds i8, ptr %77, i64 8
  invoke void @_ZNK3JPH9RefTargetINS_13ShapeSettingsEE11SetEmbeddedEv(ptr noundef nonnull align 4 dereferenceable(4) %639)
          to label %640 unwind label %900

640:                                              ; preds = %638
  call void @llvm.lifetime.start.p0(i64 256, ptr %89) #11
  invoke void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %90, float noundef -1.000000e+01, float noundef 0.000000e+00, float noundef 5.000000e+01)
          to label %641 unwind label %904

641:                                              ; preds = %640
  %642 = invoke { double, double } @_ZN3JPH4Quat9sIdentityEv()
          to label %643 unwind label %904

643:                                              ; preds = %641
  %644 = getelementptr inbounds %"class.JPH::Quat", ptr %91, i32 0, i32 0
  %645 = getelementptr inbounds %"class.JPH::Vec4", ptr %644, i32 0, i32 0
  %646 = getelementptr inbounds %union.anon.4, ptr %645, i32 0, i32 0
  %647 = getelementptr inbounds { double, double }, ptr %646, i32 0, i32 0
  %648 = extractvalue { double, double } %642, 0
  store double %648, ptr %647, align 16
  %649 = getelementptr inbounds { double, double }, ptr %646, i32 0, i32 1
  %650 = extractvalue { double, double } %642, 1
  store double %650, ptr %649, align 8
  %651 = getelementptr inbounds { double, double }, ptr %90, i32 0, i32 0
  %652 = load double, ptr %651, align 16
  %653 = getelementptr inbounds { double, double }, ptr %90, i32 0, i32 1
  %654 = load double, ptr %653, align 8
  %655 = getelementptr inbounds { double, double }, ptr %91, i32 0, i32 0
  %656 = load double, ptr %655, align 16
  %657 = getelementptr inbounds { double, double }, ptr %91, i32 0, i32 1
  %658 = load double, ptr %657, align 8
  invoke void @_ZN3JPH20BodyCreationSettingsC2EPKNS_13ShapeSettingsENS_4Vec3ENS_4QuatENS_11EMotionTypeEt(ptr noundef nonnull align 16 dereferenceable(256) %89, ptr noundef %77, double %652, double %654, double %656, double %658, i8 noundef zeroext 0, i16 noundef zeroext 0)
          to label %659 unwind label %904

659:                                              ; preds = %643
  %660 = getelementptr inbounds %"class.JPH::BodyCreationSettings", ptr %89, i32 0, i32 17
  store float 1.000000e+00, ptr %660, align 4, !tbaa !61
  call void @llvm.lifetime.start.p0(i64 4, ptr %92) #11
  %661 = getelementptr inbounds %class.Test, ptr %154, i32 0, i32 3
  %662 = load ptr, ptr %661, align 8, !tbaa !16
  %663 = invoke i32 @_ZN3JPH13BodyInterface16CreateAndAddBodyERKNS_20BodyCreationSettingsENS_11EActivationE(ptr noundef nonnull align 8 dereferenceable(24) %662, ptr noundef nonnull align 16 dereferenceable(256) %89, i32 noundef 1)
          to label %664 unwind label %908

664:                                              ; preds = %659
  %665 = getelementptr inbounds %"class.JPH::BodyID", ptr %92, i32 0, i32 0
  store i32 %663, ptr %665, align 4
  call void @llvm.lifetime.start.p0(i64 32, ptr %93) #11
  call void @llvm.lifetime.start.p0(i64 1, ptr %94) #11
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcEN3JPH12STLAllocatorIcEEEC2IS5_EEPKcRKS5_(ptr noundef nonnull align 8 dereferenceable(32) %93, ptr noundef @.str.4, ptr noundef nonnull align 1 dereferenceable(1) %94)
          to label %666 unwind label %912

666:                                              ; preds = %664
  invoke void @_ZN4Test12SetBodyLabelERKN3JPH6BodyIDERKNSt7__cxx1112basic_stringIcSt11char_traitsIcENS0_12STLAllocatorIcEEEE(ptr noundef nonnull align 8 dereferenceable(112) %154, ptr noundef nonnull align 4 dereferenceable(4) %92, ptr noundef nonnull align 8 dereferenceable(32) %93)
          to label %667 unwind label %916

667:                                              ; preds = %666
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcEN3JPH12STLAllocatorIcEEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %93) #11
  call void @llvm.lifetime.end.p0(i64 1, ptr %94) #11
  call void @llvm.lifetime.end.p0(i64 32, ptr %93) #11
  call void @llvm.lifetime.start.p0(i64 256, ptr %95) #11
  %668 = invoke noundef ptr @_ZN3JPH11SphereShapenwEm(i64 noundef 48)
          to label %669 unwind label %921

669:                                              ; preds = %667
  invoke void @_ZN3JPH11SphereShapeC2EfPKNS_15PhysicsMaterialE(ptr noundef nonnull align 8 dereferenceable(48) %668, float noundef 5.000000e-01, ptr noundef null)
          to label %670 unwind label %925

670:                                              ; preds = %669
  invoke void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %96, float noundef -1.000000e+01, float noundef 1.000000e+00, float noundef 4.100000e+01)
          to label %671 unwind label %921

671:                                              ; preds = %670
  %672 = invoke { double, double } @_ZN3JPH4Quat9sIdentityEv()
          to label %673 unwind label %921

673:                                              ; preds = %671
  %674 = getelementptr inbounds %"class.JPH::Quat", ptr %97, i32 0, i32 0
  %675 = getelementptr inbounds %"class.JPH::Vec4", ptr %674, i32 0, i32 0
  %676 = getelementptr inbounds %union.anon.4, ptr %675, i32 0, i32 0
  %677 = getelementptr inbounds { double, double }, ptr %676, i32 0, i32 0
  %678 = extractvalue { double, double } %672, 0
  store double %678, ptr %677, align 16
  %679 = getelementptr inbounds { double, double }, ptr %676, i32 0, i32 1
  %680 = extractvalue { double, double } %672, 1
  store double %680, ptr %679, align 8
  %681 = getelementptr inbounds { double, double }, ptr %96, i32 0, i32 0
  %682 = load double, ptr %681, align 16
  %683 = getelementptr inbounds { double, double }, ptr %96, i32 0, i32 1
  %684 = load double, ptr %683, align 8
  %685 = getelementptr inbounds { double, double }, ptr %97, i32 0, i32 0
  %686 = load double, ptr %685, align 16
  %687 = getelementptr inbounds { double, double }, ptr %97, i32 0, i32 1
  %688 = load double, ptr %687, align 8
  invoke void @_ZN3JPH20BodyCreationSettingsC2EPKNS_5ShapeENS_4Vec3ENS_4QuatENS_11EMotionTypeEt(ptr noundef nonnull align 16 dereferenceable(256) %95, ptr noundef %668, double %682, double %684, double %686, double %688, i8 noundef zeroext 2, i16 noundef zeroext 1)
          to label %689 unwind label %921

689:                                              ; preds = %673
  %690 = getelementptr inbounds %"class.JPH::BodyCreationSettings", ptr %95, i32 0, i32 15
  store i8 1, ptr %690, align 8, !tbaa !41
  %691 = getelementptr inbounds %"class.JPH::BodyCreationSettings", ptr %95, i32 0, i32 17
  store float 1.000000e+00, ptr %691, align 4, !tbaa !61
  %692 = getelementptr inbounds %"class.JPH::BodyCreationSettings", ptr %95, i32 0, i32 26
  store i8 1, ptr %692, align 16, !tbaa !62
  %693 = getelementptr inbounds %"class.JPH::BodyCreationSettings", ptr %95, i32 0, i32 28
  %694 = getelementptr inbounds %"class.JPH::MassProperties", ptr %693, i32 0, i32 0
  store float 1.000000e+00, ptr %694, align 16, !tbaa !63
  call void @llvm.lifetime.start.p0(i64 4, ptr %98) #11
  %695 = getelementptr inbounds %class.Test, ptr %154, i32 0, i32 3
  %696 = load ptr, ptr %695, align 8, !tbaa !16
  %697 = invoke i32 @_ZN3JPH13BodyInterface16CreateAndAddBodyERKNS_20BodyCreationSettingsENS_11EActivationE(ptr noundef nonnull align 8 dereferenceable(24) %696, ptr noundef nonnull align 16 dereferenceable(256) %95, i32 noundef 0)
          to label %698 unwind label %929

698:                                              ; preds = %689
  %699 = getelementptr inbounds %"class.JPH::BodyID", ptr %98, i32 0, i32 0
  store i32 %697, ptr %699, align 4
  %700 = getelementptr inbounds %class.EnhancedInternalEdgeRemovalTest, ptr %154, i32 0, i32 1
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %700, ptr align 4 %98, i64 4, i1 false), !tbaa.struct !64
  call void @llvm.lifetime.end.p0(i64 4, ptr %98) #11
  call void @llvm.lifetime.start.p0(i64 256, ptr %99) #11
  invoke void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %100, float noundef 1.000000e+01, float noundef 0.000000e+00, float noundef 5.000000e+01)
          to label %701 unwind label %933

701:                                              ; preds = %698
  %702 = invoke { double, double } @_ZN3JPH4Vec36sAxisXEv()
          to label %703 unwind label %933

703:                                              ; preds = %701
  %704 = getelementptr inbounds %"class.JPH::Vec3", ptr %102, i32 0, i32 0
  %705 = getelementptr inbounds %union.anon, ptr %704, i32 0, i32 0
  %706 = getelementptr inbounds { double, double }, ptr %705, i32 0, i32 0
  %707 = extractvalue { double, double } %702, 0
  store double %707, ptr %706, align 16
  %708 = getelementptr inbounds { double, double }, ptr %705, i32 0, i32 1
  %709 = extractvalue { double, double } %702, 1
  store double %709, ptr %708, align 8
  %710 = invoke noundef float @_ZN3JPH16DegreesToRadiansEf(float noundef 4.500000e+01)
          to label %711 unwind label %933

711:                                              ; preds = %703
  %712 = getelementptr inbounds { double, double }, ptr %102, i32 0, i32 0
  %713 = load double, ptr %712, align 16
  %714 = getelementptr inbounds { double, double }, ptr %102, i32 0, i32 1
  %715 = load double, ptr %714, align 8
  %716 = invoke { double, double } @_ZN3JPH4Quat9sRotationENS_4Vec3Ef(double %713, double %715, float noundef %710)
          to label %717 unwind label %933

717:                                              ; preds = %711
  %718 = getelementptr inbounds %"class.JPH::Quat", ptr %101, i32 0, i32 0
  %719 = getelementptr inbounds %"class.JPH::Vec4", ptr %718, i32 0, i32 0
  %720 = getelementptr inbounds %union.anon.4, ptr %719, i32 0, i32 0
  %721 = getelementptr inbounds { double, double }, ptr %720, i32 0, i32 0
  %722 = extractvalue { double, double } %716, 0
  store double %722, ptr %721, align 16
  %723 = getelementptr inbounds { double, double }, ptr %720, i32 0, i32 1
  %724 = extractvalue { double, double } %716, 1
  store double %724, ptr %723, align 8
  %725 = getelementptr inbounds { double, double }, ptr %100, i32 0, i32 0
  %726 = load double, ptr %725, align 16
  %727 = getelementptr inbounds { double, double }, ptr %100, i32 0, i32 1
  %728 = load double, ptr %727, align 8
  %729 = getelementptr inbounds { double, double }, ptr %101, i32 0, i32 0
  %730 = load double, ptr %729, align 16
  %731 = getelementptr inbounds { double, double }, ptr %101, i32 0, i32 1
  %732 = load double, ptr %731, align 8
  invoke void @_ZN3JPH20BodyCreationSettingsC2EPKNS_13ShapeSettingsENS_4Vec3ENS_4QuatENS_11EMotionTypeEt(ptr noundef nonnull align 16 dereferenceable(256) %99, ptr noundef %77, double %726, double %728, double %730, double %732, i8 noundef zeroext 0, i16 noundef zeroext 0)
          to label %733 unwind label %933

733:                                              ; preds = %717
  %734 = getelementptr inbounds %"class.JPH::BodyCreationSettings", ptr %99, i32 0, i32 17
  store float 1.000000e+00, ptr %734, align 4, !tbaa !61
  call void @llvm.lifetime.start.p0(i64 4, ptr %103) #11
  %735 = getelementptr inbounds %class.Test, ptr %154, i32 0, i32 3
  %736 = load ptr, ptr %735, align 8, !tbaa !16
  %737 = invoke i32 @_ZN3JPH13BodyInterface16CreateAndAddBodyERKNS_20BodyCreationSettingsENS_11EActivationE(ptr noundef nonnull align 8 dereferenceable(24) %736, ptr noundef nonnull align 16 dereferenceable(256) %99, i32 noundef 1)
          to label %738 unwind label %937

738:                                              ; preds = %733
  %739 = getelementptr inbounds %"class.JPH::BodyID", ptr %103, i32 0, i32 0
  store i32 %737, ptr %739, align 4
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %92, ptr align 4 %103, i64 4, i1 false), !tbaa.struct !64
  call void @llvm.lifetime.end.p0(i64 4, ptr %103) #11
  call void @llvm.lifetime.start.p0(i64 32, ptr %104) #11
  call void @llvm.lifetime.start.p0(i64 1, ptr %105) #11
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcEN3JPH12STLAllocatorIcEEEC2IS5_EEPKcRKS5_(ptr noundef nonnull align 8 dereferenceable(32) %104, ptr noundef @.str.4, ptr noundef nonnull align 1 dereferenceable(1) %105)
          to label %740 unwind label %941

740:                                              ; preds = %738
  invoke void @_ZN4Test12SetBodyLabelERKN3JPH6BodyIDERKNSt7__cxx1112basic_stringIcSt11char_traitsIcENS0_12STLAllocatorIcEEEE(ptr noundef nonnull align 8 dereferenceable(112) %154, ptr noundef nonnull align 4 dereferenceable(4) %92, ptr noundef nonnull align 8 dereferenceable(32) %104)
          to label %741 unwind label %945

741:                                              ; preds = %740
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcEN3JPH12STLAllocatorIcEEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %104) #11
  call void @llvm.lifetime.end.p0(i64 1, ptr %105) #11
  call void @llvm.lifetime.end.p0(i64 32, ptr %104) #11
  call void @llvm.lifetime.start.p0(i64 256, ptr %106) #11
  %742 = invoke noundef ptr @_ZN3JPH11SphereShapenwEm(i64 noundef 48)
          to label %743 unwind label %950

743:                                              ; preds = %741
  invoke void @_ZN3JPH11SphereShapeC2EfPKNS_15PhysicsMaterialE(ptr noundef nonnull align 8 dereferenceable(48) %742, float noundef 5.000000e-01, ptr noundef null)
          to label %744 unwind label %954

744:                                              ; preds = %743
  invoke void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %107, float noundef 1.000000e+01, float noundef 8.000000e+00, float noundef 4.400000e+01)
          to label %745 unwind label %950

745:                                              ; preds = %744
  %746 = invoke { double, double } @_ZN3JPH4Quat9sIdentityEv()
          to label %747 unwind label %950

747:                                              ; preds = %745
  %748 = getelementptr inbounds %"class.JPH::Quat", ptr %108, i32 0, i32 0
  %749 = getelementptr inbounds %"class.JPH::Vec4", ptr %748, i32 0, i32 0
  %750 = getelementptr inbounds %union.anon.4, ptr %749, i32 0, i32 0
  %751 = getelementptr inbounds { double, double }, ptr %750, i32 0, i32 0
  %752 = extractvalue { double, double } %746, 0
  store double %752, ptr %751, align 16
  %753 = getelementptr inbounds { double, double }, ptr %750, i32 0, i32 1
  %754 = extractvalue { double, double } %746, 1
  store double %754, ptr %753, align 8
  %755 = getelementptr inbounds { double, double }, ptr %107, i32 0, i32 0
  %756 = load double, ptr %755, align 16
  %757 = getelementptr inbounds { double, double }, ptr %107, i32 0, i32 1
  %758 = load double, ptr %757, align 8
  %759 = getelementptr inbounds { double, double }, ptr %108, i32 0, i32 0
  %760 = load double, ptr %759, align 16
  %761 = getelementptr inbounds { double, double }, ptr %108, i32 0, i32 1
  %762 = load double, ptr %761, align 8
  invoke void @_ZN3JPH20BodyCreationSettingsC2EPKNS_5ShapeENS_4Vec3ENS_4QuatENS_11EMotionTypeEt(ptr noundef nonnull align 16 dereferenceable(256) %106, ptr noundef %742, double %756, double %758, double %760, double %762, i8 noundef zeroext 2, i16 noundef zeroext 1)
          to label %763 unwind label %950

763:                                              ; preds = %747
  %764 = getelementptr inbounds %"class.JPH::BodyCreationSettings", ptr %106, i32 0, i32 15
  store i8 1, ptr %764, align 8, !tbaa !41
  %765 = getelementptr inbounds %"class.JPH::BodyCreationSettings", ptr %106, i32 0, i32 17
  store float 1.000000e+00, ptr %765, align 4, !tbaa !61
  %766 = getelementptr inbounds %"class.JPH::BodyCreationSettings", ptr %106, i32 0, i32 26
  store i8 1, ptr %766, align 16, !tbaa !62
  %767 = getelementptr inbounds %"class.JPH::BodyCreationSettings", ptr %106, i32 0, i32 28
  %768 = getelementptr inbounds %"class.JPH::MassProperties", ptr %767, i32 0, i32 0
  store float 1.000000e+00, ptr %768, align 16, !tbaa !63
  %769 = getelementptr inbounds %class.Test, ptr %154, i32 0, i32 3
  %770 = load ptr, ptr %769, align 8, !tbaa !16
  %771 = invoke i32 @_ZN3JPH13BodyInterface16CreateAndAddBodyERKNS_20BodyCreationSettingsENS_11EActivationE(ptr noundef nonnull align 8 dereferenceable(24) %770, ptr noundef nonnull align 16 dereferenceable(256) %106, i32 noundef 0)
          to label %772 unwind label %958

772:                                              ; preds = %763
  %773 = getelementptr inbounds %"class.JPH::BodyID", ptr %109, i32 0, i32 0
  store i32 %771, ptr %773, align 4
  call void @_ZN3JPH20BodyCreationSettingsD2Ev(ptr noundef nonnull align 16 dereferenceable(256) %106) #11
  call void @llvm.lifetime.end.p0(i64 256, ptr %106) #11
  call void @_ZN3JPH20BodyCreationSettingsD2Ev(ptr noundef nonnull align 16 dereferenceable(256) %99) #11
  call void @llvm.lifetime.end.p0(i64 256, ptr %99) #11
  call void @_ZN3JPH20BodyCreationSettingsD2Ev(ptr noundef nonnull align 16 dereferenceable(256) %95) #11
  call void @llvm.lifetime.end.p0(i64 256, ptr %95) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr %92) #11
  call void @_ZN3JPH20BodyCreationSettingsD2Ev(ptr noundef nonnull align 16 dereferenceable(256) %89) #11
  call void @llvm.lifetime.end.p0(i64 256, ptr %89) #11
  call void @_ZN3JPH17MeshShapeSettingsD2Ev(ptr noundef nonnull align 8 dereferenceable(152) %77) #11
  call void @llvm.lifetime.end.p0(i64 152, ptr %77) #11
  call void @llvm.lifetime.start.p0(i64 256, ptr %110) #11
  %774 = call noundef ptr @_ZN3JPH8BoxShapenwEm(i64 noundef 80)
  %775 = invoke { double, double } @_ZN3JPH4Vec310sReplicateEf(float noundef 2.500000e+00)
          to label %776 unwind label %971

776:                                              ; preds = %772
  %777 = getelementptr inbounds %"class.JPH::Vec3", ptr %111, i32 0, i32 0
  %778 = getelementptr inbounds %union.anon, ptr %777, i32 0, i32 0
  %779 = getelementptr inbounds { double, double }, ptr %778, i32 0, i32 0
  %780 = extractvalue { double, double } %775, 0
  store double %780, ptr %779, align 16
  %781 = getelementptr inbounds { double, double }, ptr %778, i32 0, i32 1
  %782 = extractvalue { double, double } %775, 1
  store double %782, ptr %781, align 8
  %783 = getelementptr inbounds { double, double }, ptr %111, i32 0, i32 0
  %784 = load double, ptr %783, align 16
  %785 = getelementptr inbounds { double, double }, ptr %111, i32 0, i32 1
  %786 = load double, ptr %785, align 8
  invoke void @_ZN3JPH8BoxShapeC2ENS_4Vec3EfPKNS_15PhysicsMaterialE(ptr noundef nonnull align 16 dereferenceable(80) %774, double %784, double %786, float noundef 0x3FA99999A0000000, ptr noundef null)
          to label %787 unwind label %971

787:                                              ; preds = %776
  call void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %112, float noundef 0.000000e+00, float noundef 0.000000e+00, float noundef 7.000000e+01)
  %788 = call { double, double } @_ZN3JPH4Quat9sIdentityEv()
  %789 = getelementptr inbounds %"class.JPH::Quat", ptr %113, i32 0, i32 0
  %790 = getelementptr inbounds %"class.JPH::Vec4", ptr %789, i32 0, i32 0
  %791 = getelementptr inbounds %union.anon.4, ptr %790, i32 0, i32 0
  %792 = getelementptr inbounds { double, double }, ptr %791, i32 0, i32 0
  %793 = extractvalue { double, double } %788, 0
  store double %793, ptr %792, align 16
  %794 = getelementptr inbounds { double, double }, ptr %791, i32 0, i32 1
  %795 = extractvalue { double, double } %788, 1
  store double %795, ptr %794, align 8
  %796 = getelementptr inbounds { double, double }, ptr %112, i32 0, i32 0
  %797 = load double, ptr %796, align 16
  %798 = getelementptr inbounds { double, double }, ptr %112, i32 0, i32 1
  %799 = load double, ptr %798, align 8
  %800 = getelementptr inbounds { double, double }, ptr %113, i32 0, i32 0
  %801 = load double, ptr %800, align 16
  %802 = getelementptr inbounds { double, double }, ptr %113, i32 0, i32 1
  %803 = load double, ptr %802, align 8
  call void @_ZN3JPH20BodyCreationSettingsC2EPKNS_5ShapeENS_4Vec3ENS_4QuatENS_11EMotionTypeEt(ptr noundef nonnull align 16 dereferenceable(256) %110, ptr noundef %774, double %797, double %799, double %801, double %803, i8 noundef zeroext 0, i16 noundef zeroext 0)
  %804 = getelementptr inbounds %class.Test, ptr %154, i32 0, i32 3
  %805 = load ptr, ptr %804, align 8, !tbaa !16
  %806 = invoke i32 @_ZN3JPH13BodyInterface16CreateAndAddBodyERKNS_20BodyCreationSettingsENS_11EActivationE(ptr noundef nonnull align 8 dereferenceable(24) %805, ptr noundef nonnull align 16 dereferenceable(256) %110, i32 noundef 1)
          to label %807 unwind label %975

807:                                              ; preds = %787
  %808 = getelementptr inbounds %"class.JPH::BodyID", ptr %114, i32 0, i32 0
  store i32 %806, ptr %808, align 4
  call void @llvm.lifetime.start.p0(i64 88, ptr %115) #11
  invoke void @_ZN3JPH27StaticCompoundShapeSettingsC2Ev(ptr noundef nonnull align 8 dereferenceable(88) %115)
          to label %809 unwind label %979

809:                                              ; preds = %807
  %810 = getelementptr inbounds i8, ptr %115, i64 8
  invoke void @_ZNK3JPH9RefTargetINS_13ShapeSettingsEE11SetEmbeddedEv(ptr noundef nonnull align 4 dereferenceable(4) %810)
          to label %811 unwind label %983

811:                                              ; preds = %809
  invoke void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %116, float noundef -2.500000e+00, float noundef 0.000000e+00, float noundef 0.000000e+00)
          to label %812 unwind label %983

812:                                              ; preds = %811
  %813 = invoke { double, double } @_ZN3JPH4Quat9sIdentityEv()
          to label %814 unwind label %983

814:                                              ; preds = %812
  %815 = getelementptr inbounds %"class.JPH::Quat", ptr %117, i32 0, i32 0
  %816 = getelementptr inbounds %"class.JPH::Vec4", ptr %815, i32 0, i32 0
  %817 = getelementptr inbounds %union.anon.4, ptr %816, i32 0, i32 0
  %818 = getelementptr inbounds { double, double }, ptr %817, i32 0, i32 0
  %819 = extractvalue { double, double } %813, 0
  store double %819, ptr %818, align 16
  %820 = getelementptr inbounds { double, double }, ptr %817, i32 0, i32 1
  %821 = extractvalue { double, double } %813, 1
  store double %821, ptr %820, align 8
  %822 = invoke noundef ptr @_ZN3JPH8BoxShapenwEm(i64 noundef 80)
          to label %823 unwind label %983

823:                                              ; preds = %814
  invoke void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %118, float noundef 2.500000e+00, float noundef 0x3FB99999A0000000, float noundef 0x3FB99999A0000000)
          to label %824 unwind label %987

824:                                              ; preds = %823
  %825 = getelementptr inbounds { double, double }, ptr %118, i32 0, i32 0
  %826 = load double, ptr %825, align 16
  %827 = getelementptr inbounds { double, double }, ptr %118, i32 0, i32 1
  %828 = load double, ptr %827, align 8
  invoke void @_ZN3JPH8BoxShapeC2ENS_4Vec3EfPKNS_15PhysicsMaterialE(ptr noundef nonnull align 16 dereferenceable(80) %822, double %826, double %828, float noundef 0x3FA99999A0000000, ptr noundef null)
          to label %829 unwind label %987

829:                                              ; preds = %824
  %830 = getelementptr inbounds { double, double }, ptr %116, i32 0, i32 0
  %831 = load double, ptr %830, align 16
  %832 = getelementptr inbounds { double, double }, ptr %116, i32 0, i32 1
  %833 = load double, ptr %832, align 8
  %834 = getelementptr inbounds { double, double }, ptr %117, i32 0, i32 0
  %835 = load double, ptr %834, align 16
  %836 = getelementptr inbounds { double, double }, ptr %117, i32 0, i32 1
  %837 = load double, ptr %836, align 8
  invoke void @_ZN3JPH21CompoundShapeSettings8AddShapeENS_4Vec3ENS_4QuatEPKNS_5ShapeEj(ptr noundef nonnull align 8 dereferenceable(88) %115, double %831, double %833, double %835, double %837, ptr noundef %822, i32 noundef 0)
          to label %838 unwind label %983

838:                                              ; preds = %829
  invoke void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %119, float noundef 0x3FB99999A0000000, float noundef 0.000000e+00, float noundef 0.000000e+00)
          to label %839 unwind label %983

839:                                              ; preds = %838
  %840 = invoke { double, double } @_ZN3JPH4Quat9sIdentityEv()
          to label %841 unwind label %983

841:                                              ; preds = %839
  %842 = getelementptr inbounds %"class.JPH::Quat", ptr %120, i32 0, i32 0
  %843 = getelementptr inbounds %"class.JPH::Vec4", ptr %842, i32 0, i32 0
  %844 = getelementptr inbounds %union.anon.4, ptr %843, i32 0, i32 0
  %845 = getelementptr inbounds { double, double }, ptr %844, i32 0, i32 0
  %846 = extractvalue { double, double } %840, 0
  store double %846, ptr %845, align 16
  %847 = getelementptr inbounds { double, double }, ptr %844, i32 0, i32 1
  %848 = extractvalue { double, double } %840, 1
  store double %848, ptr %847, align 8
  %849 = invoke noundef ptr @_ZN3JPH8BoxShapenwEm(i64 noundef 80)
          to label %850 unwind label %983

850:                                              ; preds = %841
  invoke void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %121, float noundef 0x3FB99999A0000000, float noundef 1.000000e+00, float noundef 1.000000e+00)
          to label %851 unwind label %991

851:                                              ; preds = %850
  %852 = getelementptr inbounds { double, double }, ptr %121, i32 0, i32 0
  %853 = load double, ptr %852, align 16
  %854 = getelementptr inbounds { double, double }, ptr %121, i32 0, i32 1
  %855 = load double, ptr %854, align 8
  invoke void @_ZN3JPH8BoxShapeC2ENS_4Vec3EfPKNS_15PhysicsMaterialE(ptr noundef nonnull align 16 dereferenceable(80) %849, double %853, double %855, float noundef 0x3FA99999A0000000, ptr noundef null)
          to label %856 unwind label %991

856:                                              ; preds = %851
  %857 = getelementptr inbounds { double, double }, ptr %119, i32 0, i32 0
  %858 = load double, ptr %857, align 16
  %859 = getelementptr inbounds { double, double }, ptr %119, i32 0, i32 1
  %860 = load double, ptr %859, align 8
  %861 = getelementptr inbounds { double, double }, ptr %120, i32 0, i32 0
  %862 = load double, ptr %861, align 16
  %863 = getelementptr inbounds { double, double }, ptr %120, i32 0, i32 1
  %864 = load double, ptr %863, align 8
  invoke void @_ZN3JPH21CompoundShapeSettings8AddShapeENS_4Vec3ENS_4QuatEPKNS_5ShapeEj(ptr noundef nonnull align 8 dereferenceable(88) %115, double %858, double %860, double %862, double %864, ptr noundef %849, i32 noundef 0)
          to label %865 unwind label %983

865:                                              ; preds = %856
  call void @llvm.lifetime.start.p0(i64 256, ptr %122) #11
  invoke void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %123, float noundef 2.000000e+00, float noundef 5.000000e+00, float noundef 7.000000e+01)
          to label %866 unwind label %995

866:                                              ; preds = %865
  %867 = invoke { double, double } @_ZN3JPH4Quat9sIdentityEv()
          to label %868 unwind label %995

868:                                              ; preds = %866
  %869 = getelementptr inbounds %"class.JPH::Quat", ptr %124, i32 0, i32 0
  %870 = getelementptr inbounds %"class.JPH::Vec4", ptr %869, i32 0, i32 0
  %871 = getelementptr inbounds %union.anon.4, ptr %870, i32 0, i32 0
  %872 = getelementptr inbounds { double, double }, ptr %871, i32 0, i32 0
  %873 = extractvalue { double, double } %867, 0
  store double %873, ptr %872, align 16
  %874 = getelementptr inbounds { double, double }, ptr %871, i32 0, i32 1
  %875 = extractvalue { double, double } %867, 1
  store double %875, ptr %874, align 8
  %876 = getelementptr inbounds { double, double }, ptr %123, i32 0, i32 0
  %877 = load double, ptr %876, align 16
  %878 = getelementptr inbounds { double, double }, ptr %123, i32 0, i32 1
  %879 = load double, ptr %878, align 8
  %880 = getelementptr inbounds { double, double }, ptr %124, i32 0, i32 0
  %881 = load double, ptr %880, align 16
  %882 = getelementptr inbounds { double, double }, ptr %124, i32 0, i32 1
  %883 = load double, ptr %882, align 8
  invoke void @_ZN3JPH20BodyCreationSettingsC2EPKNS_13ShapeSettingsENS_4Vec3ENS_4QuatENS_11EMotionTypeEt(ptr noundef nonnull align 16 dereferenceable(256) %122, ptr noundef %115, double %877, double %879, double %881, double %883, i8 noundef zeroext 2, i16 noundef zeroext 1)
          to label %884 unwind label %995

884:                                              ; preds = %868
  %885 = getelementptr inbounds %"class.JPH::BodyCreationSettings", ptr %122, i32 0, i32 15
  store i8 1, ptr %885, align 8, !tbaa !41
  %886 = getelementptr inbounds %class.Test, ptr %154, i32 0, i32 3
  %887 = load ptr, ptr %886, align 8, !tbaa !16
  %888 = invoke i32 @_ZN3JPH13BodyInterface16CreateAndAddBodyERKNS_20BodyCreationSettingsENS_11EActivationE(ptr noundef nonnull align 8 dereferenceable(24) %887, ptr noundef nonnull align 16 dereferenceable(256) %122, i32 noundef 0)
          to label %889 unwind label %999

889:                                              ; preds = %884
  %890 = getelementptr inbounds %"class.JPH::BodyID", ptr %125, i32 0, i32 0
  store i32 %888, ptr %890, align 4
  call void @_ZN3JPH20BodyCreationSettingsD2Ev(ptr noundef nonnull align 16 dereferenceable(256) %122) #11
  call void @llvm.lifetime.end.p0(i64 256, ptr %122) #11
  call void @_ZN3JPH21CompoundShapeSettingsD2Ev(ptr noundef nonnull align 8 dereferenceable(88) %115) #11
  call void @llvm.lifetime.end.p0(i64 88, ptr %115) #11
  call void @_ZN3JPH20BodyCreationSettingsD2Ev(ptr noundef nonnull align 16 dereferenceable(256) %110) #11
  call void @llvm.lifetime.end.p0(i64 256, ptr %110) #11
  call void @llvm.lifetime.start.p0(i64 4, ptr %126) #11
  store float 2.500000e-01, ptr %126, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 24, ptr %127) #11
  call void @_ZN3JPH5ArrayINS_8TriangleENS_12STLAllocatorIS1_EEEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %127) #11
  call void @llvm.lifetime.start.p0(i64 4, ptr %128) #11
  store i32 -100, ptr %128, align 4, !tbaa !11
  br label %891

891:                                              ; preds = %1072, %889
  %892 = load i32, ptr %128, align 4, !tbaa !11
  %893 = icmp slt i32 %892, 100
  br i1 %893, label %1008, label %894

894:                                              ; preds = %891
  store i32 17, ptr %10, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %128) #11
  br label %1075

895:                                              ; preds = %629, %571, %554, %540, %526, %512
  call void @llvm.lifetime.end.p0(i64 4, ptr %47) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr %46) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr %45) #11
  call void @_ZN3JPH5ArrayINS_8TriangleENS_12STLAllocatorIS1_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %44) #11
  call void @llvm.lifetime.end.p0(i64 24, ptr %44) #11
  br label %1198

896:                                              ; preds = %630
  %897 = landingpad { ptr, i32 }
          cleanup
  %898 = extractvalue { ptr, i32 } %897, 0
  store ptr %898, ptr %4, align 8
  %899 = extractvalue { ptr, i32 } %897, 1
  store i32 %899, ptr %5, align 4
  call void @_ZN3JPH5ArrayINS_8RefConstINS_15PhysicsMaterialEEENS_12STLAllocatorIS3_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %88) #11
  call void @_ZN3JPH5ArrayINS_8TriangleENS_12STLAllocatorIS1_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %78) #11
  call void @llvm.lifetime.end.p0(i64 1, ptr %87) #11
  call void @llvm.lifetime.end.p0(i64 12, ptr %86) #11
  call void @llvm.lifetime.end.p0(i64 12, ptr %85) #11
  call void @llvm.lifetime.end.p0(i64 12, ptr %84) #11
  call void @llvm.lifetime.end.p0(i64 12, ptr %83) #11
  call void @llvm.lifetime.end.p0(i64 12, ptr %82) #11
  call void @llvm.lifetime.end.p0(i64 12, ptr %81) #11
  call void @llvm.lifetime.end.p0(i64 88, ptr %80) #11
  call void @llvm.lifetime.end.p0(i64 24, ptr %78) #11
  br label %970

900:                                              ; preds = %638
  %901 = landingpad { ptr, i32 }
          cleanup
  %902 = extractvalue { ptr, i32 } %901, 0
  store ptr %902, ptr %4, align 8
  %903 = extractvalue { ptr, i32 } %901, 1
  store i32 %903, ptr %5, align 4
  br label %969

904:                                              ; preds = %643, %641, %640
  %905 = landingpad { ptr, i32 }
          cleanup
  %906 = extractvalue { ptr, i32 } %905, 0
  store ptr %906, ptr %4, align 8
  %907 = extractvalue { ptr, i32 } %905, 1
  store i32 %907, ptr %5, align 4
  br label %968

908:                                              ; preds = %659
  %909 = landingpad { ptr, i32 }
          cleanup
  %910 = extractvalue { ptr, i32 } %909, 0
  store ptr %910, ptr %4, align 8
  %911 = extractvalue { ptr, i32 } %909, 1
  store i32 %911, ptr %5, align 4
  br label %967

912:                                              ; preds = %664
  %913 = landingpad { ptr, i32 }
          cleanup
  %914 = extractvalue { ptr, i32 } %913, 0
  store ptr %914, ptr %4, align 8
  %915 = extractvalue { ptr, i32 } %913, 1
  store i32 %915, ptr %5, align 4
  br label %920

916:                                              ; preds = %666
  %917 = landingpad { ptr, i32 }
          cleanup
  %918 = extractvalue { ptr, i32 } %917, 0
  store ptr %918, ptr %4, align 8
  %919 = extractvalue { ptr, i32 } %917, 1
  store i32 %919, ptr %5, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcEN3JPH12STLAllocatorIcEEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %93) #11
  br label %920

920:                                              ; preds = %916, %912
  call void @llvm.lifetime.end.p0(i64 1, ptr %94) #11
  call void @llvm.lifetime.end.p0(i64 32, ptr %93) #11
  br label %967

921:                                              ; preds = %673, %671, %670, %667
  %922 = landingpad { ptr, i32 }
          cleanup
  %923 = extractvalue { ptr, i32 } %922, 0
  store ptr %923, ptr %4, align 8
  %924 = extractvalue { ptr, i32 } %922, 1
  store i32 %924, ptr %5, align 4
  br label %966

925:                                              ; preds = %669
  %926 = landingpad { ptr, i32 }
          cleanup
  %927 = extractvalue { ptr, i32 } %926, 0
  store ptr %927, ptr %4, align 8
  %928 = extractvalue { ptr, i32 } %926, 1
  store i32 %928, ptr %5, align 4
  call void @_ZN3JPH11SphereShapedlEPv(ptr noundef %668) #11
  br label %966

929:                                              ; preds = %689
  %930 = landingpad { ptr, i32 }
          cleanup
  %931 = extractvalue { ptr, i32 } %930, 0
  store ptr %931, ptr %4, align 8
  %932 = extractvalue { ptr, i32 } %930, 1
  store i32 %932, ptr %5, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %98) #11
  br label %965

933:                                              ; preds = %717, %711, %703, %701, %698
  %934 = landingpad { ptr, i32 }
          cleanup
  %935 = extractvalue { ptr, i32 } %934, 0
  store ptr %935, ptr %4, align 8
  %936 = extractvalue { ptr, i32 } %934, 1
  store i32 %936, ptr %5, align 4
  br label %964

937:                                              ; preds = %733
  %938 = landingpad { ptr, i32 }
          cleanup
  %939 = extractvalue { ptr, i32 } %938, 0
  store ptr %939, ptr %4, align 8
  %940 = extractvalue { ptr, i32 } %938, 1
  store i32 %940, ptr %5, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %103) #11
  br label %963

941:                                              ; preds = %738
  %942 = landingpad { ptr, i32 }
          cleanup
  %943 = extractvalue { ptr, i32 } %942, 0
  store ptr %943, ptr %4, align 8
  %944 = extractvalue { ptr, i32 } %942, 1
  store i32 %944, ptr %5, align 4
  br label %949

945:                                              ; preds = %740
  %946 = landingpad { ptr, i32 }
          cleanup
  %947 = extractvalue { ptr, i32 } %946, 0
  store ptr %947, ptr %4, align 8
  %948 = extractvalue { ptr, i32 } %946, 1
  store i32 %948, ptr %5, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcEN3JPH12STLAllocatorIcEEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %104) #11
  br label %949

949:                                              ; preds = %945, %941
  call void @llvm.lifetime.end.p0(i64 1, ptr %105) #11
  call void @llvm.lifetime.end.p0(i64 32, ptr %104) #11
  br label %963

950:                                              ; preds = %747, %745, %744, %741
  %951 = landingpad { ptr, i32 }
          cleanup
  %952 = extractvalue { ptr, i32 } %951, 0
  store ptr %952, ptr %4, align 8
  %953 = extractvalue { ptr, i32 } %951, 1
  store i32 %953, ptr %5, align 4
  br label %962

954:                                              ; preds = %743
  %955 = landingpad { ptr, i32 }
          cleanup
  %956 = extractvalue { ptr, i32 } %955, 0
  store ptr %956, ptr %4, align 8
  %957 = extractvalue { ptr, i32 } %955, 1
  store i32 %957, ptr %5, align 4
  call void @_ZN3JPH11SphereShapedlEPv(ptr noundef %742) #11
  br label %962

958:                                              ; preds = %763
  %959 = landingpad { ptr, i32 }
          cleanup
  %960 = extractvalue { ptr, i32 } %959, 0
  store ptr %960, ptr %4, align 8
  %961 = extractvalue { ptr, i32 } %959, 1
  store i32 %961, ptr %5, align 4
  call void @_ZN3JPH20BodyCreationSettingsD2Ev(ptr noundef nonnull align 16 dereferenceable(256) %106) #11
  br label %962

962:                                              ; preds = %958, %954, %950
  call void @llvm.lifetime.end.p0(i64 256, ptr %106) #11
  br label %963

963:                                              ; preds = %962, %949, %937
  call void @_ZN3JPH20BodyCreationSettingsD2Ev(ptr noundef nonnull align 16 dereferenceable(256) %99) #11
  br label %964

964:                                              ; preds = %963, %933
  call void @llvm.lifetime.end.p0(i64 256, ptr %99) #11
  br label %965

965:                                              ; preds = %964, %929
  call void @_ZN3JPH20BodyCreationSettingsD2Ev(ptr noundef nonnull align 16 dereferenceable(256) %95) #11
  br label %966

966:                                              ; preds = %965, %925, %921
  call void @llvm.lifetime.end.p0(i64 256, ptr %95) #11
  br label %967

967:                                              ; preds = %966, %920, %908
  call void @llvm.lifetime.end.p0(i64 4, ptr %92) #11
  call void @_ZN3JPH20BodyCreationSettingsD2Ev(ptr noundef nonnull align 16 dereferenceable(256) %89) #11
  br label %968

968:                                              ; preds = %967, %904
  call void @llvm.lifetime.end.p0(i64 256, ptr %89) #11
  br label %969

969:                                              ; preds = %968, %900
  call void @_ZN3JPH17MeshShapeSettingsD2Ev(ptr noundef nonnull align 8 dereferenceable(152) %77) #11
  br label %970

970:                                              ; preds = %969, %896
  call void @llvm.lifetime.end.p0(i64 152, ptr %77) #11
  br label %1198

971:                                              ; preds = %776, %772
  %972 = landingpad { ptr, i32 }
          cleanup
  %973 = extractvalue { ptr, i32 } %972, 0
  store ptr %973, ptr %4, align 8
  %974 = extractvalue { ptr, i32 } %972, 1
  store i32 %974, ptr %5, align 4
  call void @_ZN3JPH8BoxShapedlEPv(ptr noundef %774) #11
  br label %1007

975:                                              ; preds = %787
  %976 = landingpad { ptr, i32 }
          cleanup
  %977 = extractvalue { ptr, i32 } %976, 0
  store ptr %977, ptr %4, align 8
  %978 = extractvalue { ptr, i32 } %976, 1
  store i32 %978, ptr %5, align 4
  br label %1006

979:                                              ; preds = %807
  %980 = landingpad { ptr, i32 }
          cleanup
  %981 = extractvalue { ptr, i32 } %980, 0
  store ptr %981, ptr %4, align 8
  %982 = extractvalue { ptr, i32 } %980, 1
  store i32 %982, ptr %5, align 4
  br label %1005

983:                                              ; preds = %856, %841, %839, %838, %829, %814, %812, %811, %809
  %984 = landingpad { ptr, i32 }
          cleanup
  %985 = extractvalue { ptr, i32 } %984, 0
  store ptr %985, ptr %4, align 8
  %986 = extractvalue { ptr, i32 } %984, 1
  store i32 %986, ptr %5, align 4
  br label %1004

987:                                              ; preds = %824, %823
  %988 = landingpad { ptr, i32 }
          cleanup
  %989 = extractvalue { ptr, i32 } %988, 0
  store ptr %989, ptr %4, align 8
  %990 = extractvalue { ptr, i32 } %988, 1
  store i32 %990, ptr %5, align 4
  call void @_ZN3JPH8BoxShapedlEPv(ptr noundef %822) #11
  br label %1004

991:                                              ; preds = %851, %850
  %992 = landingpad { ptr, i32 }
          cleanup
  %993 = extractvalue { ptr, i32 } %992, 0
  store ptr %993, ptr %4, align 8
  %994 = extractvalue { ptr, i32 } %992, 1
  store i32 %994, ptr %5, align 4
  call void @_ZN3JPH8BoxShapedlEPv(ptr noundef %849) #11
  br label %1004

995:                                              ; preds = %868, %866, %865
  %996 = landingpad { ptr, i32 }
          cleanup
  %997 = extractvalue { ptr, i32 } %996, 0
  store ptr %997, ptr %4, align 8
  %998 = extractvalue { ptr, i32 } %996, 1
  store i32 %998, ptr %5, align 4
  br label %1003

999:                                              ; preds = %884
  %1000 = landingpad { ptr, i32 }
          cleanup
  %1001 = extractvalue { ptr, i32 } %1000, 0
  store ptr %1001, ptr %4, align 8
  %1002 = extractvalue { ptr, i32 } %1000, 1
  store i32 %1002, ptr %5, align 4
  call void @_ZN3JPH20BodyCreationSettingsD2Ev(ptr noundef nonnull align 16 dereferenceable(256) %122) #11
  br label %1003

1003:                                             ; preds = %999, %995
  call void @llvm.lifetime.end.p0(i64 256, ptr %122) #11
  br label %1004

1004:                                             ; preds = %1003, %991, %987, %983
  call void @_ZN3JPH21CompoundShapeSettingsD2Ev(ptr noundef nonnull align 8 dereferenceable(88) %115) #11
  br label %1005

1005:                                             ; preds = %1004, %979
  call void @llvm.lifetime.end.p0(i64 88, ptr %115) #11
  br label %1006

1006:                                             ; preds = %1005, %975
  call void @_ZN3JPH20BodyCreationSettingsD2Ev(ptr noundef nonnull align 16 dereferenceable(256) %110) #11
  br label %1007

1007:                                             ; preds = %1006, %971
  call void @llvm.lifetime.end.p0(i64 256, ptr %110) #11
  br label %1198

1008:                                             ; preds = %891
  call void @llvm.lifetime.start.p0(i64 4, ptr %129) #11
  store i32 -5, ptr %129, align 4, !tbaa !11
  br label %1009

1009:                                             ; preds = %1040, %1008
  %1010 = load i32, ptr %129, align 4, !tbaa !11
  %1011 = icmp slt i32 %1010, 5
  br i1 %1011, label %1013, label %1012

1012:                                             ; preds = %1009
  store i32 20, ptr %10, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %129) #11
  br label %1071

1013:                                             ; preds = %1009
  call void @llvm.lifetime.start.p0(i64 4, ptr %130) #11
  %1014 = load i32, ptr %128, align 4, !tbaa !11
  %1015 = sitofp i32 %1014 to float
  %1016 = fmul float 2.500000e-01, %1015
  store float %1016, ptr %130, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %131) #11
  %1017 = load i32, ptr %129, align 4, !tbaa !11
  %1018 = sitofp i32 %1017 to float
  %1019 = fmul float 2.500000e-01, %1018
  store float %1019, ptr %131, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %132) #11
  %1020 = load float, ptr %130, align 4, !tbaa !9
  %1021 = fadd float %1020, 2.500000e-01
  store float %1021, ptr %132, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %133) #11
  %1022 = load float, ptr %131, align 4, !tbaa !9
  %1023 = fadd float %1022, 2.500000e-01
  store float %1023, ptr %133, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 12, ptr %134) #11
  %1024 = load float, ptr %130, align 4, !tbaa !9
  %1025 = load float, ptr %131, align 4, !tbaa !9
  invoke void @_ZN3JPH6Float3C2Efff(ptr noundef nonnull align 4 dereferenceable(12) %134, float noundef %1024, float noundef 0.000000e+00, float noundef %1025)
          to label %1026 unwind label %1043

1026:                                             ; preds = %1013
  call void @llvm.lifetime.start.p0(i64 12, ptr %135) #11
  %1027 = load float, ptr %132, align 4, !tbaa !9
  %1028 = load float, ptr %131, align 4, !tbaa !9
  invoke void @_ZN3JPH6Float3C2Efff(ptr noundef nonnull align 4 dereferenceable(12) %135, float noundef %1027, float noundef 0.000000e+00, float noundef %1028)
          to label %1029 unwind label %1047

1029:                                             ; preds = %1026
  call void @llvm.lifetime.start.p0(i64 12, ptr %136) #11
  %1030 = load float, ptr %130, align 4, !tbaa !9
  %1031 = load float, ptr %133, align 4, !tbaa !9
  invoke void @_ZN3JPH6Float3C2Efff(ptr noundef nonnull align 4 dereferenceable(12) %136, float noundef %1030, float noundef 0.000000e+00, float noundef %1031)
          to label %1032 unwind label %1051

1032:                                             ; preds = %1029
  call void @llvm.lifetime.start.p0(i64 12, ptr %137) #11
  %1033 = load float, ptr %132, align 4, !tbaa !9
  %1034 = load float, ptr %133, align 4, !tbaa !9
  invoke void @_ZN3JPH6Float3C2Efff(ptr noundef nonnull align 4 dereferenceable(12) %137, float noundef %1033, float noundef 0.000000e+00, float noundef %1034)
          to label %1035 unwind label %1055

1035:                                             ; preds = %1032
  call void @llvm.lifetime.start.p0(i64 44, ptr %138) #11
  invoke void @_ZN3JPH8TriangleC2ERKNS_6Float3ES3_S3_jj(ptr noundef nonnull align 4 dereferenceable(44) %138, ptr noundef nonnull align 4 dereferenceable(12) %134, ptr noundef nonnull align 4 dereferenceable(12) %136, ptr noundef nonnull align 4 dereferenceable(12) %137, i32 noundef 0, i32 noundef 0)
          to label %1036 unwind label %1059

1036:                                             ; preds = %1035
  invoke void @_ZN3JPH5ArrayINS_8TriangleENS_12STLAllocatorIS1_EEE9push_backEOS1_(ptr noundef nonnull align 8 dereferenceable(24) %127, ptr noundef nonnull align 4 dereferenceable(44) %138)
          to label %1037 unwind label %1059

1037:                                             ; preds = %1036
  call void @llvm.lifetime.end.p0(i64 44, ptr %138) #11
  call void @llvm.lifetime.start.p0(i64 44, ptr %139) #11
  invoke void @_ZN3JPH8TriangleC2ERKNS_6Float3ES3_S3_jj(ptr noundef nonnull align 4 dereferenceable(44) %139, ptr noundef nonnull align 4 dereferenceable(12) %134, ptr noundef nonnull align 4 dereferenceable(12) %137, ptr noundef nonnull align 4 dereferenceable(12) %135, i32 noundef 0, i32 noundef 0)
          to label %1038 unwind label %1063

1038:                                             ; preds = %1037
  invoke void @_ZN3JPH5ArrayINS_8TriangleENS_12STLAllocatorIS1_EEE9push_backEOS1_(ptr noundef nonnull align 8 dereferenceable(24) %127, ptr noundef nonnull align 4 dereferenceable(44) %139)
          to label %1039 unwind label %1063

1039:                                             ; preds = %1038
  call void @llvm.lifetime.end.p0(i64 44, ptr %139) #11
  call void @llvm.lifetime.end.p0(i64 12, ptr %137) #11
  call void @llvm.lifetime.end.p0(i64 12, ptr %136) #11
  call void @llvm.lifetime.end.p0(i64 12, ptr %135) #11
  call void @llvm.lifetime.end.p0(i64 12, ptr %134) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr %133) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr %132) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr %131) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr %130) #11
  br label %1040

1040:                                             ; preds = %1039
  %1041 = load i32, ptr %129, align 4, !tbaa !11
  %1042 = add nsw i32 %1041, 1
  store i32 %1042, ptr %129, align 4, !tbaa !11
  br label %1009, !llvm.loop !65

1043:                                             ; preds = %1013
  %1044 = landingpad { ptr, i32 }
          cleanup
  %1045 = extractvalue { ptr, i32 } %1044, 0
  store ptr %1045, ptr %4, align 8
  %1046 = extractvalue { ptr, i32 } %1044, 1
  store i32 %1046, ptr %5, align 4
  br label %1070

1047:                                             ; preds = %1026
  %1048 = landingpad { ptr, i32 }
          cleanup
  %1049 = extractvalue { ptr, i32 } %1048, 0
  store ptr %1049, ptr %4, align 8
  %1050 = extractvalue { ptr, i32 } %1048, 1
  store i32 %1050, ptr %5, align 4
  br label %1069

1051:                                             ; preds = %1029
  %1052 = landingpad { ptr, i32 }
          cleanup
  %1053 = extractvalue { ptr, i32 } %1052, 0
  store ptr %1053, ptr %4, align 8
  %1054 = extractvalue { ptr, i32 } %1052, 1
  store i32 %1054, ptr %5, align 4
  br label %1068

1055:                                             ; preds = %1032
  %1056 = landingpad { ptr, i32 }
          cleanup
  %1057 = extractvalue { ptr, i32 } %1056, 0
  store ptr %1057, ptr %4, align 8
  %1058 = extractvalue { ptr, i32 } %1056, 1
  store i32 %1058, ptr %5, align 4
  br label %1067

1059:                                             ; preds = %1036, %1035
  %1060 = landingpad { ptr, i32 }
          cleanup
  %1061 = extractvalue { ptr, i32 } %1060, 0
  store ptr %1061, ptr %4, align 8
  %1062 = extractvalue { ptr, i32 } %1060, 1
  store i32 %1062, ptr %5, align 4
  call void @llvm.lifetime.end.p0(i64 44, ptr %138) #11
  br label %1067

1063:                                             ; preds = %1038, %1037
  %1064 = landingpad { ptr, i32 }
          cleanup
  %1065 = extractvalue { ptr, i32 } %1064, 0
  store ptr %1065, ptr %4, align 8
  %1066 = extractvalue { ptr, i32 } %1064, 1
  store i32 %1066, ptr %5, align 4
  call void @llvm.lifetime.end.p0(i64 44, ptr %139) #11
  br label %1067

1067:                                             ; preds = %1063, %1059, %1055
  call void @llvm.lifetime.end.p0(i64 12, ptr %137) #11
  br label %1068

1068:                                             ; preds = %1067, %1051
  call void @llvm.lifetime.end.p0(i64 12, ptr %136) #11
  br label %1069

1069:                                             ; preds = %1068, %1047
  call void @llvm.lifetime.end.p0(i64 12, ptr %135) #11
  br label %1070

1070:                                             ; preds = %1069, %1043
  call void @llvm.lifetime.end.p0(i64 12, ptr %134) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr %133) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr %132) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr %131) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr %130) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr %129) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr %128) #11
  br label %1197

1071:                                             ; preds = %1012
  br label %1072

1072:                                             ; preds = %1071
  %1073 = load i32, ptr %128, align 4, !tbaa !11
  %1074 = add nsw i32 %1073, 1
  store i32 %1074, ptr %128, align 4, !tbaa !11
  br label %891, !llvm.loop !66

1075:                                             ; preds = %894
  call void @llvm.lifetime.start.p0(i64 152, ptr %140) #11
  call void @llvm.memset.p0.i64(ptr align 8 %141, i8 0, i64 24, i1 false)
  call void @_ZN3JPH5ArrayINS_8RefConstINS_15PhysicsMaterialEEENS_12STLAllocatorIS3_EEEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %141) #11
  invoke void @_ZN3JPH17MeshShapeSettingsC1ERKNS_5ArrayINS_8TriangleENS_12STLAllocatorIS2_EEEENS1_INS_8RefConstINS_15PhysicsMaterialEEENS3_ISA_EEEE(ptr noundef nonnull align 8 dereferenceable(152) %140, ptr noundef nonnull align 8 dereferenceable(24) %127, ptr noundef %141)
          to label %1076 unwind label %1150

1076:                                             ; preds = %1075
  call void @_ZN3JPH5ArrayINS_8RefConstINS_15PhysicsMaterialEEENS_12STLAllocatorIS3_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %141) #11
  %1077 = getelementptr inbounds %"class.JPH::MeshShapeSettings", ptr %140, i32 0, i32 5
  store float -1.000000e+00, ptr %1077, align 4, !tbaa !26
  %1078 = getelementptr inbounds i8, ptr %140, i64 8
  invoke void @_ZNK3JPH9RefTargetINS_13ShapeSettingsEE11SetEmbeddedEv(ptr noundef nonnull align 4 dereferenceable(4) %1078)
          to label %1079 unwind label %1154

1079:                                             ; preds = %1076
  call void @llvm.lifetime.start.p0(i64 4, ptr %142) #11
  %1080 = getelementptr inbounds %class.Test, ptr %154, i32 0, i32 3
  %1081 = load ptr, ptr %1080, align 8, !tbaa !16
  call void @llvm.lifetime.start.p0(i64 256, ptr %143) #11
  invoke void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %144, float noundef 0.000000e+00, float noundef 0.000000e+00, float noundef 8.000000e+01)
          to label %1082 unwind label %1158

1082:                                             ; preds = %1079
  %1083 = invoke { double, double } @_ZN3JPH4Quat9sIdentityEv()
          to label %1084 unwind label %1158

1084:                                             ; preds = %1082
  %1085 = getelementptr inbounds %"class.JPH::Quat", ptr %145, i32 0, i32 0
  %1086 = getelementptr inbounds %"class.JPH::Vec4", ptr %1085, i32 0, i32 0
  %1087 = getelementptr inbounds %union.anon.4, ptr %1086, i32 0, i32 0
  %1088 = getelementptr inbounds { double, double }, ptr %1087, i32 0, i32 0
  %1089 = extractvalue { double, double } %1083, 0
  store double %1089, ptr %1088, align 16
  %1090 = getelementptr inbounds { double, double }, ptr %1087, i32 0, i32 1
  %1091 = extractvalue { double, double } %1083, 1
  store double %1091, ptr %1090, align 8
  %1092 = getelementptr inbounds { double, double }, ptr %144, i32 0, i32 0
  %1093 = load double, ptr %1092, align 16
  %1094 = getelementptr inbounds { double, double }, ptr %144, i32 0, i32 1
  %1095 = load double, ptr %1094, align 8
  %1096 = getelementptr inbounds { double, double }, ptr %145, i32 0, i32 0
  %1097 = load double, ptr %1096, align 16
  %1098 = getelementptr inbounds { double, double }, ptr %145, i32 0, i32 1
  %1099 = load double, ptr %1098, align 8
  invoke void @_ZN3JPH20BodyCreationSettingsC2EPKNS_13ShapeSettingsENS_4Vec3ENS_4QuatENS_11EMotionTypeEt(ptr noundef nonnull align 16 dereferenceable(256) %143, ptr noundef %140, double %1093, double %1095, double %1097, double %1099, i8 noundef zeroext 0, i16 noundef zeroext 0)
          to label %1100 unwind label %1158

1100:                                             ; preds = %1084
  %1101 = invoke i32 @_ZN3JPH13BodyInterface16CreateAndAddBodyERKNS_20BodyCreationSettingsENS_11EActivationE(ptr noundef nonnull align 8 dereferenceable(24) %1081, ptr noundef nonnull align 16 dereferenceable(256) %143, i32 noundef 1)
          to label %1102 unwind label %1162

1102:                                             ; preds = %1100
  %1103 = getelementptr inbounds %"class.JPH::BodyID", ptr %142, i32 0, i32 0
  store i32 %1101, ptr %1103, align 4
  call void @_ZN3JPH20BodyCreationSettingsD2Ev(ptr noundef nonnull align 16 dereferenceable(256) %143) #11
  call void @llvm.lifetime.end.p0(i64 256, ptr %143) #11
  call void @llvm.lifetime.start.p0(i64 32, ptr %146) #11
  call void @llvm.lifetime.start.p0(i64 1, ptr %147) #11
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcEN3JPH12STLAllocatorIcEEEC2IS5_EEPKcRKS5_(ptr noundef nonnull align 8 dereferenceable(32) %146, ptr noundef @.str.4, ptr noundef nonnull align 1 dereferenceable(1) %147)
          to label %1104 unwind label %1167

1104:                                             ; preds = %1102
  invoke void @_ZN4Test12SetBodyLabelERKN3JPH6BodyIDERKNSt7__cxx1112basic_stringIcSt11char_traitsIcENS0_12STLAllocatorIcEEEE(ptr noundef nonnull align 8 dereferenceable(112) %154, ptr noundef nonnull align 4 dereferenceable(4) %142, ptr noundef nonnull align 8 dereferenceable(32) %146)
          to label %1105 unwind label %1171

1105:                                             ; preds = %1104
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcEN3JPH12STLAllocatorIcEEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %146) #11
  call void @llvm.lifetime.end.p0(i64 1, ptr %147) #11
  call void @llvm.lifetime.end.p0(i64 32, ptr %146) #11
  call void @llvm.lifetime.start.p0(i64 256, ptr %148) #11
  %1106 = invoke noundef ptr @_ZN3JPH8BoxShapenwEm(i64 noundef 80)
          to label %1107 unwind label %1176

1107:                                             ; preds = %1105
  %1108 = invoke { double, double } @_ZN3JPH4Vec310sReplicateEf(float noundef 1.000000e+00)
          to label %1109 unwind label %1180

1109:                                             ; preds = %1107
  %1110 = getelementptr inbounds %"class.JPH::Vec3", ptr %149, i32 0, i32 0
  %1111 = getelementptr inbounds %union.anon, ptr %1110, i32 0, i32 0
  %1112 = getelementptr inbounds { double, double }, ptr %1111, i32 0, i32 0
  %1113 = extractvalue { double, double } %1108, 0
  store double %1113, ptr %1112, align 16
  %1114 = getelementptr inbounds { double, double }, ptr %1111, i32 0, i32 1
  %1115 = extractvalue { double, double } %1108, 1
  store double %1115, ptr %1114, align 8
  %1116 = getelementptr inbounds { double, double }, ptr %149, i32 0, i32 0
  %1117 = load double, ptr %1116, align 16
  %1118 = getelementptr inbounds { double, double }, ptr %149, i32 0, i32 1
  %1119 = load double, ptr %1118, align 8
  invoke void @_ZN3JPH8BoxShapeC2ENS_4Vec3EfPKNS_15PhysicsMaterialE(ptr noundef nonnull align 16 dereferenceable(80) %1106, double %1117, double %1119, float noundef 0x3FA99999A0000000, ptr noundef null)
          to label %1120 unwind label %1180

1120:                                             ; preds = %1109
  %1121 = invoke noundef float @_ZN3JPH8literalsli2_rEe(x86_fp80 noundef 0xK3FFEE666666666666666)
          to label %1122 unwind label %1176

1122:                                             ; preds = %1120
  invoke void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %150, float noundef -2.400000e+01, float noundef %1121, float noundef 8.000000e+01)
          to label %1123 unwind label %1176

1123:                                             ; preds = %1122
  %1124 = invoke { double, double } @_ZN3JPH4Quat9sIdentityEv()
          to label %1125 unwind label %1176

1125:                                             ; preds = %1123
  %1126 = getelementptr inbounds %"class.JPH::Quat", ptr %151, i32 0, i32 0
  %1127 = getelementptr inbounds %"class.JPH::Vec4", ptr %1126, i32 0, i32 0
  %1128 = getelementptr inbounds %union.anon.4, ptr %1127, i32 0, i32 0
  %1129 = getelementptr inbounds { double, double }, ptr %1128, i32 0, i32 0
  %1130 = extractvalue { double, double } %1124, 0
  store double %1130, ptr %1129, align 16
  %1131 = getelementptr inbounds { double, double }, ptr %1128, i32 0, i32 1
  %1132 = extractvalue { double, double } %1124, 1
  store double %1132, ptr %1131, align 8
  %1133 = getelementptr inbounds { double, double }, ptr %150, i32 0, i32 0
  %1134 = load double, ptr %1133, align 16
  %1135 = getelementptr inbounds { double, double }, ptr %150, i32 0, i32 1
  %1136 = load double, ptr %1135, align 8
  %1137 = getelementptr inbounds { double, double }, ptr %151, i32 0, i32 0
  %1138 = load double, ptr %1137, align 16
  %1139 = getelementptr inbounds { double, double }, ptr %151, i32 0, i32 1
  %1140 = load double, ptr %1139, align 8
  invoke void @_ZN3JPH20BodyCreationSettingsC2EPKNS_5ShapeENS_4Vec3ENS_4QuatENS_11EMotionTypeEt(ptr noundef nonnull align 16 dereferenceable(256) %148, ptr noundef %1106, double %1134, double %1136, double %1138, double %1140, i8 noundef zeroext 2, i16 noundef zeroext 1)
          to label %1141 unwind label %1176

1141:                                             ; preds = %1125
  call void @llvm.lifetime.start.p0(i64 16, ptr %152) #11
  invoke void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %152, float noundef 2.000000e+01, float noundef 0.000000e+00, float noundef 0.000000e+00)
          to label %1142 unwind label %1184

1142:                                             ; preds = %1141
  %1143 = getelementptr inbounds %"class.JPH::BodyCreationSettings", ptr %148, i32 0, i32 2
  call void @llvm.memcpy.p0.p0.i64(ptr align 16 %1143, ptr align 16 %152, i64 16, i1 false), !tbaa.struct !39
  call void @llvm.lifetime.end.p0(i64 16, ptr %152) #11
  %1144 = getelementptr inbounds %"class.JPH::BodyCreationSettings", ptr %148, i32 0, i32 15
  store i8 1, ptr %1144, align 8, !tbaa !41
  %1145 = getelementptr inbounds %class.Test, ptr %154, i32 0, i32 3
  %1146 = load ptr, ptr %1145, align 8, !tbaa !16
  %1147 = invoke i32 @_ZN3JPH13BodyInterface16CreateAndAddBodyERKNS_20BodyCreationSettingsENS_11EActivationE(ptr noundef nonnull align 8 dereferenceable(24) %1146, ptr noundef nonnull align 16 dereferenceable(256) %148, i32 noundef 0)
          to label %1148 unwind label %1188

1148:                                             ; preds = %1142
  %1149 = getelementptr inbounds %"class.JPH::BodyID", ptr %153, i32 0, i32 0
  store i32 %1147, ptr %1149, align 4
  call void @_ZN3JPH20BodyCreationSettingsD2Ev(ptr noundef nonnull align 16 dereferenceable(256) %148) #11
  call void @llvm.lifetime.end.p0(i64 256, ptr %148) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr %142) #11
  call void @_ZN3JPH17MeshShapeSettingsD2Ev(ptr noundef nonnull align 8 dereferenceable(152) %140) #11
  call void @llvm.lifetime.end.p0(i64 152, ptr %140) #11
  call void @_ZN3JPH5ArrayINS_8TriangleENS_12STLAllocatorIS1_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %127) #11
  call void @llvm.lifetime.end.p0(i64 24, ptr %127) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr %126) #11
  ret void

1150:                                             ; preds = %1075
  %1151 = landingpad { ptr, i32 }
          cleanup
  %1152 = extractvalue { ptr, i32 } %1151, 0
  store ptr %1152, ptr %4, align 8
  %1153 = extractvalue { ptr, i32 } %1151, 1
  store i32 %1153, ptr %5, align 4
  call void @_ZN3JPH5ArrayINS_8RefConstINS_15PhysicsMaterialEEENS_12STLAllocatorIS3_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %141) #11
  br label %1196

1154:                                             ; preds = %1076
  %1155 = landingpad { ptr, i32 }
          cleanup
  %1156 = extractvalue { ptr, i32 } %1155, 0
  store ptr %1156, ptr %4, align 8
  %1157 = extractvalue { ptr, i32 } %1155, 1
  store i32 %1157, ptr %5, align 4
  br label %1195

1158:                                             ; preds = %1084, %1082, %1079
  %1159 = landingpad { ptr, i32 }
          cleanup
  %1160 = extractvalue { ptr, i32 } %1159, 0
  store ptr %1160, ptr %4, align 8
  %1161 = extractvalue { ptr, i32 } %1159, 1
  store i32 %1161, ptr %5, align 4
  br label %1166

1162:                                             ; preds = %1100
  %1163 = landingpad { ptr, i32 }
          cleanup
  %1164 = extractvalue { ptr, i32 } %1163, 0
  store ptr %1164, ptr %4, align 8
  %1165 = extractvalue { ptr, i32 } %1163, 1
  store i32 %1165, ptr %5, align 4
  call void @_ZN3JPH20BodyCreationSettingsD2Ev(ptr noundef nonnull align 16 dereferenceable(256) %143) #11
  br label %1166

1166:                                             ; preds = %1162, %1158
  call void @llvm.lifetime.end.p0(i64 256, ptr %143) #11
  br label %1194

1167:                                             ; preds = %1102
  %1168 = landingpad { ptr, i32 }
          cleanup
  %1169 = extractvalue { ptr, i32 } %1168, 0
  store ptr %1169, ptr %4, align 8
  %1170 = extractvalue { ptr, i32 } %1168, 1
  store i32 %1170, ptr %5, align 4
  br label %1175

1171:                                             ; preds = %1104
  %1172 = landingpad { ptr, i32 }
          cleanup
  %1173 = extractvalue { ptr, i32 } %1172, 0
  store ptr %1173, ptr %4, align 8
  %1174 = extractvalue { ptr, i32 } %1172, 1
  store i32 %1174, ptr %5, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcEN3JPH12STLAllocatorIcEEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %146) #11
  br label %1175

1175:                                             ; preds = %1171, %1167
  call void @llvm.lifetime.end.p0(i64 1, ptr %147) #11
  call void @llvm.lifetime.end.p0(i64 32, ptr %146) #11
  br label %1194

1176:                                             ; preds = %1125, %1123, %1122, %1120, %1105
  %1177 = landingpad { ptr, i32 }
          cleanup
  %1178 = extractvalue { ptr, i32 } %1177, 0
  store ptr %1178, ptr %4, align 8
  %1179 = extractvalue { ptr, i32 } %1177, 1
  store i32 %1179, ptr %5, align 4
  br label %1193

1180:                                             ; preds = %1109, %1107
  %1181 = landingpad { ptr, i32 }
          cleanup
  %1182 = extractvalue { ptr, i32 } %1181, 0
  store ptr %1182, ptr %4, align 8
  %1183 = extractvalue { ptr, i32 } %1181, 1
  store i32 %1183, ptr %5, align 4
  call void @_ZN3JPH8BoxShapedlEPv(ptr noundef %1106) #11
  br label %1193

1184:                                             ; preds = %1141
  %1185 = landingpad { ptr, i32 }
          cleanup
  %1186 = extractvalue { ptr, i32 } %1185, 0
  store ptr %1186, ptr %4, align 8
  %1187 = extractvalue { ptr, i32 } %1185, 1
  store i32 %1187, ptr %5, align 4
  call void @llvm.lifetime.end.p0(i64 16, ptr %152) #11
  br label %1192

1188:                                             ; preds = %1142
  %1189 = landingpad { ptr, i32 }
          cleanup
  %1190 = extractvalue { ptr, i32 } %1189, 0
  store ptr %1190, ptr %4, align 8
  %1191 = extractvalue { ptr, i32 } %1189, 1
  store i32 %1191, ptr %5, align 4
  br label %1192

1192:                                             ; preds = %1188, %1184
  call void @_ZN3JPH20BodyCreationSettingsD2Ev(ptr noundef nonnull align 16 dereferenceable(256) %148) #11
  br label %1193

1193:                                             ; preds = %1192, %1180, %1176
  call void @llvm.lifetime.end.p0(i64 256, ptr %148) #11
  br label %1194

1194:                                             ; preds = %1193, %1175, %1166
  call void @llvm.lifetime.end.p0(i64 4, ptr %142) #11
  br label %1195

1195:                                             ; preds = %1194, %1154
  call void @_ZN3JPH17MeshShapeSettingsD2Ev(ptr noundef nonnull align 8 dereferenceable(152) %140) #11
  br label %1196

1196:                                             ; preds = %1195, %1150
  call void @llvm.lifetime.end.p0(i64 152, ptr %140) #11
  br label %1197

1197:                                             ; preds = %1196, %1070
  call void @_ZN3JPH5ArrayINS_8TriangleENS_12STLAllocatorIS1_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %127) #11
  call void @llvm.lifetime.end.p0(i64 24, ptr %127) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr %126) #11
  br label %1198

1198:                                             ; preds = %1197, %1007, %970, %895, %498, %300
  %1199 = load ptr, ptr %4, align 8
  %1200 = load i32, ptr %5, align 4
  %1201 = insertvalue { ptr, i32 } poison, ptr %1199, 0
  %1202 = insertvalue { ptr, i32 } %1201, i32 %1200, 1
  resume { ptr, i32 } %1202
}

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

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

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

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

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

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

declare void @_ZN3JPH17MeshShapeSettingsC1ERKNS_5ArrayINS_8TriangleENS_12STLAllocatorIS2_EEEENS1_INS_8RefConstINS_15PhysicsMaterialEEENS3_ISA_EEEE(ptr noundef nonnull align 8 dereferenceable(152), ptr noundef nonnull align 8 dereferenceable(24), ptr noundef) unnamed_addr #7

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

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

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

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

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

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

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

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

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

; Function Attrs: alwaysinline mustprogress nounwind uwtable
declare dso_local noundef float @_ZN3JPH16DegreesToRadiansEf(float noundef) #5

attributes #0 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #1 = { mustprogress uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #2 = { 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 #3 = { 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 #4 = { 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 #5 = { 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 #6 = { nocallback nofree nounwind willreturn memory(argmem: readwrite) }
attributes #7 = { "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 = { 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 #10 = { nocallback nofree nounwind willreturn memory(argmem: write) }
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, !10, i64 0}
!10 = !{!"float", !7, i64 0}
!11 = !{!12, !12, i64 0}
!12 = !{!"int", !7, i64 0}
!13 = distinct !{!13, !14}
!14 = !{!"llvm.loop.mustprogress"}
!15 = distinct !{!15, !14}
!16 = !{!17, !6, i64 24}
!17 = !{!"_ZTS4Test", !6, i64 8, !6, i64 16, !6, i64 24, !6, i64 32, !6, i64 40, !18, i64 48, !19, i64 56}
!18 = !{!"bool", !7, i64 0}
!19 = !{!"_ZTSSt13unordered_mapIN3JPH6BodyIDENSt7__cxx1112basic_stringIcSt11char_traitsIcENS0_12STLAllocatorIcEEEESt4hashIS1_ESt8equal_toIS1_ESaISt4pairIKS1_S8_EEE", !20, i64 0}
!20 = !{!"_ZTSSt10_HashtableIN3JPH6BodyIDESt4pairIKS1_NSt7__cxx1112basic_stringIcSt11char_traitsIcENS0_12STLAllocatorIcEEEEESaISB_ENSt8__detail10_Select1stESt8equal_toIS1_ESt4hashIS1_ENSD_18_Mod_range_hashingENSD_20_Default_ranged_hashENSD_20_Prime_rehash_policyENSD_17_Hashtable_traitsILb1ELb0ELb1EEEE", !6, i64 0, !21, i64 8, !22, i64 16, !21, i64 24, !23, i64 32, !6, i64 48}
!21 = !{!"long", !7, i64 0}
!22 = !{!"_ZTSNSt8__detail15_Hash_node_baseE", !6, i64 0}
!23 = !{!"_ZTSNSt8__detail20_Prime_rehash_policyE", !10, i64 0, !21, i64 8}
!24 = distinct !{!24, !14}
!25 = distinct !{!25, !14}
!26 = !{!27, !10, i64 140}
!27 = !{!"_ZTSN3JPH17MeshShapeSettingsE", !28, i64 0, !35, i64 64, !36, i64 88, !37, i64 112, !12, i64 136, !10, i64 140, !18, i64 144, !38, i64 148}
!28 = !{!"_ZTSN3JPH13ShapeSettingsE", !29, i64 0, !30, i64 8, !21, i64 16, !33, i64 24}
!29 = !{!"_ZTSN3JPH18SerializableObjectE"}
!30 = !{!"_ZTSN3JPH9RefTargetINS_13ShapeSettingsEEE", !31, i64 0}
!31 = !{!"_ZTSSt6atomicIjE", !32, i64 0}
!32 = !{!"_ZTSSt13__atomic_baseIjE", !12, i64 0}
!33 = !{!"_ZTSN3JPH6ResultINS_3RefINS_5ShapeEEEEE", !7, i64 0, !34, i64 32}
!34 = !{!"_ZTSN3JPH6ResultINS_3RefINS_5ShapeEEEE6EStateE", !7, i64 0}
!35 = !{!"_ZTSN3JPH5ArrayINS_6Float3ENS_12STLAllocatorIS1_EEEE", !21, i64 0, !21, i64 8, !6, i64 16}
!36 = !{!"_ZTSN3JPH5ArrayINS_15IndexedTriangleENS_12STLAllocatorIS1_EEEE", !21, i64 0, !21, i64 8, !6, i64 16}
!37 = !{!"_ZTSN3JPH5ArrayINS_8RefConstINS_15PhysicsMaterialEEENS_12STLAllocatorIS3_EEEE", !21, i64 0, !21, i64 8, !6, i64 16}
!38 = !{!"_ZTSN3JPH17MeshShapeSettings13EBuildQualityE", !7, i64 0}
!39 = !{i64 0, i64 16, !40}
!40 = !{!7, !7, i64 0}
!41 = !{!42, !18, i64 104}
!42 = !{!"_ZTSN3JPH20BodyCreationSettingsE", !43, i64 0, !44, i64 16, !43, i64 32, !43, i64 48, !21, i64 64, !46, i64 72, !47, i64 80, !49, i64 96, !50, i64 97, !18, i64 98, !18, i64 99, !18, i64 100, !18, i64 101, !18, i64 102, !51, i64 103, !18, i64 104, !18, i64 105, !10, i64 108, !10, i64 112, !10, i64 116, !10, i64 120, !10, i64 124, !10, i64 128, !10, i64 132, !12, i64 136, !12, i64 140, !52, i64 144, !10, i64 148, !53, i64 160, !55, i64 240, !56, i64 248}
!43 = !{!"_ZTSN3JPH4Vec3E", !7, i64 0}
!44 = !{!"_ZTSN3JPH4QuatE", !45, i64 0}
!45 = !{!"_ZTSN3JPH4Vec4E", !7, i64 0}
!46 = !{!"short", !7, i64 0}
!47 = !{!"_ZTSN3JPH14CollisionGroupE", !48, i64 0, !12, i64 8, !12, i64 12}
!48 = !{!"_ZTSN3JPH8RefConstINS_11GroupFilterEEE", !6, i64 0}
!49 = !{!"_ZTSN3JPH11EMotionTypeE", !7, i64 0}
!50 = !{!"_ZTSN3JPH12EAllowedDOFsE", !7, i64 0}
!51 = !{!"_ZTSN3JPH14EMotionQualityE", !7, i64 0}
!52 = !{!"_ZTSN3JPH23EOverrideMassPropertiesE", !7, i64 0}
!53 = !{!"_ZTSN3JPH14MassPropertiesE", !10, i64 0, !54, i64 16}
!54 = !{!"_ZTSN3JPH5Mat44E", !7, i64 0}
!55 = !{!"_ZTSN3JPH8RefConstINS_13ShapeSettingsEEE", !6, i64 0}
!56 = !{!"_ZTSN3JPH8RefConstINS_5ShapeEEE", !6, i64 0}
!57 = distinct !{!57, !14}
!58 = !{!59, !6, i64 0}
!59 = !{!"_ZTSSt16initializer_listIN3JPH8TriangleEE", !6, i64 0, !21, i64 8}
!60 = !{!59, !21, i64 8}
!61 = !{!42, !10, i64 108}
!62 = !{!42, !52, i64 144}
!63 = !{!42, !10, i64 160}
!64 = !{i64 0, i64 4, !11}
!65 = distinct !{!65, !14}
!66 = distinct !{!66, !14}


; 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::StaticCompoundShapeSettings" = type { %"class.JPH::CompoundShapeSettings" }
%"class.JPH::CompoundShapeSettings" = type { %"class.JPH::ShapeSettings", %"class.JPH::Array" }
%"class.JPH::ShapeSettings" = type { %"class.JPH::SerializableObject", %"class.JPH::RefTarget.9", i64, %"class.JPH::Result" }
%"class.JPH::SerializableObject" = type { ptr }
%"class.JPH::RefTarget.9" = type { %"struct.std::atomic" }
%"struct.std::atomic" = type { %"struct.std::__atomic_base" }
%"struct.std::__atomic_base" = type { i32 }
%"class.JPH::Result" = type <{ %union.anon.10, i8, [7 x i8] }>
%union.anon.10 = 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.8 }
%"struct.std::__cxx11::basic_string<char, std::char_traits<char>, JPH::STLAllocator<char>>::_Alloc_hider" = type { ptr }
%union.anon.8 = type { i64, [8 x i8] }
%"class.JPH::Array" = type { i64, i64, ptr }
%"class.JPH::RefConst.6" = type { ptr }
%"class.JPH::Vec3" = type { %union.anon }
%union.anon = type { <4 x float> }
%"class.JPH::BodyID" = type { i32 }
%"class.JPH::BodyCreationSettings" = type { %"class.JPH::Vec3", %"class.JPH::Quat", %"class.JPH::Vec3", %"class.JPH::Vec3", i64, i16, %"class.JPH::CollisionGroup", i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, float, float, float, float, float, float, float, i32, i32, i8, float, %"class.JPH::MassProperties", %"class.JPH::RefConst.5", %"class.JPH::RefConst.6" }
%"class.JPH::Quat" = type { %"class.JPH::Vec4" }
%"class.JPH::Vec4" = type { %union.anon.4 }
%union.anon.4 = type { <4 x float> }
%"class.JPH::CollisionGroup" = type { %"class.JPH::RefConst", i32, i32 }
%"class.JPH::RefConst" = type { ptr }
%"class.JPH::MassProperties" = type { float, %"class.JPH::Mat44" }
%"class.JPH::Mat44" = type { [4 x %"class.JPH::Vec4"] }
%"class.JPH::RefConst.5" = type { ptr }
%"class.JPH::STLAllocator" = type { i8 }
%"class.JPH::Array.13" = type { i64, i64, ptr }
%"class.JPH::Float3" = type { float, float, float }
%"class.JPH::Triangle" = type { [3 x %"class.JPH::Float3"], i32, i32 }
%"class.JPH::MeshShapeSettings" = type { %"class.JPH::ShapeSettings", %"class.JPH::Array.16", %"class.JPH::Array.19", %"class.JPH::Array.22", i32, float, i8, i32 }
%"class.JPH::Array.16" = type { i64, i64, ptr }
%"class.JPH::Array.19" = type { i64, i64, ptr }
%"class.JPH::Array.22" = type { i64, i64, ptr }
%"class.JPH::STLAllocator.14" = type { i8 }

@.str.3 = external hidden unnamed_addr constant [20 x i8], align 1
@.str.4 = external hidden unnamed_addr constant [20 x i8], align 1

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

declare i32 @__gxx_personality_v0(...)

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef float @_ZN3JPH8literalsli2_rEe(x86_fp80 noundef) local_unnamed_addr #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 #3 align 2

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

; Function Attrs: alwaysinline mustprogress uwtable
declare dso_local { double, double } @_ZN3JPH4Vec310sReplicateEf(float noundef) local_unnamed_addr #3 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 #1 align 2

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN3JPH20BodyCreationSettingsC2EPKNS_5ShapeENS_4Vec3ENS_4QuatENS_11EMotionTypeEt(ptr noundef nonnull align 16 dereferenceable(256), ptr noundef, double, double, double, double, i8 noundef zeroext, i16 noundef zeroext) unnamed_addr #1 align 2

declare i32 @_ZN3JPH13BodyInterface16CreateAndAddBodyERKNS_20BodyCreationSettingsENS_11EActivationE(ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 16 dereferenceable(256), i32 noundef) local_unnamed_addr #7

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN4Test12SetBodyLabelERKN3JPH6BodyIDERKNSt7__cxx1112basic_stringIcSt11char_traitsIcENS0_12STLAllocatorIcEEEE(ptr noundef nonnull align 8 dereferenceable(112), ptr noundef nonnull align 4 dereferenceable(4), ptr noundef nonnull align 8 dereferenceable(32)) local_unnamed_addr #1 align 2

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

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

; Function Attrs: alwaysinline mustprogress uwtable
declare dso_local noundef ptr @_ZN3JPH11SphereShapenwEm(i64 noundef) local_unnamed_addr #4 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 #1 align 2

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZN3JPH8RefConstINS_5ShapeEEC2EPKS1_(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef) 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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZNK3JPH9RefTargetINS_13ShapeSettingsEE11SetEmbeddedEv(ptr noundef nonnull align 4 dereferenceable(4)) local_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) local_unnamed_addr #7

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN3JPH20BodyCreationSettingsC2EPKNS_13ShapeSettingsENS_4Vec3ENS_4QuatENS_11EMotionTypeEt(ptr noundef nonnull align 16 dereferenceable(256), ptr noundef, double, double, double, double, i8 noundef zeroext, i16 noundef zeroext) unnamed_addr #1 align 2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local void @_ZN3JPH20BodyCreationSettingsD2Ev(ptr noundef nonnull align 16 dereferenceable(256)) unnamed_addr #9 align 2

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

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

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN31EnhancedInternalEdgeRemovalTest10InitializeEv(ptr noundef nonnull align 8 dereferenceable(116) %0) unnamed_addr #1 align 2 personality ptr @__gxx_personality_v0 {
  %2 = alloca %"class.JPH::StaticCompoundShapeSettings", align 8
  %3 = alloca %"class.JPH::RefConst.6", align 8
  %4 = alloca %"class.JPH::Vec3", align 16
  %5 = alloca %"class.JPH::BodyID", align 4
  %6 = alloca %"class.JPH::BodyCreationSettings", align 16
  %7 = alloca %"class.JPH::Vec3", align 16
  %8 = alloca %"class.std::__cxx11::basic_string", align 8
  %9 = alloca %"class.JPH::STLAllocator", align 1
  %10 = alloca %"class.JPH::Vec3", align 16
  %11 = alloca %"class.JPH::Array.13", align 8
  %12 = alloca %"class.JPH::Float3", align 4
  %13 = alloca %"class.JPH::Float3", align 4
  %14 = alloca %"class.JPH::Float3", align 4
  %15 = alloca %"class.JPH::Float3", align 4
  %16 = alloca %"class.JPH::Triangle", align 4
  %17 = alloca %"class.JPH::Triangle", align 4
  %18 = alloca %"class.JPH::MeshShapeSettings", align 8
  %19 = alloca %"class.JPH::Array.22", align 8
  %20 = alloca %"class.JPH::BodyID", align 4
  %21 = alloca %"class.JPH::BodyCreationSettings", align 16
  %22 = alloca %"class.std::__cxx11::basic_string", align 8
  %23 = alloca %"class.JPH::STLAllocator", align 1
  %24 = alloca %"class.JPH::Vec3", align 16
  %25 = alloca %"class.JPH::Array.13", align 8
  %26 = alloca %"class.JPH::Triangle", align 4
  %27 = alloca %"class.JPH::Float3", align 4
  %28 = alloca %"class.JPH::Float3", align 4
  %29 = alloca %"class.JPH::Float3", align 4
  %30 = alloca %"class.JPH::Triangle", align 4
  %31 = alloca %"class.JPH::Float3", align 4
  %32 = alloca %"class.JPH::Float3", align 4
  %33 = alloca %"class.JPH::Float3", align 4
  %34 = alloca %"class.JPH::Triangle", align 4
  %35 = alloca %"class.JPH::Float3", align 4
  %36 = alloca %"class.JPH::Float3", align 4
  %37 = alloca %"class.JPH::Float3", align 4
  %38 = alloca %"class.JPH::Triangle", align 4
  %39 = alloca %"class.JPH::Float3", align 4
  %40 = alloca %"class.JPH::Float3", align 4
  %41 = alloca %"class.JPH::Float3", align 4
  %42 = alloca %"class.JPH::BodyCreationSettings", align 16
  %43 = alloca %"class.JPH::Array.22", align 8
  %44 = alloca %"class.JPH::Vec3", align 16
  %45 = alloca %"class.JPH::BodyCreationSettings", align 16
  %46 = alloca %"class.JPH::Vec3", align 16
  %47 = alloca %"class.JPH::Vec3", align 16
  %48 = alloca %"class.JPH::MeshShapeSettings", align 8
  %49 = alloca %"class.JPH::Array.13", align 8
  %50 = alloca [2 x %"class.JPH::Triangle"], align 4
  %51 = alloca %"class.JPH::Float3", align 4
  %52 = alloca %"class.JPH::Float3", align 4
  %53 = alloca %"class.JPH::Float3", align 4
  %54 = alloca %"class.JPH::Float3", align 4
  %55 = alloca %"class.JPH::Float3", align 4
  %56 = alloca %"class.JPH::Float3", align 4
  %57 = alloca %"class.JPH::STLAllocator.14", align 1
  %58 = alloca %"class.JPH::Array.22", align 8
  %59 = alloca %"class.JPH::BodyCreationSettings", align 16
  %60 = alloca %"class.JPH::Vec3", align 16
  %61 = alloca %"class.JPH::BodyID", align 4
  %62 = alloca %"class.std::__cxx11::basic_string", align 8
  %63 = alloca %"class.JPH::STLAllocator", align 1
  %64 = alloca %"class.JPH::BodyCreationSettings", align 16
  %65 = alloca %"class.JPH::Vec3", align 16
  %66 = alloca %"class.JPH::BodyCreationSettings", align 16
  %67 = alloca %"class.JPH::Vec3", align 16
  %68 = alloca %"class.std::__cxx11::basic_string", align 8
  %69 = alloca %"class.JPH::STLAllocator", align 1
  %70 = alloca %"class.JPH::BodyCreationSettings", align 16
  %71 = alloca %"class.JPH::Vec3", align 16
  %72 = alloca %"class.JPH::BodyCreationSettings", align 16
  %73 = alloca %"class.JPH::Vec3", align 16
  %74 = alloca %"class.JPH::StaticCompoundShapeSettings", align 8
  %75 = alloca %"class.JPH::Vec3", align 16
  %76 = alloca %"class.JPH::Vec3", align 16
  %77 = alloca %"class.JPH::Vec3", align 16
  %78 = alloca %"class.JPH::Vec3", align 16
  %79 = alloca %"class.JPH::BodyCreationSettings", align 16
  %80 = alloca %"class.JPH::Vec3", align 16
  %81 = alloca %"class.JPH::Array.13", align 8
  %82 = alloca %"class.JPH::Float3", align 4
  %83 = alloca %"class.JPH::Float3", align 4
  %84 = alloca %"class.JPH::Float3", align 4
  %85 = alloca %"class.JPH::Float3", align 4
  %86 = alloca %"class.JPH::Triangle", align 4
  %87 = alloca %"class.JPH::Triangle", align 4
  %88 = alloca %"class.JPH::MeshShapeSettings", align 8
  %89 = alloca %"class.JPH::Array.22", align 8
  %90 = alloca %"class.JPH::BodyID", align 4
  %91 = alloca %"class.JPH::BodyCreationSettings", align 16
  %92 = alloca %"class.JPH::Vec3", align 16
  %93 = alloca %"class.std::__cxx11::basic_string", align 8
  %94 = alloca %"class.JPH::STLAllocator", align 1
  %95 = alloca %"class.JPH::BodyCreationSettings", align 16
  %96 = alloca %"class.JPH::Vec3", align 16
  %97 = alloca %"class.JPH::Vec3", align 16
  call void @llvm.lifetime.start.p0(i64 88, ptr nonnull %2) #11
  call void @_ZN3JPH27StaticCompoundShapeSettingsC2Ev(ptr noundef nonnull align 8 dereferenceable(88) %2)
  %98 = getelementptr inbounds i8, ptr %2, i64 8
  invoke void @_ZNK3JPH9RefTargetINS_13ShapeSettingsEE11SetEmbeddedEv(ptr noundef nonnull align 4 dereferenceable(4) %98)
          to label %99 unwind label %113

99:                                               ; preds = %1
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %3) #11
  %100 = invoke noundef ptr @_ZN3JPH8BoxShapenwEm(i64 noundef 80)
          to label %101 unwind label %115

101:                                              ; preds = %99
  %102 = invoke { double, double } @_ZN3JPH4Vec310sReplicateEf(float noundef 1.000000e+00)
          to label %103 unwind label %117

103:                                              ; preds = %101
  %104 = extractvalue { double, double } %102, 0
  %105 = extractvalue { double, double } %102, 1
  invoke void @_ZN3JPH8BoxShapeC2ENS_4Vec3EfPKNS_15PhysicsMaterialE(ptr noundef nonnull align 16 dereferenceable(80) %100, double %104, double %105, float noundef 0x3FA99999A0000000, ptr noundef null)
          to label %106 unwind label %117

106:                                              ; preds = %103
  invoke void @_ZN3JPH8RefConstINS_5ShapeEEC2EPKS1_(ptr noundef nonnull align 8 dereferenceable(8) %3, ptr noundef nonnull %100)
          to label %.preheader216 unwind label %115

.preheader216:                                    ; preds = %106
  %107 = getelementptr inbounds i8, ptr %4, i64 8
  br label %.preheader215

.preheader215:                                    ; preds = %.preheader216, %119
  %.0138220 = phi i32 [ -10, %.preheader216 ], [ %120, %119 ]
  %108 = sitofp i32 %.0138220 to float
  %109 = fmul float %108, 2.000000e+00
  br label %121

110:                                              ; preds = %119
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %5) #11
  %111 = getelementptr inbounds i8, ptr %0, i64 24
  %112 = load ptr, ptr %111, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 256, ptr nonnull %6) #11
  invoke void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %7, float noundef 0.000000e+00, float noundef -1.000000e+00, float noundef -4.000000e+01)
          to label %136 unwind label %161

113:                                              ; preds = %1
  %114 = landingpad { ptr, i32 }
          cleanup
  br label %176

115:                                              ; preds = %106, %99
  %116 = landingpad { ptr, i32 }
          cleanup
  br label %175

117:                                              ; preds = %103, %101
  %118 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3JPH8BoxShapedlEPv(ptr noundef %100) #11
  br label %175

119:                                              ; preds = %132
  %120 = add nsw i32 %.0138220, 1
  %exitcond230.not = icmp eq i32 %120, 10
  br i1 %exitcond230.not, label %110, label %.preheader215, !llvm.loop !17

121:                                              ; preds = %.preheader215, %132
  %.0139219 = phi i32 [ -10, %.preheader215 ], [ %133, %132 ]
  %122 = sitofp i32 %.0139219 to float
  %123 = fmul float %122, 2.000000e+00
  invoke void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %4, float noundef %109, float noundef 0.000000e+00, float noundef %123)
          to label %124 unwind label %134

124:                                              ; preds = %121
  %125 = invoke { double, double } @_ZN3JPH4Quat9sIdentityEv()
          to label %126 unwind label %134

126:                                              ; preds = %124
  %127 = extractvalue { double, double } %125, 0
  %128 = extractvalue { double, double } %125, 1
  %129 = call noundef ptr @_ZNK3JPH8RefConstINS_5ShapeEEcvPKS1_Ev(ptr noundef nonnull align 8 dereferenceable(8) %3)
  %130 = load double, ptr %4, align 16
  %131 = load double, ptr %107, align 8
  invoke void @_ZN3JPH21CompoundShapeSettings8AddShapeENS_4Vec3ENS_4QuatEPKNS_5ShapeEj(ptr noundef nonnull align 8 dereferenceable(88) %2, double %130, double %131, double %127, double %128, ptr noundef %129, i32 noundef 0)
          to label %132 unwind label %134

132:                                              ; preds = %126
  %133 = add nsw i32 %.0139219, 1
  %exitcond.not = icmp eq i32 %133, 10
  br i1 %exitcond.not, label %119, label %121, !llvm.loop !19

134:                                              ; preds = %126, %124, %121
  %135 = landingpad { ptr, i32 }
          cleanup
  br label %174

136:                                              ; preds = %110
  %137 = invoke { double, double } @_ZN3JPH4Quat9sIdentityEv()
          to label %138 unwind label %161

138:                                              ; preds = %136
  %139 = extractvalue { double, double } %137, 0
  %140 = extractvalue { double, double } %137, 1
  %141 = load double, ptr %7, align 16
  %142 = getelementptr inbounds i8, ptr %7, i64 8
  %143 = load double, ptr %142, align 8
  invoke void @_ZN3JPH20BodyCreationSettingsC2EPKNS_13ShapeSettingsENS_4Vec3ENS_4QuatENS_11EMotionTypeEt(ptr noundef nonnull align 16 dereferenceable(256) %6, ptr noundef nonnull %2, double %141, double %143, double %139, double %140, i8 noundef zeroext 0, i16 noundef zeroext 0)
          to label %144 unwind label %161

144:                                              ; preds = %138
  %145 = invoke i32 @_ZN3JPH13BodyInterface16CreateAndAddBodyERKNS_20BodyCreationSettingsENS_11EActivationE(ptr noundef nonnull align 8 dereferenceable(24) %112, ptr noundef nonnull align 16 dereferenceable(256) %6, i32 noundef 1)
          to label %146 unwind label %163

146:                                              ; preds = %144
  store i32 %145, ptr %5, align 4
  call void @_ZN3JPH20BodyCreationSettingsD2Ev(ptr noundef nonnull align 16 dereferenceable(256) %6) #11
  call void @llvm.lifetime.end.p0(i64 256, ptr nonnull %6) #11
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %8) #11
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %9) #11
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcEN3JPH12STLAllocatorIcEEEC2IS5_EEPKcRKS5_(ptr noundef nonnull align 8 dereferenceable(32) %8, ptr noundef nonnull @.str.3, ptr noundef nonnull align 1 dereferenceable(1) %9)
          to label %147 unwind label %166

147:                                              ; preds = %146
  invoke void @_ZN4Test12SetBodyLabelERKN3JPH6BodyIDERKNSt7__cxx1112basic_stringIcSt11char_traitsIcENS0_12STLAllocatorIcEEEE(ptr noundef nonnull align 8 dereferenceable(112) %0, ptr noundef nonnull align 4 dereferenceable(4) %5, ptr noundef nonnull align 8 dereferenceable(32) %8)
          to label %148 unwind label %168

148:                                              ; preds = %147
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcEN3JPH12STLAllocatorIcEEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %8) #11
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %9) #11
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %8) #11
  %149 = call noundef float @_ZN3JPH8literalsli2_rEe(x86_fp80 noundef 0xK3FFFF333333333333333)
  %150 = call noundef float @_ZN3JPH8literalsli2_rEe(x86_fp80 noundef 0xK4004A000000000000000)
  %151 = fneg float %150
  invoke void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %10, float noundef -1.800000e+01, float noundef %149, float noundef %151)
          to label %152 unwind label %171

152:                                              ; preds = %148
  %153 = load double, ptr %10, align 16
  %154 = getelementptr inbounds i8, ptr %10, i64 8
  %155 = load double, ptr %154, align 8
  invoke void @_ZN31EnhancedInternalEdgeRemovalTest20CreateSlidingObjectsEN3JPH4Vec3E(ptr noundef nonnull align 8 dereferenceable(116) %0, double %153, double %155)
          to label %156 unwind label %171

156:                                              ; preds = %152
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %5) #11
  call void @_ZN3JPH8RefConstINS_5ShapeEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %3) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %3) #11
  call void @_ZN3JPH21CompoundShapeSettingsD2Ev(ptr noundef nonnull align 8 dereferenceable(88) %2) #11
  call void @llvm.lifetime.end.p0(i64 88, ptr nonnull %2) #11
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %11) #11
  call void @_ZN3JPH5ArrayINS_8TriangleENS_12STLAllocatorIS1_EEEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %11) #11
  br label %.preheader214

.preheader214:                                    ; preds = %156, %177
  %.0140222 = phi i32 [ -10, %156 ], [ %178, %177 ]
  %157 = sitofp i32 %.0140222 to float
  %158 = fmul float %157, 2.000000e+00
  %159 = fadd float %158, 2.000000e+00
  br label %179

160:                                              ; preds = %177
  call void @llvm.lifetime.start.p0(i64 152, ptr nonnull %18) #11
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %19, i8 0, i64 24, i1 false)
  call void @_ZN3JPH5ArrayINS_8RefConstINS_15PhysicsMaterialEEENS_12STLAllocatorIS3_EEEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %19) #11
  invoke void @_ZN3JPH17MeshShapeSettingsC1ERKNS_5ArrayINS_8TriangleENS_12STLAllocatorIS2_EEEENS1_INS_8RefConstINS_15PhysicsMaterialEEENS3_ISA_EEEE(ptr noundef nonnull align 8 dereferenceable(152) %18, ptr noundef nonnull align 8 dereferenceable(24) %11, ptr noundef nonnull %19)
          to label %191 unwind label %238

161:                                              ; preds = %138, %136, %110
  %162 = landingpad { ptr, i32 }
          cleanup
  br label %165

163:                                              ; preds = %144
  %164 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3JPH20BodyCreationSettingsD2Ev(ptr noundef nonnull align 16 dereferenceable(256) %6) #11
  br label %165

165:                                              ; preds = %163, %161
  %.pn = phi { ptr, i32 } [ %164, %163 ], [ %162, %161 ]
  call void @llvm.lifetime.end.p0(i64 256, ptr nonnull %6) #11
  br label %173

166:                                              ; preds = %146
  %167 = landingpad { ptr, i32 }
          cleanup
  br label %170

168:                                              ; preds = %147
  %169 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcEN3JPH12STLAllocatorIcEEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %8) #11
  br label %170

170:                                              ; preds = %168, %166
  %.pn149 = phi { ptr, i32 } [ %169, %168 ], [ %167, %166 ]
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %9) #11
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %8) #11
  br label %173

171:                                              ; preds = %152, %148
  %172 = landingpad { ptr, i32 }
          cleanup
  br label %173

173:                                              ; preds = %171, %170, %165
  %.pn151 = phi { ptr, i32 } [ %172, %171 ], [ %.pn149, %170 ], [ %.pn, %165 ]
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %5) #11
  br label %174

174:                                              ; preds = %173, %134
  %.pn204 = phi { ptr, i32 } [ %135, %134 ], [ %.pn151, %173 ]
  call void @_ZN3JPH8RefConstINS_5ShapeEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %3) #11
  br label %175

175:                                              ; preds = %174, %117, %115
  %.pn204.pn = phi { ptr, i32 } [ %.pn204, %174 ], [ %116, %115 ], [ %118, %117 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %3) #11
  br label %176

176:                                              ; preds = %175, %113
  %.pn204.pn.pn = phi { ptr, i32 } [ %.pn204.pn, %175 ], [ %114, %113 ]
  call void @_ZN3JPH21CompoundShapeSettingsD2Ev(ptr noundef nonnull align 8 dereferenceable(88) %2) #11
  call void @llvm.lifetime.end.p0(i64 88, ptr nonnull %2) #11
  br label %603

177:                                              ; preds = %184
  %178 = add nsw i32 %.0140222, 1
  %exitcond232.not = icmp eq i32 %178, 10
  br i1 %exitcond232.not, label %160, label %.preheader214, !llvm.loop !20

179:                                              ; preds = %.preheader214, %184
  %.0141221 = phi i32 [ -10, %.preheader214 ], [ %185, %184 ]
  %180 = sitofp i32 %.0141221 to float
  %181 = fmul float %180, 2.000000e+00
  %182 = fadd float %181, 2.000000e+00
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %12) #11
  call void @_ZN3JPH6Float3C2Efff(ptr noundef nonnull align 4 dereferenceable(12) %12, float noundef %158, float noundef 0.000000e+00, float noundef %181)
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %13) #11
  call void @_ZN3JPH6Float3C2Efff(ptr noundef nonnull align 4 dereferenceable(12) %13, float noundef %159, float noundef 0.000000e+00, float noundef %181)
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %14) #11
  call void @_ZN3JPH6Float3C2Efff(ptr noundef nonnull align 4 dereferenceable(12) %14, float noundef %158, float noundef 0.000000e+00, float noundef %182)
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %15) #11
  call void @_ZN3JPH6Float3C2Efff(ptr noundef nonnull align 4 dereferenceable(12) %15, float noundef %159, float noundef 0.000000e+00, float noundef %182)
  call void @llvm.lifetime.start.p0(i64 44, ptr nonnull %16) #11
  call void @_ZN3JPH8TriangleC2ERKNS_6Float3ES3_S3_jj(ptr noundef nonnull align 4 dereferenceable(44) %16, ptr noundef nonnull align 4 dereferenceable(12) %12, ptr noundef nonnull align 4 dereferenceable(12) %14, ptr noundef nonnull align 4 dereferenceable(12) %15, i32 noundef 0, i32 noundef 0)
  invoke void @_ZN3JPH5ArrayINS_8TriangleENS_12STLAllocatorIS1_EEE9push_backEOS1_(ptr noundef nonnull align 8 dereferenceable(24) %11, ptr noundef nonnull align 4 dereferenceable(44) %16)
          to label %183 unwind label %186

183:                                              ; preds = %179
  call void @llvm.lifetime.end.p0(i64 44, ptr nonnull %16) #11
  call void @llvm.lifetime.start.p0(i64 44, ptr nonnull %17) #11
  call void @_ZN3JPH8TriangleC2ERKNS_6Float3ES3_S3_jj(ptr noundef nonnull align 4 dereferenceable(44) %17, ptr noundef nonnull align 4 dereferenceable(12) %12, ptr noundef nonnull align 4 dereferenceable(12) %15, ptr noundef nonnull align 4 dereferenceable(12) %13, i32 noundef 0, i32 noundef 0)
  invoke void @_ZN3JPH5ArrayINS_8TriangleENS_12STLAllocatorIS1_EEE9push_backEOS1_(ptr noundef nonnull align 8 dereferenceable(24) %11, ptr noundef nonnull align 4 dereferenceable(44) %17)
          to label %184 unwind label %188

184:                                              ; preds = %183
  call void @llvm.lifetime.end.p0(i64 44, ptr nonnull %17) #11
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %15) #11
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %14) #11
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %13) #11
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %12) #11
  %185 = add nsw i32 %.0141221, 1
  %exitcond231.not = icmp eq i32 %185, 10
  br i1 %exitcond231.not, label %177, label %179, !llvm.loop !21

186:                                              ; preds = %179
  %187 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 44, ptr nonnull %16) #11
  br label %190

188:                                              ; preds = %183
  %189 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 44, ptr nonnull %17) #11
  br label %190

190:                                              ; preds = %188, %186
  %.pn201 = phi { ptr, i32 } [ %189, %188 ], [ %187, %186 ]
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %15) #11
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %14) #11
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %13) #11
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %12) #11
  br label %257

191:                                              ; preds = %160
  call void @_ZN3JPH5ArrayINS_8RefConstINS_15PhysicsMaterialEEENS_12STLAllocatorIS3_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %19) #11
  %192 = getelementptr inbounds i8, ptr %18, i64 140
  store float -1.000000e+00, ptr %192, align 4, !tbaa !22
  %193 = getelementptr inbounds i8, ptr %18, i64 8
  invoke void @_ZNK3JPH9RefTargetINS_13ShapeSettingsEE11SetEmbeddedEv(ptr noundef nonnull align 4 dereferenceable(4) %193)
          to label %194 unwind label %240

194:                                              ; preds = %191
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %20) #11
  %195 = load ptr, ptr %111, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 256, ptr nonnull %21) #11
  %196 = invoke { double, double } @_ZN3JPH4Vec35sZeroEv()
          to label %197 unwind label %242

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

199:                                              ; preds = %197
  %200 = extractvalue { double, double } %196, 1
  %201 = extractvalue { double, double } %196, 0
  %202 = extractvalue { double, double } %198, 0
  %203 = extractvalue { double, double } %198, 1
  invoke void @_ZN3JPH20BodyCreationSettingsC2EPKNS_13ShapeSettingsENS_4Vec3ENS_4QuatENS_11EMotionTypeEt(ptr noundef nonnull align 16 dereferenceable(256) %21, ptr noundef nonnull %18, double %201, double %200, double %202, double %203, i8 noundef zeroext 0, i16 noundef zeroext 0)
          to label %204 unwind label %242

204:                                              ; preds = %199
  %205 = invoke i32 @_ZN3JPH13BodyInterface16CreateAndAddBodyERKNS_20BodyCreationSettingsENS_11EActivationE(ptr noundef nonnull align 8 dereferenceable(24) %195, ptr noundef nonnull align 16 dereferenceable(256) %21, i32 noundef 1)
          to label %206 unwind label %244

206:                                              ; preds = %204
  store i32 %205, ptr %20, align 4
  call void @_ZN3JPH20BodyCreationSettingsD2Ev(ptr noundef nonnull align 16 dereferenceable(256) %21) #11
  call void @llvm.lifetime.end.p0(i64 256, ptr nonnull %21) #11
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %22) #11
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %23) #11
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcEN3JPH12STLAllocatorIcEEEC2IS5_EEPKcRKS5_(ptr noundef nonnull align 8 dereferenceable(32) %22, ptr noundef nonnull @.str.4, ptr noundef nonnull align 1 dereferenceable(1) %23)
          to label %207 unwind label %247

207:                                              ; preds = %206
  invoke void @_ZN4Test12SetBodyLabelERKN3JPH6BodyIDERKNSt7__cxx1112basic_stringIcSt11char_traitsIcENS0_12STLAllocatorIcEEEE(ptr noundef nonnull align 8 dereferenceable(112) %0, ptr noundef nonnull align 4 dereferenceable(4) %20, ptr noundef nonnull align 8 dereferenceable(32) %22)
          to label %208 unwind label %249

208:                                              ; preds = %207
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcEN3JPH12STLAllocatorIcEEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %22) #11
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %23) #11
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %22) #11
  %209 = call noundef float @_ZN3JPH8literalsli2_rEe(x86_fp80 noundef 0xK3FFFF333333333333333)
  invoke void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %24, float noundef -1.800000e+01, float noundef %209, float noundef 0.000000e+00)
          to label %210 unwind label %252

210:                                              ; preds = %208
  %211 = load double, ptr %24, align 16
  %212 = getelementptr inbounds i8, ptr %24, i64 8
  %213 = load double, ptr %212, align 8
  invoke void @_ZN31EnhancedInternalEdgeRemovalTest20CreateSlidingObjectsEN3JPH4Vec3E(ptr noundef nonnull align 8 dereferenceable(116) %0, double %211, double %213)
          to label %214 unwind label %252

214:                                              ; preds = %210
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %20) #11
  call void @_ZN3JPH17MeshShapeSettingsD2Ev(ptr noundef nonnull align 8 dereferenceable(152) %18) #11
  call void @llvm.lifetime.end.p0(i64 152, ptr nonnull %18) #11
  call void @_ZN3JPH5ArrayINS_8TriangleENS_12STLAllocatorIS1_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %11) #11
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %11) #11
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %25) #11
  call void @_ZN3JPH5ArrayINS_8TriangleENS_12STLAllocatorIS1_EEEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %25) #11
  call void @llvm.lifetime.start.p0(i64 44, ptr nonnull %26) #11
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %27) #11
  call void @_ZN3JPH6Float3C2Efff(ptr noundef nonnull align 4 dereferenceable(12) %27, float noundef -2.000000e+00, float noundef 0.000000e+00, float noundef 5.000000e+00)
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %28) #11
  call void @_ZN3JPH6Float3C2Efff(ptr noundef nonnull align 4 dereferenceable(12) %28, float noundef 2.000000e+00, float noundef 0.000000e+00, float noundef -5.000000e+00)
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %29) #11
  call void @_ZN3JPH6Float3C2Efff(ptr noundef nonnull align 4 dereferenceable(12) %29, float noundef -2.000000e+00, float noundef 0.000000e+00, float noundef -5.000000e+00)
  call void @_ZN3JPH8TriangleC2ERKNS_6Float3ES3_S3_jj(ptr noundef nonnull align 4 dereferenceable(44) %26, ptr noundef nonnull align 4 dereferenceable(12) %27, ptr noundef nonnull align 4 dereferenceable(12) %28, ptr noundef nonnull align 4 dereferenceable(12) %29, i32 noundef 0, i32 noundef 0)
  invoke void @_ZN3JPH5ArrayINS_8TriangleENS_12STLAllocatorIS1_EEE9push_backEOS1_(ptr noundef nonnull align 8 dereferenceable(24) %25, ptr noundef nonnull align 4 dereferenceable(44) %26)
          to label %215 unwind label %258

215:                                              ; preds = %214
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %29) #11
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %28) #11
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %27) #11
  call void @llvm.lifetime.end.p0(i64 44, ptr nonnull %26) #11
  call void @llvm.lifetime.start.p0(i64 44, ptr nonnull %30) #11
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %31) #11
  call void @_ZN3JPH6Float3C2Efff(ptr noundef nonnull align 4 dereferenceable(12) %31, float noundef -2.000000e+00, float noundef 0.000000e+00, float noundef 5.000000e+00)
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %32) #11
  call void @_ZN3JPH6Float3C2Efff(ptr noundef nonnull align 4 dereferenceable(12) %32, float noundef 2.000000e+00, float noundef 0.000000e+00, float noundef 5.000000e+00)
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %33) #11
  call void @_ZN3JPH6Float3C2Efff(ptr noundef nonnull align 4 dereferenceable(12) %33, float noundef 2.000000e+00, float noundef 0.000000e+00, float noundef -5.000000e+00)
  call void @_ZN3JPH8TriangleC2ERKNS_6Float3ES3_S3_jj(ptr noundef nonnull align 4 dereferenceable(44) %30, ptr noundef nonnull align 4 dereferenceable(12) %31, ptr noundef nonnull align 4 dereferenceable(12) %32, ptr noundef nonnull align 4 dereferenceable(12) %33, i32 noundef 0, i32 noundef 0)
  invoke void @_ZN3JPH5ArrayINS_8TriangleENS_12STLAllocatorIS1_EEE9push_backEOS1_(ptr noundef nonnull align 8 dereferenceable(24) %25, ptr noundef nonnull align 4 dereferenceable(44) %30)
          to label %216 unwind label %260

216:                                              ; preds = %215
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %33) #11
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %32) #11
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %31) #11
  call void @llvm.lifetime.end.p0(i64 44, ptr nonnull %30) #11
  call void @llvm.lifetime.start.p0(i64 44, ptr nonnull %34) #11
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %35) #11
  call void @_ZN3JPH6Float3C2Efff(ptr noundef nonnull align 4 dereferenceable(12) %35, float noundef 2.000000e+00, float noundef 5.000000e-01, float noundef 5.000000e+00)
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %36) #11
  call void @_ZN3JPH6Float3C2Efff(ptr noundef nonnull align 4 dereferenceable(12) %36, float noundef 2.000000e+00, float noundef 5.000000e-01, float noundef -5.000000e+00)
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %37) #11
  call void @_ZN3JPH6Float3C2Efff(ptr noundef nonnull align 4 dereferenceable(12) %37, float noundef 2.000000e+00, float noundef 0.000000e+00, float noundef 5.000000e+00)
  call void @_ZN3JPH8TriangleC2ERKNS_6Float3ES3_S3_jj(ptr noundef nonnull align 4 dereferenceable(44) %34, ptr noundef nonnull align 4 dereferenceable(12) %35, ptr noundef nonnull align 4 dereferenceable(12) %36, ptr noundef nonnull align 4 dereferenceable(12) %37, i32 noundef 0, i32 noundef 0)
  invoke void @_ZN3JPH5ArrayINS_8TriangleENS_12STLAllocatorIS1_EEE9push_backEOS1_(ptr noundef nonnull align 8 dereferenceable(24) %25, ptr noundef nonnull align 4 dereferenceable(44) %34)
          to label %217 unwind label %262

217:                                              ; preds = %216
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %37) #11
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %36) #11
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %35) #11
  call void @llvm.lifetime.end.p0(i64 44, ptr nonnull %34) #11
  call void @llvm.lifetime.start.p0(i64 44, ptr nonnull %38) #11
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %39) #11
  call void @_ZN3JPH6Float3C2Efff(ptr noundef nonnull align 4 dereferenceable(12) %39, float noundef 2.000000e+00, float noundef 0.000000e+00, float noundef 5.000000e+00)
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %40) #11
  call void @_ZN3JPH6Float3C2Efff(ptr noundef nonnull align 4 dereferenceable(12) %40, float noundef 2.000000e+00, float noundef 5.000000e-01, float noundef -5.000000e+00)
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %41) #11
  call void @_ZN3JPH6Float3C2Efff(ptr noundef nonnull align 4 dereferenceable(12) %41, float noundef 2.000000e+00, float noundef 0.000000e+00, float noundef -5.000000e+00)
  call void @_ZN3JPH8TriangleC2ERKNS_6Float3ES3_S3_jj(ptr noundef nonnull align 4 dereferenceable(44) %38, ptr noundef nonnull align 4 dereferenceable(12) %39, ptr noundef nonnull align 4 dereferenceable(12) %40, ptr noundef nonnull align 4 dereferenceable(12) %41, i32 noundef 0, i32 noundef 0)
  invoke void @_ZN3JPH5ArrayINS_8TriangleENS_12STLAllocatorIS1_EEE9push_backEOS1_(ptr noundef nonnull align 8 dereferenceable(24) %25, ptr noundef nonnull align 4 dereferenceable(44) %38)
          to label %218 unwind label %264

218:                                              ; preds = %217
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %41) #11
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %40) #11
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %39) #11
  call void @llvm.lifetime.end.p0(i64 44, ptr nonnull %38) #11
  %219 = load ptr, ptr %111, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 256, ptr nonnull %42) #11
  %220 = invoke noundef ptr @_ZN3JPH17MeshShapeSettingsnwEm(i64 noundef 152)
          to label %221 unwind label %266

221:                                              ; preds = %218
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %43, i8 0, i64 24, i1 false)
  call void @_ZN3JPH5ArrayINS_8RefConstINS_15PhysicsMaterialEEENS_12STLAllocatorIS3_EEEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %43) #11
  invoke void @_ZN3JPH17MeshShapeSettingsC1ERKNS_5ArrayINS_8TriangleENS_12STLAllocatorIS2_EEEENS1_INS_8RefConstINS_15PhysicsMaterialEEENS3_ISA_EEEE(ptr noundef nonnull align 8 dereferenceable(152) %220, ptr noundef nonnull align 8 dereferenceable(24) %25, ptr noundef nonnull %43)
          to label %222 unwind label %269

222:                                              ; preds = %221
  invoke void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %44, float noundef 0.000000e+00, float noundef 0.000000e+00, float noundef 3.000000e+01)
          to label %223 unwind label %.thread211

223:                                              ; preds = %222
  %224 = invoke { double, double } @_ZN3JPH4Quat9sIdentityEv()
          to label %225 unwind label %.thread211

225:                                              ; preds = %223
  %226 = extractvalue { double, double } %224, 0
  %227 = extractvalue { double, double } %224, 1
  %228 = load double, ptr %44, align 16
  %229 = getelementptr inbounds i8, ptr %44, i64 8
  %230 = load double, ptr %229, align 8
  invoke void @_ZN3JPH20BodyCreationSettingsC2EPKNS_13ShapeSettingsENS_4Vec3ENS_4QuatENS_11EMotionTypeEt(ptr noundef nonnull align 16 dereferenceable(256) %42, ptr noundef nonnull %220, double %228, double %230, double %226, double %227, i8 noundef zeroext 0, i16 noundef zeroext 0)
          to label %231 unwind label %.thread211

231:                                              ; preds = %225
  %232 = invoke i32 @_ZN3JPH13BodyInterface16CreateAndAddBodyERKNS_20BodyCreationSettingsENS_11EActivationE(ptr noundef nonnull align 8 dereferenceable(24) %219, ptr noundef nonnull align 16 dereferenceable(256) %42, i32 noundef 1)
          to label %233 unwind label %.thread

233:                                              ; preds = %231
  call void @_ZN3JPH20BodyCreationSettingsD2Ev(ptr noundef nonnull align 16 dereferenceable(256) %42) #11
  call void @_ZN3JPH5ArrayINS_8RefConstINS_15PhysicsMaterialEEENS_12STLAllocatorIS3_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %43) #11
  call void @llvm.lifetime.end.p0(i64 256, ptr nonnull %42) #11
  %234 = getelementptr inbounds i8, ptr %46, i64 8
  %235 = getelementptr inbounds i8, ptr %45, i64 32
  %236 = getelementptr inbounds i8, ptr %45, i64 104
  call void @llvm.lifetime.start.p0(i64 256, ptr nonnull %45) #11
  %237 = invoke noundef ptr @_ZN3JPH11SphereShapenwEm(i64 noundef 48)
          to label %271 unwind label %301

238:                                              ; preds = %160
  %239 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3JPH5ArrayINS_8RefConstINS_15PhysicsMaterialEEENS_12STLAllocatorIS3_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %19) #11
  br label %256

240:                                              ; preds = %191
  %241 = landingpad { ptr, i32 }
          cleanup
  br label %255

242:                                              ; preds = %199, %197, %194
  %243 = landingpad { ptr, i32 }
          cleanup
  br label %246

244:                                              ; preds = %204
  %245 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3JPH20BodyCreationSettingsD2Ev(ptr noundef nonnull align 16 dereferenceable(256) %21) #11
  br label %246

246:                                              ; preds = %244, %242
  %.pn153 = phi { ptr, i32 } [ %245, %244 ], [ %243, %242 ]
  call void @llvm.lifetime.end.p0(i64 256, ptr nonnull %21) #11
  br label %254

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

249:                                              ; preds = %207
  %250 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcEN3JPH12STLAllocatorIcEEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %22) #11
  br label %251

251:                                              ; preds = %249, %247
  %.pn155 = phi { ptr, i32 } [ %250, %249 ], [ %248, %247 ]
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %23) #11
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %22) #11
  br label %254

252:                                              ; preds = %210, %208
  %253 = landingpad { ptr, i32 }
          cleanup
  br label %254

254:                                              ; preds = %252, %251, %246
  %.pn157 = phi { ptr, i32 } [ %253, %252 ], [ %.pn155, %251 ], [ %.pn153, %246 ]
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %20) #11
  br label %255

255:                                              ; preds = %254, %240
  %.pn157.pn = phi { ptr, i32 } [ %.pn157, %254 ], [ %241, %240 ]
  call void @_ZN3JPH17MeshShapeSettingsD2Ev(ptr noundef nonnull align 8 dereferenceable(152) %18) #11
  br label %256

256:                                              ; preds = %255, %238
  %.pn157.pn.pn = phi { ptr, i32 } [ %.pn157.pn, %255 ], [ %239, %238 ]
  call void @llvm.lifetime.end.p0(i64 152, ptr nonnull %18) #11
  br label %257

257:                                              ; preds = %256, %190
  %.pn201.pn = phi { ptr, i32 } [ %.pn201, %190 ], [ %.pn157.pn.pn, %256 ]
  call void @_ZN3JPH5ArrayINS_8TriangleENS_12STLAllocatorIS1_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %11) #11
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %11) #11
  br label %603

258:                                              ; preds = %214
  %259 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %29) #11
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %28) #11
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %27) #11
  call void @llvm.lifetime.end.p0(i64 44, ptr nonnull %26) #11
  br label %455

260:                                              ; preds = %215
  %261 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %33) #11
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %32) #11
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %31) #11
  call void @llvm.lifetime.end.p0(i64 44, ptr nonnull %30) #11
  br label %455

262:                                              ; preds = %216
  %263 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %37) #11
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %36) #11
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %35) #11
  call void @llvm.lifetime.end.p0(i64 44, ptr nonnull %34) #11
  br label %455

264:                                              ; preds = %217
  %265 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %41) #11
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %40) #11
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %39) #11
  call void @llvm.lifetime.end.p0(i64 44, ptr nonnull %38) #11
  br label %455

266:                                              ; preds = %218
  %267 = landingpad { ptr, i32 }
          cleanup
  br label %270

.thread:                                          ; preds = %231
  %268 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3JPH20BodyCreationSettingsD2Ev(ptr noundef nonnull align 16 dereferenceable(256) %42) #11
  call void @_ZN3JPH5ArrayINS_8RefConstINS_15PhysicsMaterialEEENS_12STLAllocatorIS3_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %43) #11
  br label %270

.thread211:                                       ; preds = %225, %223, %222
  %lpad.thr_comm = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3JPH5ArrayINS_8RefConstINS_15PhysicsMaterialEEENS_12STLAllocatorIS3_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %43) #11
  br label %270

269:                                              ; preds = %221
  %lpad.thr_comm.split-lp = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3JPH5ArrayINS_8RefConstINS_15PhysicsMaterialEEENS_12STLAllocatorIS3_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %43) #11
  call void @_ZN3JPH17MeshShapeSettingsdlEPv(ptr noundef %220) #11
  br label %270

270:                                              ; preds = %.thread211, %.thread, %269, %266
  %.pn161.pn = phi { ptr, i32 } [ %lpad.thr_comm.split-lp, %269 ], [ %267, %266 ], [ %268, %.thread ], [ %lpad.thr_comm, %.thread211 ]
  call void @llvm.lifetime.end.p0(i64 256, ptr nonnull %42) #11
  br label %455

271:                                              ; preds = %233
  invoke void @_ZN3JPH11SphereShapeC2EfPKNS_15PhysicsMaterialE(ptr noundef nonnull align 8 dereferenceable(48) %237, float noundef 1.000000e+00, ptr noundef null)
          to label %272 unwind label %303

272:                                              ; preds = %271
  invoke void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %46, float noundef 0.000000e+00, float noundef 1.000000e+00, float noundef 2.800000e+01)
          to label %273 unwind label %301

273:                                              ; preds = %272
  %274 = invoke { double, double } @_ZN3JPH4Quat9sIdentityEv()
          to label %275 unwind label %301

275:                                              ; preds = %273
  %276 = extractvalue { double, double } %274, 0
  %277 = extractvalue { double, double } %274, 1
  %278 = load double, ptr %46, align 16
  %279 = load double, ptr %234, align 8
  invoke void @_ZN3JPH20BodyCreationSettingsC2EPKNS_5ShapeENS_4Vec3ENS_4QuatENS_11EMotionTypeEt(ptr noundef nonnull align 16 dereferenceable(256) %45, ptr noundef nonnull %237, double %278, double %279, double %276, double %277, i8 noundef zeroext 2, i16 noundef zeroext 1)
          to label %280 unwind label %301

280:                                              ; preds = %275
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %47) #11
  invoke void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %47, float noundef 2.000000e+01, float noundef 0.000000e+00, float noundef 0.000000e+00)
          to label %281 unwind label %305

281:                                              ; preds = %280
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 16 dereferenceable(16) %235, ptr noundef nonnull align 16 dereferenceable(16) %47, i64 16, i1 false), !tbaa.struct !36
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %47) #11
  store i8 0, ptr %236, align 8, !tbaa !38
  %282 = load ptr, ptr %111, align 8, !tbaa !5
  %283 = invoke i32 @_ZN3JPH13BodyInterface16CreateAndAddBodyERKNS_20BodyCreationSettingsENS_11EActivationE(ptr noundef nonnull align 8 dereferenceable(24) %282, ptr noundef nonnull align 16 dereferenceable(256) %45, i32 noundef 0)
          to label %284 unwind label %307

284:                                              ; preds = %281
  call void @_ZN3JPH20BodyCreationSettingsD2Ev(ptr noundef nonnull align 16 dereferenceable(256) %45) #11
  call void @llvm.lifetime.end.p0(i64 256, ptr nonnull %45) #11
  call void @llvm.lifetime.start.p0(i64 256, ptr nonnull %45) #11
  %285 = invoke noundef ptr @_ZN3JPH11SphereShapenwEm(i64 noundef 48)
          to label %286 unwind label %301

286:                                              ; preds = %284
  invoke void @_ZN3JPH11SphereShapeC2EfPKNS_15PhysicsMaterialE(ptr noundef nonnull align 8 dereferenceable(48) %285, float noundef 1.000000e+00, ptr noundef null)
          to label %287 unwind label %303

287:                                              ; preds = %286
  invoke void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %46, float noundef 0.000000e+00, float noundef 1.000000e+00, float noundef 3.200000e+01)
          to label %288 unwind label %301

288:                                              ; preds = %287
  %289 = invoke { double, double } @_ZN3JPH4Quat9sIdentityEv()
          to label %290 unwind label %301

290:                                              ; preds = %288
  %291 = extractvalue { double, double } %289, 0
  %292 = extractvalue { double, double } %289, 1
  %293 = load double, ptr %46, align 16
  %294 = load double, ptr %234, align 8
  invoke void @_ZN3JPH20BodyCreationSettingsC2EPKNS_5ShapeENS_4Vec3ENS_4QuatENS_11EMotionTypeEt(ptr noundef nonnull align 16 dereferenceable(256) %45, ptr noundef nonnull %285, double %293, double %294, double %291, double %292, i8 noundef zeroext 2, i16 noundef zeroext 1)
          to label %295 unwind label %301

295:                                              ; preds = %290
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %47) #11
  invoke void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %47, float noundef 2.000000e+01, float noundef 0.000000e+00, float noundef 0.000000e+00)
          to label %296 unwind label %305

296:                                              ; preds = %295
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 16 dereferenceable(16) %235, ptr noundef nonnull align 16 dereferenceable(16) %47, i64 16, i1 false), !tbaa.struct !36
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %47) #11
  store i8 1, ptr %236, align 8, !tbaa !38
  %297 = load ptr, ptr %111, align 8, !tbaa !5
  %298 = invoke i32 @_ZN3JPH13BodyInterface16CreateAndAddBodyERKNS_20BodyCreationSettingsENS_11EActivationE(ptr noundef nonnull align 8 dereferenceable(24) %297, ptr noundef nonnull align 16 dereferenceable(256) %45, i32 noundef 0)
          to label %299 unwind label %307

299:                                              ; preds = %296
  call void @_ZN3JPH20BodyCreationSettingsD2Ev(ptr noundef nonnull align 16 dereferenceable(256) %45) #11
  call void @llvm.lifetime.end.p0(i64 256, ptr nonnull %45) #11
  call void @_ZN3JPH5ArrayINS_8TriangleENS_12STLAllocatorIS1_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %25) #11
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %25) #11
  call void @llvm.lifetime.start.p0(i64 152, ptr nonnull %48) #11
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %49) #11
  call void @llvm.lifetime.start.p0(i64 88, ptr nonnull %50) #11
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %51) #11
  call void @_ZN3JPH6Float3C2Efff(ptr noundef nonnull align 4 dereferenceable(12) %51, float noundef -1.000000e+01, float noundef 0.000000e+00, float noundef -1.000000e+01)
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %52) #11
  call void @_ZN3JPH6Float3C2Efff(ptr noundef nonnull align 4 dereferenceable(12) %52, float noundef -1.000000e+01, float noundef 0.000000e+00, float noundef 1.000000e+01)
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %53) #11
  call void @_ZN3JPH6Float3C2Efff(ptr noundef nonnull align 4 dereferenceable(12) %53, float noundef 1.000000e+01, float noundef 0.000000e+00, float noundef 1.000000e+01)
  call void @_ZN3JPH8TriangleC2ERKNS_6Float3ES3_S3_jj(ptr noundef nonnull align 4 dereferenceable(44) %50, ptr noundef nonnull align 4 dereferenceable(12) %51, ptr noundef nonnull align 4 dereferenceable(12) %52, ptr noundef nonnull align 4 dereferenceable(12) %53, i32 noundef 0, i32 noundef 0)
  %300 = getelementptr inbounds i8, ptr %50, i64 44
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %54) #11
  call void @_ZN3JPH6Float3C2Efff(ptr noundef nonnull align 4 dereferenceable(12) %54, float noundef -1.000000e+01, float noundef 0.000000e+00, float noundef -1.000000e+01)
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %55) #11
  call void @_ZN3JPH6Float3C2Efff(ptr noundef nonnull align 4 dereferenceable(12) %55, float noundef 1.000000e+01, float noundef 0.000000e+00, float noundef 1.000000e+01)
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %56) #11
  call void @_ZN3JPH6Float3C2Efff(ptr noundef nonnull align 4 dereferenceable(12) %56, float noundef 1.000000e+01, float noundef 0.000000e+00, float noundef -1.000000e+01)
  call void @_ZN3JPH8TriangleC2ERKNS_6Float3ES3_S3_jj(ptr noundef nonnull align 4 dereferenceable(44) %300, ptr noundef nonnull align 4 dereferenceable(12) %54, ptr noundef nonnull align 4 dereferenceable(12) %55, ptr noundef nonnull align 4 dereferenceable(12) %56, i32 noundef 0, i32 noundef 0)
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %57) #11
  call void @_ZN3JPH5ArrayINS_8TriangleENS_12STLAllocatorIS1_EEEC2ESt16initializer_listIS1_ERKS3_(ptr noundef nonnull align 8 dereferenceable(24) %49, ptr nonnull %50, i64 2, ptr noundef nonnull align 1 dereferenceable(1) %57)
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %58, i8 0, i64 24, i1 false)
  call void @_ZN3JPH5ArrayINS_8RefConstINS_15PhysicsMaterialEEENS_12STLAllocatorIS3_EEEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %58) #11
  invoke void @_ZN3JPH17MeshShapeSettingsC1ERKNS_5ArrayINS_8TriangleENS_12STLAllocatorIS2_EEEENS1_INS_8RefConstINS_15PhysicsMaterialEEENS3_ISA_EEEE(ptr noundef nonnull align 8 dereferenceable(152) %48, ptr noundef nonnull align 8 dereferenceable(24) %49, ptr noundef nonnull %58)
          to label %311 unwind label %456

301:                                              ; preds = %290, %288, %287, %284, %275, %273, %272, %233
  %302 = landingpad { ptr, i32 }
          cleanup
  br label %310

303:                                              ; preds = %286, %271
  %.lcssa = phi ptr [ %237, %271 ], [ %285, %286 ]
  %304 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3JPH11SphereShapedlEPv(ptr noundef %.lcssa) #11
  br label %310

305:                                              ; preds = %295, %280
  %306 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %47) #11
  br label %309

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

309:                                              ; preds = %307, %305
  %.pn197 = phi { ptr, i32 } [ %308, %307 ], [ %306, %305 ]
  call void @_ZN3JPH20BodyCreationSettingsD2Ev(ptr noundef nonnull align 16 dereferenceable(256) %45) #11
  br label %310

310:                                              ; preds = %309, %303, %301
  %.pn197.pn = phi { ptr, i32 } [ %.pn197, %309 ], [ %302, %301 ], [ %304, %303 ]
  call void @llvm.lifetime.end.p0(i64 256, ptr nonnull %45) #11
  br label %455

311:                                              ; preds = %299
  call void @_ZN3JPH5ArrayINS_8RefConstINS_15PhysicsMaterialEEENS_12STLAllocatorIS3_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %58) #11
  call void @_ZN3JPH5ArrayINS_8TriangleENS_12STLAllocatorIS1_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %49) #11
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %57) #11
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %56) #11
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %55) #11
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %54) #11
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %53) #11
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %52) #11
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %51) #11
  call void @llvm.lifetime.end.p0(i64 88, ptr nonnull %50) #11
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %49) #11
  %312 = getelementptr inbounds i8, ptr %48, i64 8
  invoke void @_ZNK3JPH9RefTargetINS_13ShapeSettingsEE11SetEmbeddedEv(ptr noundef nonnull align 4 dereferenceable(4) %312)
          to label %313 unwind label %458

313:                                              ; preds = %311
  call void @llvm.lifetime.start.p0(i64 256, ptr nonnull %59) #11
  invoke void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %60, float noundef -1.000000e+01, float noundef 0.000000e+00, float noundef 5.000000e+01)
          to label %314 unwind label %460

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

316:                                              ; preds = %314
  %317 = extractvalue { double, double } %315, 0
  %318 = extractvalue { double, double } %315, 1
  %319 = load double, ptr %60, align 16
  %320 = getelementptr inbounds i8, ptr %60, i64 8
  %321 = load double, ptr %320, align 8
  invoke void @_ZN3JPH20BodyCreationSettingsC2EPKNS_13ShapeSettingsENS_4Vec3ENS_4QuatENS_11EMotionTypeEt(ptr noundef nonnull align 16 dereferenceable(256) %59, ptr noundef nonnull %48, double %319, double %321, double %317, double %318, i8 noundef zeroext 0, i16 noundef zeroext 0)
          to label %322 unwind label %460

322:                                              ; preds = %316
  %323 = getelementptr inbounds i8, ptr %59, i64 108
  store float 1.000000e+00, ptr %323, align 4, !tbaa !54
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %61) #11
  %324 = load ptr, ptr %111, align 8, !tbaa !5
  %325 = invoke i32 @_ZN3JPH13BodyInterface16CreateAndAddBodyERKNS_20BodyCreationSettingsENS_11EActivationE(ptr noundef nonnull align 8 dereferenceable(24) %324, ptr noundef nonnull align 16 dereferenceable(256) %59, i32 noundef 1)
          to label %326 unwind label %462

326:                                              ; preds = %322
  store i32 %325, ptr %61, align 4
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %62) #11
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %63) #11
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcEN3JPH12STLAllocatorIcEEEC2IS5_EEPKcRKS5_(ptr noundef nonnull align 8 dereferenceable(32) %62, ptr noundef nonnull @.str.4, ptr noundef nonnull align 1 dereferenceable(1) %63)
          to label %327 unwind label %464

327:                                              ; preds = %326
  invoke void @_ZN4Test12SetBodyLabelERKN3JPH6BodyIDERKNSt7__cxx1112basic_stringIcSt11char_traitsIcENS0_12STLAllocatorIcEEEE(ptr noundef nonnull align 8 dereferenceable(112) %0, ptr noundef nonnull align 4 dereferenceable(4) %61, ptr noundef nonnull align 8 dereferenceable(32) %62)
          to label %328 unwind label %466

328:                                              ; preds = %327
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcEN3JPH12STLAllocatorIcEEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %62) #11
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %63) #11
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %62) #11
  call void @llvm.lifetime.start.p0(i64 256, ptr nonnull %64) #11
  %329 = invoke noundef ptr @_ZN3JPH11SphereShapenwEm(i64 noundef 48)
          to label %330 unwind label %469

330:                                              ; preds = %328
  invoke void @_ZN3JPH11SphereShapeC2EfPKNS_15PhysicsMaterialE(ptr noundef nonnull align 8 dereferenceable(48) %329, float noundef 5.000000e-01, ptr noundef null)
          to label %331 unwind label %471

331:                                              ; preds = %330
  invoke void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %65, float noundef -1.000000e+01, float noundef 1.000000e+00, float noundef 4.100000e+01)
          to label %332 unwind label %469

332:                                              ; preds = %331
  %333 = invoke { double, double } @_ZN3JPH4Quat9sIdentityEv()
          to label %334 unwind label %469

334:                                              ; preds = %332
  %335 = extractvalue { double, double } %333, 0
  %336 = extractvalue { double, double } %333, 1
  %337 = load double, ptr %65, align 16
  %338 = getelementptr inbounds i8, ptr %65, i64 8
  %339 = load double, ptr %338, align 8
  invoke void @_ZN3JPH20BodyCreationSettingsC2EPKNS_5ShapeENS_4Vec3ENS_4QuatENS_11EMotionTypeEt(ptr noundef nonnull align 16 dereferenceable(256) %64, ptr noundef nonnull %329, double %337, double %339, double %335, double %336, i8 noundef zeroext 2, i16 noundef zeroext 1)
          to label %340 unwind label %469

340:                                              ; preds = %334
  %341 = getelementptr inbounds i8, ptr %64, i64 104
  store i8 1, ptr %341, align 8, !tbaa !38
  %342 = getelementptr inbounds i8, ptr %64, i64 108
  store float 1.000000e+00, ptr %342, align 4, !tbaa !54
  %343 = getelementptr inbounds i8, ptr %64, i64 144
  store i8 1, ptr %343, align 16, !tbaa !55
  %344 = getelementptr inbounds i8, ptr %64, i64 160
  store float 1.000000e+00, ptr %344, align 16, !tbaa !56
  %345 = load ptr, ptr %111, align 8, !tbaa !5
  %346 = invoke i32 @_ZN3JPH13BodyInterface16CreateAndAddBodyERKNS_20BodyCreationSettingsENS_11EActivationE(ptr noundef nonnull align 8 dereferenceable(24) %345, ptr noundef nonnull align 16 dereferenceable(256) %64, i32 noundef 0)
          to label %347 unwind label %473

347:                                              ; preds = %340
  %348 = getelementptr inbounds i8, ptr %0, i64 112
  store i32 %346, ptr %348, align 8, !tbaa !57
  call void @llvm.lifetime.start.p0(i64 256, ptr nonnull %66) #11
  invoke void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %67, float noundef 1.000000e+01, float noundef 0.000000e+00, float noundef 5.000000e+01)
          to label %349 unwind label %475

349:                                              ; preds = %347
  %350 = invoke { double, double } @_ZN3JPH4Vec36sAxisXEv()
          to label %351 unwind label %475

351:                                              ; preds = %349
  %352 = extractvalue { double, double } %350, 0
  %353 = extractvalue { double, double } %350, 1
  %354 = call noundef float @_ZN3JPH16DegreesToRadiansEf(float noundef 4.500000e+01)
  %355 = invoke { double, double } @_ZN3JPH4Quat9sRotationENS_4Vec3Ef(double %352, double %353, float noundef %354)
          to label %356 unwind label %475

356:                                              ; preds = %351
  %357 = extractvalue { double, double } %355, 0
  %358 = extractvalue { double, double } %355, 1
  %359 = load double, ptr %67, align 16
  %360 = getelementptr inbounds i8, ptr %67, i64 8
  %361 = load double, ptr %360, align 8
  invoke void @_ZN3JPH20BodyCreationSettingsC2EPKNS_13ShapeSettingsENS_4Vec3ENS_4QuatENS_11EMotionTypeEt(ptr noundef nonnull align 16 dereferenceable(256) %66, ptr noundef nonnull %48, double %359, double %361, double %357, double %358, i8 noundef zeroext 0, i16 noundef zeroext 0)
          to label %362 unwind label %475

362:                                              ; preds = %356
  %363 = getelementptr inbounds i8, ptr %66, i64 108
  store float 1.000000e+00, ptr %363, align 4, !tbaa !54
  %364 = load ptr, ptr %111, align 8, !tbaa !5
  %365 = invoke i32 @_ZN3JPH13BodyInterface16CreateAndAddBodyERKNS_20BodyCreationSettingsENS_11EActivationE(ptr noundef nonnull align 8 dereferenceable(24) %364, ptr noundef nonnull align 16 dereferenceable(256) %66, i32 noundef 1)
          to label %366 unwind label %477

366:                                              ; preds = %362
  store i32 %365, ptr %61, align 4, !tbaa !57
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %68) #11
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %69) #11
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcEN3JPH12STLAllocatorIcEEEC2IS5_EEPKcRKS5_(ptr noundef nonnull align 8 dereferenceable(32) %68, ptr noundef nonnull @.str.4, ptr noundef nonnull align 1 dereferenceable(1) %69)
          to label %367 unwind label %479

367:                                              ; preds = %366
  invoke void @_ZN4Test12SetBodyLabelERKN3JPH6BodyIDERKNSt7__cxx1112basic_stringIcSt11char_traitsIcENS0_12STLAllocatorIcEEEE(ptr noundef nonnull align 8 dereferenceable(112) %0, ptr noundef nonnull align 4 dereferenceable(4) %61, ptr noundef nonnull align 8 dereferenceable(32) %68)
          to label %368 unwind label %481

368:                                              ; preds = %367
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcEN3JPH12STLAllocatorIcEEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %68) #11
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %69) #11
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %68) #11
  call void @llvm.lifetime.start.p0(i64 256, ptr nonnull %70) #11
  %369 = invoke noundef ptr @_ZN3JPH11SphereShapenwEm(i64 noundef 48)
          to label %370 unwind label %484

370:                                              ; preds = %368
  invoke void @_ZN3JPH11SphereShapeC2EfPKNS_15PhysicsMaterialE(ptr noundef nonnull align 8 dereferenceable(48) %369, float noundef 5.000000e-01, ptr noundef null)
          to label %371 unwind label %486

371:                                              ; preds = %370
  invoke void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %71, float noundef 1.000000e+01, float noundef 8.000000e+00, float noundef 4.400000e+01)
          to label %372 unwind label %484

372:                                              ; preds = %371
  %373 = invoke { double, double } @_ZN3JPH4Quat9sIdentityEv()
          to label %374 unwind label %484

374:                                              ; preds = %372
  %375 = extractvalue { double, double } %373, 0
  %376 = extractvalue { double, double } %373, 1
  %377 = load double, ptr %71, align 16
  %378 = getelementptr inbounds i8, ptr %71, i64 8
  %379 = load double, ptr %378, align 8
  invoke void @_ZN3JPH20BodyCreationSettingsC2EPKNS_5ShapeENS_4Vec3ENS_4QuatENS_11EMotionTypeEt(ptr noundef nonnull align 16 dereferenceable(256) %70, ptr noundef nonnull %369, double %377, double %379, double %375, double %376, i8 noundef zeroext 2, i16 noundef zeroext 1)
          to label %380 unwind label %484

380:                                              ; preds = %374
  %381 = getelementptr inbounds i8, ptr %70, i64 104
  store i8 1, ptr %381, align 8, !tbaa !38
  %382 = getelementptr inbounds i8, ptr %70, i64 108
  store float 1.000000e+00, ptr %382, align 4, !tbaa !54
  %383 = getelementptr inbounds i8, ptr %70, i64 144
  store i8 1, ptr %383, align 16, !tbaa !55
  %384 = getelementptr inbounds i8, ptr %70, i64 160
  store float 1.000000e+00, ptr %384, align 16, !tbaa !56
  %385 = load ptr, ptr %111, align 8, !tbaa !5
  %386 = invoke i32 @_ZN3JPH13BodyInterface16CreateAndAddBodyERKNS_20BodyCreationSettingsENS_11EActivationE(ptr noundef nonnull align 8 dereferenceable(24) %385, ptr noundef nonnull align 16 dereferenceable(256) %70, i32 noundef 0)
          to label %387 unwind label %488

387:                                              ; preds = %380
  call void @_ZN3JPH20BodyCreationSettingsD2Ev(ptr noundef nonnull align 16 dereferenceable(256) %70) #11
  call void @llvm.lifetime.end.p0(i64 256, ptr nonnull %70) #11
  call void @_ZN3JPH20BodyCreationSettingsD2Ev(ptr noundef nonnull align 16 dereferenceable(256) %66) #11
  call void @llvm.lifetime.end.p0(i64 256, ptr nonnull %66) #11
  call void @_ZN3JPH20BodyCreationSettingsD2Ev(ptr noundef nonnull align 16 dereferenceable(256) %64) #11
  call void @llvm.lifetime.end.p0(i64 256, ptr nonnull %64) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %61) #11
  call void @_ZN3JPH20BodyCreationSettingsD2Ev(ptr noundef nonnull align 16 dereferenceable(256) %59) #11
  call void @llvm.lifetime.end.p0(i64 256, ptr nonnull %59) #11
  call void @_ZN3JPH17MeshShapeSettingsD2Ev(ptr noundef nonnull align 8 dereferenceable(152) %48) #11
  call void @llvm.lifetime.end.p0(i64 152, ptr nonnull %48) #11
  call void @llvm.lifetime.start.p0(i64 256, ptr nonnull %72) #11
  %388 = call noundef ptr @_ZN3JPH8BoxShapenwEm(i64 noundef 80)
  %389 = invoke { double, double } @_ZN3JPH4Vec310sReplicateEf(float noundef 2.500000e+00)
          to label %390 unwind label %499

390:                                              ; preds = %387
  %391 = extractvalue { double, double } %389, 0
  %392 = extractvalue { double, double } %389, 1
  invoke void @_ZN3JPH8BoxShapeC2ENS_4Vec3EfPKNS_15PhysicsMaterialE(ptr noundef nonnull align 16 dereferenceable(80) %388, double %391, double %392, float noundef 0x3FA99999A0000000, ptr noundef null)
          to label %393 unwind label %499

393:                                              ; preds = %390
  call void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %73, float noundef 0.000000e+00, float noundef 0.000000e+00, float noundef 7.000000e+01)
  %394 = call { double, double } @_ZN3JPH4Quat9sIdentityEv()
  %395 = extractvalue { double, double } %394, 0
  %396 = extractvalue { double, double } %394, 1
  %397 = load double, ptr %73, align 16
  %398 = getelementptr inbounds i8, ptr %73, i64 8
  %399 = load double, ptr %398, align 8
  call void @_ZN3JPH20BodyCreationSettingsC2EPKNS_5ShapeENS_4Vec3ENS_4QuatENS_11EMotionTypeEt(ptr noundef nonnull align 16 dereferenceable(256) %72, ptr noundef nonnull %388, double %397, double %399, double %395, double %396, i8 noundef zeroext 0, i16 noundef zeroext 0)
  %400 = load ptr, ptr %111, align 8, !tbaa !5
  %401 = invoke i32 @_ZN3JPH13BodyInterface16CreateAndAddBodyERKNS_20BodyCreationSettingsENS_11EActivationE(ptr noundef nonnull align 8 dereferenceable(24) %400, ptr noundef nonnull align 16 dereferenceable(256) %72, i32 noundef 1)
          to label %402 unwind label %501

402:                                              ; preds = %393
  call void @llvm.lifetime.start.p0(i64 88, ptr nonnull %74) #11
  invoke void @_ZN3JPH27StaticCompoundShapeSettingsC2Ev(ptr noundef nonnull align 8 dereferenceable(88) %74)
          to label %403 unwind label %503

403:                                              ; preds = %402
  %404 = getelementptr inbounds i8, ptr %74, i64 8
  invoke void @_ZNK3JPH9RefTargetINS_13ShapeSettingsEE11SetEmbeddedEv(ptr noundef nonnull align 4 dereferenceable(4) %404)
          to label %405 unwind label %505

405:                                              ; preds = %403
  invoke void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %75, float noundef -2.500000e+00, float noundef 0.000000e+00, float noundef 0.000000e+00)
          to label %406 unwind label %505

406:                                              ; preds = %405
  %407 = invoke { double, double } @_ZN3JPH4Quat9sIdentityEv()
          to label %408 unwind label %505

408:                                              ; preds = %406
  %409 = extractvalue { double, double } %407, 0
  %410 = extractvalue { double, double } %407, 1
  %411 = invoke noundef ptr @_ZN3JPH8BoxShapenwEm(i64 noundef 80)
          to label %412 unwind label %505

412:                                              ; preds = %408
  invoke void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %76, float noundef 2.500000e+00, float noundef 0x3FB99999A0000000, float noundef 0x3FB99999A0000000)
          to label %413 unwind label %507

413:                                              ; preds = %412
  %414 = load double, ptr %76, align 16
  %415 = getelementptr inbounds i8, ptr %76, i64 8
  %416 = load double, ptr %415, align 8
  invoke void @_ZN3JPH8BoxShapeC2ENS_4Vec3EfPKNS_15PhysicsMaterialE(ptr noundef nonnull align 16 dereferenceable(80) %411, double %414, double %416, float noundef 0x3FA99999A0000000, ptr noundef null)
          to label %417 unwind label %507

417:                                              ; preds = %413
  %418 = load double, ptr %75, align 16
  %419 = getelementptr inbounds i8, ptr %75, i64 8
  %420 = load double, ptr %419, align 8
  invoke void @_ZN3JPH21CompoundShapeSettings8AddShapeENS_4Vec3ENS_4QuatEPKNS_5ShapeEj(ptr noundef nonnull align 8 dereferenceable(88) %74, double %418, double %420, double %409, double %410, ptr noundef nonnull %411, i32 noundef 0)
          to label %421 unwind label %505

421:                                              ; preds = %417
  invoke void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %77, float noundef 0x3FB99999A0000000, float noundef 0.000000e+00, float noundef 0.000000e+00)
          to label %422 unwind label %505

422:                                              ; preds = %421
  %423 = invoke { double, double } @_ZN3JPH4Quat9sIdentityEv()
          to label %424 unwind label %505

424:                                              ; preds = %422
  %425 = extractvalue { double, double } %423, 0
  %426 = extractvalue { double, double } %423, 1
  %427 = invoke noundef ptr @_ZN3JPH8BoxShapenwEm(i64 noundef 80)
          to label %428 unwind label %505

428:                                              ; preds = %424
  invoke void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %78, float noundef 0x3FB99999A0000000, float noundef 1.000000e+00, float noundef 1.000000e+00)
          to label %429 unwind label %509

429:                                              ; preds = %428
  %430 = load double, ptr %78, align 16
  %431 = getelementptr inbounds i8, ptr %78, i64 8
  %432 = load double, ptr %431, align 8
  invoke void @_ZN3JPH8BoxShapeC2ENS_4Vec3EfPKNS_15PhysicsMaterialE(ptr noundef nonnull align 16 dereferenceable(80) %427, double %430, double %432, float noundef 0x3FA99999A0000000, ptr noundef null)
          to label %433 unwind label %509

433:                                              ; preds = %429
  %434 = load double, ptr %77, align 16
  %435 = getelementptr inbounds i8, ptr %77, i64 8
  %436 = load double, ptr %435, align 8
  invoke void @_ZN3JPH21CompoundShapeSettings8AddShapeENS_4Vec3ENS_4QuatEPKNS_5ShapeEj(ptr noundef nonnull align 8 dereferenceable(88) %74, double %434, double %436, double %425, double %426, ptr noundef nonnull %427, i32 noundef 0)
          to label %437 unwind label %505

437:                                              ; preds = %433
  call void @llvm.lifetime.start.p0(i64 256, ptr nonnull %79) #11
  invoke void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %80, float noundef 2.000000e+00, float noundef 5.000000e+00, float noundef 7.000000e+01)
          to label %438 unwind label %511

438:                                              ; preds = %437
  %439 = invoke { double, double } @_ZN3JPH4Quat9sIdentityEv()
          to label %440 unwind label %511

440:                                              ; preds = %438
  %441 = extractvalue { double, double } %439, 0
  %442 = extractvalue { double, double } %439, 1
  %443 = load double, ptr %80, align 16
  %444 = getelementptr inbounds i8, ptr %80, i64 8
  %445 = load double, ptr %444, align 8
  invoke void @_ZN3JPH20BodyCreationSettingsC2EPKNS_13ShapeSettingsENS_4Vec3ENS_4QuatENS_11EMotionTypeEt(ptr noundef nonnull align 16 dereferenceable(256) %79, ptr noundef nonnull %74, double %443, double %445, double %441, double %442, i8 noundef zeroext 2, i16 noundef zeroext 1)
          to label %446 unwind label %511

446:                                              ; preds = %440
  %447 = getelementptr inbounds i8, ptr %79, i64 104
  store i8 1, ptr %447, align 8, !tbaa !38
  %448 = load ptr, ptr %111, align 8, !tbaa !5
  %449 = invoke i32 @_ZN3JPH13BodyInterface16CreateAndAddBodyERKNS_20BodyCreationSettingsENS_11EActivationE(ptr noundef nonnull align 8 dereferenceable(24) %448, ptr noundef nonnull align 16 dereferenceable(256) %79, i32 noundef 0)
          to label %450 unwind label %513

450:                                              ; preds = %446
  call void @_ZN3JPH20BodyCreationSettingsD2Ev(ptr noundef nonnull align 16 dereferenceable(256) %79) #11
  call void @llvm.lifetime.end.p0(i64 256, ptr nonnull %79) #11
  call void @_ZN3JPH21CompoundShapeSettingsD2Ev(ptr noundef nonnull align 8 dereferenceable(88) %74) #11
  call void @llvm.lifetime.end.p0(i64 88, ptr nonnull %74) #11
  call void @_ZN3JPH20BodyCreationSettingsD2Ev(ptr noundef nonnull align 16 dereferenceable(256) %72) #11
  call void @llvm.lifetime.end.p0(i64 256, ptr nonnull %72) #11
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %81) #11
  call void @_ZN3JPH5ArrayINS_8TriangleENS_12STLAllocatorIS1_EEEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %81) #11
  br label %.preheader

.preheader:                                       ; preds = %450, %520
  %.0146226 = phi i32 [ -100, %450 ], [ %521, %520 ]
  %451 = sitofp i32 %.0146226 to float
  %452 = fmul float %451, 2.500000e-01
  %453 = fadd float %452, 2.500000e-01
  br label %522

454:                                              ; preds = %520
  call void @llvm.lifetime.start.p0(i64 152, ptr nonnull %88) #11
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %89, i8 0, i64 24, i1 false)
  call void @_ZN3JPH5ArrayINS_8RefConstINS_15PhysicsMaterialEEENS_12STLAllocatorIS3_EEEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %89) #11
  invoke void @_ZN3JPH17MeshShapeSettingsC1ERKNS_5ArrayINS_8TriangleENS_12STLAllocatorIS2_EEEENS1_INS_8RefConstINS_15PhysicsMaterialEEENS3_ISA_EEEE(ptr noundef nonnull align 8 dereferenceable(152) %88, ptr noundef nonnull align 8 dereferenceable(24) %81, ptr noundef nonnull %89)
          to label %534 unwind label %575

455:                                              ; preds = %310, %270, %264, %262, %260, %258
  %.pn197.pn.pn = phi { ptr, i32 } [ %.pn197.pn, %310 ], [ %.pn161.pn, %270 ], [ %265, %264 ], [ %263, %262 ], [ %261, %260 ], [ %259, %258 ]
  call void @_ZN3JPH5ArrayINS_8TriangleENS_12STLAllocatorIS1_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %25) #11
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %25) #11
  br label %603

456:                                              ; preds = %299
  %457 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3JPH5ArrayINS_8RefConstINS_15PhysicsMaterialEEENS_12STLAllocatorIS3_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %58) #11
  call void @_ZN3JPH5ArrayINS_8TriangleENS_12STLAllocatorIS1_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %49) #11
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %57) #11
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %56) #11
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %55) #11
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %54) #11
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %53) #11
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %52) #11
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %51) #11
  call void @llvm.lifetime.end.p0(i64 88, ptr nonnull %50) #11
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %49) #11
  br label %498

458:                                              ; preds = %311
  %459 = landingpad { ptr, i32 }
          cleanup
  br label %497

460:                                              ; preds = %316, %314, %313
  %461 = landingpad { ptr, i32 }
          cleanup
  br label %496

462:                                              ; preds = %322
  %463 = landingpad { ptr, i32 }
          cleanup
  br label %495

464:                                              ; preds = %326
  %465 = landingpad { ptr, i32 }
          cleanup
  br label %468

466:                                              ; preds = %327
  %467 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcEN3JPH12STLAllocatorIcEEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %62) #11
  br label %468

468:                                              ; preds = %466, %464
  %.pn164 = phi { ptr, i32 } [ %467, %466 ], [ %465, %464 ]
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %63) #11
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %62) #11
  br label %495

469:                                              ; preds = %334, %332, %331, %328
  %470 = landingpad { ptr, i32 }
          cleanup
  br label %494

471:                                              ; preds = %330
  %472 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3JPH11SphereShapedlEPv(ptr noundef %329) #11
  br label %494

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

475:                                              ; preds = %356, %351, %349, %347
  %476 = landingpad { ptr, i32 }
          cleanup
  br label %492

477:                                              ; preds = %362
  %478 = landingpad { ptr, i32 }
          cleanup
  br label %491

479:                                              ; preds = %366
  %480 = landingpad { ptr, i32 }
          cleanup
  br label %483

481:                                              ; preds = %367
  %482 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcEN3JPH12STLAllocatorIcEEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %68) #11
  br label %483

483:                                              ; preds = %481, %479
  %.pn166 = phi { ptr, i32 } [ %482, %481 ], [ %480, %479 ]
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %69) #11
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %68) #11
  br label %491

484:                                              ; preds = %374, %372, %371, %368
  %485 = landingpad { ptr, i32 }
          cleanup
  br label %490

486:                                              ; preds = %370
  %487 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3JPH11SphereShapedlEPv(ptr noundef %369) #11
  br label %490

488:                                              ; preds = %380
  %489 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3JPH20BodyCreationSettingsD2Ev(ptr noundef nonnull align 16 dereferenceable(256) %70) #11
  br label %490

490:                                              ; preds = %488, %486, %484
  %.pn168 = phi { ptr, i32 } [ %489, %488 ], [ %485, %484 ], [ %487, %486 ]
  call void @llvm.lifetime.end.p0(i64 256, ptr nonnull %70) #11
  br label %491

491:                                              ; preds = %490, %483, %477
  %.pn168.pn = phi { ptr, i32 } [ %.pn168, %490 ], [ %.pn166, %483 ], [ %478, %477 ]
  call void @_ZN3JPH20BodyCreationSettingsD2Ev(ptr noundef nonnull align 16 dereferenceable(256) %66) #11
  br label %492

492:                                              ; preds = %491, %475
  %.pn168.pn.pn = phi { ptr, i32 } [ %.pn168.pn, %491 ], [ %476, %475 ]
  call void @llvm.lifetime.end.p0(i64 256, ptr nonnull %66) #11
  br label %493

493:                                              ; preds = %492, %473
  %.pn168.pn.pn.pn = phi { ptr, i32 } [ %.pn168.pn.pn, %492 ], [ %474, %473 ]
  call void @_ZN3JPH20BodyCreationSettingsD2Ev(ptr noundef nonnull align 16 dereferenceable(256) %64) #11
  br label %494

494:                                              ; preds = %493, %471, %469
  %.pn168.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn168.pn.pn.pn, %493 ], [ %470, %469 ], [ %472, %471 ]
  call void @llvm.lifetime.end.p0(i64 256, ptr nonnull %64) #11
  br label %495

495:                                              ; preds = %494, %468, %462
  %.pn168.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn168.pn.pn.pn.pn, %494 ], [ %.pn164, %468 ], [ %463, %462 ]
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %61) #11
  call void @_ZN3JPH20BodyCreationSettingsD2Ev(ptr noundef nonnull align 16 dereferenceable(256) %59) #11
  br label %496

496:                                              ; preds = %495, %460
  %.pn168.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn168.pn.pn.pn.pn.pn, %495 ], [ %461, %460 ]
  call void @llvm.lifetime.end.p0(i64 256, ptr nonnull %59) #11
  br label %497

497:                                              ; preds = %496, %458
  %.pn168.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn168.pn.pn.pn.pn.pn.pn, %496 ], [ %459, %458 ]
  call void @_ZN3JPH17MeshShapeSettingsD2Ev(ptr noundef nonnull align 8 dereferenceable(152) %48) #11
  br label %498

498:                                              ; preds = %497, %456
  %.pn168.pn.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn168.pn.pn.pn.pn.pn.pn.pn, %497 ], [ %457, %456 ]
  call void @llvm.lifetime.end.p0(i64 152, ptr nonnull %48) #11
  br label %603

499:                                              ; preds = %390, %387
  %500 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3JPH8BoxShapedlEPv(ptr noundef %388) #11
  br label %519

501:                                              ; preds = %393
  %502 = landingpad { ptr, i32 }
          cleanup
  br label %518

503:                                              ; preds = %402
  %504 = landingpad { ptr, i32 }
          cleanup
  br label %517

505:                                              ; preds = %433, %424, %422, %421, %417, %408, %406, %405, %403
  %506 = landingpad { ptr, i32 }
          cleanup
  br label %516

507:                                              ; preds = %413, %412
  %508 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3JPH8BoxShapedlEPv(ptr noundef %411) #11
  br label %516

509:                                              ; preds = %429, %428
  %510 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3JPH8BoxShapedlEPv(ptr noundef %427) #11
  br label %516

511:                                              ; preds = %440, %438, %437
  %512 = landingpad { ptr, i32 }
          cleanup
  br label %515

513:                                              ; preds = %446
  %514 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3JPH20BodyCreationSettingsD2Ev(ptr noundef nonnull align 16 dereferenceable(256) %79) #11
  br label %515

515:                                              ; preds = %513, %511
  %.pn178 = phi { ptr, i32 } [ %514, %513 ], [ %512, %511 ]
  call void @llvm.lifetime.end.p0(i64 256, ptr nonnull %79) #11
  br label %516

516:                                              ; preds = %515, %509, %507, %505
  %.pn178.pn = phi { ptr, i32 } [ %.pn178, %515 ], [ %506, %505 ], [ %510, %509 ], [ %508, %507 ]
  call void @_ZN3JPH21CompoundShapeSettingsD2Ev(ptr noundef nonnull align 8 dereferenceable(88) %74) #11
  br label %517

517:                                              ; preds = %516, %503
  %.pn178.pn.pn = phi { ptr, i32 } [ %.pn178.pn, %516 ], [ %504, %503 ]
  call void @llvm.lifetime.end.p0(i64 88, ptr nonnull %74) #11
  br label %518

518:                                              ; preds = %517, %501
  %.pn178.pn.pn.pn = phi { ptr, i32 } [ %.pn178.pn.pn, %517 ], [ %502, %501 ]
  call void @_ZN3JPH20BodyCreationSettingsD2Ev(ptr noundef nonnull align 16 dereferenceable(256) %72) #11
  br label %519

519:                                              ; preds = %518, %499
  %.pn178.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn178.pn.pn.pn, %518 ], [ %500, %499 ]
  call void @llvm.lifetime.end.p0(i64 256, ptr nonnull %72) #11
  br label %603

520:                                              ; preds = %527
  %521 = add nsw i32 %.0146226, 1
  %exitcond234.not = icmp eq i32 %521, 100
  br i1 %exitcond234.not, label %454, label %.preheader, !llvm.loop !58

522:                                              ; preds = %.preheader, %527
  %.0147225 = phi i32 [ -5, %.preheader ], [ %528, %527 ]
  %523 = sitofp i32 %.0147225 to float
  %524 = fmul float %523, 2.500000e-01
  %525 = fadd float %524, 2.500000e-01
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %82) #11
  call void @_ZN3JPH6Float3C2Efff(ptr noundef nonnull align 4 dereferenceable(12) %82, float noundef %452, float noundef 0.000000e+00, float noundef %524)
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %83) #11
  call void @_ZN3JPH6Float3C2Efff(ptr noundef nonnull align 4 dereferenceable(12) %83, float noundef %453, float noundef 0.000000e+00, float noundef %524)
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %84) #11
  call void @_ZN3JPH6Float3C2Efff(ptr noundef nonnull align 4 dereferenceable(12) %84, float noundef %452, float noundef 0.000000e+00, float noundef %525)
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %85) #11
  call void @_ZN3JPH6Float3C2Efff(ptr noundef nonnull align 4 dereferenceable(12) %85, float noundef %453, float noundef 0.000000e+00, float noundef %525)
  call void @llvm.lifetime.start.p0(i64 44, ptr nonnull %86) #11
  call void @_ZN3JPH8TriangleC2ERKNS_6Float3ES3_S3_jj(ptr noundef nonnull align 4 dereferenceable(44) %86, ptr noundef nonnull align 4 dereferenceable(12) %82, ptr noundef nonnull align 4 dereferenceable(12) %84, ptr noundef nonnull align 4 dereferenceable(12) %85, i32 noundef 0, i32 noundef 0)
  invoke void @_ZN3JPH5ArrayINS_8TriangleENS_12STLAllocatorIS1_EEE9push_backEOS1_(ptr noundef nonnull align 8 dereferenceable(24) %81, ptr noundef nonnull align 4 dereferenceable(44) %86)
          to label %526 unwind label %529

526:                                              ; preds = %522
  call void @llvm.lifetime.end.p0(i64 44, ptr nonnull %86) #11
  call void @llvm.lifetime.start.p0(i64 44, ptr nonnull %87) #11
  call void @_ZN3JPH8TriangleC2ERKNS_6Float3ES3_S3_jj(ptr noundef nonnull align 4 dereferenceable(44) %87, ptr noundef nonnull align 4 dereferenceable(12) %82, ptr noundef nonnull align 4 dereferenceable(12) %85, ptr noundef nonnull align 4 dereferenceable(12) %83, i32 noundef 0, i32 noundef 0)
  invoke void @_ZN3JPH5ArrayINS_8TriangleENS_12STLAllocatorIS1_EEE9push_backEOS1_(ptr noundef nonnull align 8 dereferenceable(24) %81, ptr noundef nonnull align 4 dereferenceable(44) %87)
          to label %527 unwind label %531

527:                                              ; preds = %526
  call void @llvm.lifetime.end.p0(i64 44, ptr nonnull %87) #11
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %85) #11
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %84) #11
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %83) #11
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %82) #11
  %528 = add nsw i32 %.0147225, 1
  %exitcond233.not = icmp eq i32 %528, 5
  br i1 %exitcond233.not, label %520, label %522, !llvm.loop !59

529:                                              ; preds = %522
  %530 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 44, ptr nonnull %86) #11
  br label %533

531:                                              ; preds = %526
  %532 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 44, ptr nonnull %87) #11
  br label %533

533:                                              ; preds = %531, %529
  %.pn194 = phi { ptr, i32 } [ %532, %531 ], [ %530, %529 ]
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %85) #11
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %84) #11
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %83) #11
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %82) #11
  br label %602

534:                                              ; preds = %454
  call void @_ZN3JPH5ArrayINS_8RefConstINS_15PhysicsMaterialEEENS_12STLAllocatorIS3_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %89) #11
  %535 = getelementptr inbounds i8, ptr %88, i64 140
  store float -1.000000e+00, ptr %535, align 4, !tbaa !22
  %536 = getelementptr inbounds i8, ptr %88, i64 8
  invoke void @_ZNK3JPH9RefTargetINS_13ShapeSettingsEE11SetEmbeddedEv(ptr noundef nonnull align 4 dereferenceable(4) %536)
          to label %537 unwind label %577

537:                                              ; preds = %534
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %90) #11
  %538 = load ptr, ptr %111, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 256, ptr nonnull %91) #11
  invoke void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %92, float noundef 0.000000e+00, float noundef 0.000000e+00, float noundef 8.000000e+01)
          to label %539 unwind label %579

539:                                              ; preds = %537
  %540 = invoke { double, double } @_ZN3JPH4Quat9sIdentityEv()
          to label %541 unwind label %579

541:                                              ; preds = %539
  %542 = extractvalue { double, double } %540, 0
  %543 = extractvalue { double, double } %540, 1
  %544 = load double, ptr %92, align 16
  %545 = getelementptr inbounds i8, ptr %92, i64 8
  %546 = load double, ptr %545, align 8
  invoke void @_ZN3JPH20BodyCreationSettingsC2EPKNS_13ShapeSettingsENS_4Vec3ENS_4QuatENS_11EMotionTypeEt(ptr noundef nonnull align 16 dereferenceable(256) %91, ptr noundef nonnull %88, double %544, double %546, double %542, double %543, i8 noundef zeroext 0, i16 noundef zeroext 0)
          to label %547 unwind label %579

547:                                              ; preds = %541
  %548 = invoke i32 @_ZN3JPH13BodyInterface16CreateAndAddBodyERKNS_20BodyCreationSettingsENS_11EActivationE(ptr noundef nonnull align 8 dereferenceable(24) %538, ptr noundef nonnull align 16 dereferenceable(256) %91, i32 noundef 1)
          to label %549 unwind label %581

549:                                              ; preds = %547
  store i32 %548, ptr %90, align 4
  call void @_ZN3JPH20BodyCreationSettingsD2Ev(ptr noundef nonnull align 16 dereferenceable(256) %91) #11
  call void @llvm.lifetime.end.p0(i64 256, ptr nonnull %91) #11
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %93) #11
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %94) #11
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcEN3JPH12STLAllocatorIcEEEC2IS5_EEPKcRKS5_(ptr noundef nonnull align 8 dereferenceable(32) %93, ptr noundef nonnull @.str.4, ptr noundef nonnull align 1 dereferenceable(1) %94)
          to label %550 unwind label %584

550:                                              ; preds = %549
  invoke void @_ZN4Test12SetBodyLabelERKN3JPH6BodyIDERKNSt7__cxx1112basic_stringIcSt11char_traitsIcENS0_12STLAllocatorIcEEEE(ptr noundef nonnull align 8 dereferenceable(112) %0, ptr noundef nonnull align 4 dereferenceable(4) %90, ptr noundef nonnull align 8 dereferenceable(32) %93)
          to label %551 unwind label %586

551:                                              ; preds = %550
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcEN3JPH12STLAllocatorIcEEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %93) #11
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %94) #11
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %93) #11
  call void @llvm.lifetime.start.p0(i64 256, ptr nonnull %95) #11
  %552 = invoke noundef ptr @_ZN3JPH8BoxShapenwEm(i64 noundef 80)
          to label %553 unwind label %589

553:                                              ; preds = %551
  %554 = invoke { double, double } @_ZN3JPH4Vec310sReplicateEf(float noundef 1.000000e+00)
          to label %555 unwind label %591

555:                                              ; preds = %553
  %556 = extractvalue { double, double } %554, 0
  %557 = extractvalue { double, double } %554, 1
  invoke void @_ZN3JPH8BoxShapeC2ENS_4Vec3EfPKNS_15PhysicsMaterialE(ptr noundef nonnull align 16 dereferenceable(80) %552, double %556, double %557, float noundef 0x3FA99999A0000000, ptr noundef null)
          to label %558 unwind label %591

558:                                              ; preds = %555
  %559 = call noundef float @_ZN3JPH8literalsli2_rEe(x86_fp80 noundef 0xK3FFEE666666666666666)
  invoke void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %96, float noundef -2.400000e+01, float noundef %559, float noundef 8.000000e+01)
          to label %560 unwind label %589

560:                                              ; preds = %558
  %561 = invoke { double, double } @_ZN3JPH4Quat9sIdentityEv()
          to label %562 unwind label %589

562:                                              ; preds = %560
  %563 = extractvalue { double, double } %561, 0
  %564 = extractvalue { double, double } %561, 1
  %565 = load double, ptr %96, align 16
  %566 = getelementptr inbounds i8, ptr %96, i64 8
  %567 = load double, ptr %566, align 8
  invoke void @_ZN3JPH20BodyCreationSettingsC2EPKNS_5ShapeENS_4Vec3ENS_4QuatENS_11EMotionTypeEt(ptr noundef nonnull align 16 dereferenceable(256) %95, ptr noundef nonnull %552, double %565, double %567, double %563, double %564, i8 noundef zeroext 2, i16 noundef zeroext 1)
          to label %568 unwind label %589

568:                                              ; preds = %562
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %97) #11
  invoke void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %97, float noundef 2.000000e+01, float noundef 0.000000e+00, float noundef 0.000000e+00)
          to label %569 unwind label %593

569:                                              ; preds = %568
  %570 = getelementptr inbounds i8, ptr %95, i64 32
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 16 dereferenceable(16) %570, ptr noundef nonnull align 16 dereferenceable(16) %97, i64 16, i1 false), !tbaa.struct !36
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %97) #11
  %571 = getelementptr inbounds i8, ptr %95, i64 104
  store i8 1, ptr %571, align 8, !tbaa !38
  %572 = load ptr, ptr %111, align 8, !tbaa !5
  %573 = invoke i32 @_ZN3JPH13BodyInterface16CreateAndAddBodyERKNS_20BodyCreationSettingsENS_11EActivationE(ptr noundef nonnull align 8 dereferenceable(24) %572, ptr noundef nonnull align 16 dereferenceable(256) %95, i32 noundef 0)
          to label %574 unwind label %595

574:                                              ; preds = %569
  call void @_ZN3JPH20BodyCreationSettingsD2Ev(ptr noundef nonnull align 16 dereferenceable(256) %95) #11
  call void @llvm.lifetime.end.p0(i64 256, ptr nonnull %95) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %90) #11
  call void @_ZN3JPH17MeshShapeSettingsD2Ev(ptr noundef nonnull align 8 dereferenceable(152) %88) #11
  call void @llvm.lifetime.end.p0(i64 152, ptr nonnull %88) #11
  call void @_ZN3JPH5ArrayINS_8TriangleENS_12STLAllocatorIS1_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %81) #11
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %81) #11
  ret void

575:                                              ; preds = %454
  %576 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3JPH5ArrayINS_8RefConstINS_15PhysicsMaterialEEENS_12STLAllocatorIS3_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %89) #11
  br label %601

577:                                              ; preds = %534
  %578 = landingpad { ptr, i32 }
          cleanup
  br label %600

579:                                              ; preds = %541, %539, %537
  %580 = landingpad { ptr, i32 }
          cleanup
  br label %583

581:                                              ; preds = %547
  %582 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3JPH20BodyCreationSettingsD2Ev(ptr noundef nonnull align 16 dereferenceable(256) %91) #11
  br label %583

583:                                              ; preds = %581, %579
  %.pn184 = phi { ptr, i32 } [ %582, %581 ], [ %580, %579 ]
  call void @llvm.lifetime.end.p0(i64 256, ptr nonnull %91) #11
  br label %599

584:                                              ; preds = %549
  %585 = landingpad { ptr, i32 }
          cleanup
  br label %588

586:                                              ; preds = %550
  %587 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcEN3JPH12STLAllocatorIcEEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %93) #11
  br label %588

588:                                              ; preds = %586, %584
  %.pn186 = phi { ptr, i32 } [ %587, %586 ], [ %585, %584 ]
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %94) #11
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %93) #11
  br label %599

589:                                              ; preds = %562, %560, %558, %551
  %590 = landingpad { ptr, i32 }
          cleanup
  br label %598

591:                                              ; preds = %555, %553
  %592 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3JPH8BoxShapedlEPv(ptr noundef %552) #11
  br label %598

593:                                              ; preds = %568
  %594 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %97) #11
  br label %597

595:                                              ; preds = %569
  %596 = landingpad { ptr, i32 }
          cleanup
  br label %597

597:                                              ; preds = %595, %593
  %.pn188 = phi { ptr, i32 } [ %596, %595 ], [ %594, %593 ]
  call void @_ZN3JPH20BodyCreationSettingsD2Ev(ptr noundef nonnull align 16 dereferenceable(256) %95) #11
  br label %598

598:                                              ; preds = %597, %591, %589
  %.pn188.pn = phi { ptr, i32 } [ %.pn188, %597 ], [ %590, %589 ], [ %592, %591 ]
  call void @llvm.lifetime.end.p0(i64 256, ptr nonnull %95) #11
  br label %599

599:                                              ; preds = %598, %588, %583
  %.pn188.pn.pn = phi { ptr, i32 } [ %.pn188.pn, %598 ], [ %.pn186, %588 ], [ %.pn184, %583 ]
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %90) #11
  br label %600

600:                                              ; preds = %599, %577
  %.pn188.pn.pn.pn = phi { ptr, i32 } [ %.pn188.pn.pn, %599 ], [ %578, %577 ]
  call void @_ZN3JPH17MeshShapeSettingsD2Ev(ptr noundef nonnull align 8 dereferenceable(152) %88) #11
  br label %601

601:                                              ; preds = %600, %575
  %.pn188.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn188.pn.pn.pn, %600 ], [ %576, %575 ]
  call void @llvm.lifetime.end.p0(i64 152, ptr nonnull %88) #11
  br label %602

602:                                              ; preds = %601, %533
  %.pn194.pn = phi { ptr, i32 } [ %.pn194, %533 ], [ %.pn188.pn.pn.pn.pn, %601 ]
  call void @_ZN3JPH5ArrayINS_8TriangleENS_12STLAllocatorIS1_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %81) #11
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %81) #11
  br label %603

603:                                              ; preds = %602, %519, %498, %455, %257, %176
  %.pn204.pn.pn.pn = phi { ptr, i32 } [ %.pn204.pn.pn, %176 ], [ %.pn201.pn, %257 ], [ %.pn197.pn.pn, %455 ], [ %.pn194.pn, %602 ], [ %.pn178.pn.pn.pn.pn, %519 ], [ %.pn168.pn.pn.pn.pn.pn.pn.pn.pn, %498 ]
  resume { ptr, i32 } %.pn204.pn.pn.pn
}

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZN3JPH8TriangleC2ERKNS_6Float3ES3_S3_jj(ptr noundef nonnull align 4 dereferenceable(44), ptr noundef nonnull align 4 dereferenceable(12), ptr noundef nonnull align 4 dereferenceable(12), ptr noundef nonnull align 4 dereferenceable(12), i32 noundef, i32 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) #10

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

declare void @_ZN3JPH17MeshShapeSettingsC1ERKNS_5ArrayINS_8TriangleENS_12STLAllocatorIS2_EEEENS1_INS_8RefConstINS_15PhysicsMaterialEEENS3_ISA_EEEE(ptr noundef nonnull align 8 dereferenceable(152), ptr noundef nonnull align 8 dereferenceable(24), ptr noundef) unnamed_addr #7

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

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

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

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

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

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

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

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

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

; Function Attrs: alwaysinline mustprogress nounwind uwtable
declare dso_local noundef float @_ZN3JPH16DegreesToRadiansEf(float noundef) local_unnamed_addr #5

attributes #0 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #1 = { mustprogress uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #2 = { 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 #3 = { 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 #4 = { 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 #5 = { 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 #6 = { mustprogress nocallback nofree nounwind willreturn memory(argmem: readwrite) }
attributes #7 = { "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 = { 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 #10 = { mustprogress nocallback nofree nounwind willreturn memory(argmem: write) }
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, !7, i64 24}
!6 = !{!"_ZTS4Test", !7, i64 8, !7, i64 16, !7, i64 24, !7, i64 32, !7, i64 40, !10, i64 48, !11, i64 56}
!7 = !{!"any pointer", !8, i64 0}
!8 = !{!"omnipotent char", !9, i64 0}
!9 = !{!"Simple C++ TBAA"}
!10 = !{!"bool", !8, i64 0}
!11 = !{!"_ZTSSt13unordered_mapIN3JPH6BodyIDENSt7__cxx1112basic_stringIcSt11char_traitsIcENS0_12STLAllocatorIcEEEESt4hashIS1_ESt8equal_toIS1_ESaISt4pairIKS1_S8_EEE", !12, i64 0}
!12 = !{!"_ZTSSt10_HashtableIN3JPH6BodyIDESt4pairIKS1_NSt7__cxx1112basic_stringIcSt11char_traitsIcENS0_12STLAllocatorIcEEEEESaISB_ENSt8__detail10_Select1stESt8equal_toIS1_ESt4hashIS1_ENSD_18_Mod_range_hashingENSD_20_Default_ranged_hashENSD_20_Prime_rehash_policyENSD_17_Hashtable_traitsILb1ELb0ELb1EEEE", !7, i64 0, !13, i64 8, !14, i64 16, !13, i64 24, !15, i64 32, !7, i64 48}
!13 = !{!"long", !8, i64 0}
!14 = !{!"_ZTSNSt8__detail15_Hash_node_baseE", !7, i64 0}
!15 = !{!"_ZTSNSt8__detail20_Prime_rehash_policyE", !16, i64 0, !13, i64 8}
!16 = !{!"float", !8, i64 0}
!17 = distinct !{!17, !18}
!18 = !{!"llvm.loop.mustprogress"}
!19 = distinct !{!19, !18}
!20 = distinct !{!20, !18}
!21 = distinct !{!21, !18}
!22 = !{!23, !16, i64 140}
!23 = !{!"_ZTSN3JPH17MeshShapeSettingsE", !24, i64 0, !32, i64 64, !33, i64 88, !34, i64 112, !29, i64 136, !16, i64 140, !10, i64 144, !35, i64 148}
!24 = !{!"_ZTSN3JPH13ShapeSettingsE", !25, i64 0, !26, i64 8, !13, i64 16, !30, i64 24}
!25 = !{!"_ZTSN3JPH18SerializableObjectE"}
!26 = !{!"_ZTSN3JPH9RefTargetINS_13ShapeSettingsEEE", !27, i64 0}
!27 = !{!"_ZTSSt6atomicIjE", !28, i64 0}
!28 = !{!"_ZTSSt13__atomic_baseIjE", !29, i64 0}
!29 = !{!"int", !8, i64 0}
!30 = !{!"_ZTSN3JPH6ResultINS_3RefINS_5ShapeEEEEE", !8, i64 0, !31, i64 32}
!31 = !{!"_ZTSN3JPH6ResultINS_3RefINS_5ShapeEEEE6EStateE", !8, i64 0}
!32 = !{!"_ZTSN3JPH5ArrayINS_6Float3ENS_12STLAllocatorIS1_EEEE", !13, i64 0, !13, i64 8, !7, i64 16}
!33 = !{!"_ZTSN3JPH5ArrayINS_15IndexedTriangleENS_12STLAllocatorIS1_EEEE", !13, i64 0, !13, i64 8, !7, i64 16}
!34 = !{!"_ZTSN3JPH5ArrayINS_8RefConstINS_15PhysicsMaterialEEENS_12STLAllocatorIS3_EEEE", !13, i64 0, !13, i64 8, !7, i64 16}
!35 = !{!"_ZTSN3JPH17MeshShapeSettings13EBuildQualityE", !8, i64 0}
!36 = !{i64 0, i64 16, !37}
!37 = !{!8, !8, i64 0}
!38 = !{!39, !10, i64 104}
!39 = !{!"_ZTSN3JPH20BodyCreationSettingsE", !40, i64 0, !41, i64 16, !40, i64 32, !40, i64 48, !13, i64 64, !43, i64 72, !44, i64 80, !46, i64 96, !47, i64 97, !10, i64 98, !10, i64 99, !10, i64 100, !10, i64 101, !10, i64 102, !48, i64 103, !10, i64 104, !10, i64 105, !16, i64 108, !16, i64 112, !16, i64 116, !16, i64 120, !16, i64 124, !16, i64 128, !16, i64 132, !29, i64 136, !29, i64 140, !49, i64 144, !16, i64 148, !50, i64 160, !52, i64 240, !53, i64 248}
!40 = !{!"_ZTSN3JPH4Vec3E", !8, i64 0}
!41 = !{!"_ZTSN3JPH4QuatE", !42, i64 0}
!42 = !{!"_ZTSN3JPH4Vec4E", !8, i64 0}
!43 = !{!"short", !8, i64 0}
!44 = !{!"_ZTSN3JPH14CollisionGroupE", !45, i64 0, !29, i64 8, !29, i64 12}
!45 = !{!"_ZTSN3JPH8RefConstINS_11GroupFilterEEE", !7, i64 0}
!46 = !{!"_ZTSN3JPH11EMotionTypeE", !8, i64 0}
!47 = !{!"_ZTSN3JPH12EAllowedDOFsE", !8, i64 0}
!48 = !{!"_ZTSN3JPH14EMotionQualityE", !8, i64 0}
!49 = !{!"_ZTSN3JPH23EOverrideMassPropertiesE", !8, i64 0}
!50 = !{!"_ZTSN3JPH14MassPropertiesE", !16, i64 0, !51, i64 16}
!51 = !{!"_ZTSN3JPH5Mat44E", !8, i64 0}
!52 = !{!"_ZTSN3JPH8RefConstINS_13ShapeSettingsEEE", !7, i64 0}
!53 = !{!"_ZTSN3JPH8RefConstINS_5ShapeEEE", !7, i64 0}
!54 = !{!39, !16, i64 108}
!55 = !{!39, !49, i64 144}
!56 = !{!39, !16, i64 160}
!57 = !{!29, !29, i64 0}
!58 = distinct !{!58, !18}
!59 = distinct !{!59, !18}


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