; LLVM IR from jrouwe/JoltPhysics :: Samples/Tests/General/HighSpeedTest.ll (ZN13HighSpeedTest17CreateSimpleSceneEv)

; 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::Vec3" = type { %union.anon }
%union.anon = type { <4 x float> }
%"class.JPH::Array" = type { i64, i64, ptr }
%"class.JPH::Triangle" = type { [3 x %"class.JPH::Float3"], i32, i32 }
%"class.JPH::Float3" = type { float, float, float }
%"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::RefConst.6" = type { ptr }
%"class.JPH::Array.22" = type { i64, i64, ptr }
%"class.JPH::Ref.25" = type { ptr }
%"class.JPH::Ref.26" = type { ptr }
%"class.JPH::BodyID" = type { i32 }
%"class.JPH::BoxShapeSettings" = type <{ %"class.JPH::ConvexShapeSettings.base", [4 x i8], %"class.JPH::Vec3", float, [12 x i8] }>
%"class.JPH::ConvexShapeSettings.base" = type <{ %"class.JPH::ShapeSettings", %"class.JPH::RefConst.7", float }>
%"class.JPH::ShapeSettings" = type { %"class.JPH::SerializableObject", %"class.JPH::RefTarget.10", i64, %"class.JPH::Result" }
%"class.JPH::SerializableObject" = type { ptr }
%"class.JPH::RefTarget.10" = type { %"struct.std::atomic" }
%"struct.std::atomic" = type { %"struct.std::__atomic_base" }
%"struct.std::__atomic_base" = type { i32 }
%"class.JPH::Result" = type <{ %union.anon.11, i8, [7 x i8] }>
%union.anon.11 = 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.15 }
%"struct.std::__cxx11::basic_string<char, std::char_traits<char>, JPH::STLAllocator<char>>::_Alloc_hider" = type { ptr }
%union.anon.15 = type { i64, [8 x i8] }
%"class.JPH::RefConst.7" = type { ptr }
%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 }

; 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 @_ZN13HighSpeedTest18CreateDominoBlocksEN3JPH4Vec3Eiff(ptr noundef nonnull align 8 dereferenceable(112), double, double, i32 noundef, float noundef, float noundef) #1 align 2

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

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

; Function Attrs: alwaysinline mustprogress uwtable
declare dso_local void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16), float noundef, float noundef, float noundef) unnamed_addr #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) #4 align 2

; Function Attrs: alwaysinline mustprogress uwtable
declare dso_local { double, double } @_ZNK3JPH4Vec3plES0_(ptr noundef nonnull align 16 dereferenceable(16), double, double) #3 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) #5

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN13HighSpeedTest19CreateDynamicObjectEN3JPH4Vec3ES1_PNS0_5ShapeENS0_14EMotionQualityE(ptr noundef nonnull align 8 dereferenceable(112), double, double, double, double, ptr noundef, i8 noundef zeroext) #1 align 2

declare noundef ptr @_ZN3JPH13BodyInterface10CreateBodyERKNS_20BodyCreationSettingsE(ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 16 dereferenceable(256)) #6

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN3JPH4Body17SetLinearVelocityENS_4Vec3E(ptr noundef nonnull align 16 dereferenceable(122), double, double) #1 align 2

declare void @_ZN3JPH13BodyInterface7AddBodyERKNS_6BodyIDENS_11EActivationE(ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 4 dereferenceable(4), i32 noundef) #6

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef nonnull align 4 dereferenceable(4) ptr @_ZNK3JPH4Body5GetIDEv(ptr noundef nonnull align 16 dereferenceable(122)) #7 align 2

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN13HighSpeedTest17CreateSimpleSceneEv(ptr noundef nonnull align 8 dereferenceable(112) %0) #1 align 2 personality ptr @__gxx_personality_v0 {
  %2 = alloca ptr, align 8
  %3 = alloca float, align 4
  %4 = alloca i32, align 4
  %5 = alloca float, align 4
  %6 = alloca float, align 4
  %7 = alloca %"class.JPH::Vec3", align 16
  %8 = alloca %"class.JPH::Array", align 8
  %9 = alloca i32, align 4
  %10 = alloca %"class.JPH::Triangle", align 4
  %11 = alloca %"class.JPH::Float3", align 4
  %12 = alloca ptr, align 8
  %13 = alloca i32, 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::Float3", align 4
  %18 = alloca %"class.JPH::Float3", align 4
  %19 = alloca %"class.JPH::Float3", align 4
  %20 = alloca %"class.JPH::Triangle", align 4
  %21 = alloca %"class.JPH::Float3", align 4
  %22 = alloca %"class.JPH::Float3", align 4
  %23 = alloca %"class.JPH::Float3", align 4
  %24 = alloca ptr, align 8
  %25 = alloca %"class.JPH::BodyCreationSettings", align 16
  %26 = alloca %"class.JPH::Array.22", align 8
  %27 = alloca i1, align 1
  %28 = alloca %"class.JPH::Vec3", align 16
  %29 = alloca %"class.JPH::Quat", align 16
  %30 = alloca %"class.JPH::Vec3", align 16
  %31 = alloca %"class.JPH::Vec3", align 16
  %32 = alloca %"class.JPH::Vec3", align 16
  %33 = alloca %"class.JPH::Vec3", align 16
  %34 = alloca %"class.JPH::Vec3", align 16
  %35 = alloca %"class.JPH::Vec3", align 16
  %36 = alloca %"class.JPH::Vec3", align 16
  %37 = alloca %"class.JPH::Vec3", align 16
  %38 = alloca %"class.JPH::Vec3", align 16
  %39 = alloca %"class.JPH::Vec3", align 16
  %40 = alloca %"class.JPH::Vec3", align 16
  %41 = alloca %"class.JPH::Vec3", align 16
  %42 = alloca %"class.JPH::Vec3", align 16
  %43 = alloca %"class.JPH::Vec3", align 16
  %44 = alloca %"class.JPH::Vec3", align 16
  %45 = alloca %"class.JPH::Vec3", align 16
  %46 = alloca %"class.JPH::Vec3", align 16
  %47 = alloca %"class.JPH::Vec3", align 16
  %48 = alloca %"class.JPH::Vec3", align 16
  %49 = alloca %"class.JPH::Vec3", align 16
  %50 = alloca %"class.JPH::Vec3", align 16
  %51 = alloca %"class.JPH::Vec3", align 16
  %52 = alloca %"class.JPH::Vec3", align 16
  %53 = alloca %"class.JPH::Vec3", align 16
  %54 = alloca %"class.JPH::Vec3", align 16
  %55 = alloca %"class.JPH::BodyCreationSettings", align 16
  %56 = alloca %"class.JPH::Ref.25", align 8
  %57 = alloca %"class.JPH::Vec3", align 16
  %58 = alloca %"class.JPH::Ref.26", align 8
  %59 = alloca %"class.JPH::Vec3", align 16
  %60 = alloca %"class.JPH::Quat", align 16
  %61 = alloca %"class.JPH::Vec3", align 16
  %62 = alloca %"class.JPH::Quat", align 16
  %63 = alloca %"class.JPH::Vec3", align 16
  %64 = alloca %"class.JPH::Quat", align 16
  %65 = alloca %"class.JPH::Vec3", align 16
  %66 = alloca %"class.JPH::Vec3", align 16
  %67 = alloca %"class.JPH::Quat", align 16
  %68 = alloca %"class.JPH::Vec3", align 16
  %69 = alloca %"class.JPH::Vec3", align 16
  %70 = alloca %"class.JPH::Vec3", align 16
  %71 = alloca %"class.JPH::BodyID", align 4
  %72 = alloca %"class.JPH::Vec3", align 16
  %73 = alloca %"class.JPH::Vec3", align 16
  %74 = alloca %"class.JPH::Vec3", align 16
  %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::Vec3", align 16
  %80 = alloca %"class.JPH::Vec3", align 16
  %81 = alloca %"class.JPH::Vec3", align 16
  %82 = alloca %"class.JPH::Vec3", align 16
  %83 = alloca %"class.JPH::Vec3", align 16
  %84 = alloca %"class.JPH::Vec3", align 16
  %85 = alloca %"class.JPH::Vec3", align 16
  %86 = alloca %"class.JPH::Vec3", align 16
  %87 = alloca %"class.JPH::Vec3", align 16
  %88 = alloca %"class.JPH::Vec3", align 16
  %89 = alloca %"class.JPH::Vec3", align 16
  %90 = alloca %"class.JPH::Vec3", align 16
  %91 = alloca %"class.JPH::Vec3", align 16
  %92 = alloca %"class.JPH::Vec3", align 16
  %93 = alloca %"class.JPH::Vec3", align 16
  %94 = alloca %"class.JPH::Vec3", align 16
  %95 = alloca %"class.JPH::Vec3", align 16
  %96 = alloca %"class.JPH::Vec3", align 16
  %97 = alloca %"class.JPH::Vec3", align 16
  %98 = alloca %"class.JPH::Vec3", align 16
  %99 = alloca %"class.JPH::Vec3", align 16
  %100 = alloca %"class.JPH::Vec3", align 16
  %101 = alloca %"class.JPH::Vec3", align 16
  %102 = alloca %"class.JPH::Vec3", align 16
  %103 = alloca %"class.JPH::Vec3", align 16
  %104 = alloca %"class.JPH::Vec3", align 16
  %105 = alloca %"class.JPH::Vec3", align 16
  %106 = alloca %"class.JPH::Vec3", align 16
  %107 = alloca %"class.JPH::Vec3", align 16
  %108 = alloca %"class.JPH::Vec3", align 16
  %109 = alloca %"class.JPH::Vec3", align 16
  %110 = alloca %"class.JPH::Vec3", align 16
  %111 = alloca %"class.JPH::Vec3", align 16
  %112 = alloca %"class.JPH::Vec3", align 16
  %113 = alloca %"class.JPH::Vec3", align 16
  %114 = alloca %"class.JPH::Vec3", align 16
  %115 = alloca %"class.JPH::Vec3", align 16
  %116 = alloca %"class.JPH::Vec3", align 16
  %117 = alloca %"class.JPH::Vec3", align 16
  %118 = alloca %"class.JPH::Vec3", align 16
  %119 = alloca %"class.JPH::Vec3", align 16
  %120 = alloca %"class.JPH::Vec3", align 16
  %121 = alloca %"class.JPH::BoxShapeSettings", align 16
  %122 = alloca %"class.JPH::Vec3", align 16
  %123 = alloca %"class.JPH::BodyCreationSettings", align 16
  %124 = alloca %"class.JPH::Vec3", align 16
  %125 = alloca %"class.JPH::Vec3", align 16
  %126 = alloca %"class.JPH::Quat", align 16
  %127 = alloca %"class.JPH::Vec3", align 16
  %128 = alloca ptr, align 8
  %129 = alloca %"class.JPH::Vec3", align 16
  %130 = alloca %"class.JPH::Vec3", align 16
  %131 = alloca %"class.JPH::BoxShapeSettings", align 16
  %132 = alloca %"class.JPH::Vec3", align 16
  %133 = alloca %"class.JPH::BodyCreationSettings", align 16
  %134 = alloca %"class.JPH::Vec3", align 16
  %135 = alloca %"class.JPH::Vec3", align 16
  %136 = alloca %"class.JPH::Quat", align 16
  %137 = alloca %"class.JPH::Vec3", align 16
  %138 = alloca ptr, align 8
  %139 = alloca %"class.JPH::Vec3", align 16
  %140 = alloca %"class.JPH::Vec3", align 16
  %141 = alloca %"class.JPH::BoxShapeSettings", align 16
  %142 = alloca %"class.JPH::Vec3", align 16
  %143 = alloca %"class.JPH::BodyCreationSettings", align 16
  %144 = alloca %"class.JPH::Vec3", align 16
  %145 = alloca %"class.JPH::Vec3", align 16
  %146 = alloca %"class.JPH::Quat", align 16
  %147 = alloca %"class.JPH::Vec3", align 16
  %148 = alloca ptr, align 8
  %149 = alloca %"class.JPH::Vec3", align 16
  %150 = alloca %"class.JPH::Vec3", align 16
  %151 = alloca %"class.JPH::BoxShapeSettings", align 16
  %152 = alloca %"class.JPH::Vec3", align 16
  %153 = alloca %"class.JPH::BodyCreationSettings", align 16
  %154 = alloca %"class.JPH::Vec3", align 16
  %155 = alloca %"class.JPH::Vec3", align 16
  %156 = alloca %"class.JPH::Quat", align 16
  %157 = alloca %"class.JPH::Vec3", align 16
  %158 = alloca ptr, align 8
  %159 = alloca %"class.JPH::Vec3", align 16
  store ptr %0, ptr %2, align 8, !tbaa !5
  %160 = load ptr, ptr %2, align 8
  %161 = call noundef nonnull align 16 dereferenceable(122) ptr @_ZN4Test11CreateFloorEf(ptr noundef nonnull align 8 dereferenceable(112) %160, float noundef 2.000000e+02)
  call void @llvm.lifetime.start.p0(i64 4, ptr %3) #13
  store float 0x3FB99999A0000000, ptr %3, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %4) #13
  store i32 5, ptr %4, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 4, ptr %5) #13
  store float 2.000000e+03, ptr %5, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %6) #13
  store float 2.400000e+02, ptr %6, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 16, ptr %7) #13
  call void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %7, float noundef 0.000000e+00, float noundef 0.000000e+00, float noundef -3.000000e+01)
  call void @llvm.lifetime.start.p0(i64 24, ptr %8) #13
  call void @_ZN3JPH5ArrayINS_8TriangleENS_12STLAllocatorIS1_EEEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %8) #13
  call void @llvm.lifetime.start.p0(i64 4, ptr %9) #13
  store i32 0, ptr %9, align 4, !tbaa !11
  br label %162

162:                                              ; preds = %195, %1
  %163 = load i32, ptr %9, align 4, !tbaa !11
  %164 = icmp slt i32 %163, 5
  br i1 %164, label %166, label %165

165:                                              ; preds = %162
  call void @llvm.lifetime.end.p0(i64 4, ptr %9) #13
  br label %227

166:                                              ; preds = %162
  call void @llvm.lifetime.start.p0(i64 44, ptr %10) #13
  call void @llvm.lifetime.start.p0(i64 12, ptr %11) #13
  %167 = load i32, ptr %9, align 4, !tbaa !11
  %168 = sitofp i32 %167 to float
  %169 = call float @llvm.fmuladd.f32(float 2.000000e+00, float %168, float -1.000000e+00)
  invoke void @_ZN3JPH6Float3C2Efff(ptr noundef nonnull align 4 dereferenceable(12) %11, float noundef %169, float noundef 0.000000e+00, float noundef 0xBFF19999A0000000)
          to label %170 unwind label %198

170:                                              ; preds = %166
  call void @llvm.lifetime.start.p0(i64 12, ptr %14) #13
  %171 = load i32, ptr %9, align 4, !tbaa !11
  %172 = sitofp i32 %171 to float
  %173 = call float @llvm.fmuladd.f32(float 2.000000e+00, float %172, float 1.000000e+00)
  invoke void @_ZN3JPH6Float3C2Efff(ptr noundef nonnull align 4 dereferenceable(12) %14, float noundef %173, float noundef 0.000000e+00, float noundef 0xBFF19999A0000000)
          to label %174 unwind label %202

174:                                              ; preds = %170
  call void @llvm.lifetime.start.p0(i64 12, ptr %15) #13
  %175 = load i32, ptr %9, align 4, !tbaa !11
  %176 = sitofp i32 %175 to float
  %177 = fmul float 2.000000e+00, %176
  invoke void @_ZN3JPH6Float3C2Efff(ptr noundef nonnull align 4 dereferenceable(12) %15, float noundef %177, float noundef 2.000000e+00, float noundef 0xBFF19999A0000000)
          to label %178 unwind label %206

178:                                              ; preds = %174
  invoke void @_ZN3JPH8TriangleC2ERKNS_6Float3ES3_S3_jj(ptr noundef nonnull align 4 dereferenceable(44) %10, ptr noundef nonnull align 4 dereferenceable(12) %11, ptr noundef nonnull align 4 dereferenceable(12) %14, ptr noundef nonnull align 4 dereferenceable(12) %15, i32 noundef 0, i32 noundef 0)
          to label %179 unwind label %206

179:                                              ; preds = %178
  invoke void @_ZN3JPH5ArrayINS_8TriangleENS_12STLAllocatorIS1_EEE9push_backEOS1_(ptr noundef nonnull align 8 dereferenceable(24) %8, ptr noundef nonnull align 4 dereferenceable(44) %10)
          to label %180 unwind label %206

180:                                              ; preds = %179
  call void @llvm.lifetime.end.p0(i64 12, ptr %15) #13
  call void @llvm.lifetime.end.p0(i64 12, ptr %14) #13
  call void @llvm.lifetime.end.p0(i64 12, ptr %11) #13
  call void @llvm.lifetime.end.p0(i64 44, ptr %10) #13
  call void @llvm.lifetime.start.p0(i64 44, ptr %16) #13
  call void @llvm.lifetime.start.p0(i64 12, ptr %17) #13
  %181 = load i32, ptr %9, align 4, !tbaa !11
  %182 = sitofp i32 %181 to float
  %183 = call float @llvm.fmuladd.f32(float 2.000000e+00, float %182, float -1.000000e+00)
  invoke void @_ZN3JPH6Float3C2Efff(ptr noundef nonnull align 4 dereferenceable(12) %17, float noundef %183, float noundef 0.000000e+00, float noundef 0x3FF19999A0000000)
          to label %184 unwind label %212

184:                                              ; preds = %180
  call void @llvm.lifetime.start.p0(i64 12, ptr %18) #13
  %185 = load i32, ptr %9, align 4, !tbaa !11
  %186 = sitofp i32 %185 to float
  %187 = fmul float 2.000000e+00, %186
  invoke void @_ZN3JPH6Float3C2Efff(ptr noundef nonnull align 4 dereferenceable(12) %18, float noundef %187, float noundef 2.000000e+00, float noundef 0x3FF19999A0000000)
          to label %188 unwind label %216

188:                                              ; preds = %184
  call void @llvm.lifetime.start.p0(i64 12, ptr %19) #13
  %189 = load i32, ptr %9, align 4, !tbaa !11
  %190 = sitofp i32 %189 to float
  %191 = call float @llvm.fmuladd.f32(float 2.000000e+00, float %190, float 1.000000e+00)
  invoke void @_ZN3JPH6Float3C2Efff(ptr noundef nonnull align 4 dereferenceable(12) %19, float noundef %191, float noundef 0.000000e+00, float noundef 0x3FF19999A0000000)
          to label %192 unwind label %220

192:                                              ; preds = %188
  invoke void @_ZN3JPH8TriangleC2ERKNS_6Float3ES3_S3_jj(ptr noundef nonnull align 4 dereferenceable(44) %16, ptr noundef nonnull align 4 dereferenceable(12) %17, ptr noundef nonnull align 4 dereferenceable(12) %18, ptr noundef nonnull align 4 dereferenceable(12) %19, i32 noundef 0, i32 noundef 0)
          to label %193 unwind label %220

193:                                              ; preds = %192
  invoke void @_ZN3JPH5ArrayINS_8TriangleENS_12STLAllocatorIS1_EEE9push_backEOS1_(ptr noundef nonnull align 8 dereferenceable(24) %8, ptr noundef nonnull align 4 dereferenceable(44) %16)
          to label %194 unwind label %220

194:                                              ; preds = %193
  call void @llvm.lifetime.end.p0(i64 12, ptr %19) #13
  call void @llvm.lifetime.end.p0(i64 12, ptr %18) #13
  call void @llvm.lifetime.end.p0(i64 12, ptr %17) #13
  call void @llvm.lifetime.end.p0(i64 44, ptr %16) #13
  br label %195

195:                                              ; preds = %194
  %196 = load i32, ptr %9, align 4, !tbaa !11
  %197 = add nsw i32 %196, 1
  store i32 %197, ptr %9, align 4, !tbaa !11
  br label %162, !llvm.loop !13

198:                                              ; preds = %166
  %199 = landingpad { ptr, i32 }
          cleanup
  %200 = extractvalue { ptr, i32 } %199, 0
  store ptr %200, ptr %12, align 8
  %201 = extractvalue { ptr, i32 } %199, 1
  store i32 %201, ptr %13, align 4
  br label %211

202:                                              ; preds = %170
  %203 = landingpad { ptr, i32 }
          cleanup
  %204 = extractvalue { ptr, i32 } %203, 0
  store ptr %204, ptr %12, align 8
  %205 = extractvalue { ptr, i32 } %203, 1
  store i32 %205, ptr %13, align 4
  br label %210

206:                                              ; preds = %179, %178, %174
  %207 = landingpad { ptr, i32 }
          cleanup
  %208 = extractvalue { ptr, i32 } %207, 0
  store ptr %208, ptr %12, align 8
  %209 = extractvalue { ptr, i32 } %207, 1
  store i32 %209, ptr %13, align 4
  call void @llvm.lifetime.end.p0(i64 12, ptr %15) #13
  br label %210

210:                                              ; preds = %206, %202
  call void @llvm.lifetime.end.p0(i64 12, ptr %14) #13
  br label %211

211:                                              ; preds = %210, %198
  call void @llvm.lifetime.end.p0(i64 12, ptr %11) #13
  call void @llvm.lifetime.end.p0(i64 44, ptr %10) #13
  br label %226

212:                                              ; preds = %180
  %213 = landingpad { ptr, i32 }
          cleanup
  %214 = extractvalue { ptr, i32 } %213, 0
  store ptr %214, ptr %12, align 8
  %215 = extractvalue { ptr, i32 } %213, 1
  store i32 %215, ptr %13, align 4
  br label %225

216:                                              ; preds = %184
  %217 = landingpad { ptr, i32 }
          cleanup
  %218 = extractvalue { ptr, i32 } %217, 0
  store ptr %218, ptr %12, align 8
  %219 = extractvalue { ptr, i32 } %217, 1
  store i32 %219, ptr %13, align 4
  br label %224

220:                                              ; preds = %193, %192, %188
  %221 = landingpad { ptr, i32 }
          cleanup
  %222 = extractvalue { ptr, i32 } %221, 0
  store ptr %222, ptr %12, align 8
  %223 = extractvalue { ptr, i32 } %221, 1
  store i32 %223, ptr %13, align 4
  call void @llvm.lifetime.end.p0(i64 12, ptr %19) #13
  br label %224

224:                                              ; preds = %220, %216
  call void @llvm.lifetime.end.p0(i64 12, ptr %18) #13
  br label %225

225:                                              ; preds = %224, %212
  call void @llvm.lifetime.end.p0(i64 12, ptr %17) #13
  call void @llvm.lifetime.end.p0(i64 44, ptr %16) #13
  br label %226

226:                                              ; preds = %225, %211
  call void @llvm.lifetime.end.p0(i64 4, ptr %9) #13
  br label %1357

227:                                              ; preds = %165
  call void @llvm.lifetime.start.p0(i64 44, ptr %20) #13
  call void @llvm.lifetime.start.p0(i64 12, ptr %21) #13
  invoke void @_ZN3JPH6Float3C2Efff(ptr noundef nonnull align 4 dereferenceable(12) %21, float noundef 0xBFF19999A0000000, float noundef 0.000000e+00, float noundef -1.000000e+00)
          to label %228 unwind label %1317

228:                                              ; preds = %227
  call void @llvm.lifetime.start.p0(i64 12, ptr %22) #13
  invoke void @_ZN3JPH6Float3C2Efff(ptr noundef nonnull align 4 dereferenceable(12) %22, float noundef 0xBFF19999A0000000, float noundef 2.000000e+00, float noundef 0.000000e+00)
          to label %229 unwind label %1321

229:                                              ; preds = %228
  call void @llvm.lifetime.start.p0(i64 12, ptr %23) #13
  invoke void @_ZN3JPH6Float3C2Efff(ptr noundef nonnull align 4 dereferenceable(12) %23, float noundef 0xBFF19999A0000000, float noundef 0.000000e+00, float noundef 1.000000e+00)
          to label %230 unwind label %1325

230:                                              ; preds = %229
  invoke void @_ZN3JPH8TriangleC2ERKNS_6Float3ES3_S3_jj(ptr noundef nonnull align 4 dereferenceable(44) %20, ptr noundef nonnull align 4 dereferenceable(12) %21, ptr noundef nonnull align 4 dereferenceable(12) %22, ptr noundef nonnull align 4 dereferenceable(12) %23, i32 noundef 0, i32 noundef 0)
          to label %231 unwind label %1325

231:                                              ; preds = %230
  invoke void @_ZN3JPH5ArrayINS_8TriangleENS_12STLAllocatorIS1_EEE9push_backEOS1_(ptr noundef nonnull align 8 dereferenceable(24) %8, ptr noundef nonnull align 4 dereferenceable(44) %20)
          to label %232 unwind label %1325

232:                                              ; preds = %231
  call void @llvm.lifetime.end.p0(i64 12, ptr %23) #13
  call void @llvm.lifetime.end.p0(i64 12, ptr %22) #13
  call void @llvm.lifetime.end.p0(i64 12, ptr %21) #13
  call void @llvm.lifetime.end.p0(i64 44, ptr %20) #13
  call void @llvm.lifetime.start.p0(i64 8, ptr %24) #13
  %233 = getelementptr inbounds %class.Test, ptr %160, i32 0, i32 3
  %234 = load ptr, ptr %233, align 8, !tbaa !15
  call void @llvm.lifetime.start.p0(i64 256, ptr %25) #13
  %235 = invoke noundef ptr @_ZN3JPH17MeshShapeSettingsnwEm(i64 noundef 152)
          to label %236 unwind label %1331

236:                                              ; preds = %232
  store i1 true, ptr %27, align 1
  call void @llvm.memset.p0.i64(ptr align 8 %26, i8 0, i64 24, i1 false)
  call void @_ZN3JPH5ArrayINS_8RefConstINS_15PhysicsMaterialEEENS_12STLAllocatorIS3_EEEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %26) #13
  invoke void @_ZN3JPH17MeshShapeSettingsC1ERKNS_5ArrayINS_8TriangleENS_12STLAllocatorIS2_EEEENS1_INS_8RefConstINS_15PhysicsMaterialEEENS3_ISA_EEEE(ptr noundef nonnull align 8 dereferenceable(152) %235, ptr noundef nonnull align 8 dereferenceable(24) %8, ptr noundef %26)
          to label %237 unwind label %1335

237:                                              ; preds = %236
  store i1 false, ptr %27, align 1
  call void @llvm.memcpy.p0.p0.i64(ptr align 16 %28, ptr align 16 %7, i64 16, i1 false), !tbaa.struct !23
  %238 = invoke { double, double } @_ZN3JPH4Quat9sIdentityEv()
          to label %239 unwind label %1335

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

255:                                              ; preds = %239
  %256 = invoke noundef ptr @_ZN3JPH13BodyInterface10CreateBodyERKNS_20BodyCreationSettingsE(ptr noundef nonnull align 8 dereferenceable(24) %234, ptr noundef nonnull align 16 dereferenceable(256) %25)
          to label %257 unwind label %1339

257:                                              ; preds = %255
  call void @_ZN3JPH20BodyCreationSettingsD2Ev(ptr noundef nonnull align 16 dereferenceable(256) %25) #13
  call void @_ZN3JPH5ArrayINS_8RefConstINS_15PhysicsMaterialEEENS_12STLAllocatorIS3_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %26) #13
  call void @llvm.lifetime.end.p0(i64 256, ptr %25) #13
  store ptr %256, ptr %24, align 8, !tbaa !5
  %258 = load ptr, ptr %24, align 8, !tbaa !5
  invoke void @_ZN3JPH4Body14SetRestitutionEf(ptr noundef nonnull align 16 dereferenceable(122) %258, float noundef 1.000000e+00)
          to label %259 unwind label %1348

259:                                              ; preds = %257
  %260 = load ptr, ptr %24, align 8, !tbaa !5
  invoke void @_ZN3JPH4Body11SetFrictionEf(ptr noundef nonnull align 16 dereferenceable(122) %260, float noundef 0.000000e+00)
          to label %261 unwind label %1348

261:                                              ; preds = %259
  %262 = getelementptr inbounds %class.Test, ptr %160, i32 0, i32 3
  %263 = load ptr, ptr %262, align 8, !tbaa !15
  %264 = load ptr, ptr %24, align 8, !tbaa !5
  %265 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZNK3JPH4Body5GetIDEv(ptr noundef nonnull align 16 dereferenceable(122) %264)
          to label %266 unwind label %1348

266:                                              ; preds = %261
  invoke void @_ZN3JPH13BodyInterface7AddBodyERKNS_6BodyIDENS_11EActivationE(ptr noundef nonnull align 8 dereferenceable(24) %263, ptr noundef nonnull align 4 dereferenceable(4) %265, i32 noundef 1)
          to label %267 unwind label %1348

267:                                              ; preds = %266
  invoke void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %31, float noundef 9.000000e+00, float noundef 1.000000e+00, float noundef 0.000000e+00)
          to label %268 unwind label %1348

268:                                              ; preds = %267
  %269 = getelementptr inbounds { double, double }, ptr %31, i32 0, i32 0
  %270 = load double, ptr %269, align 16
  %271 = getelementptr inbounds { double, double }, ptr %31, i32 0, i32 1
  %272 = load double, ptr %271, align 8
  %273 = invoke { double, double } @_ZNK3JPH4Vec3plES0_(ptr noundef nonnull align 16 dereferenceable(16) %7, double %270, double %272)
          to label %274 unwind label %1348

274:                                              ; preds = %268
  %275 = getelementptr inbounds %"class.JPH::Vec3", ptr %30, i32 0, i32 0
  %276 = getelementptr inbounds %union.anon, ptr %275, i32 0, i32 0
  %277 = getelementptr inbounds { double, double }, ptr %276, i32 0, i32 0
  %278 = extractvalue { double, double } %273, 0
  store double %278, ptr %277, align 16
  %279 = getelementptr inbounds { double, double }, ptr %276, i32 0, i32 1
  %280 = extractvalue { double, double } %273, 1
  store double %280, ptr %279, align 8
  invoke void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %32, float noundef -2.400000e+02, float noundef 0.000000e+00, float noundef -2.400000e+02)
          to label %281 unwind label %1348

281:                                              ; preds = %274
  %282 = invoke noundef ptr @_ZN3JPH11SphereShapenwEm(i64 noundef 48)
          to label %283 unwind label %1348

283:                                              ; preds = %281
  invoke void @_ZN3JPH11SphereShapeC2EfPKNS_15PhysicsMaterialE(ptr noundef nonnull align 8 dereferenceable(48) %282, float noundef 0x3FB99999A0000000, ptr noundef null)
          to label %284 unwind label %1352

284:                                              ; preds = %283
  %285 = getelementptr inbounds { double, double }, ptr %30, i32 0, i32 0
  %286 = load double, ptr %285, align 16
  %287 = getelementptr inbounds { double, double }, ptr %30, i32 0, i32 1
  %288 = load double, ptr %287, align 8
  %289 = getelementptr inbounds { double, double }, ptr %32, i32 0, i32 0
  %290 = load double, ptr %289, align 16
  %291 = getelementptr inbounds { double, double }, ptr %32, i32 0, i32 1
  %292 = load double, ptr %291, align 8
  invoke void @_ZN13HighSpeedTest19CreateDynamicObjectEN3JPH4Vec3ES1_PNS0_5ShapeENS0_14EMotionQualityE(ptr noundef nonnull align 8 dereferenceable(112) %160, double %286, double %288, double %290, double %292, ptr noundef %282, i8 noundef zeroext 1)
          to label %293 unwind label %1348

293:                                              ; preds = %284
  call void @llvm.lifetime.end.p0(i64 8, ptr %24) #13
  call void @_ZN3JPH5ArrayINS_8TriangleENS_12STLAllocatorIS1_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %8) #13
  call void @llvm.lifetime.end.p0(i64 24, ptr %8) #13
  call void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %33, float noundef 0.000000e+00, float noundef 0.000000e+00, float noundef 5.000000e+00)
  %294 = getelementptr inbounds { double, double }, ptr %33, i32 0, i32 0
  %295 = load double, ptr %294, align 16
  %296 = getelementptr inbounds { double, double }, ptr %33, i32 0, i32 1
  %297 = load double, ptr %296, align 8
  %298 = call noundef nonnull align 16 dereferenceable(16) ptr @_ZN3JPH4Vec3pLES0_(ptr noundef nonnull align 16 dereferenceable(16) %7, double %295, double %297)
  call void @llvm.memcpy.p0.p0.i64(ptr align 16 %34, ptr align 16 %7, i64 16, i1 false), !tbaa.struct !23
  %299 = getelementptr inbounds { double, double }, ptr %34, i32 0, i32 0
  %300 = load double, ptr %299, align 16
  %301 = getelementptr inbounds { double, double }, ptr %34, i32 0, i32 1
  %302 = load double, ptr %301, align 8
  call void @_ZN13HighSpeedTest18CreateDominoBlocksEN3JPH4Vec3Eiff(ptr noundef nonnull align 8 dereferenceable(112) %160, double %300, double %302, i32 noundef 5, float noundef 2.000000e+03, float noundef 0x3FB99999A0000000)
  call void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %36, float noundef 9.000000e+00, float noundef 1.000000e+00, float noundef 0.000000e+00)
  %303 = getelementptr inbounds { double, double }, ptr %36, i32 0, i32 0
  %304 = load double, ptr %303, align 16
  %305 = getelementptr inbounds { double, double }, ptr %36, i32 0, i32 1
  %306 = load double, ptr %305, align 8
  %307 = call { double, double } @_ZNK3JPH4Vec3plES0_(ptr noundef nonnull align 16 dereferenceable(16) %7, double %304, double %306)
  %308 = getelementptr inbounds %"class.JPH::Vec3", ptr %35, i32 0, i32 0
  %309 = getelementptr inbounds %union.anon, ptr %308, i32 0, i32 0
  %310 = getelementptr inbounds { double, double }, ptr %309, i32 0, i32 0
  %311 = extractvalue { double, double } %307, 0
  store double %311, ptr %310, align 16
  %312 = getelementptr inbounds { double, double }, ptr %309, i32 0, i32 1
  %313 = extractvalue { double, double } %307, 1
  store double %313, ptr %312, align 8
  call void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %37, float noundef -2.400000e+02, float noundef 0.000000e+00, float noundef -2.400000e+02)
  %314 = call noundef ptr @_ZN3JPH11SphereShapenwEm(i64 noundef 48)
  invoke void @_ZN3JPH11SphereShapeC2EfPKNS_15PhysicsMaterialE(ptr noundef nonnull align 8 dereferenceable(48) %314, float noundef 0x3FB99999A0000000, ptr noundef null)
          to label %315 unwind label %1358

315:                                              ; preds = %293
  %316 = getelementptr inbounds { double, double }, ptr %35, i32 0, i32 0
  %317 = load double, ptr %316, align 16
  %318 = getelementptr inbounds { double, double }, ptr %35, i32 0, i32 1
  %319 = load double, ptr %318, align 8
  %320 = getelementptr inbounds { double, double }, ptr %37, i32 0, i32 0
  %321 = load double, ptr %320, align 16
  %322 = getelementptr inbounds { double, double }, ptr %37, i32 0, i32 1
  %323 = load double, ptr %322, align 8
  call void @_ZN13HighSpeedTest19CreateDynamicObjectEN3JPH4Vec3ES1_PNS0_5ShapeENS0_14EMotionQualityE(ptr noundef nonnull align 8 dereferenceable(112) %160, double %317, double %319, double %321, double %323, ptr noundef %314, i8 noundef zeroext 1)
  call void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %38, float noundef 0.000000e+00, float noundef 0.000000e+00, float noundef 5.000000e+00)
  %324 = getelementptr inbounds { double, double }, ptr %38, i32 0, i32 0
  %325 = load double, ptr %324, align 16
  %326 = getelementptr inbounds { double, double }, ptr %38, i32 0, i32 1
  %327 = load double, ptr %326, align 8
  %328 = call noundef nonnull align 16 dereferenceable(16) ptr @_ZN3JPH4Vec3pLES0_(ptr noundef nonnull align 16 dereferenceable(16) %7, double %325, double %327)
  call void @llvm.memcpy.p0.p0.i64(ptr align 16 %39, ptr align 16 %7, i64 16, i1 false), !tbaa.struct !23
  %329 = getelementptr inbounds { double, double }, ptr %39, i32 0, i32 0
  %330 = load double, ptr %329, align 16
  %331 = getelementptr inbounds { double, double }, ptr %39, i32 0, i32 1
  %332 = load double, ptr %331, align 8
  call void @_ZN13HighSpeedTest18CreateDominoBlocksEN3JPH4Vec3Eiff(ptr noundef nonnull align 8 dereferenceable(112) %160, double %330, double %332, i32 noundef 5, float noundef 2.000000e+03, float noundef 0x3FB99999A0000000)
  call void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %41, float noundef 9.000000e+00, float noundef 1.000000e+00, float noundef 0.000000e+00)
  %333 = getelementptr inbounds { double, double }, ptr %41, i32 0, i32 0
  %334 = load double, ptr %333, align 16
  %335 = getelementptr inbounds { double, double }, ptr %41, i32 0, i32 1
  %336 = load double, ptr %335, align 8
  %337 = call { double, double } @_ZNK3JPH4Vec3plES0_(ptr noundef nonnull align 16 dereferenceable(16) %7, double %334, double %336)
  %338 = getelementptr inbounds %"class.JPH::Vec3", ptr %40, i32 0, i32 0
  %339 = getelementptr inbounds %union.anon, ptr %338, i32 0, i32 0
  %340 = getelementptr inbounds { double, double }, ptr %339, i32 0, i32 0
  %341 = extractvalue { double, double } %337, 0
  store double %341, ptr %340, align 16
  %342 = getelementptr inbounds { double, double }, ptr %339, i32 0, i32 1
  %343 = extractvalue { double, double } %337, 1
  store double %343, ptr %342, align 8
  call void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %42, float noundef -2.400000e+02, float noundef 0.000000e+00, float noundef -2.400000e+02)
  %344 = call noundef ptr @_ZN3JPH11ScaledShapenwEm(i64 noundef 64)
  %345 = invoke noundef ptr @_ZN3JPH8BoxShapenwEm(i64 noundef 80)
          to label %346 unwind label %1362

346:                                              ; preds = %315
  %347 = invoke { double, double } @_ZN3JPH4Vec310sReplicateEf(float noundef 0x3FA99999A0000000)
          to label %348 unwind label %1366

348:                                              ; preds = %346
  %349 = getelementptr inbounds %"class.JPH::Vec3", ptr %43, i32 0, i32 0
  %350 = getelementptr inbounds %union.anon, ptr %349, i32 0, i32 0
  %351 = getelementptr inbounds { double, double }, ptr %350, i32 0, i32 0
  %352 = extractvalue { double, double } %347, 0
  store double %352, ptr %351, align 16
  %353 = getelementptr inbounds { double, double }, ptr %350, i32 0, i32 1
  %354 = extractvalue { double, double } %347, 1
  store double %354, ptr %353, align 8
  %355 = getelementptr inbounds { double, double }, ptr %43, i32 0, i32 0
  %356 = load double, ptr %355, align 16
  %357 = getelementptr inbounds { double, double }, ptr %43, i32 0, i32 1
  %358 = load double, ptr %357, align 8
  invoke void @_ZN3JPH8BoxShapeC2ENS_4Vec3EfPKNS_15PhysicsMaterialE(ptr noundef nonnull align 16 dereferenceable(80) %345, double %356, double %358, float noundef 0x3F847AE140000000, ptr noundef null)
          to label %359 unwind label %1366

359:                                              ; preds = %348
  %360 = invoke { double, double } @_ZN3JPH4Vec310sReplicateEf(float noundef 2.000000e+00)
          to label %361 unwind label %1362

361:                                              ; preds = %359
  %362 = getelementptr inbounds %"class.JPH::Vec3", ptr %44, i32 0, i32 0
  %363 = getelementptr inbounds %union.anon, ptr %362, i32 0, i32 0
  %364 = getelementptr inbounds { double, double }, ptr %363, i32 0, i32 0
  %365 = extractvalue { double, double } %360, 0
  store double %365, ptr %364, align 16
  %366 = getelementptr inbounds { double, double }, ptr %363, i32 0, i32 1
  %367 = extractvalue { double, double } %360, 1
  store double %367, ptr %366, align 8
  %368 = getelementptr inbounds { double, double }, ptr %44, i32 0, i32 0
  %369 = load double, ptr %368, align 16
  %370 = getelementptr inbounds { double, double }, ptr %44, i32 0, i32 1
  %371 = load double, ptr %370, align 8
  invoke void @_ZN3JPH11ScaledShapeC2EPKNS_5ShapeENS_4Vec3E(ptr noundef nonnull align 16 dereferenceable(64) %344, ptr noundef %345, double %369, double %371)
          to label %372 unwind label %1362

372:                                              ; preds = %361
  %373 = getelementptr inbounds { double, double }, ptr %40, i32 0, i32 0
  %374 = load double, ptr %373, align 16
  %375 = getelementptr inbounds { double, double }, ptr %40, i32 0, i32 1
  %376 = load double, ptr %375, align 8
  %377 = getelementptr inbounds { double, double }, ptr %42, i32 0, i32 0
  %378 = load double, ptr %377, align 16
  %379 = getelementptr inbounds { double, double }, ptr %42, i32 0, i32 1
  %380 = load double, ptr %379, align 8
  call void @_ZN13HighSpeedTest19CreateDynamicObjectEN3JPH4Vec3ES1_PNS0_5ShapeENS0_14EMotionQualityE(ptr noundef nonnull align 8 dereferenceable(112) %160, double %374, double %376, double %378, double %380, ptr noundef %344, i8 noundef zeroext 1)
  call void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %45, float noundef 0.000000e+00, float noundef 0.000000e+00, float noundef 5.000000e+00)
  %381 = getelementptr inbounds { double, double }, ptr %45, i32 0, i32 0
  %382 = load double, ptr %381, align 16
  %383 = getelementptr inbounds { double, double }, ptr %45, i32 0, i32 1
  %384 = load double, ptr %383, align 8
  %385 = call noundef nonnull align 16 dereferenceable(16) ptr @_ZN3JPH4Vec3pLES0_(ptr noundef nonnull align 16 dereferenceable(16) %7, double %382, double %384)
  call void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %47, float noundef -1.000000e+00, float noundef 0.000000e+00, float noundef 0.000000e+00)
  %386 = getelementptr inbounds { double, double }, ptr %47, i32 0, i32 0
  %387 = load double, ptr %386, align 16
  %388 = getelementptr inbounds { double, double }, ptr %47, i32 0, i32 1
  %389 = load double, ptr %388, align 8
  %390 = call { double, double } @_ZNK3JPH4Vec3plES0_(ptr noundef nonnull align 16 dereferenceable(16) %7, double %387, double %389)
  %391 = getelementptr inbounds %"class.JPH::Vec3", ptr %46, i32 0, i32 0
  %392 = getelementptr inbounds %union.anon, ptr %391, i32 0, i32 0
  %393 = getelementptr inbounds { double, double }, ptr %392, i32 0, i32 0
  %394 = extractvalue { double, double } %390, 0
  store double %394, ptr %393, align 16
  %395 = getelementptr inbounds { double, double }, ptr %392, i32 0, i32 1
  %396 = extractvalue { double, double } %390, 1
  store double %396, ptr %395, align 8
  call void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %48, float noundef 0.000000e+00, float noundef 2.400000e+02, float noundef 0.000000e+00)
  %397 = call noundef ptr @_ZN3JPH8BoxShapenwEm(i64 noundef 80)
  %398 = invoke { double, double } @_ZN3JPH4Vec310sReplicateEf(float noundef 0x3FB99999A0000000)
          to label %399 unwind label %1371

399:                                              ; preds = %372
  %400 = getelementptr inbounds %"class.JPH::Vec3", ptr %49, i32 0, i32 0
  %401 = getelementptr inbounds %union.anon, ptr %400, i32 0, i32 0
  %402 = getelementptr inbounds { double, double }, ptr %401, i32 0, i32 0
  %403 = extractvalue { double, double } %398, 0
  store double %403, ptr %402, align 16
  %404 = getelementptr inbounds { double, double }, ptr %401, i32 0, i32 1
  %405 = extractvalue { double, double } %398, 1
  store double %405, ptr %404, align 8
  %406 = getelementptr inbounds { double, double }, ptr %49, i32 0, i32 0
  %407 = load double, ptr %406, align 16
  %408 = getelementptr inbounds { double, double }, ptr %49, i32 0, i32 1
  %409 = load double, ptr %408, align 8
  invoke void @_ZN3JPH8BoxShapeC2ENS_4Vec3EfPKNS_15PhysicsMaterialE(ptr noundef nonnull align 16 dereferenceable(80) %397, double %407, double %409, float noundef 0x3FA99999A0000000, ptr noundef null)
          to label %410 unwind label %1371

410:                                              ; preds = %399
  %411 = getelementptr inbounds { double, double }, ptr %46, i32 0, i32 0
  %412 = load double, ptr %411, align 16
  %413 = getelementptr inbounds { double, double }, ptr %46, i32 0, i32 1
  %414 = load double, ptr %413, align 8
  %415 = getelementptr inbounds { double, double }, ptr %48, i32 0, i32 0
  %416 = load double, ptr %415, align 16
  %417 = getelementptr inbounds { double, double }, ptr %48, i32 0, i32 1
  %418 = load double, ptr %417, align 8
  call void @_ZN13HighSpeedTest19CreateDynamicObjectEN3JPH4Vec3ES1_PNS0_5ShapeENS0_14EMotionQualityE(ptr noundef nonnull align 8 dereferenceable(112) %160, double %412, double %414, double %416, double %418, ptr noundef %397, i8 noundef zeroext 1)
  call void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %51, float noundef 1.000000e+00, float noundef 0.000000e+00, float noundef 0.000000e+00)
  %419 = getelementptr inbounds { double, double }, ptr %51, i32 0, i32 0
  %420 = load double, ptr %419, align 16
  %421 = getelementptr inbounds { double, double }, ptr %51, i32 0, i32 1
  %422 = load double, ptr %421, align 8
  %423 = call { double, double } @_ZNK3JPH4Vec3plES0_(ptr noundef nonnull align 16 dereferenceable(16) %7, double %420, double %422)
  %424 = getelementptr inbounds %"class.JPH::Vec3", ptr %50, i32 0, i32 0
  %425 = getelementptr inbounds %union.anon, ptr %424, i32 0, i32 0
  %426 = getelementptr inbounds { double, double }, ptr %425, i32 0, i32 0
  %427 = extractvalue { double, double } %423, 0
  store double %427, ptr %426, align 16
  %428 = getelementptr inbounds { double, double }, ptr %425, i32 0, i32 1
  %429 = extractvalue { double, double } %423, 1
  store double %429, ptr %428, align 8
  call void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %52, float noundef 0.000000e+00, float noundef -2.400000e+02, float noundef 0.000000e+00)
  %430 = call noundef ptr @_ZN3JPH8BoxShapenwEm(i64 noundef 80)
  %431 = invoke { double, double } @_ZN3JPH4Vec310sReplicateEf(float noundef 0x3FB99999A0000000)
          to label %432 unwind label %1375

432:                                              ; preds = %410
  %433 = getelementptr inbounds %"class.JPH::Vec3", ptr %53, i32 0, i32 0
  %434 = getelementptr inbounds %union.anon, ptr %433, i32 0, i32 0
  %435 = getelementptr inbounds { double, double }, ptr %434, i32 0, i32 0
  %436 = extractvalue { double, double } %431, 0
  store double %436, ptr %435, align 16
  %437 = getelementptr inbounds { double, double }, ptr %434, i32 0, i32 1
  %438 = extractvalue { double, double } %431, 1
  store double %438, ptr %437, align 8
  %439 = getelementptr inbounds { double, double }, ptr %53, i32 0, i32 0
  %440 = load double, ptr %439, align 16
  %441 = getelementptr inbounds { double, double }, ptr %53, i32 0, i32 1
  %442 = load double, ptr %441, align 8
  invoke void @_ZN3JPH8BoxShapeC2ENS_4Vec3EfPKNS_15PhysicsMaterialE(ptr noundef nonnull align 16 dereferenceable(80) %430, double %440, double %442, float noundef 0x3FA99999A0000000, ptr noundef null)
          to label %443 unwind label %1375

443:                                              ; preds = %432
  %444 = getelementptr inbounds { double, double }, ptr %50, i32 0, i32 0
  %445 = load double, ptr %444, align 16
  %446 = getelementptr inbounds { double, double }, ptr %50, i32 0, i32 1
  %447 = load double, ptr %446, align 8
  %448 = getelementptr inbounds { double, double }, ptr %52, i32 0, i32 0
  %449 = load double, ptr %448, align 16
  %450 = getelementptr inbounds { double, double }, ptr %52, i32 0, i32 1
  %451 = load double, ptr %450, align 8
  call void @_ZN13HighSpeedTest19CreateDynamicObjectEN3JPH4Vec3ES1_PNS0_5ShapeENS0_14EMotionQualityE(ptr noundef nonnull align 8 dereferenceable(112) %160, double %445, double %447, double %449, double %451, ptr noundef %430, i8 noundef zeroext 1)
  call void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %54, float noundef 0.000000e+00, float noundef 0.000000e+00, float noundef 5.000000e+00)
  %452 = getelementptr inbounds { double, double }, ptr %54, i32 0, i32 0
  %453 = load double, ptr %452, align 16
  %454 = getelementptr inbounds { double, double }, ptr %54, i32 0, i32 1
  %455 = load double, ptr %454, align 8
  %456 = call noundef nonnull align 16 dereferenceable(16) ptr @_ZN3JPH4Vec3pLES0_(ptr noundef nonnull align 16 dereferenceable(16) %7, double %453, double %455)
  call void @llvm.lifetime.start.p0(i64 256, ptr %55) #13
  call void @_ZN3JPH20BodyCreationSettingsC2Ev(ptr noundef nonnull align 16 dereferenceable(256) %55)
  call void @llvm.lifetime.start.p0(i64 8, ptr %56) #13
  %457 = invoke noundef ptr @_ZN3JPH16BoxShapeSettingsnwEm(i64 noundef 112)
          to label %458 unwind label %1379

458:                                              ; preds = %443
  invoke void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %57, float noundef 1.000000e+00, float noundef 1.000000e+00, float noundef 0x3FB99999A0000000)
          to label %459 unwind label %1383

459:                                              ; preds = %458
  %460 = getelementptr inbounds { double, double }, ptr %57, i32 0, i32 0
  %461 = load double, ptr %460, align 16
  %462 = getelementptr inbounds { double, double }, ptr %57, i32 0, i32 1
  %463 = load double, ptr %462, align 8
  invoke void @_ZN3JPH16BoxShapeSettingsC2ENS_4Vec3EfPKNS_15PhysicsMaterialE(ptr noundef nonnull align 16 dereferenceable(112) %457, double %461, double %463, float noundef 0x3FA99999A0000000, ptr noundef null)
          to label %464 unwind label %1383

464:                                              ; preds = %459
  invoke void @_ZN3JPH3RefINS_16BoxShapeSettingsEEC2EPS1_(ptr noundef nonnull align 8 dereferenceable(8) %56, ptr noundef %457)
          to label %465 unwind label %1379

465:                                              ; preds = %464
  call void @llvm.lifetime.start.p0(i64 8, ptr %58) #13
  %466 = invoke noundef ptr @_ZN3JPH27StaticCompoundShapeSettingsnwEm(i64 noundef 88)
          to label %467 unwind label %1387

467:                                              ; preds = %465
  call void @llvm.memset.p0.i64(ptr align 8 %466, i8 0, i64 88, i1 false)
  invoke void @_ZN3JPH27StaticCompoundShapeSettingsC2Ev(ptr noundef nonnull align 8 dereferenceable(88) %466)
          to label %468 unwind label %1391

468:                                              ; preds = %467
  invoke void @_ZN3JPH3RefINS_27StaticCompoundShapeSettingsEEC2EPS1_(ptr noundef nonnull align 8 dereferenceable(8) %58, ptr noundef %466)
          to label %469 unwind label %1387

469:                                              ; preds = %468
  %470 = invoke noundef ptr @_ZNK3JPH3RefINS_27StaticCompoundShapeSettingsEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %58)
          to label %471 unwind label %1395

471:                                              ; preds = %469
  invoke void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %59, float noundef 0.000000e+00, float noundef 0.000000e+00, float noundef 1.000000e+00)
          to label %472 unwind label %1395

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

474:                                              ; preds = %472
  %475 = getelementptr inbounds %"class.JPH::Quat", ptr %60, i32 0, i32 0
  %476 = getelementptr inbounds %"class.JPH::Vec4", ptr %475, i32 0, i32 0
  %477 = getelementptr inbounds %union.anon.4, ptr %476, i32 0, i32 0
  %478 = getelementptr inbounds { double, double }, ptr %477, i32 0, i32 0
  %479 = extractvalue { double, double } %473, 0
  store double %479, ptr %478, align 16
  %480 = getelementptr inbounds { double, double }, ptr %477, i32 0, i32 1
  %481 = extractvalue { double, double } %473, 1
  store double %481, ptr %480, align 8
  %482 = invoke noundef ptr @_ZNK3JPH3RefINS_16BoxShapeSettingsEEcvPS1_Ev(ptr noundef nonnull align 8 dereferenceable(8) %56)
          to label %483 unwind label %1395

483:                                              ; preds = %474
  %484 = getelementptr inbounds { double, double }, ptr %59, i32 0, i32 0
  %485 = load double, ptr %484, align 16
  %486 = getelementptr inbounds { double, double }, ptr %59, i32 0, i32 1
  %487 = load double, ptr %486, align 8
  %488 = getelementptr inbounds { double, double }, ptr %60, i32 0, i32 0
  %489 = load double, ptr %488, align 16
  %490 = getelementptr inbounds { double, double }, ptr %60, i32 0, i32 1
  %491 = load double, ptr %490, align 8
  invoke void @_ZN3JPH21CompoundShapeSettings8AddShapeENS_4Vec3ENS_4QuatEPKNS_13ShapeSettingsEj(ptr noundef nonnull align 8 dereferenceable(88) %470, double %485, double %487, double %489, double %491, ptr noundef %482, i32 noundef 0)
          to label %492 unwind label %1395

492:                                              ; preds = %483
  %493 = invoke noundef ptr @_ZNK3JPH3RefINS_27StaticCompoundShapeSettingsEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %58)
          to label %494 unwind label %1395

494:                                              ; preds = %492
  invoke void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %61, float noundef 0.000000e+00, float noundef 0.000000e+00, float noundef -1.000000e+00)
          to label %495 unwind label %1395

495:                                              ; preds = %494
  %496 = invoke { double, double } @_ZN3JPH4Quat9sIdentityEv()
          to label %497 unwind label %1395

497:                                              ; preds = %495
  %498 = getelementptr inbounds %"class.JPH::Quat", ptr %62, i32 0, i32 0
  %499 = getelementptr inbounds %"class.JPH::Vec4", ptr %498, i32 0, i32 0
  %500 = getelementptr inbounds %union.anon.4, ptr %499, i32 0, i32 0
  %501 = getelementptr inbounds { double, double }, ptr %500, i32 0, i32 0
  %502 = extractvalue { double, double } %496, 0
  store double %502, ptr %501, align 16
  %503 = getelementptr inbounds { double, double }, ptr %500, i32 0, i32 1
  %504 = extractvalue { double, double } %496, 1
  store double %504, ptr %503, align 8
  %505 = invoke noundef ptr @_ZNK3JPH3RefINS_16BoxShapeSettingsEEcvPS1_Ev(ptr noundef nonnull align 8 dereferenceable(8) %56)
          to label %506 unwind label %1395

506:                                              ; preds = %497
  %507 = getelementptr inbounds { double, double }, ptr %61, i32 0, i32 0
  %508 = load double, ptr %507, align 16
  %509 = getelementptr inbounds { double, double }, ptr %61, i32 0, i32 1
  %510 = load double, ptr %509, align 8
  %511 = getelementptr inbounds { double, double }, ptr %62, i32 0, i32 0
  %512 = load double, ptr %511, align 16
  %513 = getelementptr inbounds { double, double }, ptr %62, i32 0, i32 1
  %514 = load double, ptr %513, align 8
  invoke void @_ZN3JPH21CompoundShapeSettings8AddShapeENS_4Vec3ENS_4QuatEPKNS_13ShapeSettingsEj(ptr noundef nonnull align 8 dereferenceable(88) %493, double %508, double %510, double %512, double %514, ptr noundef %505, i32 noundef 0)
          to label %515 unwind label %1395

515:                                              ; preds = %506
  %516 = invoke noundef ptr @_ZNK3JPH3RefINS_27StaticCompoundShapeSettingsEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %58)
          to label %517 unwind label %1395

517:                                              ; preds = %515
  invoke void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %63, float noundef 1.000000e+00, float noundef 0.000000e+00, float noundef 0.000000e+00)
          to label %518 unwind label %1395

518:                                              ; preds = %517
  %519 = invoke { double, double } @_ZN3JPH4Vec36sAxisYEv()
          to label %520 unwind label %1395

520:                                              ; preds = %518
  %521 = getelementptr inbounds %"class.JPH::Vec3", ptr %65, i32 0, i32 0
  %522 = getelementptr inbounds %union.anon, ptr %521, i32 0, i32 0
  %523 = getelementptr inbounds { double, double }, ptr %522, i32 0, i32 0
  %524 = extractvalue { double, double } %519, 0
  store double %524, ptr %523, align 16
  %525 = getelementptr inbounds { double, double }, ptr %522, i32 0, i32 1
  %526 = extractvalue { double, double } %519, 1
  store double %526, ptr %525, align 8
  %527 = getelementptr inbounds { double, double }, ptr %65, i32 0, i32 0
  %528 = load double, ptr %527, align 16
  %529 = getelementptr inbounds { double, double }, ptr %65, i32 0, i32 1
  %530 = load double, ptr %529, align 8
  %531 = invoke { double, double } @_ZN3JPH4Quat9sRotationENS_4Vec3Ef(double %528, double %530, float noundef 0x3FF921FB60000000)
          to label %532 unwind label %1395

532:                                              ; preds = %520
  %533 = getelementptr inbounds %"class.JPH::Quat", ptr %64, i32 0, i32 0
  %534 = getelementptr inbounds %"class.JPH::Vec4", ptr %533, i32 0, i32 0
  %535 = getelementptr inbounds %union.anon.4, ptr %534, i32 0, i32 0
  %536 = getelementptr inbounds { double, double }, ptr %535, i32 0, i32 0
  %537 = extractvalue { double, double } %531, 0
  store double %537, ptr %536, align 16
  %538 = getelementptr inbounds { double, double }, ptr %535, i32 0, i32 1
  %539 = extractvalue { double, double } %531, 1
  store double %539, ptr %538, align 8
  %540 = invoke noundef ptr @_ZNK3JPH3RefINS_16BoxShapeSettingsEEcvPS1_Ev(ptr noundef nonnull align 8 dereferenceable(8) %56)
          to label %541 unwind label %1395

541:                                              ; preds = %532
  %542 = getelementptr inbounds { double, double }, ptr %63, i32 0, i32 0
  %543 = load double, ptr %542, align 16
  %544 = getelementptr inbounds { double, double }, ptr %63, i32 0, i32 1
  %545 = load double, ptr %544, align 8
  %546 = getelementptr inbounds { double, double }, ptr %64, i32 0, i32 0
  %547 = load double, ptr %546, align 16
  %548 = getelementptr inbounds { double, double }, ptr %64, i32 0, i32 1
  %549 = load double, ptr %548, align 8
  invoke void @_ZN3JPH21CompoundShapeSettings8AddShapeENS_4Vec3ENS_4QuatEPKNS_13ShapeSettingsEj(ptr noundef nonnull align 8 dereferenceable(88) %516, double %543, double %545, double %547, double %549, ptr noundef %540, i32 noundef 0)
          to label %550 unwind label %1395

550:                                              ; preds = %541
  %551 = invoke noundef ptr @_ZNK3JPH3RefINS_27StaticCompoundShapeSettingsEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %58)
          to label %552 unwind label %1395

552:                                              ; preds = %550
  invoke void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %66, float noundef -1.000000e+00, float noundef 0.000000e+00, float noundef 0.000000e+00)
          to label %553 unwind label %1395

553:                                              ; preds = %552
  %554 = invoke { double, double } @_ZN3JPH4Vec36sAxisYEv()
          to label %555 unwind label %1395

555:                                              ; preds = %553
  %556 = getelementptr inbounds %"class.JPH::Vec3", ptr %68, i32 0, i32 0
  %557 = getelementptr inbounds %union.anon, ptr %556, i32 0, i32 0
  %558 = getelementptr inbounds { double, double }, ptr %557, i32 0, i32 0
  %559 = extractvalue { double, double } %554, 0
  store double %559, ptr %558, align 16
  %560 = getelementptr inbounds { double, double }, ptr %557, i32 0, i32 1
  %561 = extractvalue { double, double } %554, 1
  store double %561, ptr %560, align 8
  %562 = getelementptr inbounds { double, double }, ptr %68, i32 0, i32 0
  %563 = load double, ptr %562, align 16
  %564 = getelementptr inbounds { double, double }, ptr %68, i32 0, i32 1
  %565 = load double, ptr %564, align 8
  %566 = invoke { double, double } @_ZN3JPH4Quat9sRotationENS_4Vec3Ef(double %563, double %565, float noundef 0x3FF921FB60000000)
          to label %567 unwind label %1395

567:                                              ; preds = %555
  %568 = getelementptr inbounds %"class.JPH::Quat", ptr %67, i32 0, i32 0
  %569 = getelementptr inbounds %"class.JPH::Vec4", ptr %568, i32 0, i32 0
  %570 = getelementptr inbounds %union.anon.4, ptr %569, i32 0, i32 0
  %571 = getelementptr inbounds { double, double }, ptr %570, i32 0, i32 0
  %572 = extractvalue { double, double } %566, 0
  store double %572, ptr %571, align 16
  %573 = getelementptr inbounds { double, double }, ptr %570, i32 0, i32 1
  %574 = extractvalue { double, double } %566, 1
  store double %574, ptr %573, align 8
  %575 = invoke noundef ptr @_ZNK3JPH3RefINS_16BoxShapeSettingsEEcvPS1_Ev(ptr noundef nonnull align 8 dereferenceable(8) %56)
          to label %576 unwind label %1395

576:                                              ; preds = %567
  %577 = getelementptr inbounds { double, double }, ptr %66, i32 0, i32 0
  %578 = load double, ptr %577, align 16
  %579 = getelementptr inbounds { double, double }, ptr %66, i32 0, i32 1
  %580 = load double, ptr %579, align 8
  %581 = getelementptr inbounds { double, double }, ptr %67, i32 0, i32 0
  %582 = load double, ptr %581, align 16
  %583 = getelementptr inbounds { double, double }, ptr %67, i32 0, i32 1
  %584 = load double, ptr %583, align 8
  invoke void @_ZN3JPH21CompoundShapeSettings8AddShapeENS_4Vec3ENS_4QuatEPKNS_13ShapeSettingsEj(ptr noundef nonnull align 8 dereferenceable(88) %551, double %578, double %580, double %582, double %584, ptr noundef %575, i32 noundef 0)
          to label %585 unwind label %1395

585:                                              ; preds = %576
  %586 = invoke noundef ptr @_ZNK3JPH3RefINS_27StaticCompoundShapeSettingsEEcvPS1_Ev(ptr noundef nonnull align 8 dereferenceable(8) %58)
          to label %587 unwind label %1395

587:                                              ; preds = %585
  invoke void @_ZN3JPH20BodyCreationSettings16SetShapeSettingsEPKNS_13ShapeSettingsE(ptr noundef nonnull align 16 dereferenceable(256) %55, ptr noundef %586)
          to label %588 unwind label %1395

588:                                              ; preds = %587
  %589 = getelementptr inbounds %"class.JPH::BodyCreationSettings", ptr %55, i32 0, i32 7
  store i8 1, ptr %589, align 16, !tbaa !25
  %590 = getelementptr inbounds %"class.JPH::BodyCreationSettings", ptr %55, i32 0, i32 5
  store i16 1, ptr %590, align 8, !tbaa !41
  call void @llvm.lifetime.start.p0(i64 16, ptr %69) #13
  invoke void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %70, float noundef 0.000000e+00, float noundef 1.000000e+00, float noundef 0.000000e+00)
          to label %591 unwind label %1399

591:                                              ; preds = %588
  %592 = getelementptr inbounds { double, double }, ptr %70, i32 0, i32 0
  %593 = load double, ptr %592, align 16
  %594 = getelementptr inbounds { double, double }, ptr %70, i32 0, i32 1
  %595 = load double, ptr %594, align 8
  %596 = invoke { double, double } @_ZNK3JPH4Vec3plES0_(ptr noundef nonnull align 16 dereferenceable(16) %7, double %593, double %595)
          to label %597 unwind label %1399

597:                                              ; preds = %591
  %598 = getelementptr inbounds %"class.JPH::Vec3", ptr %69, i32 0, i32 0
  %599 = getelementptr inbounds %union.anon, ptr %598, i32 0, i32 0
  %600 = getelementptr inbounds { double, double }, ptr %599, i32 0, i32 0
  %601 = extractvalue { double, double } %596, 0
  store double %601, ptr %600, align 16
  %602 = getelementptr inbounds { double, double }, ptr %599, i32 0, i32 1
  %603 = extractvalue { double, double } %596, 1
  store double %603, ptr %602, align 8
  %604 = getelementptr inbounds %"class.JPH::BodyCreationSettings", ptr %55, i32 0, i32 0
  call void @llvm.memcpy.p0.p0.i64(ptr align 16 %604, ptr align 16 %69, i64 16, i1 false), !tbaa.struct !23
  call void @llvm.lifetime.end.p0(i64 16, ptr %69) #13
  %605 = getelementptr inbounds %class.Test, ptr %160, i32 0, i32 3
  %606 = load ptr, ptr %605, align 8, !tbaa !15
  %607 = invoke i32 @_ZN3JPH13BodyInterface16CreateAndAddBodyERKNS_20BodyCreationSettingsENS_11EActivationE(ptr noundef nonnull align 8 dereferenceable(24) %606, ptr noundef nonnull align 16 dereferenceable(256) %55, i32 noundef 0)
          to label %608 unwind label %1395

608:                                              ; preds = %597
  %609 = getelementptr inbounds %"class.JPH::BodyID", ptr %71, i32 0, i32 0
  store i32 %607, ptr %609, align 4
  invoke void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %73, float noundef 0.000000e+00, float noundef 5.000000e-01, float noundef 0.000000e+00)
          to label %610 unwind label %1395

610:                                              ; preds = %608
  %611 = getelementptr inbounds { double, double }, ptr %73, i32 0, i32 0
  %612 = load double, ptr %611, align 16
  %613 = getelementptr inbounds { double, double }, ptr %73, i32 0, i32 1
  %614 = load double, ptr %613, align 8
  %615 = invoke { double, double } @_ZNK3JPH4Vec3plES0_(ptr noundef nonnull align 16 dereferenceable(16) %7, double %612, double %614)
          to label %616 unwind label %1395

616:                                              ; preds = %610
  %617 = getelementptr inbounds %"class.JPH::Vec3", ptr %72, i32 0, i32 0
  %618 = getelementptr inbounds %union.anon, ptr %617, i32 0, i32 0
  %619 = getelementptr inbounds { double, double }, ptr %618, i32 0, i32 0
  %620 = extractvalue { double, double } %615, 0
  store double %620, ptr %619, align 16
  %621 = getelementptr inbounds { double, double }, ptr %618, i32 0, i32 1
  %622 = extractvalue { double, double } %615, 1
  store double %622, ptr %621, align 8
  invoke void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %74, float noundef -2.400000e+02, float noundef 0.000000e+00, float noundef -1.200000e+02)
          to label %623 unwind label %1395

623:                                              ; preds = %616
  %624 = invoke noundef ptr @_ZN3JPH11SphereShapenwEm(i64 noundef 48)
          to label %625 unwind label %1395

625:                                              ; preds = %623
  invoke void @_ZN3JPH11SphereShapeC2EfPKNS_15PhysicsMaterialE(ptr noundef nonnull align 8 dereferenceable(48) %624, float noundef 0x3FB99999A0000000, ptr noundef null)
          to label %626 unwind label %1403

626:                                              ; preds = %625
  %627 = getelementptr inbounds { double, double }, ptr %72, i32 0, i32 0
  %628 = load double, ptr %627, align 16
  %629 = getelementptr inbounds { double, double }, ptr %72, i32 0, i32 1
  %630 = load double, ptr %629, align 8
  %631 = getelementptr inbounds { double, double }, ptr %74, i32 0, i32 0
  %632 = load double, ptr %631, align 16
  %633 = getelementptr inbounds { double, double }, ptr %74, i32 0, i32 1
  %634 = load double, ptr %633, align 8
  invoke void @_ZN13HighSpeedTest19CreateDynamicObjectEN3JPH4Vec3ES1_PNS0_5ShapeENS0_14EMotionQualityE(ptr noundef nonnull align 8 dereferenceable(112) %160, double %628, double %630, double %632, double %634, ptr noundef %624, i8 noundef zeroext 1)
          to label %635 unwind label %1395

635:                                              ; preds = %626
  call void @_ZN3JPH3RefINS_27StaticCompoundShapeSettingsEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %58) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %58) #13
  call void @_ZN3JPH3RefINS_16BoxShapeSettingsEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %56) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %56) #13
  call void @_ZN3JPH20BodyCreationSettingsD2Ev(ptr noundef nonnull align 16 dereferenceable(256) %55) #13
  call void @llvm.lifetime.end.p0(i64 256, ptr %55) #13
  call void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %75, float noundef 0.000000e+00, float noundef 0.000000e+00, float noundef 5.000000e+00)
  %636 = getelementptr inbounds { double, double }, ptr %75, i32 0, i32 0
  %637 = load double, ptr %636, align 16
  %638 = getelementptr inbounds { double, double }, ptr %75, i32 0, i32 1
  %639 = load double, ptr %638, align 8
  %640 = call noundef nonnull align 16 dereferenceable(16) ptr @_ZN3JPH4Vec3pLES0_(ptr noundef nonnull align 16 dereferenceable(16) %7, double %637, double %639)
  call void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %77, float noundef 1.000000e+00, float noundef 5.000000e-01, float noundef 0.000000e+00)
  %641 = getelementptr inbounds { double, double }, ptr %77, i32 0, i32 0
  %642 = load double, ptr %641, align 16
  %643 = getelementptr inbounds { double, double }, ptr %77, i32 0, i32 1
  %644 = load double, ptr %643, align 8
  %645 = call { double, double } @_ZNK3JPH4Vec3plES0_(ptr noundef nonnull align 16 dereferenceable(16) %7, double %642, double %644)
  %646 = getelementptr inbounds %"class.JPH::Vec3", ptr %76, i32 0, i32 0
  %647 = getelementptr inbounds %union.anon, ptr %646, i32 0, i32 0
  %648 = getelementptr inbounds { double, double }, ptr %647, i32 0, i32 0
  %649 = extractvalue { double, double } %645, 0
  store double %649, ptr %648, align 16
  %650 = getelementptr inbounds { double, double }, ptr %647, i32 0, i32 1
  %651 = extractvalue { double, double } %645, 1
  store double %651, ptr %650, align 8
  call void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %78, float noundef -2.400000e+02, float noundef 0.000000e+00, float noundef 0.000000e+00)
  %652 = call noundef ptr @_ZN3JPH8BoxShapenwEm(i64 noundef 80)
  %653 = invoke { double, double } @_ZN3JPH4Vec310sReplicateEf(float noundef 0x3FB99999A0000000)
          to label %654 unwind label %1410

654:                                              ; preds = %635
  %655 = getelementptr inbounds %"class.JPH::Vec3", ptr %79, i32 0, i32 0
  %656 = getelementptr inbounds %union.anon, ptr %655, i32 0, i32 0
  %657 = getelementptr inbounds { double, double }, ptr %656, i32 0, i32 0
  %658 = extractvalue { double, double } %653, 0
  store double %658, ptr %657, align 16
  %659 = getelementptr inbounds { double, double }, ptr %656, i32 0, i32 1
  %660 = extractvalue { double, double } %653, 1
  store double %660, ptr %659, align 8
  %661 = getelementptr inbounds { double, double }, ptr %79, i32 0, i32 0
  %662 = load double, ptr %661, align 16
  %663 = getelementptr inbounds { double, double }, ptr %79, i32 0, i32 1
  %664 = load double, ptr %663, align 8
  invoke void @_ZN3JPH8BoxShapeC2ENS_4Vec3EfPKNS_15PhysicsMaterialE(ptr noundef nonnull align 16 dereferenceable(80) %652, double %662, double %664, float noundef 0x3FA99999A0000000, ptr noundef null)
          to label %665 unwind label %1410

665:                                              ; preds = %654
  %666 = getelementptr inbounds { double, double }, ptr %76, i32 0, i32 0
  %667 = load double, ptr %666, align 16
  %668 = getelementptr inbounds { double, double }, ptr %76, i32 0, i32 1
  %669 = load double, ptr %668, align 8
  %670 = getelementptr inbounds { double, double }, ptr %78, i32 0, i32 0
  %671 = load double, ptr %670, align 16
  %672 = getelementptr inbounds { double, double }, ptr %78, i32 0, i32 1
  %673 = load double, ptr %672, align 8
  call void @_ZN13HighSpeedTest19CreateDynamicObjectEN3JPH4Vec3ES1_PNS0_5ShapeENS0_14EMotionQualityE(ptr noundef nonnull align 8 dereferenceable(112) %160, double %667, double %669, double %671, double %673, ptr noundef %652, i8 noundef zeroext 1)
  call void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %81, float noundef -1.000000e+00, float noundef 5.000000e-01, float noundef 0.000000e+00)
  %674 = getelementptr inbounds { double, double }, ptr %81, i32 0, i32 0
  %675 = load double, ptr %674, align 16
  %676 = getelementptr inbounds { double, double }, ptr %81, i32 0, i32 1
  %677 = load double, ptr %676, align 8
  %678 = call { double, double } @_ZNK3JPH4Vec3plES0_(ptr noundef nonnull align 16 dereferenceable(16) %7, double %675, double %677)
  %679 = getelementptr inbounds %"class.JPH::Vec3", ptr %80, i32 0, i32 0
  %680 = getelementptr inbounds %union.anon, ptr %679, i32 0, i32 0
  %681 = getelementptr inbounds { double, double }, ptr %680, i32 0, i32 0
  %682 = extractvalue { double, double } %678, 0
  store double %682, ptr %681, align 16
  %683 = getelementptr inbounds { double, double }, ptr %680, i32 0, i32 1
  %684 = extractvalue { double, double } %678, 1
  store double %684, ptr %683, align 8
  call void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %82, float noundef 2.400000e+02, float noundef 0.000000e+00, float noundef 0.000000e+00)
  %685 = call noundef ptr @_ZN3JPH8BoxShapenwEm(i64 noundef 80)
  %686 = invoke { double, double } @_ZN3JPH4Vec310sReplicateEf(float noundef 0x3FB99999A0000000)
          to label %687 unwind label %1414

687:                                              ; preds = %665
  %688 = getelementptr inbounds %"class.JPH::Vec3", ptr %83, i32 0, i32 0
  %689 = getelementptr inbounds %union.anon, ptr %688, i32 0, i32 0
  %690 = getelementptr inbounds { double, double }, ptr %689, i32 0, i32 0
  %691 = extractvalue { double, double } %686, 0
  store double %691, ptr %690, align 16
  %692 = getelementptr inbounds { double, double }, ptr %689, i32 0, i32 1
  %693 = extractvalue { double, double } %686, 1
  store double %693, ptr %692, align 8
  %694 = getelementptr inbounds { double, double }, ptr %83, i32 0, i32 0
  %695 = load double, ptr %694, align 16
  %696 = getelementptr inbounds { double, double }, ptr %83, i32 0, i32 1
  %697 = load double, ptr %696, align 8
  invoke void @_ZN3JPH8BoxShapeC2ENS_4Vec3EfPKNS_15PhysicsMaterialE(ptr noundef nonnull align 16 dereferenceable(80) %685, double %695, double %697, float noundef 0x3FA99999A0000000, ptr noundef null)
          to label %698 unwind label %1414

698:                                              ; preds = %687
  %699 = getelementptr inbounds { double, double }, ptr %80, i32 0, i32 0
  %700 = load double, ptr %699, align 16
  %701 = getelementptr inbounds { double, double }, ptr %80, i32 0, i32 1
  %702 = load double, ptr %701, align 8
  %703 = getelementptr inbounds { double, double }, ptr %82, i32 0, i32 0
  %704 = load double, ptr %703, align 16
  %705 = getelementptr inbounds { double, double }, ptr %82, i32 0, i32 1
  %706 = load double, ptr %705, align 8
  call void @_ZN13HighSpeedTest19CreateDynamicObjectEN3JPH4Vec3ES1_PNS0_5ShapeENS0_14EMotionQualityE(ptr noundef nonnull align 8 dereferenceable(112) %160, double %700, double %702, double %704, double %706, ptr noundef %685, i8 noundef zeroext 1)
  call void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %84, float noundef 0.000000e+00, float noundef 0.000000e+00, float noundef 5.000000e+00)
  %707 = getelementptr inbounds { double, double }, ptr %84, i32 0, i32 0
  %708 = load double, ptr %707, align 16
  %709 = getelementptr inbounds { double, double }, ptr %84, i32 0, i32 1
  %710 = load double, ptr %709, align 8
  %711 = call noundef nonnull align 16 dereferenceable(16) ptr @_ZN3JPH4Vec3pLES0_(ptr noundef nonnull align 16 dereferenceable(16) %7, double %708, double %710)
  call void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %86, float noundef 1.000000e+00, float noundef 5.000000e-01, float noundef 0.000000e+00)
  %712 = getelementptr inbounds { double, double }, ptr %86, i32 0, i32 0
  %713 = load double, ptr %712, align 16
  %714 = getelementptr inbounds { double, double }, ptr %86, i32 0, i32 1
  %715 = load double, ptr %714, align 8
  %716 = call { double, double } @_ZNK3JPH4Vec3plES0_(ptr noundef nonnull align 16 dereferenceable(16) %7, double %713, double %715)
  %717 = getelementptr inbounds %"class.JPH::Vec3", ptr %85, i32 0, i32 0
  %718 = getelementptr inbounds %union.anon, ptr %717, i32 0, i32 0
  %719 = getelementptr inbounds { double, double }, ptr %718, i32 0, i32 0
  %720 = extractvalue { double, double } %716, 0
  store double %720, ptr %719, align 16
  %721 = getelementptr inbounds { double, double }, ptr %718, i32 0, i32 1
  %722 = extractvalue { double, double } %716, 1
  store double %722, ptr %721, align 8
  call void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %87, float noundef -2.400000e+02, float noundef 0.000000e+00, float noundef 0.000000e+00)
  %723 = call noundef ptr @_ZN3JPH8BoxShapenwEm(i64 noundef 80)
  %724 = invoke { double, double } @_ZN3JPH4Vec310sReplicateEf(float noundef 0x3FB99999A0000000)
          to label %725 unwind label %1418

725:                                              ; preds = %698
  %726 = getelementptr inbounds %"class.JPH::Vec3", ptr %88, i32 0, i32 0
  %727 = getelementptr inbounds %union.anon, ptr %726, i32 0, i32 0
  %728 = getelementptr inbounds { double, double }, ptr %727, i32 0, i32 0
  %729 = extractvalue { double, double } %724, 0
  store double %729, ptr %728, align 16
  %730 = getelementptr inbounds { double, double }, ptr %727, i32 0, i32 1
  %731 = extractvalue { double, double } %724, 1
  store double %731, ptr %730, align 8
  %732 = getelementptr inbounds { double, double }, ptr %88, i32 0, i32 0
  %733 = load double, ptr %732, align 16
  %734 = getelementptr inbounds { double, double }, ptr %88, i32 0, i32 1
  %735 = load double, ptr %734, align 8
  invoke void @_ZN3JPH8BoxShapeC2ENS_4Vec3EfPKNS_15PhysicsMaterialE(ptr noundef nonnull align 16 dereferenceable(80) %723, double %733, double %735, float noundef 0x3FA99999A0000000, ptr noundef null)
          to label %736 unwind label %1418

736:                                              ; preds = %725
  %737 = getelementptr inbounds { double, double }, ptr %85, i32 0, i32 0
  %738 = load double, ptr %737, align 16
  %739 = getelementptr inbounds { double, double }, ptr %85, i32 0, i32 1
  %740 = load double, ptr %739, align 8
  %741 = getelementptr inbounds { double, double }, ptr %87, i32 0, i32 0
  %742 = load double, ptr %741, align 16
  %743 = getelementptr inbounds { double, double }, ptr %87, i32 0, i32 1
  %744 = load double, ptr %743, align 8
  call void @_ZN13HighSpeedTest19CreateDynamicObjectEN3JPH4Vec3ES1_PNS0_5ShapeENS0_14EMotionQualityE(ptr noundef nonnull align 8 dereferenceable(112) %160, double %738, double %740, double %742, double %744, ptr noundef %723, i8 noundef zeroext 1)
  call void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %90, float noundef -1.000000e+00, float noundef 5.000000e-01, float noundef 0x3FB99999A0000000)
  %745 = getelementptr inbounds { double, double }, ptr %90, i32 0, i32 0
  %746 = load double, ptr %745, align 16
  %747 = getelementptr inbounds { double, double }, ptr %90, i32 0, i32 1
  %748 = load double, ptr %747, align 8
  %749 = call { double, double } @_ZNK3JPH4Vec3plES0_(ptr noundef nonnull align 16 dereferenceable(16) %7, double %746, double %748)
  %750 = getelementptr inbounds %"class.JPH::Vec3", ptr %89, i32 0, i32 0
  %751 = getelementptr inbounds %union.anon, ptr %750, i32 0, i32 0
  %752 = getelementptr inbounds { double, double }, ptr %751, i32 0, i32 0
  %753 = extractvalue { double, double } %749, 0
  store double %753, ptr %752, align 16
  %754 = getelementptr inbounds { double, double }, ptr %751, i32 0, i32 1
  %755 = extractvalue { double, double } %749, 1
  store double %755, ptr %754, align 8
  call void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %91, float noundef 2.400000e+02, float noundef 0.000000e+00, float noundef 0.000000e+00)
  %756 = call noundef ptr @_ZN3JPH8BoxShapenwEm(i64 noundef 80)
  %757 = invoke { double, double } @_ZN3JPH4Vec310sReplicateEf(float noundef 0x3FB99999A0000000)
          to label %758 unwind label %1422

758:                                              ; preds = %736
  %759 = getelementptr inbounds %"class.JPH::Vec3", ptr %92, i32 0, i32 0
  %760 = getelementptr inbounds %union.anon, ptr %759, i32 0, i32 0
  %761 = getelementptr inbounds { double, double }, ptr %760, i32 0, i32 0
  %762 = extractvalue { double, double } %757, 0
  store double %762, ptr %761, align 16
  %763 = getelementptr inbounds { double, double }, ptr %760, i32 0, i32 1
  %764 = extractvalue { double, double } %757, 1
  store double %764, ptr %763, align 8
  %765 = getelementptr inbounds { double, double }, ptr %92, i32 0, i32 0
  %766 = load double, ptr %765, align 16
  %767 = getelementptr inbounds { double, double }, ptr %92, i32 0, i32 1
  %768 = load double, ptr %767, align 8
  invoke void @_ZN3JPH8BoxShapeC2ENS_4Vec3EfPKNS_15PhysicsMaterialE(ptr noundef nonnull align 16 dereferenceable(80) %756, double %766, double %768, float noundef 0x3FA99999A0000000, ptr noundef null)
          to label %769 unwind label %1422

769:                                              ; preds = %758
  %770 = getelementptr inbounds { double, double }, ptr %89, i32 0, i32 0
  %771 = load double, ptr %770, align 16
  %772 = getelementptr inbounds { double, double }, ptr %89, i32 0, i32 1
  %773 = load double, ptr %772, align 8
  %774 = getelementptr inbounds { double, double }, ptr %91, i32 0, i32 0
  %775 = load double, ptr %774, align 16
  %776 = getelementptr inbounds { double, double }, ptr %91, i32 0, i32 1
  %777 = load double, ptr %776, align 8
  call void @_ZN13HighSpeedTest19CreateDynamicObjectEN3JPH4Vec3ES1_PNS0_5ShapeENS0_14EMotionQualityE(ptr noundef nonnull align 8 dereferenceable(112) %160, double %771, double %773, double %775, double %777, ptr noundef %756, i8 noundef zeroext 1)
  call void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %93, float noundef 0.000000e+00, float noundef 0.000000e+00, float noundef 5.000000e+00)
  %778 = getelementptr inbounds { double, double }, ptr %93, i32 0, i32 0
  %779 = load double, ptr %778, align 16
  %780 = getelementptr inbounds { double, double }, ptr %93, i32 0, i32 1
  %781 = load double, ptr %780, align 8
  %782 = call noundef nonnull align 16 dereferenceable(16) ptr @_ZN3JPH4Vec3pLES0_(ptr noundef nonnull align 16 dereferenceable(16) %7, double %779, double %781)
  call void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %95, float noundef 1.000000e+00, float noundef 5.000000e-01, float noundef 0.000000e+00)
  %783 = getelementptr inbounds { double, double }, ptr %95, i32 0, i32 0
  %784 = load double, ptr %783, align 16
  %785 = getelementptr inbounds { double, double }, ptr %95, i32 0, i32 1
  %786 = load double, ptr %785, align 8
  %787 = call { double, double } @_ZNK3JPH4Vec3plES0_(ptr noundef nonnull align 16 dereferenceable(16) %7, double %784, double %786)
  %788 = getelementptr inbounds %"class.JPH::Vec3", ptr %94, i32 0, i32 0
  %789 = getelementptr inbounds %union.anon, ptr %788, i32 0, i32 0
  %790 = getelementptr inbounds { double, double }, ptr %789, i32 0, i32 0
  %791 = extractvalue { double, double } %787, 0
  store double %791, ptr %790, align 16
  %792 = getelementptr inbounds { double, double }, ptr %789, i32 0, i32 1
  %793 = extractvalue { double, double } %787, 1
  store double %793, ptr %792, align 8
  call void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %96, float noundef -2.400000e+02, float noundef 0.000000e+00, float noundef 0.000000e+00)
  %794 = call noundef ptr @_ZN3JPH8BoxShapenwEm(i64 noundef 80)
  %795 = invoke { double, double } @_ZN3JPH4Vec310sReplicateEf(float noundef 0x3FB99999A0000000)
          to label %796 unwind label %1426

796:                                              ; preds = %769
  %797 = getelementptr inbounds %"class.JPH::Vec3", ptr %97, i32 0, i32 0
  %798 = getelementptr inbounds %union.anon, ptr %797, i32 0, i32 0
  %799 = getelementptr inbounds { double, double }, ptr %798, i32 0, i32 0
  %800 = extractvalue { double, double } %795, 0
  store double %800, ptr %799, align 16
  %801 = getelementptr inbounds { double, double }, ptr %798, i32 0, i32 1
  %802 = extractvalue { double, double } %795, 1
  store double %802, ptr %801, align 8
  %803 = getelementptr inbounds { double, double }, ptr %97, i32 0, i32 0
  %804 = load double, ptr %803, align 16
  %805 = getelementptr inbounds { double, double }, ptr %97, i32 0, i32 1
  %806 = load double, ptr %805, align 8
  invoke void @_ZN3JPH8BoxShapeC2ENS_4Vec3EfPKNS_15PhysicsMaterialE(ptr noundef nonnull align 16 dereferenceable(80) %794, double %804, double %806, float noundef 0x3FA99999A0000000, ptr noundef null)
          to label %807 unwind label %1426

807:                                              ; preds = %796
  %808 = getelementptr inbounds { double, double }, ptr %94, i32 0, i32 0
  %809 = load double, ptr %808, align 16
  %810 = getelementptr inbounds { double, double }, ptr %94, i32 0, i32 1
  %811 = load double, ptr %810, align 8
  %812 = getelementptr inbounds { double, double }, ptr %96, i32 0, i32 0
  %813 = load double, ptr %812, align 16
  %814 = getelementptr inbounds { double, double }, ptr %96, i32 0, i32 1
  %815 = load double, ptr %814, align 8
  call void @_ZN13HighSpeedTest19CreateDynamicObjectEN3JPH4Vec3ES1_PNS0_5ShapeENS0_14EMotionQualityE(ptr noundef nonnull align 8 dereferenceable(112) %160, double %809, double %811, double %813, double %815, ptr noundef %794, i8 noundef zeroext 1)
  call void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %99, float noundef -1.000000e+00, float noundef 5.000000e-01, float noundef 0.000000e+00)
  %816 = getelementptr inbounds { double, double }, ptr %99, i32 0, i32 0
  %817 = load double, ptr %816, align 16
  %818 = getelementptr inbounds { double, double }, ptr %99, i32 0, i32 1
  %819 = load double, ptr %818, align 8
  %820 = call { double, double } @_ZNK3JPH4Vec3plES0_(ptr noundef nonnull align 16 dereferenceable(16) %7, double %817, double %819)
  %821 = getelementptr inbounds %"class.JPH::Vec3", ptr %98, i32 0, i32 0
  %822 = getelementptr inbounds %union.anon, ptr %821, i32 0, i32 0
  %823 = getelementptr inbounds { double, double }, ptr %822, i32 0, i32 0
  %824 = extractvalue { double, double } %820, 0
  store double %824, ptr %823, align 16
  %825 = getelementptr inbounds { double, double }, ptr %822, i32 0, i32 1
  %826 = extractvalue { double, double } %820, 1
  store double %826, ptr %825, align 8
  call void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %100, float noundef 6.000000e+01, float noundef 0.000000e+00, float noundef 0.000000e+00)
  %827 = call noundef ptr @_ZN3JPH8BoxShapenwEm(i64 noundef 80)
  %828 = invoke { double, double } @_ZN3JPH4Vec310sReplicateEf(float noundef 0x3FB99999A0000000)
          to label %829 unwind label %1430

829:                                              ; preds = %807
  %830 = getelementptr inbounds %"class.JPH::Vec3", ptr %101, i32 0, i32 0
  %831 = getelementptr inbounds %union.anon, ptr %830, i32 0, i32 0
  %832 = getelementptr inbounds { double, double }, ptr %831, i32 0, i32 0
  %833 = extractvalue { double, double } %828, 0
  store double %833, ptr %832, align 16
  %834 = getelementptr inbounds { double, double }, ptr %831, i32 0, i32 1
  %835 = extractvalue { double, double } %828, 1
  store double %835, ptr %834, align 8
  %836 = getelementptr inbounds { double, double }, ptr %101, i32 0, i32 0
  %837 = load double, ptr %836, align 16
  %838 = getelementptr inbounds { double, double }, ptr %101, i32 0, i32 1
  %839 = load double, ptr %838, align 8
  invoke void @_ZN3JPH8BoxShapeC2ENS_4Vec3EfPKNS_15PhysicsMaterialE(ptr noundef nonnull align 16 dereferenceable(80) %827, double %837, double %839, float noundef 0x3FA99999A0000000, ptr noundef null)
          to label %840 unwind label %1430

840:                                              ; preds = %829
  %841 = getelementptr inbounds { double, double }, ptr %98, i32 0, i32 0
  %842 = load double, ptr %841, align 16
  %843 = getelementptr inbounds { double, double }, ptr %98, i32 0, i32 1
  %844 = load double, ptr %843, align 8
  %845 = getelementptr inbounds { double, double }, ptr %100, i32 0, i32 0
  %846 = load double, ptr %845, align 16
  %847 = getelementptr inbounds { double, double }, ptr %100, i32 0, i32 1
  %848 = load double, ptr %847, align 8
  call void @_ZN13HighSpeedTest19CreateDynamicObjectEN3JPH4Vec3ES1_PNS0_5ShapeENS0_14EMotionQualityE(ptr noundef nonnull align 8 dereferenceable(112) %160, double %842, double %844, double %846, double %848, ptr noundef %827, i8 noundef zeroext 0)
  call void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %102, float noundef 0.000000e+00, float noundef 0.000000e+00, float noundef 5.000000e+00)
  %849 = getelementptr inbounds { double, double }, ptr %102, i32 0, i32 0
  %850 = load double, ptr %849, align 16
  %851 = getelementptr inbounds { double, double }, ptr %102, i32 0, i32 1
  %852 = load double, ptr %851, align 8
  %853 = call noundef nonnull align 16 dereferenceable(16) ptr @_ZN3JPH4Vec3pLES0_(ptr noundef nonnull align 16 dereferenceable(16) %7, double %850, double %852)
  call void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %104, float noundef 1.000000e+00, float noundef 5.000000e-01, float noundef 0.000000e+00)
  %854 = getelementptr inbounds { double, double }, ptr %104, i32 0, i32 0
  %855 = load double, ptr %854, align 16
  %856 = getelementptr inbounds { double, double }, ptr %104, i32 0, i32 1
  %857 = load double, ptr %856, align 8
  %858 = call { double, double } @_ZNK3JPH4Vec3plES0_(ptr noundef nonnull align 16 dereferenceable(16) %7, double %855, double %857)
  %859 = getelementptr inbounds %"class.JPH::Vec3", ptr %103, i32 0, i32 0
  %860 = getelementptr inbounds %union.anon, ptr %859, i32 0, i32 0
  %861 = getelementptr inbounds { double, double }, ptr %860, i32 0, i32 0
  %862 = extractvalue { double, double } %858, 0
  store double %862, ptr %861, align 16
  %863 = getelementptr inbounds { double, double }, ptr %860, i32 0, i32 1
  %864 = extractvalue { double, double } %858, 1
  store double %864, ptr %863, align 8
  call void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %105, float noundef -2.400000e+02, float noundef 0.000000e+00, float noundef 0.000000e+00)
  %865 = call noundef ptr @_ZN3JPH8BoxShapenwEm(i64 noundef 80)
  %866 = invoke { double, double } @_ZN3JPH4Vec310sReplicateEf(float noundef 0x3FB99999A0000000)
          to label %867 unwind label %1434

867:                                              ; preds = %840
  %868 = getelementptr inbounds %"class.JPH::Vec3", ptr %106, i32 0, i32 0
  %869 = getelementptr inbounds %union.anon, ptr %868, i32 0, i32 0
  %870 = getelementptr inbounds { double, double }, ptr %869, i32 0, i32 0
  %871 = extractvalue { double, double } %866, 0
  store double %871, ptr %870, align 16
  %872 = getelementptr inbounds { double, double }, ptr %869, i32 0, i32 1
  %873 = extractvalue { double, double } %866, 1
  store double %873, ptr %872, align 8
  %874 = getelementptr inbounds { double, double }, ptr %106, i32 0, i32 0
  %875 = load double, ptr %874, align 16
  %876 = getelementptr inbounds { double, double }, ptr %106, i32 0, i32 1
  %877 = load double, ptr %876, align 8
  invoke void @_ZN3JPH8BoxShapeC2ENS_4Vec3EfPKNS_15PhysicsMaterialE(ptr noundef nonnull align 16 dereferenceable(80) %865, double %875, double %877, float noundef 0x3FA99999A0000000, ptr noundef null)
          to label %878 unwind label %1434

878:                                              ; preds = %867
  %879 = getelementptr inbounds { double, double }, ptr %103, i32 0, i32 0
  %880 = load double, ptr %879, align 16
  %881 = getelementptr inbounds { double, double }, ptr %103, i32 0, i32 1
  %882 = load double, ptr %881, align 8
  %883 = getelementptr inbounds { double, double }, ptr %105, i32 0, i32 0
  %884 = load double, ptr %883, align 16
  %885 = getelementptr inbounds { double, double }, ptr %105, i32 0, i32 1
  %886 = load double, ptr %885, align 8
  call void @_ZN13HighSpeedTest19CreateDynamicObjectEN3JPH4Vec3ES1_PNS0_5ShapeENS0_14EMotionQualityE(ptr noundef nonnull align 8 dereferenceable(112) %160, double %880, double %882, double %884, double %886, ptr noundef %865, i8 noundef zeroext 1)
  call void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %108, float noundef 0.000000e+00, float noundef 5.000000e-01, float noundef 0.000000e+00)
  %887 = getelementptr inbounds { double, double }, ptr %108, i32 0, i32 0
  %888 = load double, ptr %887, align 16
  %889 = getelementptr inbounds { double, double }, ptr %108, i32 0, i32 1
  %890 = load double, ptr %889, align 8
  %891 = call { double, double } @_ZNK3JPH4Vec3plES0_(ptr noundef nonnull align 16 dereferenceable(16) %7, double %888, double %890)
  %892 = getelementptr inbounds %"class.JPH::Vec3", ptr %107, i32 0, i32 0
  %893 = getelementptr inbounds %union.anon, ptr %892, i32 0, i32 0
  %894 = getelementptr inbounds { double, double }, ptr %893, i32 0, i32 0
  %895 = extractvalue { double, double } %891, 0
  store double %895, ptr %894, align 16
  %896 = getelementptr inbounds { double, double }, ptr %893, i32 0, i32 1
  %897 = extractvalue { double, double } %891, 1
  store double %897, ptr %896, align 8
  %898 = call { double, double } @_ZN3JPH4Vec35sZeroEv()
  %899 = getelementptr inbounds %"class.JPH::Vec3", ptr %109, i32 0, i32 0
  %900 = getelementptr inbounds %union.anon, ptr %899, i32 0, i32 0
  %901 = getelementptr inbounds { double, double }, ptr %900, i32 0, i32 0
  %902 = extractvalue { double, double } %898, 0
  store double %902, ptr %901, align 16
  %903 = getelementptr inbounds { double, double }, ptr %900, i32 0, i32 1
  %904 = extractvalue { double, double } %898, 1
  store double %904, ptr %903, align 8
  %905 = call noundef ptr @_ZN3JPH8BoxShapenwEm(i64 noundef 80)
  %906 = invoke { double, double } @_ZN3JPH4Vec310sReplicateEf(float noundef 0x3FB99999A0000000)
          to label %907 unwind label %1438

907:                                              ; preds = %878
  %908 = getelementptr inbounds %"class.JPH::Vec3", ptr %110, i32 0, i32 0
  %909 = getelementptr inbounds %union.anon, ptr %908, i32 0, i32 0
  %910 = getelementptr inbounds { double, double }, ptr %909, i32 0, i32 0
  %911 = extractvalue { double, double } %906, 0
  store double %911, ptr %910, align 16
  %912 = getelementptr inbounds { double, double }, ptr %909, i32 0, i32 1
  %913 = extractvalue { double, double } %906, 1
  store double %913, ptr %912, align 8
  %914 = getelementptr inbounds { double, double }, ptr %110, i32 0, i32 0
  %915 = load double, ptr %914, align 16
  %916 = getelementptr inbounds { double, double }, ptr %110, i32 0, i32 1
  %917 = load double, ptr %916, align 8
  invoke void @_ZN3JPH8BoxShapeC2ENS_4Vec3EfPKNS_15PhysicsMaterialE(ptr noundef nonnull align 16 dereferenceable(80) %905, double %915, double %917, float noundef 0x3FA99999A0000000, ptr noundef null)
          to label %918 unwind label %1438

918:                                              ; preds = %907
  %919 = getelementptr inbounds { double, double }, ptr %107, i32 0, i32 0
  %920 = load double, ptr %919, align 16
  %921 = getelementptr inbounds { double, double }, ptr %107, i32 0, i32 1
  %922 = load double, ptr %921, align 8
  %923 = getelementptr inbounds { double, double }, ptr %109, i32 0, i32 0
  %924 = load double, ptr %923, align 16
  %925 = getelementptr inbounds { double, double }, ptr %109, i32 0, i32 1
  %926 = load double, ptr %925, align 8
  call void @_ZN13HighSpeedTest19CreateDynamicObjectEN3JPH4Vec3ES1_PNS0_5ShapeENS0_14EMotionQualityE(ptr noundef nonnull align 8 dereferenceable(112) %160, double %920, double %922, double %924, double %926, ptr noundef %905, i8 noundef zeroext 1)
  call void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %111, float noundef 0.000000e+00, float noundef 0.000000e+00, float noundef 5.000000e+00)
  %927 = getelementptr inbounds { double, double }, ptr %111, i32 0, i32 0
  %928 = load double, ptr %927, align 16
  %929 = getelementptr inbounds { double, double }, ptr %111, i32 0, i32 1
  %930 = load double, ptr %929, align 8
  %931 = call noundef nonnull align 16 dereferenceable(16) ptr @_ZN3JPH4Vec3pLES0_(ptr noundef nonnull align 16 dereferenceable(16) %7, double %928, double %930)
  call void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %113, float noundef 1.000000e+00, float noundef 5.000000e-01, float noundef 0.000000e+00)
  %932 = getelementptr inbounds { double, double }, ptr %113, i32 0, i32 0
  %933 = load double, ptr %932, align 16
  %934 = getelementptr inbounds { double, double }, ptr %113, i32 0, i32 1
  %935 = load double, ptr %934, align 8
  %936 = call { double, double } @_ZNK3JPH4Vec3plES0_(ptr noundef nonnull align 16 dereferenceable(16) %7, double %933, double %935)
  %937 = getelementptr inbounds %"class.JPH::Vec3", ptr %112, i32 0, i32 0
  %938 = getelementptr inbounds %union.anon, ptr %937, i32 0, i32 0
  %939 = getelementptr inbounds { double, double }, ptr %938, i32 0, i32 0
  %940 = extractvalue { double, double } %936, 0
  store double %940, ptr %939, align 16
  %941 = getelementptr inbounds { double, double }, ptr %938, i32 0, i32 1
  %942 = extractvalue { double, double } %936, 1
  store double %942, ptr %941, align 8
  call void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %114, float noundef -2.400000e+02, float noundef 0.000000e+00, float noundef 0.000000e+00)
  %943 = call noundef ptr @_ZN3JPH8BoxShapenwEm(i64 noundef 80)
  %944 = invoke { double, double } @_ZN3JPH4Vec310sReplicateEf(float noundef 0x3FB99999A0000000)
          to label %945 unwind label %1442

945:                                              ; preds = %918
  %946 = getelementptr inbounds %"class.JPH::Vec3", ptr %115, i32 0, i32 0
  %947 = getelementptr inbounds %union.anon, ptr %946, i32 0, i32 0
  %948 = getelementptr inbounds { double, double }, ptr %947, i32 0, i32 0
  %949 = extractvalue { double, double } %944, 0
  store double %949, ptr %948, align 16
  %950 = getelementptr inbounds { double, double }, ptr %947, i32 0, i32 1
  %951 = extractvalue { double, double } %944, 1
  store double %951, ptr %950, align 8
  %952 = getelementptr inbounds { double, double }, ptr %115, i32 0, i32 0
  %953 = load double, ptr %952, align 16
  %954 = getelementptr inbounds { double, double }, ptr %115, i32 0, i32 1
  %955 = load double, ptr %954, align 8
  invoke void @_ZN3JPH8BoxShapeC2ENS_4Vec3EfPKNS_15PhysicsMaterialE(ptr noundef nonnull align 16 dereferenceable(80) %943, double %953, double %955, float noundef 0x3FA99999A0000000, ptr noundef null)
          to label %956 unwind label %1442

956:                                              ; preds = %945
  %957 = getelementptr inbounds { double, double }, ptr %112, i32 0, i32 0
  %958 = load double, ptr %957, align 16
  %959 = getelementptr inbounds { double, double }, ptr %112, i32 0, i32 1
  %960 = load double, ptr %959, align 8
  %961 = getelementptr inbounds { double, double }, ptr %114, i32 0, i32 0
  %962 = load double, ptr %961, align 16
  %963 = getelementptr inbounds { double, double }, ptr %114, i32 0, i32 1
  %964 = load double, ptr %963, align 8
  call void @_ZN13HighSpeedTest19CreateDynamicObjectEN3JPH4Vec3ES1_PNS0_5ShapeENS0_14EMotionQualityE(ptr noundef nonnull align 8 dereferenceable(112) %160, double %958, double %960, double %962, double %964, ptr noundef %943, i8 noundef zeroext 1)
  call void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %117, float noundef 0.000000e+00, float noundef 5.000000e-01, float noundef 0.000000e+00)
  %965 = getelementptr inbounds { double, double }, ptr %117, i32 0, i32 0
  %966 = load double, ptr %965, align 16
  %967 = getelementptr inbounds { double, double }, ptr %117, i32 0, i32 1
  %968 = load double, ptr %967, align 8
  %969 = call { double, double } @_ZNK3JPH4Vec3plES0_(ptr noundef nonnull align 16 dereferenceable(16) %7, double %966, double %968)
  %970 = getelementptr inbounds %"class.JPH::Vec3", ptr %116, i32 0, i32 0
  %971 = getelementptr inbounds %union.anon, ptr %970, i32 0, i32 0
  %972 = getelementptr inbounds { double, double }, ptr %971, i32 0, i32 0
  %973 = extractvalue { double, double } %969, 0
  store double %973, ptr %972, align 16
  %974 = getelementptr inbounds { double, double }, ptr %971, i32 0, i32 1
  %975 = extractvalue { double, double } %969, 1
  store double %975, ptr %974, align 8
  %976 = call { double, double } @_ZN3JPH4Vec35sZeroEv()
  %977 = getelementptr inbounds %"class.JPH::Vec3", ptr %118, i32 0, i32 0
  %978 = getelementptr inbounds %union.anon, ptr %977, i32 0, i32 0
  %979 = getelementptr inbounds { double, double }, ptr %978, i32 0, i32 0
  %980 = extractvalue { double, double } %976, 0
  store double %980, ptr %979, align 16
  %981 = getelementptr inbounds { double, double }, ptr %978, i32 0, i32 1
  %982 = extractvalue { double, double } %976, 1
  store double %982, ptr %981, align 8
  %983 = call noundef ptr @_ZN3JPH8BoxShapenwEm(i64 noundef 80)
  %984 = invoke { double, double } @_ZN3JPH4Vec310sReplicateEf(float noundef 0x3FB99999A0000000)
          to label %985 unwind label %1446

985:                                              ; preds = %956
  %986 = getelementptr inbounds %"class.JPH::Vec3", ptr %119, i32 0, i32 0
  %987 = getelementptr inbounds %union.anon, ptr %986, i32 0, i32 0
  %988 = getelementptr inbounds { double, double }, ptr %987, i32 0, i32 0
  %989 = extractvalue { double, double } %984, 0
  store double %989, ptr %988, align 16
  %990 = getelementptr inbounds { double, double }, ptr %987, i32 0, i32 1
  %991 = extractvalue { double, double } %984, 1
  store double %991, ptr %990, align 8
  %992 = getelementptr inbounds { double, double }, ptr %119, i32 0, i32 0
  %993 = load double, ptr %992, align 16
  %994 = getelementptr inbounds { double, double }, ptr %119, i32 0, i32 1
  %995 = load double, ptr %994, align 8
  invoke void @_ZN3JPH8BoxShapeC2ENS_4Vec3EfPKNS_15PhysicsMaterialE(ptr noundef nonnull align 16 dereferenceable(80) %983, double %993, double %995, float noundef 0x3FA99999A0000000, ptr noundef null)
          to label %996 unwind label %1446

996:                                              ; preds = %985
  %997 = getelementptr inbounds { double, double }, ptr %116, i32 0, i32 0
  %998 = load double, ptr %997, align 16
  %999 = getelementptr inbounds { double, double }, ptr %116, i32 0, i32 1
  %1000 = load double, ptr %999, align 8
  %1001 = getelementptr inbounds { double, double }, ptr %118, i32 0, i32 0
  %1002 = load double, ptr %1001, align 16
  %1003 = getelementptr inbounds { double, double }, ptr %118, i32 0, i32 1
  %1004 = load double, ptr %1003, align 8
  call void @_ZN13HighSpeedTest19CreateDynamicObjectEN3JPH4Vec3ES1_PNS0_5ShapeENS0_14EMotionQualityE(ptr noundef nonnull align 8 dereferenceable(112) %160, double %998, double %1000, double %1002, double %1004, ptr noundef %983, i8 noundef zeroext 0)
  call void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %120, float noundef 0.000000e+00, float noundef 0.000000e+00, float noundef 5.000000e+00)
  %1005 = getelementptr inbounds { double, double }, ptr %120, i32 0, i32 0
  %1006 = load double, ptr %1005, align 16
  %1007 = getelementptr inbounds { double, double }, ptr %120, i32 0, i32 1
  %1008 = load double, ptr %1007, align 8
  %1009 = call noundef nonnull align 16 dereferenceable(16) ptr @_ZN3JPH4Vec3pLES0_(ptr noundef nonnull align 16 dereferenceable(16) %7, double %1006, double %1008)
  call void @llvm.lifetime.start.p0(i64 112, ptr %121) #13
  call void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %122, float noundef 0x3FA99999A0000000, float noundef 0x3FE99999A0000000, float noundef 0x3F9EB851E0000000)
  %1010 = getelementptr inbounds { double, double }, ptr %122, i32 0, i32 0
  %1011 = load double, ptr %1010, align 16
  %1012 = getelementptr inbounds { double, double }, ptr %122, i32 0, i32 1
  %1013 = load double, ptr %1012, align 8
  call void @_ZN3JPH16BoxShapeSettingsC2ENS_4Vec3EfPKNS_15PhysicsMaterialE(ptr noundef nonnull align 16 dereferenceable(112) %121, double %1011, double %1013, float noundef 0x3F8EB851E0000000, ptr noundef null)
  %1014 = getelementptr inbounds i8, ptr %121, i64 8
  invoke void @_ZNK3JPH9RefTargetINS_13ShapeSettingsEE11SetEmbeddedEv(ptr noundef nonnull align 4 dereferenceable(4) %1014)
          to label %1015 unwind label %1450

1015:                                             ; preds = %996
  call void @llvm.lifetime.start.p0(i64 256, ptr %123) #13
  invoke void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %125, float noundef 0.000000e+00, float noundef 1.000000e+00, float noundef 0.000000e+00)
          to label %1016 unwind label %1454

1016:                                             ; preds = %1015
  %1017 = getelementptr inbounds { double, double }, ptr %125, i32 0, i32 0
  %1018 = load double, ptr %1017, align 16
  %1019 = getelementptr inbounds { double, double }, ptr %125, i32 0, i32 1
  %1020 = load double, ptr %1019, align 8
  %1021 = invoke { double, double } @_ZNK3JPH4Vec3plES0_(ptr noundef nonnull align 16 dereferenceable(16) %7, double %1018, double %1020)
          to label %1022 unwind label %1454

1022:                                             ; preds = %1016
  %1023 = getelementptr inbounds %"class.JPH::Vec3", ptr %124, i32 0, i32 0
  %1024 = getelementptr inbounds %union.anon, ptr %1023, i32 0, i32 0
  %1025 = getelementptr inbounds { double, double }, ptr %1024, i32 0, i32 0
  %1026 = extractvalue { double, double } %1021, 0
  store double %1026, ptr %1025, align 16
  %1027 = getelementptr inbounds { double, double }, ptr %1024, i32 0, i32 1
  %1028 = extractvalue { double, double } %1021, 1
  store double %1028, ptr %1027, align 8
  %1029 = invoke { double, double } @_ZN3JPH4Vec36sAxisXEv()
          to label %1030 unwind label %1454

1030:                                             ; preds = %1022
  %1031 = getelementptr inbounds %"class.JPH::Vec3", ptr %127, i32 0, i32 0
  %1032 = getelementptr inbounds %union.anon, ptr %1031, i32 0, i32 0
  %1033 = getelementptr inbounds { double, double }, ptr %1032, i32 0, i32 0
  %1034 = extractvalue { double, double } %1029, 0
  store double %1034, ptr %1033, align 16
  %1035 = getelementptr inbounds { double, double }, ptr %1032, i32 0, i32 1
  %1036 = extractvalue { double, double } %1029, 1
  store double %1036, ptr %1035, align 8
  %1037 = getelementptr inbounds { double, double }, ptr %127, i32 0, i32 0
  %1038 = load double, ptr %1037, align 16
  %1039 = getelementptr inbounds { double, double }, ptr %127, i32 0, i32 1
  %1040 = load double, ptr %1039, align 8
  %1041 = invoke { double, double } @_ZN3JPH4Quat9sRotationENS_4Vec3Ef(double %1038, double %1040, float noundef 0x3FF921FB60000000)
          to label %1042 unwind label %1454

1042:                                             ; preds = %1030
  %1043 = getelementptr inbounds %"class.JPH::Quat", ptr %126, i32 0, i32 0
  %1044 = getelementptr inbounds %"class.JPH::Vec4", ptr %1043, i32 0, i32 0
  %1045 = getelementptr inbounds %union.anon.4, ptr %1044, i32 0, i32 0
  %1046 = getelementptr inbounds { double, double }, ptr %1045, i32 0, i32 0
  %1047 = extractvalue { double, double } %1041, 0
  store double %1047, ptr %1046, align 16
  %1048 = getelementptr inbounds { double, double }, ptr %1045, i32 0, i32 1
  %1049 = extractvalue { double, double } %1041, 1
  store double %1049, ptr %1048, align 8
  %1050 = getelementptr inbounds { double, double }, ptr %124, i32 0, i32 0
  %1051 = load double, ptr %1050, align 16
  %1052 = getelementptr inbounds { double, double }, ptr %124, i32 0, i32 1
  %1053 = load double, ptr %1052, align 8
  %1054 = getelementptr inbounds { double, double }, ptr %126, i32 0, i32 0
  %1055 = load double, ptr %1054, align 16
  %1056 = getelementptr inbounds { double, double }, ptr %126, i32 0, i32 1
  %1057 = load double, ptr %1056, align 8
  invoke void @_ZN3JPH20BodyCreationSettingsC2EPKNS_13ShapeSettingsENS_4Vec3ENS_4QuatENS_11EMotionTypeEt(ptr noundef nonnull align 16 dereferenceable(256) %123, ptr noundef %121, double %1051, double %1053, double %1055, double %1057, i8 noundef zeroext 2, i16 noundef zeroext 1)
          to label %1058 unwind label %1454

1058:                                             ; preds = %1042
  %1059 = getelementptr inbounds %"class.JPH::BodyCreationSettings", ptr %123, i32 0, i32 14
  store i8 1, ptr %1059, align 1, !tbaa !42
  %1060 = getelementptr inbounds %"class.JPH::BodyCreationSettings", ptr %123, i32 0, i32 18
  store float 0.000000e+00, ptr %1060, align 16, !tbaa !43
  %1061 = getelementptr inbounds %"class.JPH::BodyCreationSettings", ptr %123, i32 0, i32 17
  store float 1.000000e+00, ptr %1061, align 4, !tbaa !44
  call void @llvm.lifetime.start.p0(i64 8, ptr %128) #13
  %1062 = getelementptr inbounds %class.Test, ptr %160, i32 0, i32 2
  %1063 = load ptr, ptr %1062, align 8, !tbaa !45
  %1064 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZN3JPH13PhysicsSystem16GetBodyInterfaceEv(ptr noundef nonnull align 16 dereferenceable(1172) %1063)
          to label %1065 unwind label %1458

1065:                                             ; preds = %1058
  %1066 = invoke noundef ptr @_ZN3JPH13BodyInterface10CreateBodyERKNS_20BodyCreationSettingsE(ptr noundef nonnull align 8 dereferenceable(24) %1064, ptr noundef nonnull align 16 dereferenceable(256) %123)
          to label %1067 unwind label %1458

1067:                                             ; preds = %1065
  store ptr %1066, ptr %128, align 8, !tbaa !5
  %1068 = load ptr, ptr %128, align 8, !tbaa !5
  invoke void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %129, float noundef 0.000000e+00, float noundef -1.000000e+02, float noundef 0.000000e+00)
          to label %1069 unwind label %1458

1069:                                             ; preds = %1067
  %1070 = getelementptr inbounds { double, double }, ptr %129, i32 0, i32 0
  %1071 = load double, ptr %1070, align 16
  %1072 = getelementptr inbounds { double, double }, ptr %129, i32 0, i32 1
  %1073 = load double, ptr %1072, align 8
  invoke void @_ZN3JPH4Body17SetLinearVelocityENS_4Vec3E(ptr noundef nonnull align 16 dereferenceable(122) %1068, double %1071, double %1073)
          to label %1074 unwind label %1458

1074:                                             ; preds = %1069
  %1075 = getelementptr inbounds %class.Test, ptr %160, i32 0, i32 2
  %1076 = load ptr, ptr %1075, align 8, !tbaa !45
  %1077 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZN3JPH13PhysicsSystem16GetBodyInterfaceEv(ptr noundef nonnull align 16 dereferenceable(1172) %1076)
          to label %1078 unwind label %1458

1078:                                             ; preds = %1074
  %1079 = load ptr, ptr %128, align 8, !tbaa !5
  %1080 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZNK3JPH4Body5GetIDEv(ptr noundef nonnull align 16 dereferenceable(122) %1079)
          to label %1081 unwind label %1458

1081:                                             ; preds = %1078
  invoke void @_ZN3JPH13BodyInterface7AddBodyERKNS_6BodyIDENS_11EActivationE(ptr noundef nonnull align 8 dereferenceable(24) %1077, ptr noundef nonnull align 4 dereferenceable(4) %1080, i32 noundef 0)
          to label %1082 unwind label %1458

1082:                                             ; preds = %1081
  call void @llvm.lifetime.end.p0(i64 8, ptr %128) #13
  call void @_ZN3JPH20BodyCreationSettingsD2Ev(ptr noundef nonnull align 16 dereferenceable(256) %123) #13
  call void @llvm.lifetime.end.p0(i64 256, ptr %123) #13
  call void @_ZN3JPH19ConvexShapeSettingsD2Ev(ptr noundef nonnull align 16 dereferenceable(112) %121) #13
  call void @llvm.lifetime.end.p0(i64 112, ptr %121) #13
  call void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %130, float noundef 0.000000e+00, float noundef 0.000000e+00, float noundef 5.000000e+00)
  %1083 = getelementptr inbounds { double, double }, ptr %130, i32 0, i32 0
  %1084 = load double, ptr %1083, align 16
  %1085 = getelementptr inbounds { double, double }, ptr %130, i32 0, i32 1
  %1086 = load double, ptr %1085, align 8
  %1087 = call noundef nonnull align 16 dereferenceable(16) ptr @_ZN3JPH4Vec3pLES0_(ptr noundef nonnull align 16 dereferenceable(16) %7, double %1084, double %1086)
  call void @llvm.lifetime.start.p0(i64 112, ptr %131) #13
  call void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %132, float noundef 0x3FA99999A0000000, float noundef 0x3FE99999A0000000, float noundef 0x3F9EB851E0000000)
  %1088 = getelementptr inbounds { double, double }, ptr %132, i32 0, i32 0
  %1089 = load double, ptr %1088, align 16
  %1090 = getelementptr inbounds { double, double }, ptr %132, i32 0, i32 1
  %1091 = load double, ptr %1090, align 8
  call void @_ZN3JPH16BoxShapeSettingsC2ENS_4Vec3EfPKNS_15PhysicsMaterialE(ptr noundef nonnull align 16 dereferenceable(112) %131, double %1089, double %1091, float noundef 0x3F8EB851E0000000, ptr noundef null)
  %1092 = getelementptr inbounds i8, ptr %131, i64 8
  invoke void @_ZNK3JPH9RefTargetINS_13ShapeSettingsEE11SetEmbeddedEv(ptr noundef nonnull align 4 dereferenceable(4) %1092)
          to label %1093 unwind label %1464

1093:                                             ; preds = %1082
  call void @llvm.lifetime.start.p0(i64 256, ptr %133) #13
  invoke void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %135, float noundef 0.000000e+00, float noundef 1.000000e+00, float noundef 0.000000e+00)
          to label %1094 unwind label %1468

1094:                                             ; preds = %1093
  %1095 = getelementptr inbounds { double, double }, ptr %135, i32 0, i32 0
  %1096 = load double, ptr %1095, align 16
  %1097 = getelementptr inbounds { double, double }, ptr %135, i32 0, i32 1
  %1098 = load double, ptr %1097, align 8
  %1099 = invoke { double, double } @_ZNK3JPH4Vec3plES0_(ptr noundef nonnull align 16 dereferenceable(16) %7, double %1096, double %1098)
          to label %1100 unwind label %1468

1100:                                             ; preds = %1094
  %1101 = getelementptr inbounds %"class.JPH::Vec3", ptr %134, i32 0, i32 0
  %1102 = getelementptr inbounds %union.anon, ptr %1101, i32 0, i32 0
  %1103 = getelementptr inbounds { double, double }, ptr %1102, i32 0, i32 0
  %1104 = extractvalue { double, double } %1099, 0
  store double %1104, ptr %1103, align 16
  %1105 = getelementptr inbounds { double, double }, ptr %1102, i32 0, i32 1
  %1106 = extractvalue { double, double } %1099, 1
  store double %1106, ptr %1105, align 8
  %1107 = invoke { double, double } @_ZN3JPH4Vec36sAxisXEv()
          to label %1108 unwind label %1468

1108:                                             ; preds = %1100
  %1109 = getelementptr inbounds %"class.JPH::Vec3", ptr %137, i32 0, i32 0
  %1110 = getelementptr inbounds %union.anon, ptr %1109, i32 0, i32 0
  %1111 = getelementptr inbounds { double, double }, ptr %1110, i32 0, i32 0
  %1112 = extractvalue { double, double } %1107, 0
  store double %1112, ptr %1111, align 16
  %1113 = getelementptr inbounds { double, double }, ptr %1110, i32 0, i32 1
  %1114 = extractvalue { double, double } %1107, 1
  store double %1114, ptr %1113, align 8
  %1115 = getelementptr inbounds { double, double }, ptr %137, i32 0, i32 0
  %1116 = load double, ptr %1115, align 16
  %1117 = getelementptr inbounds { double, double }, ptr %137, i32 0, i32 1
  %1118 = load double, ptr %1117, align 8
  %1119 = invoke { double, double } @_ZN3JPH4Quat9sRotationENS_4Vec3Ef(double %1116, double %1118, float noundef 0x3FE921FB60000000)
          to label %1120 unwind label %1468

1120:                                             ; preds = %1108
  %1121 = getelementptr inbounds %"class.JPH::Quat", ptr %136, i32 0, i32 0
  %1122 = getelementptr inbounds %"class.JPH::Vec4", ptr %1121, i32 0, i32 0
  %1123 = getelementptr inbounds %union.anon.4, ptr %1122, i32 0, i32 0
  %1124 = getelementptr inbounds { double, double }, ptr %1123, i32 0, i32 0
  %1125 = extractvalue { double, double } %1119, 0
  store double %1125, ptr %1124, align 16
  %1126 = getelementptr inbounds { double, double }, ptr %1123, i32 0, i32 1
  %1127 = extractvalue { double, double } %1119, 1
  store double %1127, ptr %1126, align 8
  %1128 = getelementptr inbounds { double, double }, ptr %134, i32 0, i32 0
  %1129 = load double, ptr %1128, align 16
  %1130 = getelementptr inbounds { double, double }, ptr %134, i32 0, i32 1
  %1131 = load double, ptr %1130, align 8
  %1132 = getelementptr inbounds { double, double }, ptr %136, i32 0, i32 0
  %1133 = load double, ptr %1132, align 16
  %1134 = getelementptr inbounds { double, double }, ptr %136, i32 0, i32 1
  %1135 = load double, ptr %1134, align 8
  invoke void @_ZN3JPH20BodyCreationSettingsC2EPKNS_13ShapeSettingsENS_4Vec3ENS_4QuatENS_11EMotionTypeEt(ptr noundef nonnull align 16 dereferenceable(256) %133, ptr noundef %131, double %1129, double %1131, double %1133, double %1135, i8 noundef zeroext 2, i16 noundef zeroext 1)
          to label %1136 unwind label %1468

1136:                                             ; preds = %1120
  %1137 = getelementptr inbounds %"class.JPH::BodyCreationSettings", ptr %133, i32 0, i32 14
  store i8 1, ptr %1137, align 1, !tbaa !42
  %1138 = getelementptr inbounds %"class.JPH::BodyCreationSettings", ptr %133, i32 0, i32 18
  store float 0.000000e+00, ptr %1138, align 16, !tbaa !43
  %1139 = getelementptr inbounds %"class.JPH::BodyCreationSettings", ptr %133, i32 0, i32 17
  store float 1.000000e+00, ptr %1139, align 4, !tbaa !44
  call void @llvm.lifetime.start.p0(i64 8, ptr %138) #13
  %1140 = getelementptr inbounds %class.Test, ptr %160, i32 0, i32 2
  %1141 = load ptr, ptr %1140, align 8, !tbaa !45
  %1142 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZN3JPH13PhysicsSystem16GetBodyInterfaceEv(ptr noundef nonnull align 16 dereferenceable(1172) %1141)
          to label %1143 unwind label %1472

1143:                                             ; preds = %1136
  %1144 = invoke noundef ptr @_ZN3JPH13BodyInterface10CreateBodyERKNS_20BodyCreationSettingsE(ptr noundef nonnull align 8 dereferenceable(24) %1142, ptr noundef nonnull align 16 dereferenceable(256) %133)
          to label %1145 unwind label %1472

1145:                                             ; preds = %1143
  store ptr %1144, ptr %138, align 8, !tbaa !5
  %1146 = load ptr, ptr %138, align 8, !tbaa !5
  invoke void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %139, float noundef 0.000000e+00, float noundef -1.000000e+02, float noundef 0.000000e+00)
          to label %1147 unwind label %1472

1147:                                             ; preds = %1145
  %1148 = getelementptr inbounds { double, double }, ptr %139, i32 0, i32 0
  %1149 = load double, ptr %1148, align 16
  %1150 = getelementptr inbounds { double, double }, ptr %139, i32 0, i32 1
  %1151 = load double, ptr %1150, align 8
  invoke void @_ZN3JPH4Body17SetLinearVelocityENS_4Vec3E(ptr noundef nonnull align 16 dereferenceable(122) %1146, double %1149, double %1151)
          to label %1152 unwind label %1472

1152:                                             ; preds = %1147
  %1153 = getelementptr inbounds %class.Test, ptr %160, i32 0, i32 2
  %1154 = load ptr, ptr %1153, align 8, !tbaa !45
  %1155 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZN3JPH13PhysicsSystem16GetBodyInterfaceEv(ptr noundef nonnull align 16 dereferenceable(1172) %1154)
          to label %1156 unwind label %1472

1156:                                             ; preds = %1152
  %1157 = load ptr, ptr %138, align 8, !tbaa !5
  %1158 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZNK3JPH4Body5GetIDEv(ptr noundef nonnull align 16 dereferenceable(122) %1157)
          to label %1159 unwind label %1472

1159:                                             ; preds = %1156
  invoke void @_ZN3JPH13BodyInterface7AddBodyERKNS_6BodyIDENS_11EActivationE(ptr noundef nonnull align 8 dereferenceable(24) %1155, ptr noundef nonnull align 4 dereferenceable(4) %1158, i32 noundef 0)
          to label %1160 unwind label %1472

1160:                                             ; preds = %1159
  call void @llvm.lifetime.end.p0(i64 8, ptr %138) #13
  call void @_ZN3JPH20BodyCreationSettingsD2Ev(ptr noundef nonnull align 16 dereferenceable(256) %133) #13
  call void @llvm.lifetime.end.p0(i64 256, ptr %133) #13
  call void @_ZN3JPH19ConvexShapeSettingsD2Ev(ptr noundef nonnull align 16 dereferenceable(112) %131) #13
  call void @llvm.lifetime.end.p0(i64 112, ptr %131) #13
  call void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %140, float noundef 0.000000e+00, float noundef 0.000000e+00, float noundef 5.000000e+00)
  %1161 = getelementptr inbounds { double, double }, ptr %140, i32 0, i32 0
  %1162 = load double, ptr %1161, align 16
  %1163 = getelementptr inbounds { double, double }, ptr %140, i32 0, i32 1
  %1164 = load double, ptr %1163, align 8
  %1165 = call noundef nonnull align 16 dereferenceable(16) ptr @_ZN3JPH4Vec3pLES0_(ptr noundef nonnull align 16 dereferenceable(16) %7, double %1162, double %1164)
  call void @llvm.lifetime.start.p0(i64 112, ptr %141) #13
  call void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %142, float noundef 0x3FA99999A0000000, float noundef 0x3FE99999A0000000, float noundef 0x3F9EB851E0000000)
  %1166 = getelementptr inbounds { double, double }, ptr %142, i32 0, i32 0
  %1167 = load double, ptr %1166, align 16
  %1168 = getelementptr inbounds { double, double }, ptr %142, i32 0, i32 1
  %1169 = load double, ptr %1168, align 8
  call void @_ZN3JPH16BoxShapeSettingsC2ENS_4Vec3EfPKNS_15PhysicsMaterialE(ptr noundef nonnull align 16 dereferenceable(112) %141, double %1167, double %1169, float noundef 0x3F8EB851E0000000, ptr noundef null)
  %1170 = getelementptr inbounds i8, ptr %141, i64 8
  invoke void @_ZNK3JPH9RefTargetINS_13ShapeSettingsEE11SetEmbeddedEv(ptr noundef nonnull align 4 dereferenceable(4) %1170)
          to label %1171 unwind label %1478

1171:                                             ; preds = %1160
  call void @llvm.lifetime.start.p0(i64 256, ptr %143) #13
  invoke void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %145, float noundef 0.000000e+00, float noundef 1.000000e+00, float noundef 0.000000e+00)
          to label %1172 unwind label %1482

1172:                                             ; preds = %1171
  %1173 = getelementptr inbounds { double, double }, ptr %145, i32 0, i32 0
  %1174 = load double, ptr %1173, align 16
  %1175 = getelementptr inbounds { double, double }, ptr %145, i32 0, i32 1
  %1176 = load double, ptr %1175, align 8
  %1177 = invoke { double, double } @_ZNK3JPH4Vec3plES0_(ptr noundef nonnull align 16 dereferenceable(16) %7, double %1174, double %1176)
          to label %1178 unwind label %1482

1178:                                             ; preds = %1172
  %1179 = getelementptr inbounds %"class.JPH::Vec3", ptr %144, i32 0, i32 0
  %1180 = getelementptr inbounds %union.anon, ptr %1179, i32 0, i32 0
  %1181 = getelementptr inbounds { double, double }, ptr %1180, i32 0, i32 0
  %1182 = extractvalue { double, double } %1177, 0
  store double %1182, ptr %1181, align 16
  %1183 = getelementptr inbounds { double, double }, ptr %1180, i32 0, i32 1
  %1184 = extractvalue { double, double } %1177, 1
  store double %1184, ptr %1183, align 8
  %1185 = invoke { double, double } @_ZN3JPH4Vec36sAxisXEv()
          to label %1186 unwind label %1482

1186:                                             ; preds = %1178
  %1187 = getelementptr inbounds %"class.JPH::Vec3", ptr %147, i32 0, i32 0
  %1188 = getelementptr inbounds %union.anon, ptr %1187, i32 0, i32 0
  %1189 = getelementptr inbounds { double, double }, ptr %1188, i32 0, i32 0
  %1190 = extractvalue { double, double } %1185, 0
  store double %1190, ptr %1189, align 16
  %1191 = getelementptr inbounds { double, double }, ptr %1188, i32 0, i32 1
  %1192 = extractvalue { double, double } %1185, 1
  store double %1192, ptr %1191, align 8
  %1193 = getelementptr inbounds { double, double }, ptr %147, i32 0, i32 0
  %1194 = load double, ptr %1193, align 16
  %1195 = getelementptr inbounds { double, double }, ptr %147, i32 0, i32 1
  %1196 = load double, ptr %1195, align 8
  %1197 = invoke { double, double } @_ZN3JPH4Quat9sRotationENS_4Vec3Ef(double %1194, double %1196, float noundef 0x3FF921FB60000000)
          to label %1198 unwind label %1482

1198:                                             ; preds = %1186
  %1199 = getelementptr inbounds %"class.JPH::Quat", ptr %146, i32 0, i32 0
  %1200 = getelementptr inbounds %"class.JPH::Vec4", ptr %1199, i32 0, i32 0
  %1201 = getelementptr inbounds %union.anon.4, ptr %1200, i32 0, i32 0
  %1202 = getelementptr inbounds { double, double }, ptr %1201, i32 0, i32 0
  %1203 = extractvalue { double, double } %1197, 0
  store double %1203, ptr %1202, align 16
  %1204 = getelementptr inbounds { double, double }, ptr %1201, i32 0, i32 1
  %1205 = extractvalue { double, double } %1197, 1
  store double %1205, ptr %1204, align 8
  %1206 = getelementptr inbounds { double, double }, ptr %144, i32 0, i32 0
  %1207 = load double, ptr %1206, align 16
  %1208 = getelementptr inbounds { double, double }, ptr %144, i32 0, i32 1
  %1209 = load double, ptr %1208, align 8
  %1210 = getelementptr inbounds { double, double }, ptr %146, i32 0, i32 0
  %1211 = load double, ptr %1210, align 16
  %1212 = getelementptr inbounds { double, double }, ptr %146, i32 0, i32 1
  %1213 = load double, ptr %1212, align 8
  invoke void @_ZN3JPH20BodyCreationSettingsC2EPKNS_13ShapeSettingsENS_4Vec3ENS_4QuatENS_11EMotionTypeEt(ptr noundef nonnull align 16 dereferenceable(256) %143, ptr noundef %141, double %1207, double %1209, double %1211, double %1213, i8 noundef zeroext 2, i16 noundef zeroext 1)
          to label %1214 unwind label %1482

1214:                                             ; preds = %1198
  %1215 = getelementptr inbounds %"class.JPH::BodyCreationSettings", ptr %143, i32 0, i32 14
  store i8 1, ptr %1215, align 1, !tbaa !42
  %1216 = getelementptr inbounds %"class.JPH::BodyCreationSettings", ptr %143, i32 0, i32 18
  store float 1.000000e+00, ptr %1216, align 16, !tbaa !43
  %1217 = getelementptr inbounds %"class.JPH::BodyCreationSettings", ptr %143, i32 0, i32 17
  store float 1.000000e+00, ptr %1217, align 4, !tbaa !44
  call void @llvm.lifetime.start.p0(i64 8, ptr %148) #13
  %1218 = getelementptr inbounds %class.Test, ptr %160, i32 0, i32 2
  %1219 = load ptr, ptr %1218, align 8, !tbaa !45
  %1220 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZN3JPH13PhysicsSystem16GetBodyInterfaceEv(ptr noundef nonnull align 16 dereferenceable(1172) %1219)
          to label %1221 unwind label %1486

1221:                                             ; preds = %1214
  %1222 = invoke noundef ptr @_ZN3JPH13BodyInterface10CreateBodyERKNS_20BodyCreationSettingsE(ptr noundef nonnull align 8 dereferenceable(24) %1220, ptr noundef nonnull align 16 dereferenceable(256) %143)
          to label %1223 unwind label %1486

1223:                                             ; preds = %1221
  store ptr %1222, ptr %148, align 8, !tbaa !5
  %1224 = load ptr, ptr %148, align 8, !tbaa !5
  invoke void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %149, float noundef 0.000000e+00, float noundef -1.000000e+02, float noundef 0.000000e+00)
          to label %1225 unwind label %1486

1225:                                             ; preds = %1223
  %1226 = getelementptr inbounds { double, double }, ptr %149, i32 0, i32 0
  %1227 = load double, ptr %1226, align 16
  %1228 = getelementptr inbounds { double, double }, ptr %149, i32 0, i32 1
  %1229 = load double, ptr %1228, align 8
  invoke void @_ZN3JPH4Body17SetLinearVelocityENS_4Vec3E(ptr noundef nonnull align 16 dereferenceable(122) %1224, double %1227, double %1229)
          to label %1230 unwind label %1486

1230:                                             ; preds = %1225
  %1231 = getelementptr inbounds %class.Test, ptr %160, i32 0, i32 2
  %1232 = load ptr, ptr %1231, align 8, !tbaa !45
  %1233 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZN3JPH13PhysicsSystem16GetBodyInterfaceEv(ptr noundef nonnull align 16 dereferenceable(1172) %1232)
          to label %1234 unwind label %1486

1234:                                             ; preds = %1230
  %1235 = load ptr, ptr %148, align 8, !tbaa !5
  %1236 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZNK3JPH4Body5GetIDEv(ptr noundef nonnull align 16 dereferenceable(122) %1235)
          to label %1237 unwind label %1486

1237:                                             ; preds = %1234
  invoke void @_ZN3JPH13BodyInterface7AddBodyERKNS_6BodyIDENS_11EActivationE(ptr noundef nonnull align 8 dereferenceable(24) %1233, ptr noundef nonnull align 4 dereferenceable(4) %1236, i32 noundef 0)
          to label %1238 unwind label %1486

1238:                                             ; preds = %1237
  call void @llvm.lifetime.end.p0(i64 8, ptr %148) #13
  call void @_ZN3JPH20BodyCreationSettingsD2Ev(ptr noundef nonnull align 16 dereferenceable(256) %143) #13
  call void @llvm.lifetime.end.p0(i64 256, ptr %143) #13
  call void @_ZN3JPH19ConvexShapeSettingsD2Ev(ptr noundef nonnull align 16 dereferenceable(112) %141) #13
  call void @llvm.lifetime.end.p0(i64 112, ptr %141) #13
  call void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %150, float noundef 0.000000e+00, float noundef 0.000000e+00, float noundef 5.000000e+00)
  %1239 = getelementptr inbounds { double, double }, ptr %150, i32 0, i32 0
  %1240 = load double, ptr %1239, align 16
  %1241 = getelementptr inbounds { double, double }, ptr %150, i32 0, i32 1
  %1242 = load double, ptr %1241, align 8
  %1243 = call noundef nonnull align 16 dereferenceable(16) ptr @_ZN3JPH4Vec3pLES0_(ptr noundef nonnull align 16 dereferenceable(16) %7, double %1240, double %1242)
  call void @llvm.lifetime.start.p0(i64 112, ptr %151) #13
  call void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %152, float noundef 0x3FA99999A0000000, float noundef 0x3FE99999A0000000, float noundef 0x3F9EB851E0000000)
  %1244 = getelementptr inbounds { double, double }, ptr %152, i32 0, i32 0
  %1245 = load double, ptr %1244, align 16
  %1246 = getelementptr inbounds { double, double }, ptr %152, i32 0, i32 1
  %1247 = load double, ptr %1246, align 8
  call void @_ZN3JPH16BoxShapeSettingsC2ENS_4Vec3EfPKNS_15PhysicsMaterialE(ptr noundef nonnull align 16 dereferenceable(112) %151, double %1245, double %1247, float noundef 0x3F8EB851E0000000, ptr noundef null)
  %1248 = getelementptr inbounds i8, ptr %151, i64 8
  invoke void @_ZNK3JPH9RefTargetINS_13ShapeSettingsEE11SetEmbeddedEv(ptr noundef nonnull align 4 dereferenceable(4) %1248)
          to label %1249 unwind label %1492

1249:                                             ; preds = %1238
  call void @llvm.lifetime.start.p0(i64 256, ptr %153) #13
  invoke void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %155, float noundef 0.000000e+00, float noundef 1.000000e+00, float noundef 0.000000e+00)
          to label %1250 unwind label %1496

1250:                                             ; preds = %1249
  %1251 = getelementptr inbounds { double, double }, ptr %155, i32 0, i32 0
  %1252 = load double, ptr %1251, align 16
  %1253 = getelementptr inbounds { double, double }, ptr %155, i32 0, i32 1
  %1254 = load double, ptr %1253, align 8
  %1255 = invoke { double, double } @_ZNK3JPH4Vec3plES0_(ptr noundef nonnull align 16 dereferenceable(16) %7, double %1252, double %1254)
          to label %1256 unwind label %1496

1256:                                             ; preds = %1250
  %1257 = getelementptr inbounds %"class.JPH::Vec3", ptr %154, i32 0, i32 0
  %1258 = getelementptr inbounds %union.anon, ptr %1257, i32 0, i32 0
  %1259 = getelementptr inbounds { double, double }, ptr %1258, i32 0, i32 0
  %1260 = extractvalue { double, double } %1255, 0
  store double %1260, ptr %1259, align 16
  %1261 = getelementptr inbounds { double, double }, ptr %1258, i32 0, i32 1
  %1262 = extractvalue { double, double } %1255, 1
  store double %1262, ptr %1261, align 8
  %1263 = invoke { double, double } @_ZN3JPH4Vec36sAxisXEv()
          to label %1264 unwind label %1496

1264:                                             ; preds = %1256
  %1265 = getelementptr inbounds %"class.JPH::Vec3", ptr %157, i32 0, i32 0
  %1266 = getelementptr inbounds %union.anon, ptr %1265, i32 0, i32 0
  %1267 = getelementptr inbounds { double, double }, ptr %1266, i32 0, i32 0
  %1268 = extractvalue { double, double } %1263, 0
  store double %1268, ptr %1267, align 16
  %1269 = getelementptr inbounds { double, double }, ptr %1266, i32 0, i32 1
  %1270 = extractvalue { double, double } %1263, 1
  store double %1270, ptr %1269, align 8
  %1271 = getelementptr inbounds { double, double }, ptr %157, i32 0, i32 0
  %1272 = load double, ptr %1271, align 16
  %1273 = getelementptr inbounds { double, double }, ptr %157, i32 0, i32 1
  %1274 = load double, ptr %1273, align 8
  %1275 = invoke { double, double } @_ZN3JPH4Quat9sRotationENS_4Vec3Ef(double %1272, double %1274, float noundef 0x3FE921FB60000000)
          to label %1276 unwind label %1496

1276:                                             ; preds = %1264
  %1277 = getelementptr inbounds %"class.JPH::Quat", ptr %156, i32 0, i32 0
  %1278 = getelementptr inbounds %"class.JPH::Vec4", ptr %1277, i32 0, i32 0
  %1279 = getelementptr inbounds %union.anon.4, ptr %1278, i32 0, i32 0
  %1280 = getelementptr inbounds { double, double }, ptr %1279, i32 0, i32 0
  %1281 = extractvalue { double, double } %1275, 0
  store double %1281, ptr %1280, align 16
  %1282 = getelementptr inbounds { double, double }, ptr %1279, i32 0, i32 1
  %1283 = extractvalue { double, double } %1275, 1
  store double %1283, ptr %1282, align 8
  %1284 = getelementptr inbounds { double, double }, ptr %154, i32 0, i32 0
  %1285 = load double, ptr %1284, align 16
  %1286 = getelementptr inbounds { double, double }, ptr %154, i32 0, i32 1
  %1287 = load double, ptr %1286, align 8
  %1288 = getelementptr inbounds { double, double }, ptr %156, i32 0, i32 0
  %1289 = load double, ptr %1288, align 16
  %1290 = getelementptr inbounds { double, double }, ptr %156, i32 0, i32 1
  %1291 = load double, ptr %1290, align 8
  invoke void @_ZN3JPH20BodyCreationSettingsC2EPKNS_13ShapeSettingsENS_4Vec3ENS_4QuatENS_11EMotionTypeEt(ptr noundef nonnull align 16 dereferenceable(256) %153, ptr noundef %151, double %1285, double %1287, double %1289, double %1291, i8 noundef zeroext 2, i16 noundef zeroext 1)
          to label %1292 unwind label %1496

1292:                                             ; preds = %1276
  %1293 = getelementptr inbounds %"class.JPH::BodyCreationSettings", ptr %153, i32 0, i32 14
  store i8 1, ptr %1293, align 1, !tbaa !42
  %1294 = getelementptr inbounds %"class.JPH::BodyCreationSettings", ptr %153, i32 0, i32 18
  store float 1.000000e+00, ptr %1294, align 16, !tbaa !43
  %1295 = getelementptr inbounds %"class.JPH::BodyCreationSettings", ptr %153, i32 0, i32 17
  store float 1.000000e+00, ptr %1295, align 4, !tbaa !44
  call void @llvm.lifetime.start.p0(i64 8, ptr %158) #13
  %1296 = getelementptr inbounds %class.Test, ptr %160, i32 0, i32 2
  %1297 = load ptr, ptr %1296, align 8, !tbaa !45
  %1298 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZN3JPH13PhysicsSystem16GetBodyInterfaceEv(ptr noundef nonnull align 16 dereferenceable(1172) %1297)
          to label %1299 unwind label %1500

1299:                                             ; preds = %1292
  %1300 = invoke noundef ptr @_ZN3JPH13BodyInterface10CreateBodyERKNS_20BodyCreationSettingsE(ptr noundef nonnull align 8 dereferenceable(24) %1298, ptr noundef nonnull align 16 dereferenceable(256) %153)
          to label %1301 unwind label %1500

1301:                                             ; preds = %1299
  store ptr %1300, ptr %158, align 8, !tbaa !5
  %1302 = load ptr, ptr %158, align 8, !tbaa !5
  invoke void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %159, float noundef 0.000000e+00, float noundef -1.000000e+02, float noundef 0.000000e+00)
          to label %1303 unwind label %1500

1303:                                             ; preds = %1301
  %1304 = getelementptr inbounds { double, double }, ptr %159, i32 0, i32 0
  %1305 = load double, ptr %1304, align 16
  %1306 = getelementptr inbounds { double, double }, ptr %159, i32 0, i32 1
  %1307 = load double, ptr %1306, align 8
  invoke void @_ZN3JPH4Body17SetLinearVelocityENS_4Vec3E(ptr noundef nonnull align 16 dereferenceable(122) %1302, double %1305, double %1307)
          to label %1308 unwind label %1500

1308:                                             ; preds = %1303
  %1309 = getelementptr inbounds %class.Test, ptr %160, i32 0, i32 2
  %1310 = load ptr, ptr %1309, align 8, !tbaa !45
  %1311 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZN3JPH13PhysicsSystem16GetBodyInterfaceEv(ptr noundef nonnull align 16 dereferenceable(1172) %1310)
          to label %1312 unwind label %1500

1312:                                             ; preds = %1308
  %1313 = load ptr, ptr %158, align 8, !tbaa !5
  %1314 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZNK3JPH4Body5GetIDEv(ptr noundef nonnull align 16 dereferenceable(122) %1313)
          to label %1315 unwind label %1500

1315:                                             ; preds = %1312
  invoke void @_ZN3JPH13BodyInterface7AddBodyERKNS_6BodyIDENS_11EActivationE(ptr noundef nonnull align 8 dereferenceable(24) %1311, ptr noundef nonnull align 4 dereferenceable(4) %1314, i32 noundef 0)
          to label %1316 unwind label %1500

1316:                                             ; preds = %1315
  call void @llvm.lifetime.end.p0(i64 8, ptr %158) #13
  call void @_ZN3JPH20BodyCreationSettingsD2Ev(ptr noundef nonnull align 16 dereferenceable(256) %153) #13
  call void @llvm.lifetime.end.p0(i64 256, ptr %153) #13
  call void @_ZN3JPH19ConvexShapeSettingsD2Ev(ptr noundef nonnull align 16 dereferenceable(112) %151) #13
  call void @llvm.lifetime.end.p0(i64 112, ptr %151) #13
  call void @llvm.lifetime.end.p0(i64 16, ptr %7) #13
  call void @llvm.lifetime.end.p0(i64 4, ptr %6) #13
  call void @llvm.lifetime.end.p0(i64 4, ptr %5) #13
  call void @llvm.lifetime.end.p0(i64 4, ptr %4) #13
  call void @llvm.lifetime.end.p0(i64 4, ptr %3) #13
  ret void

1317:                                             ; preds = %227
  %1318 = landingpad { ptr, i32 }
          cleanup
  %1319 = extractvalue { ptr, i32 } %1318, 0
  store ptr %1319, ptr %12, align 8
  %1320 = extractvalue { ptr, i32 } %1318, 1
  store i32 %1320, ptr %13, align 4
  br label %1330

1321:                                             ; preds = %228
  %1322 = landingpad { ptr, i32 }
          cleanup
  %1323 = extractvalue { ptr, i32 } %1322, 0
  store ptr %1323, ptr %12, align 8
  %1324 = extractvalue { ptr, i32 } %1322, 1
  store i32 %1324, ptr %13, align 4
  br label %1329

1325:                                             ; preds = %231, %230, %229
  %1326 = landingpad { ptr, i32 }
          cleanup
  %1327 = extractvalue { ptr, i32 } %1326, 0
  store ptr %1327, ptr %12, align 8
  %1328 = extractvalue { ptr, i32 } %1326, 1
  store i32 %1328, ptr %13, align 4
  call void @llvm.lifetime.end.p0(i64 12, ptr %23) #13
  br label %1329

1329:                                             ; preds = %1325, %1321
  call void @llvm.lifetime.end.p0(i64 12, ptr %22) #13
  br label %1330

1330:                                             ; preds = %1329, %1317
  call void @llvm.lifetime.end.p0(i64 12, ptr %21) #13
  call void @llvm.lifetime.end.p0(i64 44, ptr %20) #13
  br label %1357

1331:                                             ; preds = %232
  %1332 = landingpad { ptr, i32 }
          cleanup
  %1333 = extractvalue { ptr, i32 } %1332, 0
  store ptr %1333, ptr %12, align 8
  %1334 = extractvalue { ptr, i32 } %1332, 1
  store i32 %1334, ptr %13, align 4
  br label %1347

1335:                                             ; preds = %239, %237, %236
  %1336 = landingpad { ptr, i32 }
          cleanup
  %1337 = extractvalue { ptr, i32 } %1336, 0
  store ptr %1337, ptr %12, align 8
  %1338 = extractvalue { ptr, i32 } %1336, 1
  store i32 %1338, ptr %13, align 4
  br label %1343

1339:                                             ; preds = %255
  %1340 = landingpad { ptr, i32 }
          cleanup
  %1341 = extractvalue { ptr, i32 } %1340, 0
  store ptr %1341, ptr %12, align 8
  %1342 = extractvalue { ptr, i32 } %1340, 1
  store i32 %1342, ptr %13, align 4
  call void @_ZN3JPH20BodyCreationSettingsD2Ev(ptr noundef nonnull align 16 dereferenceable(256) %25) #13
  br label %1343

1343:                                             ; preds = %1339, %1335
  call void @_ZN3JPH5ArrayINS_8RefConstINS_15PhysicsMaterialEEENS_12STLAllocatorIS3_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %26) #13
  %1344 = load i1, ptr %27, align 1
  br i1 %1344, label %1345, label %1346

1345:                                             ; preds = %1343
  call void @_ZN3JPH17MeshShapeSettingsdlEPv(ptr noundef %235) #13
  br label %1346

1346:                                             ; preds = %1345, %1343
  br label %1347

1347:                                             ; preds = %1346, %1331
  call void @llvm.lifetime.end.p0(i64 256, ptr %25) #13
  br label %1356

1348:                                             ; preds = %284, %281, %274, %268, %267, %266, %261, %259, %257
  %1349 = landingpad { ptr, i32 }
          cleanup
  %1350 = extractvalue { ptr, i32 } %1349, 0
  store ptr %1350, ptr %12, align 8
  %1351 = extractvalue { ptr, i32 } %1349, 1
  store i32 %1351, ptr %13, align 4
  br label %1356

1352:                                             ; preds = %283
  %1353 = landingpad { ptr, i32 }
          cleanup
  %1354 = extractvalue { ptr, i32 } %1353, 0
  store ptr %1354, ptr %12, align 8
  %1355 = extractvalue { ptr, i32 } %1353, 1
  store i32 %1355, ptr %13, align 4
  call void @_ZN3JPH11SphereShapedlEPv(ptr noundef %282) #13
  br label %1356

1356:                                             ; preds = %1352, %1348, %1347
  call void @llvm.lifetime.end.p0(i64 8, ptr %24) #13
  br label %1357

1357:                                             ; preds = %1356, %1330, %226
  call void @_ZN3JPH5ArrayINS_8TriangleENS_12STLAllocatorIS1_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %8) #13
  call void @llvm.lifetime.end.p0(i64 24, ptr %8) #13
  br label %1506

1358:                                             ; preds = %293
  %1359 = landingpad { ptr, i32 }
          cleanup
  %1360 = extractvalue { ptr, i32 } %1359, 0
  store ptr %1360, ptr %12, align 8
  %1361 = extractvalue { ptr, i32 } %1359, 1
  store i32 %1361, ptr %13, align 4
  call void @_ZN3JPH11SphereShapedlEPv(ptr noundef %314) #13
  br label %1506

1362:                                             ; preds = %361, %359, %315
  %1363 = landingpad { ptr, i32 }
          cleanup
  %1364 = extractvalue { ptr, i32 } %1363, 0
  store ptr %1364, ptr %12, align 8
  %1365 = extractvalue { ptr, i32 } %1363, 1
  store i32 %1365, ptr %13, align 4
  br label %1370

1366:                                             ; preds = %348, %346
  %1367 = landingpad { ptr, i32 }
          cleanup
  %1368 = extractvalue { ptr, i32 } %1367, 0
  store ptr %1368, ptr %12, align 8
  %1369 = extractvalue { ptr, i32 } %1367, 1
  store i32 %1369, ptr %13, align 4
  call void @_ZN3JPH8BoxShapedlEPv(ptr noundef %345) #13
  br label %1370

1370:                                             ; preds = %1366, %1362
  call void @_ZN3JPH11ScaledShapedlEPv(ptr noundef %344) #13
  br label %1506

1371:                                             ; preds = %399, %372
  %1372 = landingpad { ptr, i32 }
          cleanup
  %1373 = extractvalue { ptr, i32 } %1372, 0
  store ptr %1373, ptr %12, align 8
  %1374 = extractvalue { ptr, i32 } %1372, 1
  store i32 %1374, ptr %13, align 4
  call void @_ZN3JPH8BoxShapedlEPv(ptr noundef %397) #13
  br label %1506

1375:                                             ; preds = %432, %410
  %1376 = landingpad { ptr, i32 }
          cleanup
  %1377 = extractvalue { ptr, i32 } %1376, 0
  store ptr %1377, ptr %12, align 8
  %1378 = extractvalue { ptr, i32 } %1376, 1
  store i32 %1378, ptr %13, align 4
  call void @_ZN3JPH8BoxShapedlEPv(ptr noundef %430) #13
  br label %1506

1379:                                             ; preds = %464, %443
  %1380 = landingpad { ptr, i32 }
          cleanup
  %1381 = extractvalue { ptr, i32 } %1380, 0
  store ptr %1381, ptr %12, align 8
  %1382 = extractvalue { ptr, i32 } %1380, 1
  store i32 %1382, ptr %13, align 4
  br label %1409

1383:                                             ; preds = %459, %458
  %1384 = landingpad { ptr, i32 }
          cleanup
  %1385 = extractvalue { ptr, i32 } %1384, 0
  store ptr %1385, ptr %12, align 8
  %1386 = extractvalue { ptr, i32 } %1384, 1
  store i32 %1386, ptr %13, align 4
  call void @_ZN3JPH16BoxShapeSettingsdlEPv(ptr noundef %457) #13
  br label %1409

1387:                                             ; preds = %468, %465
  %1388 = landingpad { ptr, i32 }
          cleanup
  %1389 = extractvalue { ptr, i32 } %1388, 0
  store ptr %1389, ptr %12, align 8
  %1390 = extractvalue { ptr, i32 } %1388, 1
  store i32 %1390, ptr %13, align 4
  br label %1408

1391:                                             ; preds = %467
  %1392 = landingpad { ptr, i32 }
          cleanup
  %1393 = extractvalue { ptr, i32 } %1392, 0
  store ptr %1393, ptr %12, align 8
  %1394 = extractvalue { ptr, i32 } %1392, 1
  store i32 %1394, ptr %13, align 4
  call void @_ZN3JPH27StaticCompoundShapeSettingsdlEPv(ptr noundef %466) #13
  br label %1408

1395:                                             ; preds = %626, %623, %616, %610, %608, %597, %587, %585, %576, %567, %555, %553, %552, %550, %541, %532, %520, %518, %517, %515, %506, %497, %495, %494, %492, %483, %474, %472, %471, %469
  %1396 = landingpad { ptr, i32 }
          cleanup
  %1397 = extractvalue { ptr, i32 } %1396, 0
  store ptr %1397, ptr %12, align 8
  %1398 = extractvalue { ptr, i32 } %1396, 1
  store i32 %1398, ptr %13, align 4
  br label %1407

1399:                                             ; preds = %591, %588
  %1400 = landingpad { ptr, i32 }
          cleanup
  %1401 = extractvalue { ptr, i32 } %1400, 0
  store ptr %1401, ptr %12, align 8
  %1402 = extractvalue { ptr, i32 } %1400, 1
  store i32 %1402, ptr %13, align 4
  call void @llvm.lifetime.end.p0(i64 16, ptr %69) #13
  br label %1407

1403:                                             ; preds = %625
  %1404 = landingpad { ptr, i32 }
          cleanup
  %1405 = extractvalue { ptr, i32 } %1404, 0
  store ptr %1405, ptr %12, align 8
  %1406 = extractvalue { ptr, i32 } %1404, 1
  store i32 %1406, ptr %13, align 4
  call void @_ZN3JPH11SphereShapedlEPv(ptr noundef %624) #13
  br label %1407

1407:                                             ; preds = %1403, %1399, %1395
  call void @_ZN3JPH3RefINS_27StaticCompoundShapeSettingsEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %58) #13
  br label %1408

1408:                                             ; preds = %1407, %1391, %1387
  call void @llvm.lifetime.end.p0(i64 8, ptr %58) #13
  call void @_ZN3JPH3RefINS_16BoxShapeSettingsEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %56) #13
  br label %1409

1409:                                             ; preds = %1408, %1383, %1379
  call void @llvm.lifetime.end.p0(i64 8, ptr %56) #13
  call void @_ZN3JPH20BodyCreationSettingsD2Ev(ptr noundef nonnull align 16 dereferenceable(256) %55) #13
  call void @llvm.lifetime.end.p0(i64 256, ptr %55) #13
  br label %1506

1410:                                             ; preds = %654, %635
  %1411 = landingpad { ptr, i32 }
          cleanup
  %1412 = extractvalue { ptr, i32 } %1411, 0
  store ptr %1412, ptr %12, align 8
  %1413 = extractvalue { ptr, i32 } %1411, 1
  store i32 %1413, ptr %13, align 4
  call void @_ZN3JPH8BoxShapedlEPv(ptr noundef %652) #13
  br label %1506

1414:                                             ; preds = %687, %665
  %1415 = landingpad { ptr, i32 }
          cleanup
  %1416 = extractvalue { ptr, i32 } %1415, 0
  store ptr %1416, ptr %12, align 8
  %1417 = extractvalue { ptr, i32 } %1415, 1
  store i32 %1417, ptr %13, align 4
  call void @_ZN3JPH8BoxShapedlEPv(ptr noundef %685) #13
  br label %1506

1418:                                             ; preds = %725, %698
  %1419 = landingpad { ptr, i32 }
          cleanup
  %1420 = extractvalue { ptr, i32 } %1419, 0
  store ptr %1420, ptr %12, align 8
  %1421 = extractvalue { ptr, i32 } %1419, 1
  store i32 %1421, ptr %13, align 4
  call void @_ZN3JPH8BoxShapedlEPv(ptr noundef %723) #13
  br label %1506

1422:                                             ; preds = %758, %736
  %1423 = landingpad { ptr, i32 }
          cleanup
  %1424 = extractvalue { ptr, i32 } %1423, 0
  store ptr %1424, ptr %12, align 8
  %1425 = extractvalue { ptr, i32 } %1423, 1
  store i32 %1425, ptr %13, align 4
  call void @_ZN3JPH8BoxShapedlEPv(ptr noundef %756) #13
  br label %1506

1426:                                             ; preds = %796, %769
  %1427 = landingpad { ptr, i32 }
          cleanup
  %1428 = extractvalue { ptr, i32 } %1427, 0
  store ptr %1428, ptr %12, align 8
  %1429 = extractvalue { ptr, i32 } %1427, 1
  store i32 %1429, ptr %13, align 4
  call void @_ZN3JPH8BoxShapedlEPv(ptr noundef %794) #13
  br label %1506

1430:                                             ; preds = %829, %807
  %1431 = landingpad { ptr, i32 }
          cleanup
  %1432 = extractvalue { ptr, i32 } %1431, 0
  store ptr %1432, ptr %12, align 8
  %1433 = extractvalue { ptr, i32 } %1431, 1
  store i32 %1433, ptr %13, align 4
  call void @_ZN3JPH8BoxShapedlEPv(ptr noundef %827) #13
  br label %1506

1434:                                             ; preds = %867, %840
  %1435 = landingpad { ptr, i32 }
          cleanup
  %1436 = extractvalue { ptr, i32 } %1435, 0
  store ptr %1436, ptr %12, align 8
  %1437 = extractvalue { ptr, i32 } %1435, 1
  store i32 %1437, ptr %13, align 4
  call void @_ZN3JPH8BoxShapedlEPv(ptr noundef %865) #13
  br label %1506

1438:                                             ; preds = %907, %878
  %1439 = landingpad { ptr, i32 }
          cleanup
  %1440 = extractvalue { ptr, i32 } %1439, 0
  store ptr %1440, ptr %12, align 8
  %1441 = extractvalue { ptr, i32 } %1439, 1
  store i32 %1441, ptr %13, align 4
  call void @_ZN3JPH8BoxShapedlEPv(ptr noundef %905) #13
  br label %1506

1442:                                             ; preds = %945, %918
  %1443 = landingpad { ptr, i32 }
          cleanup
  %1444 = extractvalue { ptr, i32 } %1443, 0
  store ptr %1444, ptr %12, align 8
  %1445 = extractvalue { ptr, i32 } %1443, 1
  store i32 %1445, ptr %13, align 4
  call void @_ZN3JPH8BoxShapedlEPv(ptr noundef %943) #13
  br label %1506

1446:                                             ; preds = %985, %956
  %1447 = landingpad { ptr, i32 }
          cleanup
  %1448 = extractvalue { ptr, i32 } %1447, 0
  store ptr %1448, ptr %12, align 8
  %1449 = extractvalue { ptr, i32 } %1447, 1
  store i32 %1449, ptr %13, align 4
  call void @_ZN3JPH8BoxShapedlEPv(ptr noundef %983) #13
  br label %1506

1450:                                             ; preds = %996
  %1451 = landingpad { ptr, i32 }
          cleanup
  %1452 = extractvalue { ptr, i32 } %1451, 0
  store ptr %1452, ptr %12, align 8
  %1453 = extractvalue { ptr, i32 } %1451, 1
  store i32 %1453, ptr %13, align 4
  br label %1463

1454:                                             ; preds = %1042, %1030, %1022, %1016, %1015
  %1455 = landingpad { ptr, i32 }
          cleanup
  %1456 = extractvalue { ptr, i32 } %1455, 0
  store ptr %1456, ptr %12, align 8
  %1457 = extractvalue { ptr, i32 } %1455, 1
  store i32 %1457, ptr %13, align 4
  br label %1462

1458:                                             ; preds = %1081, %1078, %1074, %1069, %1067, %1065, %1058
  %1459 = landingpad { ptr, i32 }
          cleanup
  %1460 = extractvalue { ptr, i32 } %1459, 0
  store ptr %1460, ptr %12, align 8
  %1461 = extractvalue { ptr, i32 } %1459, 1
  store i32 %1461, ptr %13, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %128) #13
  call void @_ZN3JPH20BodyCreationSettingsD2Ev(ptr noundef nonnull align 16 dereferenceable(256) %123) #13
  br label %1462

1462:                                             ; preds = %1458, %1454
  call void @llvm.lifetime.end.p0(i64 256, ptr %123) #13
  br label %1463

1463:                                             ; preds = %1462, %1450
  call void @_ZN3JPH19ConvexShapeSettingsD2Ev(ptr noundef nonnull align 16 dereferenceable(112) %121) #13
  call void @llvm.lifetime.end.p0(i64 112, ptr %121) #13
  br label %1506

1464:                                             ; preds = %1082
  %1465 = landingpad { ptr, i32 }
          cleanup
  %1466 = extractvalue { ptr, i32 } %1465, 0
  store ptr %1466, ptr %12, align 8
  %1467 = extractvalue { ptr, i32 } %1465, 1
  store i32 %1467, ptr %13, align 4
  br label %1477

1468:                                             ; preds = %1120, %1108, %1100, %1094, %1093
  %1469 = landingpad { ptr, i32 }
          cleanup
  %1470 = extractvalue { ptr, i32 } %1469, 0
  store ptr %1470, ptr %12, align 8
  %1471 = extractvalue { ptr, i32 } %1469, 1
  store i32 %1471, ptr %13, align 4
  br label %1476

1472:                                             ; preds = %1159, %1156, %1152, %1147, %1145, %1143, %1136
  %1473 = landingpad { ptr, i32 }
          cleanup
  %1474 = extractvalue { ptr, i32 } %1473, 0
  store ptr %1474, ptr %12, align 8
  %1475 = extractvalue { ptr, i32 } %1473, 1
  store i32 %1475, ptr %13, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %138) #13
  call void @_ZN3JPH20BodyCreationSettingsD2Ev(ptr noundef nonnull align 16 dereferenceable(256) %133) #13
  br label %1476

1476:                                             ; preds = %1472, %1468
  call void @llvm.lifetime.end.p0(i64 256, ptr %133) #13
  br label %1477

1477:                                             ; preds = %1476, %1464
  call void @_ZN3JPH19ConvexShapeSettingsD2Ev(ptr noundef nonnull align 16 dereferenceable(112) %131) #13
  call void @llvm.lifetime.end.p0(i64 112, ptr %131) #13
  br label %1506

1478:                                             ; preds = %1160
  %1479 = landingpad { ptr, i32 }
          cleanup
  %1480 = extractvalue { ptr, i32 } %1479, 0
  store ptr %1480, ptr %12, align 8
  %1481 = extractvalue { ptr, i32 } %1479, 1
  store i32 %1481, ptr %13, align 4
  br label %1491

1482:                                             ; preds = %1198, %1186, %1178, %1172, %1171
  %1483 = landingpad { ptr, i32 }
          cleanup
  %1484 = extractvalue { ptr, i32 } %1483, 0
  store ptr %1484, ptr %12, align 8
  %1485 = extractvalue { ptr, i32 } %1483, 1
  store i32 %1485, ptr %13, align 4
  br label %1490

1486:                                             ; preds = %1237, %1234, %1230, %1225, %1223, %1221, %1214
  %1487 = landingpad { ptr, i32 }
          cleanup
  %1488 = extractvalue { ptr, i32 } %1487, 0
  store ptr %1488, ptr %12, align 8
  %1489 = extractvalue { ptr, i32 } %1487, 1
  store i32 %1489, ptr %13, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %148) #13
  call void @_ZN3JPH20BodyCreationSettingsD2Ev(ptr noundef nonnull align 16 dereferenceable(256) %143) #13
  br label %1490

1490:                                             ; preds = %1486, %1482
  call void @llvm.lifetime.end.p0(i64 256, ptr %143) #13
  br label %1491

1491:                                             ; preds = %1490, %1478
  call void @_ZN3JPH19ConvexShapeSettingsD2Ev(ptr noundef nonnull align 16 dereferenceable(112) %141) #13
  call void @llvm.lifetime.end.p0(i64 112, ptr %141) #13
  br label %1506

1492:                                             ; preds = %1238
  %1493 = landingpad { ptr, i32 }
          cleanup
  %1494 = extractvalue { ptr, i32 } %1493, 0
  store ptr %1494, ptr %12, align 8
  %1495 = extractvalue { ptr, i32 } %1493, 1
  store i32 %1495, ptr %13, align 4
  br label %1505

1496:                                             ; preds = %1276, %1264, %1256, %1250, %1249
  %1497 = landingpad { ptr, i32 }
          cleanup
  %1498 = extractvalue { ptr, i32 } %1497, 0
  store ptr %1498, ptr %12, align 8
  %1499 = extractvalue { ptr, i32 } %1497, 1
  store i32 %1499, ptr %13, align 4
  br label %1504

1500:                                             ; preds = %1315, %1312, %1308, %1303, %1301, %1299, %1292
  %1501 = landingpad { ptr, i32 }
          cleanup
  %1502 = extractvalue { ptr, i32 } %1501, 0
  store ptr %1502, ptr %12, align 8
  %1503 = extractvalue { ptr, i32 } %1501, 1
  store i32 %1503, ptr %13, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %158) #13
  call void @_ZN3JPH20BodyCreationSettingsD2Ev(ptr noundef nonnull align 16 dereferenceable(256) %153) #13
  br label %1504

1504:                                             ; preds = %1500, %1496
  call void @llvm.lifetime.end.p0(i64 256, ptr %153) #13
  br label %1505

1505:                                             ; preds = %1504, %1492
  call void @_ZN3JPH19ConvexShapeSettingsD2Ev(ptr noundef nonnull align 16 dereferenceable(112) %151) #13
  call void @llvm.lifetime.end.p0(i64 112, ptr %151) #13
  br label %1506

1506:                                             ; preds = %1505, %1491, %1477, %1463, %1446, %1442, %1438, %1434, %1430, %1426, %1422, %1418, %1414, %1410, %1409, %1375, %1371, %1370, %1358, %1357
  call void @llvm.lifetime.end.p0(i64 16, ptr %7) #13
  call void @llvm.lifetime.end.p0(i64 4, ptr %6) #13
  call void @llvm.lifetime.end.p0(i64 4, ptr %5) #13
  call void @llvm.lifetime.end.p0(i64 4, ptr %4) #13
  call void @llvm.lifetime.end.p0(i64 4, ptr %3) #13
  br label %1507

1507:                                             ; preds = %1506
  %1508 = load ptr, ptr %12, align 8
  %1509 = load i32, ptr %13, align 4
  %1510 = insertvalue { ptr, i32 } poison, ptr %1508, 0
  %1511 = insertvalue { ptr, i32 } %1510, i32 %1509, 1
  resume { ptr, i32 } %1511
}

declare noundef nonnull align 16 dereferenceable(122) ptr @_ZN4Test11CreateFloorEf(ptr noundef nonnull align 8 dereferenceable(112), float noundef) #6

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZN3JPH5ArrayINS_8TriangleENS_12STLAllocatorIS1_EEEC2Ev(ptr noundef nonnull align 8 dereferenceable(24)) unnamed_addr #8 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)) #9 align 2

; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare float @llvm.fmuladd.f32(float, float, float) #10

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

; Function Attrs: alwaysinline mustprogress uwtable
declare dso_local noundef ptr @_ZN3JPH17MeshShapeSettingsnwEm(i64 noundef) #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) #11

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZN3JPH5ArrayINS_8RefConstINS_15PhysicsMaterialEEENS_12STLAllocatorIS3_EEEC2Ev(ptr noundef nonnull align 8 dereferenceable(24)) unnamed_addr #8 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 #6

; Function Attrs: alwaysinline mustprogress uwtable
declare dso_local { double, double } @_ZN3JPH4Quat9sIdentityEv() #2 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 @_ZN3JPH5ArrayINS_8RefConstINS_15PhysicsMaterialEEENS_12STLAllocatorIS3_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(24)) unnamed_addr #7 align 2

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZN3JPH4Body14SetRestitutionEf(ptr noundef nonnull align 16 dereferenceable(122), float noundef) #8 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZN3JPH4Body11SetFrictionEf(ptr noundef nonnull align 16 dereferenceable(122), float noundef) #8 align 2

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

; Function Attrs: alwaysinline mustprogress nounwind uwtable
declare dso_local noundef nonnull align 16 dereferenceable(16) ptr @_ZN3JPH4Vec3pLES0_(ptr noundef nonnull align 16 dereferenceable(16), double, double) #12 align 2

; Function Attrs: alwaysinline mustprogress uwtable
declare dso_local noundef ptr @_ZN3JPH11ScaledShapenwEm(i64 noundef) #2 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 @_ZN3JPH11ScaledShapeC2EPKNS_5ShapeENS_4Vec3E(ptr noundef nonnull align 16 dereferenceable(64), ptr noundef, double, double) unnamed_addr #1 align 2

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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 = { 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 #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 nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #5 = { nocallback nofree nounwind willreturn memory(argmem: readwrite) }
attributes #6 = { "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #7 = { inlinehint mustprogress nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #8 = { mustprogress nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #9 = { inlinehint mustprogress uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #10 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) }
attributes #11 = { nocallback nofree nounwind willreturn memory(argmem: write) }
attributes #12 = { alwaysinline mustprogress nounwind 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 #13 = { 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 = !{!16, !6, i64 24}
!16 = !{!"_ZTS4Test", !6, i64 8, !6, i64 16, !6, i64 24, !6, i64 32, !6, i64 40, !17, i64 48, !18, i64 56}
!17 = !{!"bool", !7, i64 0}
!18 = !{!"_ZTSSt13unordered_mapIN3JPH6BodyIDENSt7__cxx1112basic_stringIcSt11char_traitsIcENS0_12STLAllocatorIcEEEESt4hashIS1_ESt8equal_toIS1_ESaISt4pairIKS1_S8_EEE", !19, i64 0}
!19 = !{!"_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, !20, i64 8, !21, i64 16, !20, i64 24, !22, i64 32, !6, i64 48}
!20 = !{!"long", !7, i64 0}
!21 = !{!"_ZTSNSt8__detail15_Hash_node_baseE", !6, i64 0}
!22 = !{!"_ZTSNSt8__detail20_Prime_rehash_policyE", !10, i64 0, !20, i64 8}
!23 = !{i64 0, i64 16, !24}
!24 = !{!7, !7, i64 0}
!25 = !{!26, !33, i64 96}
!26 = !{!"_ZTSN3JPH20BodyCreationSettingsE", !27, i64 0, !28, i64 16, !27, i64 32, !27, i64 48, !20, i64 64, !30, i64 72, !31, i64 80, !33, i64 96, !34, i64 97, !17, i64 98, !17, i64 99, !17, i64 100, !17, i64 101, !17, i64 102, !35, i64 103, !17, i64 104, !17, 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, !36, i64 144, !10, i64 148, !37, i64 160, !39, i64 240, !40, i64 248}
!27 = !{!"_ZTSN3JPH4Vec3E", !7, i64 0}
!28 = !{!"_ZTSN3JPH4QuatE", !29, i64 0}
!29 = !{!"_ZTSN3JPH4Vec4E", !7, i64 0}
!30 = !{!"short", !7, i64 0}
!31 = !{!"_ZTSN3JPH14CollisionGroupE", !32, i64 0, !12, i64 8, !12, i64 12}
!32 = !{!"_ZTSN3JPH8RefConstINS_11GroupFilterEEE", !6, i64 0}
!33 = !{!"_ZTSN3JPH11EMotionTypeE", !7, i64 0}
!34 = !{!"_ZTSN3JPH12EAllowedDOFsE", !7, i64 0}
!35 = !{!"_ZTSN3JPH14EMotionQualityE", !7, i64 0}
!36 = !{!"_ZTSN3JPH23EOverrideMassPropertiesE", !7, i64 0}
!37 = !{!"_ZTSN3JPH14MassPropertiesE", !10, i64 0, !38, i64 16}
!38 = !{!"_ZTSN3JPH5Mat44E", !7, i64 0}
!39 = !{!"_ZTSN3JPH8RefConstINS_13ShapeSettingsEEE", !6, i64 0}
!40 = !{!"_ZTSN3JPH8RefConstINS_5ShapeEEE", !6, i64 0}
!41 = !{!26, !30, i64 72}
!42 = !{!26, !35, i64 103}
!43 = !{!26, !10, i64 112}
!44 = !{!26, !10, i64 108}
!45 = !{!16, !6, i64 16}


; 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::Vec3" = type { %union.anon }
%union.anon = type { <4 x float> }
%"class.JPH::Array" = type { i64, i64, ptr }
%"class.JPH::Triangle" = type { [3 x %"class.JPH::Float3"], i32, i32 }
%"class.JPH::Float3" = type { float, float, float }
%"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::RefConst.6" = type { ptr }
%"class.JPH::Array.22" = type { i64, i64, ptr }
%"class.JPH::Ref.25" = type { ptr }
%"class.JPH::Ref.26" = type { ptr }
%"class.JPH::BoxShapeSettings" = type <{ %"class.JPH::ConvexShapeSettings.base", [4 x i8], %"class.JPH::Vec3", float, [12 x i8] }>
%"class.JPH::ConvexShapeSettings.base" = type <{ %"class.JPH::ShapeSettings", %"class.JPH::RefConst.7", float }>
%"class.JPH::ShapeSettings" = type { %"class.JPH::SerializableObject", %"class.JPH::RefTarget.10", i64, %"class.JPH::Result" }
%"class.JPH::SerializableObject" = type { ptr }
%"class.JPH::RefTarget.10" = type { %"struct.std::atomic" }
%"struct.std::atomic" = type { %"struct.std::__atomic_base" }
%"struct.std::__atomic_base" = type { i32 }
%"class.JPH::Result" = type <{ %union.anon.11, i8, [7 x i8] }>
%union.anon.11 = 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.15 }
%"struct.std::__cxx11::basic_string<char, std::char_traits<char>, JPH::STLAllocator<char>>::_Alloc_hider" = type { ptr }
%union.anon.15 = type { i64, [8 x i8] }
%"class.JPH::RefConst.7" = type { ptr }

; 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 @_ZN13HighSpeedTest18CreateDominoBlocksEN3JPH4Vec3Eiff(ptr noundef nonnull align 8 dereferenceable(112), double, double, i32 noundef, float noundef, float noundef) local_unnamed_addr #1 align 2

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

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

; Function Attrs: alwaysinline mustprogress uwtable
declare dso_local void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16), float noundef, float noundef, float noundef) unnamed_addr #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 #4 align 2

; Function Attrs: alwaysinline mustprogress uwtable
declare dso_local { double, double } @_ZNK3JPH4Vec3plES0_(ptr noundef nonnull align 16 dereferenceable(16), double, double) local_unnamed_addr #3 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 #5

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

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

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

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

declare noundef ptr @_ZN3JPH13BodyInterface10CreateBodyERKNS_20BodyCreationSettingsE(ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 16 dereferenceable(256)) local_unnamed_addr #5

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN3JPH4Body17SetLinearVelocityENS_4Vec3E(ptr noundef nonnull align 16 dereferenceable(122), double, double) local_unnamed_addr #1 align 2

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef nonnull align 4 dereferenceable(4) ptr @_ZNK3JPH4Body5GetIDEv(ptr noundef nonnull align 16 dereferenceable(122)) local_unnamed_addr #6 align 2

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN13HighSpeedTest17CreateSimpleSceneEv(ptr noundef nonnull align 8 dereferenceable(112) %0) local_unnamed_addr #1 align 2 personality ptr @__gxx_personality_v0 {
  %2 = alloca %"class.JPH::Vec3", align 16
  %3 = alloca %"class.JPH::Array", align 8
  %4 = alloca %"class.JPH::Triangle", align 4
  %5 = alloca %"class.JPH::Float3", align 4
  %6 = alloca %"class.JPH::Float3", align 4
  %7 = alloca %"class.JPH::Float3", align 4
  %8 = alloca %"class.JPH::Triangle", align 4
  %9 = alloca %"class.JPH::Float3", align 4
  %10 = alloca %"class.JPH::Float3", align 4
  %11 = alloca %"class.JPH::Float3", align 4
  %12 = alloca %"class.JPH::Triangle", 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::BodyCreationSettings", align 16
  %17 = alloca %"class.JPH::Array.22", align 8
  %18 = alloca %"class.JPH::Vec3", align 16
  %19 = alloca %"class.JPH::Vec3", align 16
  %20 = alloca %"class.JPH::Vec3", align 16
  %21 = alloca %"class.JPH::Vec3", align 16
  %22 = alloca %"class.JPH::Vec3", align 16
  %23 = alloca %"class.JPH::Vec3", align 16
  %24 = alloca %"class.JPH::Vec3", align 16
  %25 = alloca %"class.JPH::Vec3", align 16
  %26 = alloca %"class.JPH::Vec3", align 16
  %27 = alloca %"class.JPH::Vec3", align 16
  %28 = alloca %"class.JPH::Vec3", align 16
  %29 = alloca %"class.JPH::Vec3", align 16
  %30 = alloca %"class.JPH::Vec3", align 16
  %31 = alloca %"class.JPH::Vec3", align 16
  %32 = alloca %"class.JPH::BodyCreationSettings", align 16
  %33 = alloca %"class.JPH::Ref.25", align 8
  %34 = alloca %"class.JPH::Vec3", align 16
  %35 = alloca %"class.JPH::Ref.26", align 8
  %36 = alloca %"class.JPH::Vec3", align 16
  %37 = alloca %"class.JPH::Vec3", align 16
  %38 = alloca %"class.JPH::Vec3", align 16
  %39 = alloca %"class.JPH::Vec3", align 16
  %40 = alloca %"class.JPH::Vec3", align 16
  %41 = alloca %"class.JPH::Vec3", align 16
  %42 = alloca %"class.JPH::Vec3", align 16
  %43 = alloca %"class.JPH::Vec3", align 16
  %44 = alloca %"class.JPH::Vec3", align 16
  %45 = alloca %"class.JPH::Vec3", align 16
  %46 = alloca %"class.JPH::Vec3", align 16
  %47 = alloca %"class.JPH::Vec3", align 16
  %48 = alloca %"class.JPH::Vec3", align 16
  %49 = alloca %"class.JPH::Vec3", align 16
  %50 = alloca %"class.JPH::Vec3", align 16
  %51 = alloca %"class.JPH::Vec3", align 16
  %52 = alloca %"class.JPH::Vec3", align 16
  %53 = alloca %"class.JPH::Vec3", align 16
  %54 = alloca %"class.JPH::Vec3", align 16
  %55 = alloca %"class.JPH::Vec3", align 16
  %56 = alloca %"class.JPH::Vec3", align 16
  %57 = alloca %"class.JPH::Vec3", align 16
  %58 = alloca %"class.JPH::Vec3", align 16
  %59 = alloca %"class.JPH::Vec3", align 16
  %60 = alloca %"class.JPH::Vec3", align 16
  %61 = alloca %"class.JPH::Vec3", align 16
  %62 = alloca %"class.JPH::Vec3", align 16
  %63 = alloca %"class.JPH::Vec3", align 16
  %64 = alloca %"class.JPH::Vec3", align 16
  %65 = alloca %"class.JPH::Vec3", align 16
  %66 = alloca %"class.JPH::Vec3", align 16
  %67 = alloca %"class.JPH::BoxShapeSettings", align 16
  %68 = alloca %"class.JPH::Vec3", align 16
  %69 = alloca %"class.JPH::BodyCreationSettings", align 16
  %70 = alloca %"class.JPH::Vec3", align 16
  %71 = alloca %"class.JPH::Vec3", align 16
  %72 = alloca %"class.JPH::Vec3", align 16
  %73 = alloca %"class.JPH::BoxShapeSettings", align 16
  %74 = alloca %"class.JPH::Vec3", align 16
  %75 = alloca %"class.JPH::BodyCreationSettings", 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::BoxShapeSettings", align 16
  %80 = alloca %"class.JPH::Vec3", align 16
  %81 = alloca %"class.JPH::BodyCreationSettings", align 16
  %82 = alloca %"class.JPH::Vec3", align 16
  %83 = alloca %"class.JPH::Vec3", align 16
  %84 = alloca %"class.JPH::Vec3", align 16
  %85 = alloca %"class.JPH::BoxShapeSettings", align 16
  %86 = alloca %"class.JPH::Vec3", align 16
  %87 = alloca %"class.JPH::BodyCreationSettings", align 16
  %88 = alloca %"class.JPH::Vec3", align 16
  %89 = alloca %"class.JPH::Vec3", align 16
  %90 = tail call noundef nonnull align 16 dereferenceable(122) ptr @_ZN4Test11CreateFloorEf(ptr noundef nonnull align 8 dereferenceable(112) %0, float noundef 2.000000e+02)
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %2) #11
  call void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %2, float noundef 0.000000e+00, float noundef 0.000000e+00, float noundef -3.000000e+01)
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %3) #11
  call void @_ZN3JPH5ArrayINS_8TriangleENS_12STLAllocatorIS1_EEEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %3) #11
  call void @llvm.lifetime.start.p0(i64 44, ptr nonnull %4) #11
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %5) #11
  call void @_ZN3JPH6Float3C2Efff(ptr noundef nonnull align 4 dereferenceable(12) %5, float noundef -1.000000e+00, float noundef 0.000000e+00, float noundef 0xBFF19999A0000000)
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %6) #11
  call void @_ZN3JPH6Float3C2Efff(ptr noundef nonnull align 4 dereferenceable(12) %6, float noundef 1.000000e+00, float noundef 0.000000e+00, float noundef 0xBFF19999A0000000)
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %7) #11
  call void @_ZN3JPH6Float3C2Efff(ptr noundef nonnull align 4 dereferenceable(12) %7, float noundef 0.000000e+00, float noundef 2.000000e+00, float noundef 0xBFF19999A0000000)
  call void @_ZN3JPH8TriangleC2ERKNS_6Float3ES3_S3_jj(ptr noundef nonnull align 4 dereferenceable(44) %4, ptr noundef nonnull align 4 dereferenceable(12) %5, ptr noundef nonnull align 4 dereferenceable(12) %6, ptr noundef nonnull align 4 dereferenceable(12) %7, i32 noundef 0, i32 noundef 0)
  invoke void @_ZN3JPH5ArrayINS_8TriangleENS_12STLAllocatorIS1_EEE9push_backEOS1_(ptr noundef nonnull align 8 dereferenceable(24) %3, ptr noundef nonnull align 4 dereferenceable(44) %4)
          to label %91 unwind label %101

91:                                               ; preds = %1
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %7) #11
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %6) #11
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %5) #11
  call void @llvm.lifetime.end.p0(i64 44, ptr nonnull %4) #11
  call void @llvm.lifetime.start.p0(i64 44, ptr nonnull %8) #11
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %9) #11
  call void @_ZN3JPH6Float3C2Efff(ptr noundef nonnull align 4 dereferenceable(12) %9, float noundef -1.000000e+00, float noundef 0.000000e+00, float noundef 0x3FF19999A0000000)
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %10) #11
  call void @_ZN3JPH6Float3C2Efff(ptr noundef nonnull align 4 dereferenceable(12) %10, float noundef 0.000000e+00, float noundef 2.000000e+00, float noundef 0x3FF19999A0000000)
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %11) #11
  call void @_ZN3JPH6Float3C2Efff(ptr noundef nonnull align 4 dereferenceable(12) %11, float noundef 1.000000e+00, float noundef 0.000000e+00, float noundef 0x3FF19999A0000000)
  call void @_ZN3JPH8TriangleC2ERKNS_6Float3ES3_S3_jj(ptr noundef nonnull align 4 dereferenceable(44) %8, ptr noundef nonnull align 4 dereferenceable(12) %9, ptr noundef nonnull align 4 dereferenceable(12) %10, ptr noundef nonnull align 4 dereferenceable(12) %11, i32 noundef 0, i32 noundef 0)
  invoke void @_ZN3JPH5ArrayINS_8TriangleENS_12STLAllocatorIS1_EEE9push_backEOS1_(ptr noundef nonnull align 8 dereferenceable(24) %3, ptr noundef nonnull align 4 dereferenceable(44) %8)
          to label %92 unwind label %103

92:                                               ; preds = %91
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %11) #11
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %10) #11
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %9) #11
  call void @llvm.lifetime.end.p0(i64 44, ptr nonnull %8) #11
  call void @llvm.lifetime.start.p0(i64 44, ptr nonnull %4) #11
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %5) #11
  call void @_ZN3JPH6Float3C2Efff(ptr noundef nonnull align 4 dereferenceable(12) %5, float noundef 1.000000e+00, float noundef 0.000000e+00, float noundef 0xBFF19999A0000000)
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %6) #11
  call void @_ZN3JPH6Float3C2Efff(ptr noundef nonnull align 4 dereferenceable(12) %6, float noundef 3.000000e+00, float noundef 0.000000e+00, float noundef 0xBFF19999A0000000)
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %7) #11
  call void @_ZN3JPH6Float3C2Efff(ptr noundef nonnull align 4 dereferenceable(12) %7, float noundef 2.000000e+00, float noundef 2.000000e+00, float noundef 0xBFF19999A0000000)
  call void @_ZN3JPH8TriangleC2ERKNS_6Float3ES3_S3_jj(ptr noundef nonnull align 4 dereferenceable(44) %4, ptr noundef nonnull align 4 dereferenceable(12) %5, ptr noundef nonnull align 4 dereferenceable(12) %6, ptr noundef nonnull align 4 dereferenceable(12) %7, i32 noundef 0, i32 noundef 0)
  invoke void @_ZN3JPH5ArrayINS_8TriangleENS_12STLAllocatorIS1_EEE9push_backEOS1_(ptr noundef nonnull align 8 dereferenceable(24) %3, ptr noundef nonnull align 4 dereferenceable(44) %4)
          to label %93 unwind label %101

93:                                               ; preds = %92
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %7) #11
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %6) #11
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %5) #11
  call void @llvm.lifetime.end.p0(i64 44, ptr nonnull %4) #11
  call void @llvm.lifetime.start.p0(i64 44, ptr nonnull %8) #11
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %9) #11
  call void @_ZN3JPH6Float3C2Efff(ptr noundef nonnull align 4 dereferenceable(12) %9, float noundef 1.000000e+00, float noundef 0.000000e+00, float noundef 0x3FF19999A0000000)
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %10) #11
  call void @_ZN3JPH6Float3C2Efff(ptr noundef nonnull align 4 dereferenceable(12) %10, float noundef 2.000000e+00, float noundef 2.000000e+00, float noundef 0x3FF19999A0000000)
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %11) #11
  call void @_ZN3JPH6Float3C2Efff(ptr noundef nonnull align 4 dereferenceable(12) %11, float noundef 3.000000e+00, float noundef 0.000000e+00, float noundef 0x3FF19999A0000000)
  call void @_ZN3JPH8TriangleC2ERKNS_6Float3ES3_S3_jj(ptr noundef nonnull align 4 dereferenceable(44) %8, ptr noundef nonnull align 4 dereferenceable(12) %9, ptr noundef nonnull align 4 dereferenceable(12) %10, ptr noundef nonnull align 4 dereferenceable(12) %11, i32 noundef 0, i32 noundef 0)
  invoke void @_ZN3JPH5ArrayINS_8TriangleENS_12STLAllocatorIS1_EEE9push_backEOS1_(ptr noundef nonnull align 8 dereferenceable(24) %3, ptr noundef nonnull align 4 dereferenceable(44) %8)
          to label %94 unwind label %103

94:                                               ; preds = %93
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %11) #11
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %10) #11
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %9) #11
  call void @llvm.lifetime.end.p0(i64 44, ptr nonnull %8) #11
  call void @llvm.lifetime.start.p0(i64 44, ptr nonnull %4) #11
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %5) #11
  call void @_ZN3JPH6Float3C2Efff(ptr noundef nonnull align 4 dereferenceable(12) %5, float noundef 3.000000e+00, float noundef 0.000000e+00, float noundef 0xBFF19999A0000000)
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %6) #11
  call void @_ZN3JPH6Float3C2Efff(ptr noundef nonnull align 4 dereferenceable(12) %6, float noundef 5.000000e+00, float noundef 0.000000e+00, float noundef 0xBFF19999A0000000)
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %7) #11
  call void @_ZN3JPH6Float3C2Efff(ptr noundef nonnull align 4 dereferenceable(12) %7, float noundef 4.000000e+00, float noundef 2.000000e+00, float noundef 0xBFF19999A0000000)
  call void @_ZN3JPH8TriangleC2ERKNS_6Float3ES3_S3_jj(ptr noundef nonnull align 4 dereferenceable(44) %4, ptr noundef nonnull align 4 dereferenceable(12) %5, ptr noundef nonnull align 4 dereferenceable(12) %6, ptr noundef nonnull align 4 dereferenceable(12) %7, i32 noundef 0, i32 noundef 0)
  invoke void @_ZN3JPH5ArrayINS_8TriangleENS_12STLAllocatorIS1_EEE9push_backEOS1_(ptr noundef nonnull align 8 dereferenceable(24) %3, ptr noundef nonnull align 4 dereferenceable(44) %4)
          to label %95 unwind label %101

95:                                               ; preds = %94
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %7) #11
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %6) #11
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %5) #11
  call void @llvm.lifetime.end.p0(i64 44, ptr nonnull %4) #11
  call void @llvm.lifetime.start.p0(i64 44, ptr nonnull %8) #11
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %9) #11
  call void @_ZN3JPH6Float3C2Efff(ptr noundef nonnull align 4 dereferenceable(12) %9, float noundef 3.000000e+00, float noundef 0.000000e+00, float noundef 0x3FF19999A0000000)
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %10) #11
  call void @_ZN3JPH6Float3C2Efff(ptr noundef nonnull align 4 dereferenceable(12) %10, float noundef 4.000000e+00, float noundef 2.000000e+00, float noundef 0x3FF19999A0000000)
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %11) #11
  call void @_ZN3JPH6Float3C2Efff(ptr noundef nonnull align 4 dereferenceable(12) %11, float noundef 5.000000e+00, float noundef 0.000000e+00, float noundef 0x3FF19999A0000000)
  call void @_ZN3JPH8TriangleC2ERKNS_6Float3ES3_S3_jj(ptr noundef nonnull align 4 dereferenceable(44) %8, ptr noundef nonnull align 4 dereferenceable(12) %9, ptr noundef nonnull align 4 dereferenceable(12) %10, ptr noundef nonnull align 4 dereferenceable(12) %11, i32 noundef 0, i32 noundef 0)
  invoke void @_ZN3JPH5ArrayINS_8TriangleENS_12STLAllocatorIS1_EEE9push_backEOS1_(ptr noundef nonnull align 8 dereferenceable(24) %3, ptr noundef nonnull align 4 dereferenceable(44) %8)
          to label %96 unwind label %103

96:                                               ; preds = %95
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %11) #11
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %10) #11
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %9) #11
  call void @llvm.lifetime.end.p0(i64 44, ptr nonnull %8) #11
  call void @llvm.lifetime.start.p0(i64 44, ptr nonnull %4) #11
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %5) #11
  call void @_ZN3JPH6Float3C2Efff(ptr noundef nonnull align 4 dereferenceable(12) %5, float noundef 5.000000e+00, float noundef 0.000000e+00, float noundef 0xBFF19999A0000000)
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %6) #11
  call void @_ZN3JPH6Float3C2Efff(ptr noundef nonnull align 4 dereferenceable(12) %6, float noundef 7.000000e+00, float noundef 0.000000e+00, float noundef 0xBFF19999A0000000)
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %7) #11
  call void @_ZN3JPH6Float3C2Efff(ptr noundef nonnull align 4 dereferenceable(12) %7, float noundef 6.000000e+00, float noundef 2.000000e+00, float noundef 0xBFF19999A0000000)
  call void @_ZN3JPH8TriangleC2ERKNS_6Float3ES3_S3_jj(ptr noundef nonnull align 4 dereferenceable(44) %4, ptr noundef nonnull align 4 dereferenceable(12) %5, ptr noundef nonnull align 4 dereferenceable(12) %6, ptr noundef nonnull align 4 dereferenceable(12) %7, i32 noundef 0, i32 noundef 0)
  invoke void @_ZN3JPH5ArrayINS_8TriangleENS_12STLAllocatorIS1_EEE9push_backEOS1_(ptr noundef nonnull align 8 dereferenceable(24) %3, ptr noundef nonnull align 4 dereferenceable(44) %4)
          to label %97 unwind label %101

97:                                               ; preds = %96
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %7) #11
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %6) #11
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %5) #11
  call void @llvm.lifetime.end.p0(i64 44, ptr nonnull %4) #11
  call void @llvm.lifetime.start.p0(i64 44, ptr nonnull %8) #11
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %9) #11
  call void @_ZN3JPH6Float3C2Efff(ptr noundef nonnull align 4 dereferenceable(12) %9, float noundef 5.000000e+00, float noundef 0.000000e+00, float noundef 0x3FF19999A0000000)
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %10) #11
  call void @_ZN3JPH6Float3C2Efff(ptr noundef nonnull align 4 dereferenceable(12) %10, float noundef 6.000000e+00, float noundef 2.000000e+00, float noundef 0x3FF19999A0000000)
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %11) #11
  call void @_ZN3JPH6Float3C2Efff(ptr noundef nonnull align 4 dereferenceable(12) %11, float noundef 7.000000e+00, float noundef 0.000000e+00, float noundef 0x3FF19999A0000000)
  call void @_ZN3JPH8TriangleC2ERKNS_6Float3ES3_S3_jj(ptr noundef nonnull align 4 dereferenceable(44) %8, ptr noundef nonnull align 4 dereferenceable(12) %9, ptr noundef nonnull align 4 dereferenceable(12) %10, ptr noundef nonnull align 4 dereferenceable(12) %11, i32 noundef 0, i32 noundef 0)
  invoke void @_ZN3JPH5ArrayINS_8TriangleENS_12STLAllocatorIS1_EEE9push_backEOS1_(ptr noundef nonnull align 8 dereferenceable(24) %3, ptr noundef nonnull align 4 dereferenceable(44) %8)
          to label %98 unwind label %103

98:                                               ; preds = %97
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %11) #11
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %10) #11
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %9) #11
  call void @llvm.lifetime.end.p0(i64 44, ptr nonnull %8) #11
  call void @llvm.lifetime.start.p0(i64 44, ptr nonnull %4) #11
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %5) #11
  call void @_ZN3JPH6Float3C2Efff(ptr noundef nonnull align 4 dereferenceable(12) %5, float noundef 7.000000e+00, float noundef 0.000000e+00, float noundef 0xBFF19999A0000000)
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %6) #11
  call void @_ZN3JPH6Float3C2Efff(ptr noundef nonnull align 4 dereferenceable(12) %6, float noundef 9.000000e+00, float noundef 0.000000e+00, float noundef 0xBFF19999A0000000)
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %7) #11
  call void @_ZN3JPH6Float3C2Efff(ptr noundef nonnull align 4 dereferenceable(12) %7, float noundef 8.000000e+00, float noundef 2.000000e+00, float noundef 0xBFF19999A0000000)
  call void @_ZN3JPH8TriangleC2ERKNS_6Float3ES3_S3_jj(ptr noundef nonnull align 4 dereferenceable(44) %4, ptr noundef nonnull align 4 dereferenceable(12) %5, ptr noundef nonnull align 4 dereferenceable(12) %6, ptr noundef nonnull align 4 dereferenceable(12) %7, i32 noundef 0, i32 noundef 0)
  invoke void @_ZN3JPH5ArrayINS_8TriangleENS_12STLAllocatorIS1_EEE9push_backEOS1_(ptr noundef nonnull align 8 dereferenceable(24) %3, ptr noundef nonnull align 4 dereferenceable(44) %4)
          to label %99 unwind label %101

99:                                               ; preds = %98
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %7) #11
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %6) #11
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %5) #11
  call void @llvm.lifetime.end.p0(i64 44, ptr nonnull %4) #11
  call void @llvm.lifetime.start.p0(i64 44, ptr nonnull %8) #11
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %9) #11
  call void @_ZN3JPH6Float3C2Efff(ptr noundef nonnull align 4 dereferenceable(12) %9, float noundef 7.000000e+00, float noundef 0.000000e+00, float noundef 0x3FF19999A0000000)
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %10) #11
  call void @_ZN3JPH6Float3C2Efff(ptr noundef nonnull align 4 dereferenceable(12) %10, float noundef 8.000000e+00, float noundef 2.000000e+00, float noundef 0x3FF19999A0000000)
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %11) #11
  call void @_ZN3JPH6Float3C2Efff(ptr noundef nonnull align 4 dereferenceable(12) %11, float noundef 9.000000e+00, float noundef 0.000000e+00, float noundef 0x3FF19999A0000000)
  call void @_ZN3JPH8TriangleC2ERKNS_6Float3ES3_S3_jj(ptr noundef nonnull align 4 dereferenceable(44) %8, ptr noundef nonnull align 4 dereferenceable(12) %9, ptr noundef nonnull align 4 dereferenceable(12) %10, ptr noundef nonnull align 4 dereferenceable(12) %11, i32 noundef 0, i32 noundef 0)
  invoke void @_ZN3JPH5ArrayINS_8TriangleENS_12STLAllocatorIS1_EEE9push_backEOS1_(ptr noundef nonnull align 8 dereferenceable(24) %3, ptr noundef nonnull align 4 dereferenceable(44) %8)
          to label %100 unwind label %103

100:                                              ; preds = %99
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %11) #11
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %10) #11
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %9) #11
  call void @llvm.lifetime.end.p0(i64 44, ptr nonnull %8) #11
  call void @llvm.lifetime.start.p0(i64 44, ptr nonnull %12) #11
  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 0xBFF19999A0000000, float noundef 0.000000e+00, float noundef -1.000000e+00)
  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 0xBFF19999A0000000, float noundef 2.000000e+00, float noundef 0.000000e+00)
  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 0xBFF19999A0000000, float noundef 0.000000e+00, float noundef 1.000000e+00)
  call void @_ZN3JPH8TriangleC2ERKNS_6Float3ES3_S3_jj(ptr noundef nonnull align 4 dereferenceable(44) %12, ptr noundef nonnull align 4 dereferenceable(12) %13, 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) %3, ptr noundef nonnull align 4 dereferenceable(44) %12)
          to label %105 unwind label %646

101:                                              ; preds = %98, %96, %94, %92, %1
  %102 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %7) #11
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %6) #11
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %5) #11
  call void @llvm.lifetime.end.p0(i64 44, ptr nonnull %4) #11
  br label %657

103:                                              ; preds = %99, %97, %95, %93, %91
  %104 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %11) #11
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %10) #11
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %9) #11
  call void @llvm.lifetime.end.p0(i64 44, ptr nonnull %8) #11
  br label %657

105:                                              ; preds = %100
  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 44, ptr nonnull %12) #11
  %106 = getelementptr inbounds i8, ptr %0, i64 24
  %107 = load ptr, ptr %106, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 256, ptr nonnull %16) #11
  %108 = invoke noundef ptr @_ZN3JPH17MeshShapeSettingsnwEm(i64 noundef 152)
          to label %109 unwind label %648

109:                                              ; preds = %105
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %17, i8 0, i64 24, i1 false)
  call void @_ZN3JPH5ArrayINS_8RefConstINS_15PhysicsMaterialEEENS_12STLAllocatorIS3_EEEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %17) #11
  invoke void @_ZN3JPH17MeshShapeSettingsC1ERKNS_5ArrayINS_8TriangleENS_12STLAllocatorIS2_EEEENS1_INS_8RefConstINS_15PhysicsMaterialEEENS3_ISA_EEEE(ptr noundef nonnull align 8 dereferenceable(152) %108, ptr noundef nonnull align 8 dereferenceable(24) %3, ptr noundef nonnull %17)
          to label %110 unwind label %651

110:                                              ; preds = %109
  %.sroa.0114.0.copyload = load double, ptr %2, align 16
  %.sroa.2115.0..sroa_idx = getelementptr inbounds i8, ptr %2, i64 8
  %.sroa.2115.0.copyload = load double, ptr %.sroa.2115.0..sroa_idx, align 8, !tbaa !17
  %111 = invoke { double, double } @_ZN3JPH4Quat9sIdentityEv()
          to label %112 unwind label %.thread179

112:                                              ; preds = %110
  %113 = extractvalue { double, double } %111, 0
  %114 = extractvalue { double, double } %111, 1
  invoke void @_ZN3JPH20BodyCreationSettingsC2EPKNS_13ShapeSettingsENS_4Vec3ENS_4QuatENS_11EMotionTypeEt(ptr noundef nonnull align 16 dereferenceable(256) %16, ptr noundef nonnull %108, double %.sroa.0114.0.copyload, double %.sroa.2115.0.copyload, double %113, double %114, i8 noundef zeroext 0, i16 noundef zeroext 0)
          to label %115 unwind label %.thread179

115:                                              ; preds = %112
  %116 = invoke noundef ptr @_ZN3JPH13BodyInterface10CreateBodyERKNS_20BodyCreationSettingsE(ptr noundef nonnull align 8 dereferenceable(24) %107, ptr noundef nonnull align 16 dereferenceable(256) %16)
          to label %117 unwind label %.thread

117:                                              ; preds = %115
  call void @_ZN3JPH20BodyCreationSettingsD2Ev(ptr noundef nonnull align 16 dereferenceable(256) %16) #11
  call void @_ZN3JPH5ArrayINS_8RefConstINS_15PhysicsMaterialEEENS_12STLAllocatorIS3_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %17) #11
  call void @llvm.lifetime.end.p0(i64 256, ptr nonnull %16) #11
  call void @_ZN3JPH4Body14SetRestitutionEf(ptr noundef nonnull align 16 dereferenceable(122) %116, float noundef 1.000000e+00)
  call void @_ZN3JPH4Body11SetFrictionEf(ptr noundef nonnull align 16 dereferenceable(122) %116, float noundef 0.000000e+00)
  %118 = load ptr, ptr %106, align 8, !tbaa !5
  %119 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK3JPH4Body5GetIDEv(ptr noundef nonnull align 16 dereferenceable(122) %116)
  invoke void @_ZN3JPH13BodyInterface7AddBodyERKNS_6BodyIDENS_11EActivationE(ptr noundef nonnull align 8 dereferenceable(24) %118, ptr noundef nonnull align 4 dereferenceable(4) %119, i32 noundef 1)
          to label %120 unwind label %653

120:                                              ; preds = %117
  invoke void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %18, float noundef 9.000000e+00, float noundef 1.000000e+00, float noundef 0.000000e+00)
          to label %121 unwind label %653

121:                                              ; preds = %120
  %122 = load double, ptr %18, align 16
  %123 = getelementptr inbounds i8, ptr %18, i64 8
  %124 = load double, ptr %123, align 8
  %125 = invoke { double, double } @_ZNK3JPH4Vec3plES0_(ptr noundef nonnull align 16 dereferenceable(16) %2, double %122, double %124)
          to label %126 unwind label %653

126:                                              ; preds = %121
  %127 = extractvalue { double, double } %125, 0
  %128 = extractvalue { double, double } %125, 1
  invoke void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %19, float noundef -2.400000e+02, float noundef 0.000000e+00, float noundef -2.400000e+02)
          to label %129 unwind label %653

129:                                              ; preds = %126
  %130 = invoke noundef ptr @_ZN3JPH11SphereShapenwEm(i64 noundef 48)
          to label %131 unwind label %653

131:                                              ; preds = %129
  invoke void @_ZN3JPH11SphereShapeC2EfPKNS_15PhysicsMaterialE(ptr noundef nonnull align 8 dereferenceable(48) %130, float noundef 0x3FB99999A0000000, ptr noundef null)
          to label %132 unwind label %655

132:                                              ; preds = %131
  %133 = load double, ptr %19, align 16
  %134 = getelementptr inbounds i8, ptr %19, i64 8
  %135 = load double, ptr %134, align 8
  invoke void @_ZN13HighSpeedTest19CreateDynamicObjectEN3JPH4Vec3ES1_PNS0_5ShapeENS0_14EMotionQualityE(ptr noundef nonnull align 8 dereferenceable(112) %0, double %127, double %128, double %133, double %135, ptr noundef nonnull %130, i8 noundef zeroext 1)
          to label %136 unwind label %653

136:                                              ; preds = %132
  call void @_ZN3JPH5ArrayINS_8TriangleENS_12STLAllocatorIS1_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %3) #11
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %3) #11
  call void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %20, float noundef 0.000000e+00, float noundef 0.000000e+00, float noundef 5.000000e+00)
  %137 = load double, ptr %20, align 16
  %138 = getelementptr inbounds i8, ptr %20, i64 8
  %139 = load double, ptr %138, align 8
  %140 = call noundef nonnull align 16 dereferenceable(16) ptr @_ZN3JPH4Vec3pLES0_(ptr noundef nonnull align 16 dereferenceable(16) %2, double %137, double %139)
  %.sroa.0108.0.copyload = load double, ptr %2, align 16
  %.sroa.2109.0.copyload = load double, ptr %.sroa.2115.0..sroa_idx, align 8, !tbaa !17
  call void @_ZN13HighSpeedTest18CreateDominoBlocksEN3JPH4Vec3Eiff(ptr noundef nonnull align 8 dereferenceable(112) %0, double %.sroa.0108.0.copyload, double %.sroa.2109.0.copyload, i32 noundef 5, float noundef 2.000000e+03, float noundef 0x3FB99999A0000000)
  call void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %21, float noundef 9.000000e+00, float noundef 1.000000e+00, float noundef 0.000000e+00)
  %141 = load double, ptr %21, align 16
  %142 = getelementptr inbounds i8, ptr %21, i64 8
  %143 = load double, ptr %142, align 8
  %144 = call { double, double } @_ZNK3JPH4Vec3plES0_(ptr noundef nonnull align 16 dereferenceable(16) %2, double %141, double %143)
  call void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %22, float noundef -2.400000e+02, float noundef 0.000000e+00, float noundef -2.400000e+02)
  %145 = call noundef ptr @_ZN3JPH11SphereShapenwEm(i64 noundef 48)
  invoke void @_ZN3JPH11SphereShapeC2EfPKNS_15PhysicsMaterialE(ptr noundef nonnull align 8 dereferenceable(48) %145, float noundef 0x3FB99999A0000000, ptr noundef null)
          to label %146 unwind label %658

146:                                              ; preds = %136
  %147 = extractvalue { double, double } %144, 1
  %148 = extractvalue { double, double } %144, 0
  %149 = load double, ptr %22, align 16
  %150 = getelementptr inbounds i8, ptr %22, i64 8
  %151 = load double, ptr %150, align 8
  call void @_ZN13HighSpeedTest19CreateDynamicObjectEN3JPH4Vec3ES1_PNS0_5ShapeENS0_14EMotionQualityE(ptr noundef nonnull align 8 dereferenceable(112) %0, double %148, double %147, double %149, double %151, ptr noundef nonnull %145, i8 noundef zeroext 1)
  call void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %23, float noundef 0.000000e+00, float noundef 0.000000e+00, float noundef 5.000000e+00)
  %152 = load double, ptr %23, align 16
  %153 = getelementptr inbounds i8, ptr %23, i64 8
  %154 = load double, ptr %153, align 8
  %155 = call noundef nonnull align 16 dereferenceable(16) ptr @_ZN3JPH4Vec3pLES0_(ptr noundef nonnull align 16 dereferenceable(16) %2, double %152, double %154)
  %.sroa.0104.0.copyload = load double, ptr %2, align 16
  %.sroa.2105.0.copyload = load double, ptr %.sroa.2115.0..sroa_idx, align 8, !tbaa !17
  call void @_ZN13HighSpeedTest18CreateDominoBlocksEN3JPH4Vec3Eiff(ptr noundef nonnull align 8 dereferenceable(112) %0, double %.sroa.0104.0.copyload, double %.sroa.2105.0.copyload, i32 noundef 5, float noundef 2.000000e+03, float noundef 0x3FB99999A0000000)
  call void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %24, float noundef 9.000000e+00, float noundef 1.000000e+00, float noundef 0.000000e+00)
  %156 = load double, ptr %24, align 16
  %157 = getelementptr inbounds i8, ptr %24, i64 8
  %158 = load double, ptr %157, align 8
  %159 = call { double, double } @_ZNK3JPH4Vec3plES0_(ptr noundef nonnull align 16 dereferenceable(16) %2, double %156, double %158)
  %160 = extractvalue { double, double } %159, 0
  %161 = extractvalue { double, double } %159, 1
  call void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %25, float noundef -2.400000e+02, float noundef 0.000000e+00, float noundef -2.400000e+02)
  %162 = call noundef ptr @_ZN3JPH11ScaledShapenwEm(i64 noundef 64)
  %163 = invoke noundef ptr @_ZN3JPH8BoxShapenwEm(i64 noundef 80)
          to label %164 unwind label %660

164:                                              ; preds = %146
  %165 = invoke { double, double } @_ZN3JPH4Vec310sReplicateEf(float noundef 0x3FA99999A0000000)
          to label %166 unwind label %662

166:                                              ; preds = %164
  %167 = extractvalue { double, double } %165, 0
  %168 = extractvalue { double, double } %165, 1
  invoke void @_ZN3JPH8BoxShapeC2ENS_4Vec3EfPKNS_15PhysicsMaterialE(ptr noundef nonnull align 16 dereferenceable(80) %163, double %167, double %168, float noundef 0x3F847AE140000000, ptr noundef null)
          to label %169 unwind label %662

169:                                              ; preds = %166
  %170 = invoke { double, double } @_ZN3JPH4Vec310sReplicateEf(float noundef 2.000000e+00)
          to label %171 unwind label %660

171:                                              ; preds = %169
  %172 = extractvalue { double, double } %170, 0
  %173 = extractvalue { double, double } %170, 1
  invoke void @_ZN3JPH11ScaledShapeC2EPKNS_5ShapeENS_4Vec3E(ptr noundef nonnull align 16 dereferenceable(64) %162, ptr noundef nonnull %163, double %172, double %173)
          to label %174 unwind label %660

174:                                              ; preds = %171
  %175 = load double, ptr %25, align 16
  %176 = getelementptr inbounds i8, ptr %25, i64 8
  %177 = load double, ptr %176, align 8
  call void @_ZN13HighSpeedTest19CreateDynamicObjectEN3JPH4Vec3ES1_PNS0_5ShapeENS0_14EMotionQualityE(ptr noundef nonnull align 8 dereferenceable(112) %0, double %160, double %161, double %175, double %177, ptr noundef nonnull %162, i8 noundef zeroext 1)
  call void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %26, float noundef 0.000000e+00, float noundef 0.000000e+00, float noundef 5.000000e+00)
  %178 = load double, ptr %26, align 16
  %179 = getelementptr inbounds i8, ptr %26, i64 8
  %180 = load double, ptr %179, align 8
  %181 = call noundef nonnull align 16 dereferenceable(16) ptr @_ZN3JPH4Vec3pLES0_(ptr noundef nonnull align 16 dereferenceable(16) %2, double %178, double %180)
  call void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %27, float noundef -1.000000e+00, float noundef 0.000000e+00, float noundef 0.000000e+00)
  %182 = load double, ptr %27, align 16
  %183 = getelementptr inbounds i8, ptr %27, i64 8
  %184 = load double, ptr %183, align 8
  %185 = call { double, double } @_ZNK3JPH4Vec3plES0_(ptr noundef nonnull align 16 dereferenceable(16) %2, double %182, double %184)
  %186 = extractvalue { double, double } %185, 0
  %187 = extractvalue { double, double } %185, 1
  call void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %28, float noundef 0.000000e+00, float noundef 2.400000e+02, float noundef 0.000000e+00)
  %188 = call noundef ptr @_ZN3JPH8BoxShapenwEm(i64 noundef 80)
  %189 = invoke { double, double } @_ZN3JPH4Vec310sReplicateEf(float noundef 0x3FB99999A0000000)
          to label %190 unwind label %665

190:                                              ; preds = %174
  %191 = extractvalue { double, double } %189, 0
  %192 = extractvalue { double, double } %189, 1
  invoke void @_ZN3JPH8BoxShapeC2ENS_4Vec3EfPKNS_15PhysicsMaterialE(ptr noundef nonnull align 16 dereferenceable(80) %188, double %191, double %192, float noundef 0x3FA99999A0000000, ptr noundef null)
          to label %193 unwind label %665

193:                                              ; preds = %190
  %194 = load double, ptr %28, align 16
  %195 = getelementptr inbounds i8, ptr %28, i64 8
  %196 = load double, ptr %195, align 8
  call void @_ZN13HighSpeedTest19CreateDynamicObjectEN3JPH4Vec3ES1_PNS0_5ShapeENS0_14EMotionQualityE(ptr noundef nonnull align 8 dereferenceable(112) %0, double %186, double %187, double %194, double %196, ptr noundef nonnull %188, i8 noundef zeroext 1)
  call void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %29, float noundef 1.000000e+00, float noundef 0.000000e+00, float noundef 0.000000e+00)
  %197 = load double, ptr %29, align 16
  %198 = getelementptr inbounds i8, ptr %29, i64 8
  %199 = load double, ptr %198, align 8
  %200 = call { double, double } @_ZNK3JPH4Vec3plES0_(ptr noundef nonnull align 16 dereferenceable(16) %2, double %197, double %199)
  %201 = extractvalue { double, double } %200, 0
  %202 = extractvalue { double, double } %200, 1
  call void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %30, float noundef 0.000000e+00, float noundef -2.400000e+02, float noundef 0.000000e+00)
  %203 = call noundef ptr @_ZN3JPH8BoxShapenwEm(i64 noundef 80)
  %204 = invoke { double, double } @_ZN3JPH4Vec310sReplicateEf(float noundef 0x3FB99999A0000000)
          to label %205 unwind label %667

205:                                              ; preds = %193
  %206 = extractvalue { double, double } %204, 0
  %207 = extractvalue { double, double } %204, 1
  invoke void @_ZN3JPH8BoxShapeC2ENS_4Vec3EfPKNS_15PhysicsMaterialE(ptr noundef nonnull align 16 dereferenceable(80) %203, double %206, double %207, float noundef 0x3FA99999A0000000, ptr noundef null)
          to label %208 unwind label %667

208:                                              ; preds = %205
  %209 = load double, ptr %30, align 16
  %210 = getelementptr inbounds i8, ptr %30, i64 8
  %211 = load double, ptr %210, align 8
  call void @_ZN13HighSpeedTest19CreateDynamicObjectEN3JPH4Vec3ES1_PNS0_5ShapeENS0_14EMotionQualityE(ptr noundef nonnull align 8 dereferenceable(112) %0, double %201, double %202, double %209, double %211, ptr noundef nonnull %203, i8 noundef zeroext 1)
  call void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %31, float noundef 0.000000e+00, float noundef 0.000000e+00, float noundef 5.000000e+00)
  %212 = load double, ptr %31, align 16
  %213 = getelementptr inbounds i8, ptr %31, i64 8
  %214 = load double, ptr %213, align 8
  %215 = call noundef nonnull align 16 dereferenceable(16) ptr @_ZN3JPH4Vec3pLES0_(ptr noundef nonnull align 16 dereferenceable(16) %2, double %212, double %214)
  call void @llvm.lifetime.start.p0(i64 256, ptr nonnull %32) #11
  call void @_ZN3JPH20BodyCreationSettingsC2Ev(ptr noundef nonnull align 16 dereferenceable(256) %32)
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %33) #11
  %216 = invoke noundef ptr @_ZN3JPH16BoxShapeSettingsnwEm(i64 noundef 112)
          to label %217 unwind label %669

217:                                              ; preds = %208
  invoke void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %34, float noundef 1.000000e+00, float noundef 1.000000e+00, float noundef 0x3FB99999A0000000)
          to label %218 unwind label %671

218:                                              ; preds = %217
  %219 = load double, ptr %34, align 16
  %220 = getelementptr inbounds i8, ptr %34, i64 8
  %221 = load double, ptr %220, align 8
  invoke void @_ZN3JPH16BoxShapeSettingsC2ENS_4Vec3EfPKNS_15PhysicsMaterialE(ptr noundef nonnull align 16 dereferenceable(112) %216, double %219, double %221, float noundef 0x3FA99999A0000000, ptr noundef null)
          to label %222 unwind label %671

222:                                              ; preds = %218
  invoke void @_ZN3JPH3RefINS_16BoxShapeSettingsEEC2EPS1_(ptr noundef nonnull align 8 dereferenceable(8) %33, ptr noundef nonnull %216)
          to label %223 unwind label %669

223:                                              ; preds = %222
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %35) #11
  %224 = invoke noundef ptr @_ZN3JPH27StaticCompoundShapeSettingsnwEm(i64 noundef 88)
          to label %225 unwind label %673

225:                                              ; preds = %223
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(88) %224, i8 0, i64 88, i1 false)
  invoke void @_ZN3JPH27StaticCompoundShapeSettingsC2Ev(ptr noundef nonnull align 8 dereferenceable(88) %224)
          to label %226 unwind label %675

226:                                              ; preds = %225
  invoke void @_ZN3JPH3RefINS_27StaticCompoundShapeSettingsEEC2EPS1_(ptr noundef nonnull align 8 dereferenceable(8) %35, ptr noundef nonnull %224)
          to label %227 unwind label %673

227:                                              ; preds = %226
  %228 = call noundef ptr @_ZNK3JPH3RefINS_27StaticCompoundShapeSettingsEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %35)
  invoke void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %36, float noundef 0.000000e+00, float noundef 0.000000e+00, float noundef 1.000000e+00)
          to label %229 unwind label %677

229:                                              ; preds = %227
  %230 = invoke { double, double } @_ZN3JPH4Quat9sIdentityEv()
          to label %231 unwind label %677

231:                                              ; preds = %229
  %232 = extractvalue { double, double } %230, 0
  %233 = extractvalue { double, double } %230, 1
  %234 = call noundef ptr @_ZNK3JPH3RefINS_16BoxShapeSettingsEEcvPS1_Ev(ptr noundef nonnull align 8 dereferenceable(8) %33)
  %235 = load double, ptr %36, align 16
  %236 = getelementptr inbounds i8, ptr %36, i64 8
  %237 = load double, ptr %236, align 8
  invoke void @_ZN3JPH21CompoundShapeSettings8AddShapeENS_4Vec3ENS_4QuatEPKNS_13ShapeSettingsEj(ptr noundef nonnull align 8 dereferenceable(88) %228, double %235, double %237, double %232, double %233, ptr noundef %234, i32 noundef 0)
          to label %238 unwind label %677

238:                                              ; preds = %231
  %239 = call noundef ptr @_ZNK3JPH3RefINS_27StaticCompoundShapeSettingsEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %35)
  invoke void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %37, float noundef 0.000000e+00, float noundef 0.000000e+00, float noundef -1.000000e+00)
          to label %240 unwind label %677

240:                                              ; preds = %238
  %241 = invoke { double, double } @_ZN3JPH4Quat9sIdentityEv()
          to label %242 unwind label %677

242:                                              ; preds = %240
  %243 = extractvalue { double, double } %241, 0
  %244 = extractvalue { double, double } %241, 1
  %245 = call noundef ptr @_ZNK3JPH3RefINS_16BoxShapeSettingsEEcvPS1_Ev(ptr noundef nonnull align 8 dereferenceable(8) %33)
  %246 = load double, ptr %37, align 16
  %247 = getelementptr inbounds i8, ptr %37, i64 8
  %248 = load double, ptr %247, align 8
  invoke void @_ZN3JPH21CompoundShapeSettings8AddShapeENS_4Vec3ENS_4QuatEPKNS_13ShapeSettingsEj(ptr noundef nonnull align 8 dereferenceable(88) %239, double %246, double %248, double %243, double %244, ptr noundef %245, i32 noundef 0)
          to label %249 unwind label %677

249:                                              ; preds = %242
  %250 = call noundef ptr @_ZNK3JPH3RefINS_27StaticCompoundShapeSettingsEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %35)
  invoke void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %38, float noundef 1.000000e+00, float noundef 0.000000e+00, float noundef 0.000000e+00)
          to label %251 unwind label %677

251:                                              ; preds = %249
  %252 = invoke { double, double } @_ZN3JPH4Vec36sAxisYEv()
          to label %253 unwind label %677

253:                                              ; preds = %251
  %254 = extractvalue { double, double } %252, 0
  %255 = extractvalue { double, double } %252, 1
  %256 = invoke { double, double } @_ZN3JPH4Quat9sRotationENS_4Vec3Ef(double %254, double %255, float noundef 0x3FF921FB60000000)
          to label %257 unwind label %677

257:                                              ; preds = %253
  %258 = extractvalue { double, double } %256, 0
  %259 = extractvalue { double, double } %256, 1
  %260 = call noundef ptr @_ZNK3JPH3RefINS_16BoxShapeSettingsEEcvPS1_Ev(ptr noundef nonnull align 8 dereferenceable(8) %33)
  %261 = load double, ptr %38, align 16
  %262 = getelementptr inbounds i8, ptr %38, i64 8
  %263 = load double, ptr %262, align 8
  invoke void @_ZN3JPH21CompoundShapeSettings8AddShapeENS_4Vec3ENS_4QuatEPKNS_13ShapeSettingsEj(ptr noundef nonnull align 8 dereferenceable(88) %250, double %261, double %263, double %258, double %259, ptr noundef %260, i32 noundef 0)
          to label %264 unwind label %677

264:                                              ; preds = %257
  %265 = call noundef ptr @_ZNK3JPH3RefINS_27StaticCompoundShapeSettingsEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %35)
  invoke void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %39, float noundef -1.000000e+00, float noundef 0.000000e+00, float noundef 0.000000e+00)
          to label %266 unwind label %677

266:                                              ; preds = %264
  %267 = invoke { double, double } @_ZN3JPH4Vec36sAxisYEv()
          to label %268 unwind label %677

268:                                              ; preds = %266
  %269 = extractvalue { double, double } %267, 0
  %270 = extractvalue { double, double } %267, 1
  %271 = invoke { double, double } @_ZN3JPH4Quat9sRotationENS_4Vec3Ef(double %269, double %270, float noundef 0x3FF921FB60000000)
          to label %272 unwind label %677

272:                                              ; preds = %268
  %273 = extractvalue { double, double } %271, 0
  %274 = extractvalue { double, double } %271, 1
  %275 = call noundef ptr @_ZNK3JPH3RefINS_16BoxShapeSettingsEEcvPS1_Ev(ptr noundef nonnull align 8 dereferenceable(8) %33)
  %276 = load double, ptr %39, align 16
  %277 = getelementptr inbounds i8, ptr %39, i64 8
  %278 = load double, ptr %277, align 8
  invoke void @_ZN3JPH21CompoundShapeSettings8AddShapeENS_4Vec3ENS_4QuatEPKNS_13ShapeSettingsEj(ptr noundef nonnull align 8 dereferenceable(88) %265, double %276, double %278, double %273, double %274, ptr noundef %275, i32 noundef 0)
          to label %279 unwind label %677

279:                                              ; preds = %272
  %280 = call noundef ptr @_ZNK3JPH3RefINS_27StaticCompoundShapeSettingsEEcvPS1_Ev(ptr noundef nonnull align 8 dereferenceable(8) %35)
  invoke void @_ZN3JPH20BodyCreationSettings16SetShapeSettingsEPKNS_13ShapeSettingsE(ptr noundef nonnull align 16 dereferenceable(256) %32, ptr noundef %280)
          to label %281 unwind label %677

281:                                              ; preds = %279
  %282 = getelementptr inbounds i8, ptr %32, i64 96
  store i8 1, ptr %282, align 16, !tbaa !18
  %283 = getelementptr inbounds i8, ptr %32, i64 72
  store i16 1, ptr %283, align 8, !tbaa !35
  invoke void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %40, float noundef 0.000000e+00, float noundef 1.000000e+00, float noundef 0.000000e+00)
          to label %284 unwind label %679

284:                                              ; preds = %281
  %285 = load double, ptr %40, align 16
  %286 = getelementptr inbounds i8, ptr %40, i64 8
  %287 = load double, ptr %286, align 8
  %288 = invoke { double, double } @_ZNK3JPH4Vec3plES0_(ptr noundef nonnull align 16 dereferenceable(16) %2, double %285, double %287)
          to label %289 unwind label %679

289:                                              ; preds = %284
  %290 = extractvalue { double, double } %288, 0
  %291 = extractvalue { double, double } %288, 1
  store double %290, ptr %32, align 16
  %.sroa.5.0..sroa_idx = getelementptr inbounds i8, ptr %32, i64 8
  store double %291, ptr %.sroa.5.0..sroa_idx, align 8, !tbaa !17
  %292 = load ptr, ptr %106, align 8, !tbaa !5
  %293 = invoke i32 @_ZN3JPH13BodyInterface16CreateAndAddBodyERKNS_20BodyCreationSettingsENS_11EActivationE(ptr noundef nonnull align 8 dereferenceable(24) %292, ptr noundef nonnull align 16 dereferenceable(256) %32, i32 noundef 0)
          to label %294 unwind label %677

294:                                              ; preds = %289
  invoke void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %41, float noundef 0.000000e+00, float noundef 5.000000e-01, float noundef 0.000000e+00)
          to label %295 unwind label %677

295:                                              ; preds = %294
  %296 = load double, ptr %41, align 16
  %297 = getelementptr inbounds i8, ptr %41, i64 8
  %298 = load double, ptr %297, align 8
  %299 = invoke { double, double } @_ZNK3JPH4Vec3plES0_(ptr noundef nonnull align 16 dereferenceable(16) %2, double %296, double %298)
          to label %300 unwind label %677

300:                                              ; preds = %295
  %301 = extractvalue { double, double } %299, 0
  %302 = extractvalue { double, double } %299, 1
  invoke void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %42, float noundef -2.400000e+02, float noundef 0.000000e+00, float noundef -1.200000e+02)
          to label %303 unwind label %677

303:                                              ; preds = %300
  %304 = invoke noundef ptr @_ZN3JPH11SphereShapenwEm(i64 noundef 48)
          to label %305 unwind label %677

305:                                              ; preds = %303
  invoke void @_ZN3JPH11SphereShapeC2EfPKNS_15PhysicsMaterialE(ptr noundef nonnull align 8 dereferenceable(48) %304, float noundef 0x3FB99999A0000000, ptr noundef null)
          to label %306 unwind label %681

306:                                              ; preds = %305
  %307 = load double, ptr %42, align 16
  %308 = getelementptr inbounds i8, ptr %42, i64 8
  %309 = load double, ptr %308, align 8
  invoke void @_ZN13HighSpeedTest19CreateDynamicObjectEN3JPH4Vec3ES1_PNS0_5ShapeENS0_14EMotionQualityE(ptr noundef nonnull align 8 dereferenceable(112) %0, double %301, double %302, double %307, double %309, ptr noundef nonnull %304, i8 noundef zeroext 1)
          to label %310 unwind label %677

310:                                              ; preds = %306
  call void @_ZN3JPH3RefINS_27StaticCompoundShapeSettingsEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %35) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %35) #11
  call void @_ZN3JPH3RefINS_16BoxShapeSettingsEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %33) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %33) #11
  call void @_ZN3JPH20BodyCreationSettingsD2Ev(ptr noundef nonnull align 16 dereferenceable(256) %32) #11
  call void @llvm.lifetime.end.p0(i64 256, ptr nonnull %32) #11
  call void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %43, float noundef 0.000000e+00, float noundef 0.000000e+00, float noundef 5.000000e+00)
  %311 = load double, ptr %43, align 16
  %312 = getelementptr inbounds i8, ptr %43, i64 8
  %313 = load double, ptr %312, align 8
  %314 = call noundef nonnull align 16 dereferenceable(16) ptr @_ZN3JPH4Vec3pLES0_(ptr noundef nonnull align 16 dereferenceable(16) %2, double %311, double %313)
  call void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %44, float noundef 1.000000e+00, float noundef 5.000000e-01, float noundef 0.000000e+00)
  %315 = load double, ptr %44, align 16
  %316 = getelementptr inbounds i8, ptr %44, i64 8
  %317 = load double, ptr %316, align 8
  %318 = call { double, double } @_ZNK3JPH4Vec3plES0_(ptr noundef nonnull align 16 dereferenceable(16) %2, double %315, double %317)
  %319 = extractvalue { double, double } %318, 0
  %320 = extractvalue { double, double } %318, 1
  call void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %45, float noundef -2.400000e+02, float noundef 0.000000e+00, float noundef 0.000000e+00)
  %321 = call noundef ptr @_ZN3JPH8BoxShapenwEm(i64 noundef 80)
  %322 = invoke { double, double } @_ZN3JPH4Vec310sReplicateEf(float noundef 0x3FB99999A0000000)
          to label %323 unwind label %686

323:                                              ; preds = %310
  %324 = extractvalue { double, double } %322, 0
  %325 = extractvalue { double, double } %322, 1
  invoke void @_ZN3JPH8BoxShapeC2ENS_4Vec3EfPKNS_15PhysicsMaterialE(ptr noundef nonnull align 16 dereferenceable(80) %321, double %324, double %325, float noundef 0x3FA99999A0000000, ptr noundef null)
          to label %326 unwind label %686

326:                                              ; preds = %323
  %327 = load double, ptr %45, align 16
  %328 = getelementptr inbounds i8, ptr %45, i64 8
  %329 = load double, ptr %328, align 8
  call void @_ZN13HighSpeedTest19CreateDynamicObjectEN3JPH4Vec3ES1_PNS0_5ShapeENS0_14EMotionQualityE(ptr noundef nonnull align 8 dereferenceable(112) %0, double %319, double %320, double %327, double %329, ptr noundef nonnull %321, i8 noundef zeroext 1)
  call void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %46, float noundef -1.000000e+00, float noundef 5.000000e-01, float noundef 0.000000e+00)
  %330 = load double, ptr %46, align 16
  %331 = getelementptr inbounds i8, ptr %46, i64 8
  %332 = load double, ptr %331, align 8
  %333 = call { double, double } @_ZNK3JPH4Vec3plES0_(ptr noundef nonnull align 16 dereferenceable(16) %2, double %330, double %332)
  %334 = extractvalue { double, double } %333, 0
  %335 = extractvalue { double, double } %333, 1
  call void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %47, float noundef 2.400000e+02, float noundef 0.000000e+00, float noundef 0.000000e+00)
  %336 = call noundef ptr @_ZN3JPH8BoxShapenwEm(i64 noundef 80)
  %337 = invoke { double, double } @_ZN3JPH4Vec310sReplicateEf(float noundef 0x3FB99999A0000000)
          to label %338 unwind label %688

338:                                              ; preds = %326
  %339 = extractvalue { double, double } %337, 0
  %340 = extractvalue { double, double } %337, 1
  invoke void @_ZN3JPH8BoxShapeC2ENS_4Vec3EfPKNS_15PhysicsMaterialE(ptr noundef nonnull align 16 dereferenceable(80) %336, double %339, double %340, float noundef 0x3FA99999A0000000, ptr noundef null)
          to label %341 unwind label %688

341:                                              ; preds = %338
  %342 = load double, ptr %47, align 16
  %343 = getelementptr inbounds i8, ptr %47, i64 8
  %344 = load double, ptr %343, align 8
  call void @_ZN13HighSpeedTest19CreateDynamicObjectEN3JPH4Vec3ES1_PNS0_5ShapeENS0_14EMotionQualityE(ptr noundef nonnull align 8 dereferenceable(112) %0, double %334, double %335, double %342, double %344, ptr noundef nonnull %336, i8 noundef zeroext 1)
  call void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %48, float noundef 0.000000e+00, float noundef 0.000000e+00, float noundef 5.000000e+00)
  %345 = load double, ptr %48, align 16
  %346 = getelementptr inbounds i8, ptr %48, i64 8
  %347 = load double, ptr %346, align 8
  %348 = call noundef nonnull align 16 dereferenceable(16) ptr @_ZN3JPH4Vec3pLES0_(ptr noundef nonnull align 16 dereferenceable(16) %2, double %345, double %347)
  call void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %49, float noundef 1.000000e+00, float noundef 5.000000e-01, float noundef 0.000000e+00)
  %349 = load double, ptr %49, align 16
  %350 = getelementptr inbounds i8, ptr %49, i64 8
  %351 = load double, ptr %350, align 8
  %352 = call { double, double } @_ZNK3JPH4Vec3plES0_(ptr noundef nonnull align 16 dereferenceable(16) %2, double %349, double %351)
  %353 = extractvalue { double, double } %352, 0
  %354 = extractvalue { double, double } %352, 1
  call void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %50, float noundef -2.400000e+02, float noundef 0.000000e+00, float noundef 0.000000e+00)
  %355 = call noundef ptr @_ZN3JPH8BoxShapenwEm(i64 noundef 80)
  %356 = invoke { double, double } @_ZN3JPH4Vec310sReplicateEf(float noundef 0x3FB99999A0000000)
          to label %357 unwind label %690

357:                                              ; preds = %341
  %358 = extractvalue { double, double } %356, 0
  %359 = extractvalue { double, double } %356, 1
  invoke void @_ZN3JPH8BoxShapeC2ENS_4Vec3EfPKNS_15PhysicsMaterialE(ptr noundef nonnull align 16 dereferenceable(80) %355, double %358, double %359, float noundef 0x3FA99999A0000000, ptr noundef null)
          to label %360 unwind label %690

360:                                              ; preds = %357
  %361 = load double, ptr %50, align 16
  %362 = getelementptr inbounds i8, ptr %50, i64 8
  %363 = load double, ptr %362, align 8
  call void @_ZN13HighSpeedTest19CreateDynamicObjectEN3JPH4Vec3ES1_PNS0_5ShapeENS0_14EMotionQualityE(ptr noundef nonnull align 8 dereferenceable(112) %0, double %353, double %354, double %361, double %363, ptr noundef nonnull %355, i8 noundef zeroext 1)
  call void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %51, float noundef -1.000000e+00, float noundef 5.000000e-01, float noundef 0x3FB99999A0000000)
  %364 = load double, ptr %51, align 16
  %365 = getelementptr inbounds i8, ptr %51, i64 8
  %366 = load double, ptr %365, align 8
  %367 = call { double, double } @_ZNK3JPH4Vec3plES0_(ptr noundef nonnull align 16 dereferenceable(16) %2, double %364, double %366)
  %368 = extractvalue { double, double } %367, 0
  %369 = extractvalue { double, double } %367, 1
  call void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %52, float noundef 2.400000e+02, float noundef 0.000000e+00, float noundef 0.000000e+00)
  %370 = call noundef ptr @_ZN3JPH8BoxShapenwEm(i64 noundef 80)
  %371 = invoke { double, double } @_ZN3JPH4Vec310sReplicateEf(float noundef 0x3FB99999A0000000)
          to label %372 unwind label %692

372:                                              ; preds = %360
  %373 = extractvalue { double, double } %371, 0
  %374 = extractvalue { double, double } %371, 1
  invoke void @_ZN3JPH8BoxShapeC2ENS_4Vec3EfPKNS_15PhysicsMaterialE(ptr noundef nonnull align 16 dereferenceable(80) %370, double %373, double %374, float noundef 0x3FA99999A0000000, ptr noundef null)
          to label %375 unwind label %692

375:                                              ; preds = %372
  %376 = load double, ptr %52, align 16
  %377 = getelementptr inbounds i8, ptr %52, i64 8
  %378 = load double, ptr %377, align 8
  call void @_ZN13HighSpeedTest19CreateDynamicObjectEN3JPH4Vec3ES1_PNS0_5ShapeENS0_14EMotionQualityE(ptr noundef nonnull align 8 dereferenceable(112) %0, double %368, double %369, double %376, double %378, ptr noundef nonnull %370, i8 noundef zeroext 1)
  call void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %53, float noundef 0.000000e+00, float noundef 0.000000e+00, float noundef 5.000000e+00)
  %379 = load double, ptr %53, align 16
  %380 = getelementptr inbounds i8, ptr %53, i64 8
  %381 = load double, ptr %380, align 8
  %382 = call noundef nonnull align 16 dereferenceable(16) ptr @_ZN3JPH4Vec3pLES0_(ptr noundef nonnull align 16 dereferenceable(16) %2, double %379, double %381)
  call void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %54, float noundef 1.000000e+00, float noundef 5.000000e-01, float noundef 0.000000e+00)
  %383 = load double, ptr %54, align 16
  %384 = getelementptr inbounds i8, ptr %54, i64 8
  %385 = load double, ptr %384, align 8
  %386 = call { double, double } @_ZNK3JPH4Vec3plES0_(ptr noundef nonnull align 16 dereferenceable(16) %2, double %383, double %385)
  %387 = extractvalue { double, double } %386, 0
  %388 = extractvalue { double, double } %386, 1
  call void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %55, float noundef -2.400000e+02, float noundef 0.000000e+00, float noundef 0.000000e+00)
  %389 = call noundef ptr @_ZN3JPH8BoxShapenwEm(i64 noundef 80)
  %390 = invoke { double, double } @_ZN3JPH4Vec310sReplicateEf(float noundef 0x3FB99999A0000000)
          to label %391 unwind label %694

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

394:                                              ; preds = %391
  %395 = load double, ptr %55, align 16
  %396 = getelementptr inbounds i8, ptr %55, i64 8
  %397 = load double, ptr %396, align 8
  call void @_ZN13HighSpeedTest19CreateDynamicObjectEN3JPH4Vec3ES1_PNS0_5ShapeENS0_14EMotionQualityE(ptr noundef nonnull align 8 dereferenceable(112) %0, double %387, double %388, double %395, double %397, ptr noundef nonnull %389, i8 noundef zeroext 1)
  call void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %56, float noundef -1.000000e+00, float noundef 5.000000e-01, float noundef 0.000000e+00)
  %398 = load double, ptr %56, align 16
  %399 = getelementptr inbounds i8, ptr %56, i64 8
  %400 = load double, ptr %399, align 8
  %401 = call { double, double } @_ZNK3JPH4Vec3plES0_(ptr noundef nonnull align 16 dereferenceable(16) %2, double %398, double %400)
  %402 = extractvalue { double, double } %401, 0
  %403 = extractvalue { double, double } %401, 1
  call void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %57, float noundef 6.000000e+01, float noundef 0.000000e+00, float noundef 0.000000e+00)
  %404 = call noundef ptr @_ZN3JPH8BoxShapenwEm(i64 noundef 80)
  %405 = invoke { double, double } @_ZN3JPH4Vec310sReplicateEf(float noundef 0x3FB99999A0000000)
          to label %406 unwind label %696

406:                                              ; preds = %394
  %407 = extractvalue { double, double } %405, 0
  %408 = extractvalue { double, double } %405, 1
  invoke void @_ZN3JPH8BoxShapeC2ENS_4Vec3EfPKNS_15PhysicsMaterialE(ptr noundef nonnull align 16 dereferenceable(80) %404, double %407, double %408, float noundef 0x3FA99999A0000000, ptr noundef null)
          to label %409 unwind label %696

409:                                              ; preds = %406
  %410 = load double, ptr %57, align 16
  %411 = getelementptr inbounds i8, ptr %57, i64 8
  %412 = load double, ptr %411, align 8
  call void @_ZN13HighSpeedTest19CreateDynamicObjectEN3JPH4Vec3ES1_PNS0_5ShapeENS0_14EMotionQualityE(ptr noundef nonnull align 8 dereferenceable(112) %0, double %402, double %403, double %410, double %412, ptr noundef nonnull %404, i8 noundef zeroext 0)
  call void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %58, float noundef 0.000000e+00, float noundef 0.000000e+00, float noundef 5.000000e+00)
  %413 = load double, ptr %58, align 16
  %414 = getelementptr inbounds i8, ptr %58, i64 8
  %415 = load double, ptr %414, align 8
  %416 = call noundef nonnull align 16 dereferenceable(16) ptr @_ZN3JPH4Vec3pLES0_(ptr noundef nonnull align 16 dereferenceable(16) %2, double %413, double %415)
  call void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %59, float noundef 1.000000e+00, float noundef 5.000000e-01, float noundef 0.000000e+00)
  %417 = load double, ptr %59, align 16
  %418 = getelementptr inbounds i8, ptr %59, i64 8
  %419 = load double, ptr %418, align 8
  %420 = call { double, double } @_ZNK3JPH4Vec3plES0_(ptr noundef nonnull align 16 dereferenceable(16) %2, double %417, double %419)
  %421 = extractvalue { double, double } %420, 0
  %422 = extractvalue { double, double } %420, 1
  call void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %60, float noundef -2.400000e+02, float noundef 0.000000e+00, float noundef 0.000000e+00)
  %423 = call noundef ptr @_ZN3JPH8BoxShapenwEm(i64 noundef 80)
  %424 = invoke { double, double } @_ZN3JPH4Vec310sReplicateEf(float noundef 0x3FB99999A0000000)
          to label %425 unwind label %698

425:                                              ; preds = %409
  %426 = extractvalue { double, double } %424, 0
  %427 = extractvalue { double, double } %424, 1
  invoke void @_ZN3JPH8BoxShapeC2ENS_4Vec3EfPKNS_15PhysicsMaterialE(ptr noundef nonnull align 16 dereferenceable(80) %423, double %426, double %427, float noundef 0x3FA99999A0000000, ptr noundef null)
          to label %428 unwind label %698

428:                                              ; preds = %425
  %429 = load double, ptr %60, align 16
  %430 = getelementptr inbounds i8, ptr %60, i64 8
  %431 = load double, ptr %430, align 8
  call void @_ZN13HighSpeedTest19CreateDynamicObjectEN3JPH4Vec3ES1_PNS0_5ShapeENS0_14EMotionQualityE(ptr noundef nonnull align 8 dereferenceable(112) %0, double %421, double %422, double %429, double %431, ptr noundef nonnull %423, i8 noundef zeroext 1)
  call void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %61, float noundef 0.000000e+00, float noundef 5.000000e-01, float noundef 0.000000e+00)
  %432 = load double, ptr %61, align 16
  %433 = getelementptr inbounds i8, ptr %61, i64 8
  %434 = load double, ptr %433, align 8
  %435 = call { double, double } @_ZNK3JPH4Vec3plES0_(ptr noundef nonnull align 16 dereferenceable(16) %2, double %432, double %434)
  %436 = extractvalue { double, double } %435, 0
  %437 = extractvalue { double, double } %435, 1
  %438 = call { double, double } @_ZN3JPH4Vec35sZeroEv()
  %439 = extractvalue { double, double } %438, 0
  %440 = extractvalue { double, double } %438, 1
  %441 = call noundef ptr @_ZN3JPH8BoxShapenwEm(i64 noundef 80)
  %442 = invoke { double, double } @_ZN3JPH4Vec310sReplicateEf(float noundef 0x3FB99999A0000000)
          to label %443 unwind label %700

443:                                              ; preds = %428
  %444 = extractvalue { double, double } %442, 0
  %445 = extractvalue { double, double } %442, 1
  invoke void @_ZN3JPH8BoxShapeC2ENS_4Vec3EfPKNS_15PhysicsMaterialE(ptr noundef nonnull align 16 dereferenceable(80) %441, double %444, double %445, float noundef 0x3FA99999A0000000, ptr noundef null)
          to label %446 unwind label %700

446:                                              ; preds = %443
  call void @_ZN13HighSpeedTest19CreateDynamicObjectEN3JPH4Vec3ES1_PNS0_5ShapeENS0_14EMotionQualityE(ptr noundef nonnull align 8 dereferenceable(112) %0, double %436, double %437, double %439, double %440, ptr noundef nonnull %441, i8 noundef zeroext 1)
  call void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %62, float noundef 0.000000e+00, float noundef 0.000000e+00, float noundef 5.000000e+00)
  %447 = load double, ptr %62, align 16
  %448 = getelementptr inbounds i8, ptr %62, i64 8
  %449 = load double, ptr %448, align 8
  %450 = call noundef nonnull align 16 dereferenceable(16) ptr @_ZN3JPH4Vec3pLES0_(ptr noundef nonnull align 16 dereferenceable(16) %2, double %447, double %449)
  call void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %63, float noundef 1.000000e+00, float noundef 5.000000e-01, float noundef 0.000000e+00)
  %451 = load double, ptr %63, align 16
  %452 = getelementptr inbounds i8, ptr %63, i64 8
  %453 = load double, ptr %452, align 8
  %454 = call { double, double } @_ZNK3JPH4Vec3plES0_(ptr noundef nonnull align 16 dereferenceable(16) %2, double %451, double %453)
  %455 = extractvalue { double, double } %454, 0
  %456 = extractvalue { double, double } %454, 1
  call void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %64, float noundef -2.400000e+02, float noundef 0.000000e+00, float noundef 0.000000e+00)
  %457 = call noundef ptr @_ZN3JPH8BoxShapenwEm(i64 noundef 80)
  %458 = invoke { double, double } @_ZN3JPH4Vec310sReplicateEf(float noundef 0x3FB99999A0000000)
          to label %459 unwind label %702

459:                                              ; preds = %446
  %460 = extractvalue { double, double } %458, 0
  %461 = extractvalue { double, double } %458, 1
  invoke void @_ZN3JPH8BoxShapeC2ENS_4Vec3EfPKNS_15PhysicsMaterialE(ptr noundef nonnull align 16 dereferenceable(80) %457, double %460, double %461, float noundef 0x3FA99999A0000000, ptr noundef null)
          to label %462 unwind label %702

462:                                              ; preds = %459
  %463 = load double, ptr %64, align 16
  %464 = getelementptr inbounds i8, ptr %64, i64 8
  %465 = load double, ptr %464, align 8
  call void @_ZN13HighSpeedTest19CreateDynamicObjectEN3JPH4Vec3ES1_PNS0_5ShapeENS0_14EMotionQualityE(ptr noundef nonnull align 8 dereferenceable(112) %0, double %455, double %456, double %463, double %465, ptr noundef nonnull %457, i8 noundef zeroext 1)
  call void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %65, float noundef 0.000000e+00, float noundef 5.000000e-01, float noundef 0.000000e+00)
  %466 = load double, ptr %65, align 16
  %467 = getelementptr inbounds i8, ptr %65, i64 8
  %468 = load double, ptr %467, align 8
  %469 = call { double, double } @_ZNK3JPH4Vec3plES0_(ptr noundef nonnull align 16 dereferenceable(16) %2, double %466, double %468)
  %470 = extractvalue { double, double } %469, 0
  %471 = extractvalue { double, double } %469, 1
  %472 = call { double, double } @_ZN3JPH4Vec35sZeroEv()
  %473 = extractvalue { double, double } %472, 0
  %474 = extractvalue { double, double } %472, 1
  %475 = call noundef ptr @_ZN3JPH8BoxShapenwEm(i64 noundef 80)
  %476 = invoke { double, double } @_ZN3JPH4Vec310sReplicateEf(float noundef 0x3FB99999A0000000)
          to label %477 unwind label %704

477:                                              ; preds = %462
  %478 = extractvalue { double, double } %476, 0
  %479 = extractvalue { double, double } %476, 1
  invoke void @_ZN3JPH8BoxShapeC2ENS_4Vec3EfPKNS_15PhysicsMaterialE(ptr noundef nonnull align 16 dereferenceable(80) %475, double %478, double %479, float noundef 0x3FA99999A0000000, ptr noundef null)
          to label %480 unwind label %704

480:                                              ; preds = %477
  call void @_ZN13HighSpeedTest19CreateDynamicObjectEN3JPH4Vec3ES1_PNS0_5ShapeENS0_14EMotionQualityE(ptr noundef nonnull align 8 dereferenceable(112) %0, double %470, double %471, double %473, double %474, ptr noundef nonnull %475, i8 noundef zeroext 0)
  call void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %66, float noundef 0.000000e+00, float noundef 0.000000e+00, float noundef 5.000000e+00)
  %481 = load double, ptr %66, align 16
  %482 = getelementptr inbounds i8, ptr %66, i64 8
  %483 = load double, ptr %482, align 8
  %484 = call noundef nonnull align 16 dereferenceable(16) ptr @_ZN3JPH4Vec3pLES0_(ptr noundef nonnull align 16 dereferenceable(16) %2, double %481, double %483)
  call void @llvm.lifetime.start.p0(i64 112, ptr nonnull %67) #11
  call void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %68, float noundef 0x3FA99999A0000000, float noundef 0x3FE99999A0000000, float noundef 0x3F9EB851E0000000)
  %485 = load double, ptr %68, align 16
  %486 = getelementptr inbounds i8, ptr %68, i64 8
  %487 = load double, ptr %486, align 8
  call void @_ZN3JPH16BoxShapeSettingsC2ENS_4Vec3EfPKNS_15PhysicsMaterialE(ptr noundef nonnull align 16 dereferenceable(112) %67, double %485, double %487, float noundef 0x3F8EB851E0000000, ptr noundef null)
  %488 = getelementptr inbounds i8, ptr %67, i64 8
  invoke void @_ZNK3JPH9RefTargetINS_13ShapeSettingsEE11SetEmbeddedEv(ptr noundef nonnull align 4 dereferenceable(4) %488)
          to label %489 unwind label %706

489:                                              ; preds = %480
  call void @llvm.lifetime.start.p0(i64 256, ptr nonnull %69) #11
  invoke void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %70, float noundef 0.000000e+00, float noundef 1.000000e+00, float noundef 0.000000e+00)
          to label %490 unwind label %708

490:                                              ; preds = %489
  %491 = load double, ptr %70, align 16
  %492 = getelementptr inbounds i8, ptr %70, i64 8
  %493 = load double, ptr %492, align 8
  %494 = invoke { double, double } @_ZNK3JPH4Vec3plES0_(ptr noundef nonnull align 16 dereferenceable(16) %2, double %491, double %493)
          to label %495 unwind label %708

495:                                              ; preds = %490
  %496 = extractvalue { double, double } %494, 0
  %497 = extractvalue { double, double } %494, 1
  %498 = invoke { double, double } @_ZN3JPH4Vec36sAxisXEv()
          to label %499 unwind label %708

499:                                              ; preds = %495
  %500 = extractvalue { double, double } %498, 0
  %501 = extractvalue { double, double } %498, 1
  %502 = invoke { double, double } @_ZN3JPH4Quat9sRotationENS_4Vec3Ef(double %500, double %501, float noundef 0x3FF921FB60000000)
          to label %503 unwind label %708

503:                                              ; preds = %499
  %504 = extractvalue { double, double } %502, 0
  %505 = extractvalue { double, double } %502, 1
  invoke void @_ZN3JPH20BodyCreationSettingsC2EPKNS_13ShapeSettingsENS_4Vec3ENS_4QuatENS_11EMotionTypeEt(ptr noundef nonnull align 16 dereferenceable(256) %69, ptr noundef nonnull %67, double %496, double %497, double %504, double %505, i8 noundef zeroext 2, i16 noundef zeroext 1)
          to label %506 unwind label %708

506:                                              ; preds = %503
  %507 = getelementptr inbounds i8, ptr %69, i64 103
  store i8 1, ptr %507, align 1, !tbaa !36
  %508 = getelementptr inbounds i8, ptr %69, i64 108
  store <2 x float> <float 1.000000e+00, float 0.000000e+00>, ptr %508, align 4, !tbaa !37
  %509 = getelementptr inbounds i8, ptr %0, i64 16
  %510 = load ptr, ptr %509, align 8, !tbaa !38
  %511 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZN3JPH13PhysicsSystem16GetBodyInterfaceEv(ptr noundef nonnull align 16 dereferenceable(1172) %510)
  %512 = invoke noundef ptr @_ZN3JPH13BodyInterface10CreateBodyERKNS_20BodyCreationSettingsE(ptr noundef nonnull align 8 dereferenceable(24) %511, ptr noundef nonnull align 16 dereferenceable(256) %69)
          to label %513 unwind label %710

513:                                              ; preds = %506
  invoke void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %71, float noundef 0.000000e+00, float noundef -1.000000e+02, float noundef 0.000000e+00)
          to label %514 unwind label %710

514:                                              ; preds = %513
  %515 = load double, ptr %71, align 16
  %516 = getelementptr inbounds i8, ptr %71, i64 8
  %517 = load double, ptr %516, align 8
  invoke void @_ZN3JPH4Body17SetLinearVelocityENS_4Vec3E(ptr noundef nonnull align 16 dereferenceable(122) %512, double %515, double %517)
          to label %518 unwind label %710

518:                                              ; preds = %514
  %519 = load ptr, ptr %509, align 8, !tbaa !38
  %520 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZN3JPH13PhysicsSystem16GetBodyInterfaceEv(ptr noundef nonnull align 16 dereferenceable(1172) %519)
  %521 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK3JPH4Body5GetIDEv(ptr noundef nonnull align 16 dereferenceable(122) %512)
  invoke void @_ZN3JPH13BodyInterface7AddBodyERKNS_6BodyIDENS_11EActivationE(ptr noundef nonnull align 8 dereferenceable(24) %520, ptr noundef nonnull align 4 dereferenceable(4) %521, i32 noundef 0)
          to label %522 unwind label %710

522:                                              ; preds = %518
  call void @_ZN3JPH20BodyCreationSettingsD2Ev(ptr noundef nonnull align 16 dereferenceable(256) %69) #11
  call void @llvm.lifetime.end.p0(i64 256, ptr nonnull %69) #11
  call void @_ZN3JPH19ConvexShapeSettingsD2Ev(ptr noundef nonnull align 16 dereferenceable(112) %67) #11
  call void @llvm.lifetime.end.p0(i64 112, ptr nonnull %67) #11
  call void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %72, float noundef 0.000000e+00, float noundef 0.000000e+00, float noundef 5.000000e+00)
  %523 = load double, ptr %72, align 16
  %524 = getelementptr inbounds i8, ptr %72, i64 8
  %525 = load double, ptr %524, align 8
  %526 = call noundef nonnull align 16 dereferenceable(16) ptr @_ZN3JPH4Vec3pLES0_(ptr noundef nonnull align 16 dereferenceable(16) %2, double %523, double %525)
  call void @llvm.lifetime.start.p0(i64 112, ptr nonnull %73) #11
  call void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %74, float noundef 0x3FA99999A0000000, float noundef 0x3FE99999A0000000, float noundef 0x3F9EB851E0000000)
  %527 = load double, ptr %74, align 16
  %528 = getelementptr inbounds i8, ptr %74, i64 8
  %529 = load double, ptr %528, align 8
  call void @_ZN3JPH16BoxShapeSettingsC2ENS_4Vec3EfPKNS_15PhysicsMaterialE(ptr noundef nonnull align 16 dereferenceable(112) %73, double %527, double %529, float noundef 0x3F8EB851E0000000, ptr noundef null)
  %530 = getelementptr inbounds i8, ptr %73, i64 8
  invoke void @_ZNK3JPH9RefTargetINS_13ShapeSettingsEE11SetEmbeddedEv(ptr noundef nonnull align 4 dereferenceable(4) %530)
          to label %531 unwind label %714

531:                                              ; preds = %522
  call void @llvm.lifetime.start.p0(i64 256, ptr nonnull %75) #11
  invoke void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %76, float noundef 0.000000e+00, float noundef 1.000000e+00, float noundef 0.000000e+00)
          to label %532 unwind label %716

532:                                              ; preds = %531
  %533 = load double, ptr %76, align 16
  %534 = getelementptr inbounds i8, ptr %76, i64 8
  %535 = load double, ptr %534, align 8
  %536 = invoke { double, double } @_ZNK3JPH4Vec3plES0_(ptr noundef nonnull align 16 dereferenceable(16) %2, double %533, double %535)
          to label %537 unwind label %716

537:                                              ; preds = %532
  %538 = extractvalue { double, double } %536, 0
  %539 = extractvalue { double, double } %536, 1
  %540 = invoke { double, double } @_ZN3JPH4Vec36sAxisXEv()
          to label %541 unwind label %716

541:                                              ; preds = %537
  %542 = extractvalue { double, double } %540, 0
  %543 = extractvalue { double, double } %540, 1
  %544 = invoke { double, double } @_ZN3JPH4Quat9sRotationENS_4Vec3Ef(double %542, double %543, float noundef 0x3FE921FB60000000)
          to label %545 unwind label %716

545:                                              ; preds = %541
  %546 = extractvalue { double, double } %544, 0
  %547 = extractvalue { double, double } %544, 1
  invoke void @_ZN3JPH20BodyCreationSettingsC2EPKNS_13ShapeSettingsENS_4Vec3ENS_4QuatENS_11EMotionTypeEt(ptr noundef nonnull align 16 dereferenceable(256) %75, ptr noundef nonnull %73, double %538, double %539, double %546, double %547, i8 noundef zeroext 2, i16 noundef zeroext 1)
          to label %548 unwind label %716

548:                                              ; preds = %545
  %549 = getelementptr inbounds i8, ptr %75, i64 103
  store i8 1, ptr %549, align 1, !tbaa !36
  %550 = getelementptr inbounds i8, ptr %75, i64 108
  store <2 x float> <float 1.000000e+00, float 0.000000e+00>, ptr %550, align 4, !tbaa !37
  %551 = load ptr, ptr %509, align 8, !tbaa !38
  %552 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZN3JPH13PhysicsSystem16GetBodyInterfaceEv(ptr noundef nonnull align 16 dereferenceable(1172) %551)
  %553 = invoke noundef ptr @_ZN3JPH13BodyInterface10CreateBodyERKNS_20BodyCreationSettingsE(ptr noundef nonnull align 8 dereferenceable(24) %552, ptr noundef nonnull align 16 dereferenceable(256) %75)
          to label %554 unwind label %718

554:                                              ; preds = %548
  invoke void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %77, float noundef 0.000000e+00, float noundef -1.000000e+02, float noundef 0.000000e+00)
          to label %555 unwind label %718

555:                                              ; preds = %554
  %556 = load double, ptr %77, align 16
  %557 = getelementptr inbounds i8, ptr %77, i64 8
  %558 = load double, ptr %557, align 8
  invoke void @_ZN3JPH4Body17SetLinearVelocityENS_4Vec3E(ptr noundef nonnull align 16 dereferenceable(122) %553, double %556, double %558)
          to label %559 unwind label %718

559:                                              ; preds = %555
  %560 = load ptr, ptr %509, align 8, !tbaa !38
  %561 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZN3JPH13PhysicsSystem16GetBodyInterfaceEv(ptr noundef nonnull align 16 dereferenceable(1172) %560)
  %562 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK3JPH4Body5GetIDEv(ptr noundef nonnull align 16 dereferenceable(122) %553)
  invoke void @_ZN3JPH13BodyInterface7AddBodyERKNS_6BodyIDENS_11EActivationE(ptr noundef nonnull align 8 dereferenceable(24) %561, ptr noundef nonnull align 4 dereferenceable(4) %562, i32 noundef 0)
          to label %563 unwind label %718

563:                                              ; preds = %559
  call void @_ZN3JPH20BodyCreationSettingsD2Ev(ptr noundef nonnull align 16 dereferenceable(256) %75) #11
  call void @llvm.lifetime.end.p0(i64 256, ptr nonnull %75) #11
  call void @_ZN3JPH19ConvexShapeSettingsD2Ev(ptr noundef nonnull align 16 dereferenceable(112) %73) #11
  call void @llvm.lifetime.end.p0(i64 112, ptr nonnull %73) #11
  call void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %78, float noundef 0.000000e+00, float noundef 0.000000e+00, float noundef 5.000000e+00)
  %564 = load double, ptr %78, align 16
  %565 = getelementptr inbounds i8, ptr %78, i64 8
  %566 = load double, ptr %565, align 8
  %567 = call noundef nonnull align 16 dereferenceable(16) ptr @_ZN3JPH4Vec3pLES0_(ptr noundef nonnull align 16 dereferenceable(16) %2, double %564, double %566)
  call void @llvm.lifetime.start.p0(i64 112, ptr nonnull %79) #11
  call void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %80, float noundef 0x3FA99999A0000000, float noundef 0x3FE99999A0000000, float noundef 0x3F9EB851E0000000)
  %568 = load double, ptr %80, align 16
  %569 = getelementptr inbounds i8, ptr %80, i64 8
  %570 = load double, ptr %569, align 8
  call void @_ZN3JPH16BoxShapeSettingsC2ENS_4Vec3EfPKNS_15PhysicsMaterialE(ptr noundef nonnull align 16 dereferenceable(112) %79, double %568, double %570, float noundef 0x3F8EB851E0000000, ptr noundef null)
  %571 = getelementptr inbounds i8, ptr %79, i64 8
  invoke void @_ZNK3JPH9RefTargetINS_13ShapeSettingsEE11SetEmbeddedEv(ptr noundef nonnull align 4 dereferenceable(4) %571)
          to label %572 unwind label %722

572:                                              ; preds = %563
  call void @llvm.lifetime.start.p0(i64 256, ptr nonnull %81) #11
  invoke void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %82, float noundef 0.000000e+00, float noundef 1.000000e+00, float noundef 0.000000e+00)
          to label %573 unwind label %724

573:                                              ; preds = %572
  %574 = load double, ptr %82, align 16
  %575 = getelementptr inbounds i8, ptr %82, i64 8
  %576 = load double, ptr %575, align 8
  %577 = invoke { double, double } @_ZNK3JPH4Vec3plES0_(ptr noundef nonnull align 16 dereferenceable(16) %2, double %574, double %576)
          to label %578 unwind label %724

578:                                              ; preds = %573
  %579 = extractvalue { double, double } %577, 0
  %580 = extractvalue { double, double } %577, 1
  %581 = invoke { double, double } @_ZN3JPH4Vec36sAxisXEv()
          to label %582 unwind label %724

582:                                              ; preds = %578
  %583 = extractvalue { double, double } %581, 0
  %584 = extractvalue { double, double } %581, 1
  %585 = invoke { double, double } @_ZN3JPH4Quat9sRotationENS_4Vec3Ef(double %583, double %584, float noundef 0x3FF921FB60000000)
          to label %586 unwind label %724

586:                                              ; preds = %582
  %587 = extractvalue { double, double } %585, 0
  %588 = extractvalue { double, double } %585, 1
  invoke void @_ZN3JPH20BodyCreationSettingsC2EPKNS_13ShapeSettingsENS_4Vec3ENS_4QuatENS_11EMotionTypeEt(ptr noundef nonnull align 16 dereferenceable(256) %81, ptr noundef nonnull %79, double %579, double %580, double %587, double %588, i8 noundef zeroext 2, i16 noundef zeroext 1)
          to label %589 unwind label %724

589:                                              ; preds = %586
  %590 = getelementptr inbounds i8, ptr %81, i64 103
  store i8 1, ptr %590, align 1, !tbaa !36
  %591 = getelementptr inbounds i8, ptr %81, i64 108
  store <2 x float> <float 1.000000e+00, float 1.000000e+00>, ptr %591, align 4, !tbaa !37
  %592 = load ptr, ptr %509, align 8, !tbaa !38
  %593 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZN3JPH13PhysicsSystem16GetBodyInterfaceEv(ptr noundef nonnull align 16 dereferenceable(1172) %592)
  %594 = invoke noundef ptr @_ZN3JPH13BodyInterface10CreateBodyERKNS_20BodyCreationSettingsE(ptr noundef nonnull align 8 dereferenceable(24) %593, ptr noundef nonnull align 16 dereferenceable(256) %81)
          to label %595 unwind label %726

595:                                              ; preds = %589
  invoke void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %83, float noundef 0.000000e+00, float noundef -1.000000e+02, float noundef 0.000000e+00)
          to label %596 unwind label %726

596:                                              ; preds = %595
  %597 = load double, ptr %83, align 16
  %598 = getelementptr inbounds i8, ptr %83, i64 8
  %599 = load double, ptr %598, align 8
  invoke void @_ZN3JPH4Body17SetLinearVelocityENS_4Vec3E(ptr noundef nonnull align 16 dereferenceable(122) %594, double %597, double %599)
          to label %600 unwind label %726

600:                                              ; preds = %596
  %601 = load ptr, ptr %509, align 8, !tbaa !38
  %602 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZN3JPH13PhysicsSystem16GetBodyInterfaceEv(ptr noundef nonnull align 16 dereferenceable(1172) %601)
  %603 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK3JPH4Body5GetIDEv(ptr noundef nonnull align 16 dereferenceable(122) %594)
  invoke void @_ZN3JPH13BodyInterface7AddBodyERKNS_6BodyIDENS_11EActivationE(ptr noundef nonnull align 8 dereferenceable(24) %602, ptr noundef nonnull align 4 dereferenceable(4) %603, i32 noundef 0)
          to label %604 unwind label %726

604:                                              ; preds = %600
  call void @_ZN3JPH20BodyCreationSettingsD2Ev(ptr noundef nonnull align 16 dereferenceable(256) %81) #11
  call void @llvm.lifetime.end.p0(i64 256, ptr nonnull %81) #11
  call void @_ZN3JPH19ConvexShapeSettingsD2Ev(ptr noundef nonnull align 16 dereferenceable(112) %79) #11
  call void @llvm.lifetime.end.p0(i64 112, ptr nonnull %79) #11
  call void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %84, float noundef 0.000000e+00, float noundef 0.000000e+00, float noundef 5.000000e+00)
  %605 = load double, ptr %84, align 16
  %606 = getelementptr inbounds i8, ptr %84, i64 8
  %607 = load double, ptr %606, align 8
  %608 = call noundef nonnull align 16 dereferenceable(16) ptr @_ZN3JPH4Vec3pLES0_(ptr noundef nonnull align 16 dereferenceable(16) %2, double %605, double %607)
  call void @llvm.lifetime.start.p0(i64 112, ptr nonnull %85) #11
  call void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %86, float noundef 0x3FA99999A0000000, float noundef 0x3FE99999A0000000, float noundef 0x3F9EB851E0000000)
  %609 = load double, ptr %86, align 16
  %610 = getelementptr inbounds i8, ptr %86, i64 8
  %611 = load double, ptr %610, align 8
  call void @_ZN3JPH16BoxShapeSettingsC2ENS_4Vec3EfPKNS_15PhysicsMaterialE(ptr noundef nonnull align 16 dereferenceable(112) %85, double %609, double %611, float noundef 0x3F8EB851E0000000, ptr noundef null)
  %612 = getelementptr inbounds i8, ptr %85, i64 8
  invoke void @_ZNK3JPH9RefTargetINS_13ShapeSettingsEE11SetEmbeddedEv(ptr noundef nonnull align 4 dereferenceable(4) %612)
          to label %613 unwind label %730

613:                                              ; preds = %604
  call void @llvm.lifetime.start.p0(i64 256, ptr nonnull %87) #11
  invoke void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %88, float noundef 0.000000e+00, float noundef 1.000000e+00, float noundef 0.000000e+00)
          to label %614 unwind label %732

614:                                              ; preds = %613
  %615 = load double, ptr %88, align 16
  %616 = getelementptr inbounds i8, ptr %88, i64 8
  %617 = load double, ptr %616, align 8
  %618 = invoke { double, double } @_ZNK3JPH4Vec3plES0_(ptr noundef nonnull align 16 dereferenceable(16) %2, double %615, double %617)
          to label %619 unwind label %732

619:                                              ; preds = %614
  %620 = extractvalue { double, double } %618, 0
  %621 = extractvalue { double, double } %618, 1
  %622 = invoke { double, double } @_ZN3JPH4Vec36sAxisXEv()
          to label %623 unwind label %732

623:                                              ; preds = %619
  %624 = extractvalue { double, double } %622, 0
  %625 = extractvalue { double, double } %622, 1
  %626 = invoke { double, double } @_ZN3JPH4Quat9sRotationENS_4Vec3Ef(double %624, double %625, float noundef 0x3FE921FB60000000)
          to label %627 unwind label %732

627:                                              ; preds = %623
  %628 = extractvalue { double, double } %626, 0
  %629 = extractvalue { double, double } %626, 1
  invoke void @_ZN3JPH20BodyCreationSettingsC2EPKNS_13ShapeSettingsENS_4Vec3ENS_4QuatENS_11EMotionTypeEt(ptr noundef nonnull align 16 dereferenceable(256) %87, ptr noundef nonnull %85, double %620, double %621, double %628, double %629, i8 noundef zeroext 2, i16 noundef zeroext 1)
          to label %630 unwind label %732

630:                                              ; preds = %627
  %631 = getelementptr inbounds i8, ptr %87, i64 103
  store i8 1, ptr %631, align 1, !tbaa !36
  %632 = getelementptr inbounds i8, ptr %87, i64 108
  store <2 x float> <float 1.000000e+00, float 1.000000e+00>, ptr %632, align 4, !tbaa !37
  %633 = load ptr, ptr %509, align 8, !tbaa !38
  %634 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZN3JPH13PhysicsSystem16GetBodyInterfaceEv(ptr noundef nonnull align 16 dereferenceable(1172) %633)
  %635 = invoke noundef ptr @_ZN3JPH13BodyInterface10CreateBodyERKNS_20BodyCreationSettingsE(ptr noundef nonnull align 8 dereferenceable(24) %634, ptr noundef nonnull align 16 dereferenceable(256) %87)
          to label %636 unwind label %734

636:                                              ; preds = %630
  invoke void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %89, float noundef 0.000000e+00, float noundef -1.000000e+02, float noundef 0.000000e+00)
          to label %637 unwind label %734

637:                                              ; preds = %636
  %638 = load double, ptr %89, align 16
  %639 = getelementptr inbounds i8, ptr %89, i64 8
  %640 = load double, ptr %639, align 8
  invoke void @_ZN3JPH4Body17SetLinearVelocityENS_4Vec3E(ptr noundef nonnull align 16 dereferenceable(122) %635, double %638, double %640)
          to label %641 unwind label %734

641:                                              ; preds = %637
  %642 = load ptr, ptr %509, align 8, !tbaa !38
  %643 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZN3JPH13PhysicsSystem16GetBodyInterfaceEv(ptr noundef nonnull align 16 dereferenceable(1172) %642)
  %644 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK3JPH4Body5GetIDEv(ptr noundef nonnull align 16 dereferenceable(122) %635)
  invoke void @_ZN3JPH13BodyInterface7AddBodyERKNS_6BodyIDENS_11EActivationE(ptr noundef nonnull align 8 dereferenceable(24) %643, ptr noundef nonnull align 4 dereferenceable(4) %644, i32 noundef 0)
          to label %645 unwind label %734

645:                                              ; preds = %641
  call void @_ZN3JPH20BodyCreationSettingsD2Ev(ptr noundef nonnull align 16 dereferenceable(256) %87) #11
  call void @llvm.lifetime.end.p0(i64 256, ptr nonnull %87) #11
  call void @_ZN3JPH19ConvexShapeSettingsD2Ev(ptr noundef nonnull align 16 dereferenceable(112) %85) #11
  call void @llvm.lifetime.end.p0(i64 112, ptr nonnull %85) #11
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %2) #11
  ret void

646:                                              ; preds = %100
  %647 = landingpad { ptr, i32 }
          cleanup
  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 44, ptr nonnull %12) #11
  br label %657

648:                                              ; preds = %105
  %649 = landingpad { ptr, i32 }
          cleanup
  br label %652

.thread:                                          ; preds = %115
  %650 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3JPH20BodyCreationSettingsD2Ev(ptr noundef nonnull align 16 dereferenceable(256) %16) #11
  call void @_ZN3JPH5ArrayINS_8RefConstINS_15PhysicsMaterialEEENS_12STLAllocatorIS3_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %17) #11
  br label %652

.thread179:                                       ; preds = %112, %110
  %lpad.thr_comm = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3JPH5ArrayINS_8RefConstINS_15PhysicsMaterialEEENS_12STLAllocatorIS3_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %17) #11
  br label %652

651:                                              ; preds = %109
  %lpad.thr_comm.split-lp = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3JPH5ArrayINS_8RefConstINS_15PhysicsMaterialEEENS_12STLAllocatorIS3_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %17) #11
  call void @_ZN3JPH17MeshShapeSettingsdlEPv(ptr noundef %108) #11
  br label %652

652:                                              ; preds = %.thread179, %.thread, %651, %648
  %.pn.pn = phi { ptr, i32 } [ %lpad.thr_comm.split-lp, %651 ], [ %649, %648 ], [ %650, %.thread ], [ %lpad.thr_comm, %.thread179 ]
  call void @llvm.lifetime.end.p0(i64 256, ptr nonnull %16) #11
  br label %657

653:                                              ; preds = %132, %129, %126, %121, %120, %117
  %654 = landingpad { ptr, i32 }
          cleanup
  br label %657

655:                                              ; preds = %131
  %656 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3JPH11SphereShapedlEPv(ptr noundef %130) #11
  br label %657

657:                                              ; preds = %652, %653, %655, %101, %103, %646
  %.pn173.pn = phi { ptr, i32 } [ %647, %646 ], [ %104, %103 ], [ %102, %101 ], [ %654, %653 ], [ %656, %655 ], [ %.pn.pn, %652 ]
  call void @_ZN3JPH5ArrayINS_8TriangleENS_12STLAllocatorIS1_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %3) #11
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %3) #11
  br label %738

658:                                              ; preds = %136
  %659 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3JPH11SphereShapedlEPv(ptr noundef %145) #11
  br label %738

660:                                              ; preds = %171, %169, %146
  %661 = landingpad { ptr, i32 }
          cleanup
  br label %664

662:                                              ; preds = %166, %164
  %663 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3JPH8BoxShapedlEPv(ptr noundef %163) #11
  br label %664

664:                                              ; preds = %662, %660
  %.pn155 = phi { ptr, i32 } [ %661, %660 ], [ %663, %662 ]
  call void @_ZN3JPH11ScaledShapedlEPv(ptr noundef %162) #11
  br label %738

665:                                              ; preds = %190, %174
  %666 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3JPH8BoxShapedlEPv(ptr noundef %188) #11
  br label %738

667:                                              ; preds = %205, %193
  %668 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3JPH8BoxShapedlEPv(ptr noundef %203) #11
  br label %738

669:                                              ; preds = %222, %208
  %670 = landingpad { ptr, i32 }
          cleanup
  br label %685

671:                                              ; preds = %218, %217
  %672 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3JPH16BoxShapeSettingsdlEPv(ptr noundef %216) #11
  br label %685

673:                                              ; preds = %226, %223
  %674 = landingpad { ptr, i32 }
          cleanup
  br label %684

675:                                              ; preds = %225
  %676 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3JPH27StaticCompoundShapeSettingsdlEPv(ptr noundef nonnull %224) #11
  br label %684

677:                                              ; preds = %306, %303, %300, %295, %294, %289, %279, %272, %268, %266, %264, %257, %253, %251, %249, %242, %240, %238, %231, %229, %227
  %678 = landingpad { ptr, i32 }
          cleanup
  br label %683

679:                                              ; preds = %284, %281
  %680 = landingpad { ptr, i32 }
          cleanup
  br label %683

681:                                              ; preds = %305
  %682 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3JPH11SphereShapedlEPv(ptr noundef %304) #11
  br label %683

683:                                              ; preds = %681, %679, %677
  %.pn157 = phi { ptr, i32 } [ %678, %677 ], [ %682, %681 ], [ %680, %679 ]
  call void @_ZN3JPH3RefINS_27StaticCompoundShapeSettingsEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %35) #11
  br label %684

684:                                              ; preds = %683, %675, %673
  %.pn157.pn = phi { ptr, i32 } [ %.pn157, %683 ], [ %674, %673 ], [ %676, %675 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %35) #11
  call void @_ZN3JPH3RefINS_16BoxShapeSettingsEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %33) #11
  br label %685

685:                                              ; preds = %684, %671, %669
  %.pn157.pn.pn = phi { ptr, i32 } [ %.pn157.pn, %684 ], [ %670, %669 ], [ %672, %671 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %33) #11
  call void @_ZN3JPH20BodyCreationSettingsD2Ev(ptr noundef nonnull align 16 dereferenceable(256) %32) #11
  call void @llvm.lifetime.end.p0(i64 256, ptr nonnull %32) #11
  br label %738

686:                                              ; preds = %323, %310
  %687 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3JPH8BoxShapedlEPv(ptr noundef %321) #11
  br label %738

688:                                              ; preds = %338, %326
  %689 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3JPH8BoxShapedlEPv(ptr noundef %336) #11
  br label %738

690:                                              ; preds = %357, %341
  %691 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3JPH8BoxShapedlEPv(ptr noundef %355) #11
  br label %738

692:                                              ; preds = %372, %360
  %693 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3JPH8BoxShapedlEPv(ptr noundef %370) #11
  br label %738

694:                                              ; preds = %391, %375
  %695 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3JPH8BoxShapedlEPv(ptr noundef %389) #11
  br label %738

696:                                              ; preds = %406, %394
  %697 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3JPH8BoxShapedlEPv(ptr noundef %404) #11
  br label %738

698:                                              ; preds = %425, %409
  %699 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3JPH8BoxShapedlEPv(ptr noundef %423) #11
  br label %738

700:                                              ; preds = %443, %428
  %701 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3JPH8BoxShapedlEPv(ptr noundef %441) #11
  br label %738

702:                                              ; preds = %459, %446
  %703 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3JPH8BoxShapedlEPv(ptr noundef %457) #11
  br label %738

704:                                              ; preds = %477, %462
  %705 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3JPH8BoxShapedlEPv(ptr noundef %475) #11
  br label %738

706:                                              ; preds = %480
  %707 = landingpad { ptr, i32 }
          cleanup
  br label %713

708:                                              ; preds = %503, %499, %495, %490, %489
  %709 = landingpad { ptr, i32 }
          cleanup
  br label %712

710:                                              ; preds = %518, %514, %513, %506
  %711 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3JPH20BodyCreationSettingsD2Ev(ptr noundef nonnull align 16 dereferenceable(256) %69) #11
  br label %712

712:                                              ; preds = %710, %708
  %.pn161 = phi { ptr, i32 } [ %711, %710 ], [ %709, %708 ]
  call void @llvm.lifetime.end.p0(i64 256, ptr nonnull %69) #11
  br label %713

713:                                              ; preds = %712, %706
  %.pn161.pn = phi { ptr, i32 } [ %.pn161, %712 ], [ %707, %706 ]
  call void @_ZN3JPH19ConvexShapeSettingsD2Ev(ptr noundef nonnull align 16 dereferenceable(112) %67) #11
  call void @llvm.lifetime.end.p0(i64 112, ptr nonnull %67) #11
  br label %738

714:                                              ; preds = %522
  %715 = landingpad { ptr, i32 }
          cleanup
  br label %721

716:                                              ; preds = %545, %541, %537, %532, %531
  %717 = landingpad { ptr, i32 }
          cleanup
  br label %720

718:                                              ; preds = %559, %555, %554, %548
  %719 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3JPH20BodyCreationSettingsD2Ev(ptr noundef nonnull align 16 dereferenceable(256) %75) #11
  br label %720

720:                                              ; preds = %718, %716
  %.pn164 = phi { ptr, i32 } [ %719, %718 ], [ %717, %716 ]
  call void @llvm.lifetime.end.p0(i64 256, ptr nonnull %75) #11
  br label %721

721:                                              ; preds = %720, %714
  %.pn164.pn = phi { ptr, i32 } [ %.pn164, %720 ], [ %715, %714 ]
  call void @_ZN3JPH19ConvexShapeSettingsD2Ev(ptr noundef nonnull align 16 dereferenceable(112) %73) #11
  call void @llvm.lifetime.end.p0(i64 112, ptr nonnull %73) #11
  br label %738

722:                                              ; preds = %563
  %723 = landingpad { ptr, i32 }
          cleanup
  br label %729

724:                                              ; preds = %586, %582, %578, %573, %572
  %725 = landingpad { ptr, i32 }
          cleanup
  br label %728

726:                                              ; preds = %600, %596, %595, %589
  %727 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3JPH20BodyCreationSettingsD2Ev(ptr noundef nonnull align 16 dereferenceable(256) %81) #11
  br label %728

728:                                              ; preds = %726, %724
  %.pn167 = phi { ptr, i32 } [ %727, %726 ], [ %725, %724 ]
  call void @llvm.lifetime.end.p0(i64 256, ptr nonnull %81) #11
  br label %729

729:                                              ; preds = %728, %722
  %.pn167.pn = phi { ptr, i32 } [ %.pn167, %728 ], [ %723, %722 ]
  call void @_ZN3JPH19ConvexShapeSettingsD2Ev(ptr noundef nonnull align 16 dereferenceable(112) %79) #11
  call void @llvm.lifetime.end.p0(i64 112, ptr nonnull %79) #11
  br label %738

730:                                              ; preds = %604
  %731 = landingpad { ptr, i32 }
          cleanup
  br label %737

732:                                              ; preds = %627, %623, %619, %614, %613
  %733 = landingpad { ptr, i32 }
          cleanup
  br label %736

734:                                              ; preds = %641, %637, %636, %630
  %735 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3JPH20BodyCreationSettingsD2Ev(ptr noundef nonnull align 16 dereferenceable(256) %87) #11
  br label %736

736:                                              ; preds = %734, %732
  %.pn170 = phi { ptr, i32 } [ %735, %734 ], [ %733, %732 ]
  call void @llvm.lifetime.end.p0(i64 256, ptr nonnull %87) #11
  br label %737

737:                                              ; preds = %736, %730
  %.pn170.pn = phi { ptr, i32 } [ %.pn170, %736 ], [ %731, %730 ]
  call void @_ZN3JPH19ConvexShapeSettingsD2Ev(ptr noundef nonnull align 16 dereferenceable(112) %85) #11
  call void @llvm.lifetime.end.p0(i64 112, ptr nonnull %85) #11
  br label %738

738:                                              ; preds = %737, %729, %721, %713, %704, %702, %700, %698, %696, %694, %692, %690, %688, %686, %685, %667, %665, %664, %658, %657
  %.pn173.pn.pn = phi { ptr, i32 } [ %.pn173.pn, %657 ], [ %.pn170.pn, %737 ], [ %.pn167.pn, %729 ], [ %.pn164.pn, %721 ], [ %.pn161.pn, %713 ], [ %705, %704 ], [ %703, %702 ], [ %701, %700 ], [ %699, %698 ], [ %697, %696 ], [ %695, %694 ], [ %693, %692 ], [ %691, %690 ], [ %689, %688 ], [ %687, %686 ], [ %.pn157.pn.pn, %685 ], [ %668, %667 ], [ %666, %665 ], [ %.pn155, %664 ], [ %659, %658 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %2) #11
  resume { ptr, i32 } %.pn173.pn.pn
}

declare noundef nonnull align 16 dereferenceable(122) ptr @_ZN4Test11CreateFloorEf(ptr noundef nonnull align 8 dereferenceable(112), float noundef) local_unnamed_addr #5

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZN3JPH5ArrayINS_8TriangleENS_12STLAllocatorIS1_EEEC2Ev(ptr noundef nonnull align 8 dereferenceable(24)) unnamed_addr #7 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 @_ZN3JPH6Float3C2Efff(ptr noundef nonnull align 4 dereferenceable(12), float noundef, float noundef, float noundef) unnamed_addr #7 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 #7 align 2

; Function Attrs: alwaysinline mustprogress uwtable
declare dso_local noundef ptr @_ZN3JPH17MeshShapeSettingsnwEm(i64 noundef) local_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) #9

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZN3JPH5ArrayINS_8RefConstINS_15PhysicsMaterialEEENS_12STLAllocatorIS3_EEEC2Ev(ptr noundef nonnull align 8 dereferenceable(24)) unnamed_addr #7 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 #5

; Function Attrs: alwaysinline mustprogress uwtable
declare dso_local { double, double } @_ZN3JPH4Quat9sIdentityEv() local_unnamed_addr #2 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 @_ZN3JPH5ArrayINS_8RefConstINS_15PhysicsMaterialEEENS_12STLAllocatorIS3_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(24)) unnamed_addr #6 align 2

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZN3JPH4Body14SetRestitutionEf(ptr noundef nonnull align 16 dereferenceable(122), float noundef) local_unnamed_addr #7 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZN3JPH4Body11SetFrictionEf(ptr noundef nonnull align 16 dereferenceable(122), float noundef) local_unnamed_addr #7 align 2

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

; Function Attrs: alwaysinline mustprogress nounwind uwtable
declare dso_local noundef nonnull align 16 dereferenceable(16) ptr @_ZN3JPH4Vec3pLES0_(ptr noundef nonnull align 16 dereferenceable(16), double, double) local_unnamed_addr #10 align 2

; Function Attrs: alwaysinline mustprogress uwtable
declare dso_local noundef ptr @_ZN3JPH11ScaledShapenwEm(i64 noundef) local_unnamed_addr #2 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 @_ZN3JPH11ScaledShapeC2EPKNS_5ShapeENS_4Vec3E(ptr noundef nonnull align 16 dereferenceable(64), ptr noundef, double, double) unnamed_addr #1 align 2

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

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

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

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

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN3JPH20BodyCreationSettings16SetShapeSettingsEPKNS_13ShapeSettingsE(ptr noundef nonnull align 16 dereferenceable(256), ptr noundef) local_unnamed_addr #1 align 2

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

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

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

; Function Attrs: alwaysinline mustprogress uwtable
declare dso_local { double, double } @_ZN3JPH4Vec35sZeroEv() local_unnamed_addr #3 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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(24) ptr @_ZN3JPH13PhysicsSystem16GetBodyInterfaceEv(ptr noundef nonnull align 16 dereferenceable(1172)) local_unnamed_addr #7 align 2

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

attributes #0 = { 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 = { 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 #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 nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #5 = { "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #6 = { inlinehint mustprogress nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #7 = { mustprogress nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #8 = { inlinehint mustprogress uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #9 = { mustprogress nocallback nofree nounwind willreturn memory(argmem: write) }
attributes #10 = { alwaysinline mustprogress nounwind 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 #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 = !{!8, !8, i64 0}
!18 = !{!19, !27, i64 96}
!19 = !{!"_ZTSN3JPH20BodyCreationSettingsE", !20, i64 0, !21, i64 16, !20, i64 32, !20, i64 48, !13, i64 64, !23, i64 72, !24, i64 80, !27, i64 96, !28, i64 97, !10, i64 98, !10, i64 99, !10, i64 100, !10, i64 101, !10, i64 102, !29, 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, !26, i64 136, !26, i64 140, !30, i64 144, !16, i64 148, !31, i64 160, !33, i64 240, !34, i64 248}
!20 = !{!"_ZTSN3JPH4Vec3E", !8, i64 0}
!21 = !{!"_ZTSN3JPH4QuatE", !22, i64 0}
!22 = !{!"_ZTSN3JPH4Vec4E", !8, i64 0}
!23 = !{!"short", !8, i64 0}
!24 = !{!"_ZTSN3JPH14CollisionGroupE", !25, i64 0, !26, i64 8, !26, i64 12}
!25 = !{!"_ZTSN3JPH8RefConstINS_11GroupFilterEEE", !7, i64 0}
!26 = !{!"int", !8, i64 0}
!27 = !{!"_ZTSN3JPH11EMotionTypeE", !8, i64 0}
!28 = !{!"_ZTSN3JPH12EAllowedDOFsE", !8, i64 0}
!29 = !{!"_ZTSN3JPH14EMotionQualityE", !8, i64 0}
!30 = !{!"_ZTSN3JPH23EOverrideMassPropertiesE", !8, i64 0}
!31 = !{!"_ZTSN3JPH14MassPropertiesE", !16, i64 0, !32, i64 16}
!32 = !{!"_ZTSN3JPH5Mat44E", !8, i64 0}
!33 = !{!"_ZTSN3JPH8RefConstINS_13ShapeSettingsEEE", !7, i64 0}
!34 = !{!"_ZTSN3JPH8RefConstINS_5ShapeEEE", !7, i64 0}
!35 = !{!19, !23, i64 72}
!36 = !{!19, !29, i64 103}
!37 = !{!16, !16, i64 0}
!38 = !{!6, !7, i64 16}


; Effective O3 passes: CorrelatedValuePropagationPass,EarlyCSEPass,GVNPass,GlobalOptPass,IndVarSimplifyPass,InferFunctionAttrsPass,InstCombinePass,JumpThreadingPass,LoopRotatePass,SLPVectorizerPass,SROAPass,SimplifyCFGPass,TailCallElimPass