; LLVM IR from jrouwe/JoltPhysics :: Samples/Tests/Vehicle/VehicleConstraintTest.ll (ZN21VehicleConstraintTest10InitializeEv)

; 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.21 }
%union.anon.21 = type { <4 x float> }
%"class.JPH::RefConst.34" = type { ptr }
%"class.JPH::Result" = type <{ %union.anon.35, i8, [7 x i8] }>
%union.anon.35 = 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.39 }
%"struct.std::__cxx11::basic_string<char, std::char_traits<char>, JPH::STLAllocator<char>>::_Alloc_hider" = type { ptr }
%union.anon.39 = type { i64, [8 x i8] }
%"class.JPH::OffsetCenterOfMassShapeSettings" = type { %"class.JPH::DecoratedShapeSettings", %"class.JPH::Vec3" }
%"class.JPH::DecoratedShapeSettings" = type { %"class.JPH::ShapeSettings", %"class.JPH::RefConst.41", %"class.JPH::RefConst.34" }
%"class.JPH::ShapeSettings" = type { %"class.JPH::SerializableObject", %"class.JPH::RefTarget.40", i64, %"class.JPH::Result" }
%"class.JPH::SerializableObject" = type { ptr }
%"class.JPH::RefTarget.40" = type { %"struct.std::atomic" }
%"struct.std::atomic" = type { %"struct.std::__atomic_base" }
%"struct.std::__atomic_base" = type { i32 }
%"class.JPH::RefConst.41" = type { ptr }
%"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.41", %"class.JPH::RefConst.34" }
%"class.JPH::Quat" = type { %"class.JPH::Vec4" }
%"class.JPH::Vec4" = type { %union.anon }
%union.anon = type { <4 x float> }
%"class.JPH::CollisionGroup" = type { %"class.JPH::RefConst.44", i32, i32 }
%"class.JPH::RefConst.44" = type { ptr }
%"class.JPH::MassProperties" = type { float, %"class.JPH::Mat44" }
%"class.JPH::Mat44" = type { [4 x %"class.JPH::Vec4"] }
%"class.JPH::VehicleConstraintSettings" = type { %"class.JPH::ConstraintSettings", %"class.JPH::Vec3", %"class.JPH::Vec3", float, %"class.JPH::Array.48", %"class.JPH::Array.25", %"class.JPH::Ref.51" }
%"class.JPH::ConstraintSettings" = type { %"class.JPH::SerializableObject", %"class.JPH::RefTarget.47", i8, i32, i32, i32, float, i64 }
%"class.JPH::RefTarget.47" = type { %"struct.std::atomic" }
%"class.JPH::Array.48" = type { i64, i64, ptr }
%"class.JPH::Array.25" = type { i64, i64, ptr }
%"class.JPH::Ref.51" = type { ptr }
%"class.std::initializer_list" = type { ptr, i64 }
%"class.JPH::Ref.57" = type { ptr }
%"class.std::function.65" = type { %"class.std::_Function_base", ptr }
%"class.std::_Function_base" = type { %"union.std::_Any_data", ptr }
%"union.std::_Any_data" = type { %"union.std::_Nocopy_types" }
%"union.std::_Nocopy_types" = type { { i64, i64 } }
%class.anon.67 = type { i8 }
%class.VehicleConstraintTest = type <{ %class.VehicleTest, ptr, %"class.JPH::Ref", [3 x %"class.JPH::Ref.4"], %"class.JPH::Mat44", float, float, float, float, float, [12 x i8] }>
%class.VehicleTest = type { %class.Test, %"class.JPH::Array" }
%class.Test = type { ptr, ptr, ptr, ptr, ptr, ptr, i8, %"class.std::unordered_map" }
%"class.std::unordered_map" = type { %"class.std::_Hashtable" }
%"class.std::_Hashtable" = type { ptr, i64, %"struct.std::__detail::_Hash_node_base", i64, %"struct.std::__detail::_Prime_rehash_policy", ptr }
%"struct.std::__detail::_Hash_node_base" = type { ptr }
%"struct.std::__detail::_Prime_rehash_policy" = type { float, i64 }
%"class.JPH::Array" = type { i64, i64, ptr }
%"class.JPH::Ref" = type { ptr }
%"class.JPH::Ref.4" = type { ptr }
%"class.JPH::WheelSettings" = type <{ %"class.JPH::SerializableObject", %"class.JPH::RefTarget.52", [4 x i8], %"class.JPH::Vec3", %"class.JPH::Vec3", %"class.JPH::Vec3", %"class.JPH::Vec3", %"class.JPH::Vec3", %"class.JPH::Vec3", float, float, float, %"class.JPH::SpringSettings", float, float, i8, [15 x i8] }>
%"class.JPH::RefTarget.52" = type { %"struct.std::atomic" }
%"class.JPH::SpringSettings" = type { i8, %union.anon.53, float }
%union.anon.53 = type { float }
%"class.JPH::WheelSettingsWV" = type { %"class.JPH::WheelSettings.base", float, float, float, %"class.JPH::LinearCurve", %"class.JPH::LinearCurve", float, float, [8 x i8] }
%"class.JPH::WheelSettings.base" = type <{ %"class.JPH::SerializableObject", %"class.JPH::RefTarget.52", [4 x i8], %"class.JPH::Vec3", %"class.JPH::Vec3", %"class.JPH::Vec3", %"class.JPH::Vec3", %"class.JPH::Vec3", %"class.JPH::Vec3", float, float, float, %"class.JPH::SpringSettings", float, float, i8 }>
%"class.JPH::LinearCurve" = type { %"class.JPH::Array.54" }
%"class.JPH::Array.54" = type { i64, i64, ptr }
%"class.JPH::WheeledVehicleControllerSettings" = type <{ %"class.JPH::VehicleControllerSettings.base", [4 x i8], %"class.JPH::VehicleEngineSettings", %"class.JPH::VehicleTransmissionSettings", %"class.JPH::Array.62", float, [4 x i8] }>
%"class.JPH::VehicleControllerSettings.base" = type <{ %"class.JPH::SerializableObject", %"class.JPH::RefTarget.58" }>
%"class.JPH::RefTarget.58" = type { %"struct.std::atomic" }
%"class.JPH::VehicleEngineSettings" = type { float, float, float, %"class.JPH::LinearCurve", float, float }
%"class.JPH::VehicleTransmissionSettings" = type { i8, %"class.JPH::Array.59", %"class.JPH::Array.59", float, float, float, float, float, float }
%"class.JPH::Array.59" = type { i64, i64, ptr }
%"class.JPH::Array.62" = type { i64, i64, ptr }
%"class.JPH::VehicleDifferentialSettings" = type { i32, i32, float, float, float, float }
%"class.JPH::VehicleAntiRollBar" = type { i32, i32, float }

@_ZN21VehicleConstraintTest17sInitialRollAngleE = external dso_local global float, align 4
@_ZN21VehicleConstraintTest13sMaxRollAngleE = external dso_local global float, align 4
@_ZN21VehicleConstraintTest29sFrontSuspensionSidewaysAngleE = external dso_local global float, align 4
@_ZN21VehicleConstraintTest28sFrontSuspensionForwardAngleE = external dso_local global float, align 4
@_ZN21VehicleConstraintTest18sFrontKingPinAngleE = external dso_local global float, align 4
@_ZN21VehicleConstraintTest17sFrontCasterAngleE = external dso_local global float, align 4
@_ZN21VehicleConstraintTest12sFrontCamberE = external dso_local global float, align 4
@_ZN21VehicleConstraintTest9sFrontToeE = external dso_local global float, align 4
@_ZN21VehicleConstraintTest28sRearSuspensionSidewaysAngleE = external dso_local global float, align 4
@_ZN21VehicleConstraintTest27sRearSuspensionForwardAngleE = external dso_local global float, align 4
@_ZN21VehicleConstraintTest17sRearKingPinAngleE = external dso_local global float, align 4
@_ZN21VehicleConstraintTest16sRearCasterAngleE = external dso_local global float, align 4
@_ZN21VehicleConstraintTest11sRearCamberE = external dso_local global float, align 4
@_ZN21VehicleConstraintTest8sRearToeE = external dso_local global float, align 4
@_ZN21VehicleConstraintTest25sFrontSuspensionMinLengthE = external dso_local global float, align 4
@_ZN21VehicleConstraintTest25sFrontSuspensionMaxLengthE = external dso_local global float, align 4
@_ZN21VehicleConstraintTest25sFrontSuspensionFrequencyE = external dso_local global float, align 4
@_ZN21VehicleConstraintTest23sFrontSuspensionDampingE = external dso_local global float, align 4
@_ZN21VehicleConstraintTest17sMaxSteeringAngleE = external dso_local global float, align 4
@_ZN21VehicleConstraintTest24sRearSuspensionMinLengthE = external dso_local global float, align 4
@_ZN21VehicleConstraintTest24sRearSuspensionMaxLengthE = external dso_local global float, align 4
@_ZN21VehicleConstraintTest24sRearSuspensionFrequencyE = external dso_local global float, align 4
@_ZN21VehicleConstraintTest22sRearSuspensionDampingE = external dso_local global float, align 4
@_ZN21VehicleConstraintTest15sFourWheelDriveE = external dso_local global i8, align 1
@_ZN21VehicleConstraintTest12sAntiRollbarE = external dso_local global i8, align 1

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

declare i32 @__gxx_personality_v0(...)

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

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

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN21VehicleConstraintTest10InitializeEv(ptr noundef nonnull align 16 dereferenceable(260) %0) unnamed_addr #2 align 2 personality ptr @__gxx_personality_v0 {
  %2 = alloca ptr, align 8
  %3 = alloca float, align 4
  %4 = alloca float, align 4
  %5 = alloca float, align 4
  %6 = alloca float, align 4
  %7 = alloca float, align 4
  %8 = alloca %"class.JPH::Vec3", align 16
  %9 = alloca ptr, align 8
  %10 = alloca i32, align 4
  %11 = alloca %"class.JPH::Vec3", align 16
  %12 = alloca %"class.JPH::Vec3", align 16
  %13 = alloca %"class.JPH::RefConst.34", align 8
  %14 = alloca %"class.JPH::Result", align 8
  %15 = alloca %"class.JPH::OffsetCenterOfMassShapeSettings", align 16
  %16 = alloca %"class.JPH::Vec3", align 16
  %17 = alloca %"class.JPH::Vec3", align 16
  %18 = alloca %"class.JPH::BodyCreationSettings", align 16
  %19 = alloca %"class.JPH::Vec3", align 16
  %20 = alloca %"class.JPH::Quat", align 16
  %21 = alloca %"class.JPH::Vec3", align 16
  %22 = alloca %"class.JPH::VehicleConstraintSettings", 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::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 ptr, align 8
  %37 = alloca %"class.JPH::Vec3", align 16
  %38 = alloca ptr, align 8
  %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 ptr, align 8
  %49 = alloca %"class.JPH::Vec3", align 16
  %50 = alloca ptr, align 8
  %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.std::initializer_list", align 8
  %61 = alloca [4 x %"class.JPH::Ref.57"], align 8
  %62 = alloca ptr, align 8
  %63 = alloca ptr, align 8
  %64 = alloca ptr, align 8
  %65 = alloca ptr, align 8
  %66 = alloca ptr, align 8
  %67 = alloca ptr, align 8
  %68 = alloca %"class.std::function.65", align 8
  %69 = alloca %class.anon.67, align 1
  store ptr %0, ptr %2, align 8, !tbaa !5
  %70 = load ptr, ptr %2, align 8
  call void @_ZN11VehicleTest10InitializeEv(ptr noundef nonnull align 8 dereferenceable(136) %70)
  call void @llvm.lifetime.start.p0(i64 4, ptr %3) #11
  store float 0x3FD3333340000000, ptr %3, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %4) #11
  store float 0x3FB99999A0000000, ptr %4, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %5) #11
  store float 2.000000e+00, ptr %5, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %6) #11
  store float 0x3FECCCCCC0000000, ptr %6, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %7) #11
  store float 0x3FC99999A0000000, ptr %7, align 4, !tbaa !9
  %71 = call noundef ptr @_ZN3JPH25VehicleCollisionTesterRaynwEm(i64 noundef 80)
  %72 = invoke { double, double } @_ZN3JPH4Vec36sAxisYEv()
          to label %73 unwind label %537

73:                                               ; preds = %1
  %74 = getelementptr inbounds %"class.JPH::Vec3", ptr %8, i32 0, i32 0
  %75 = getelementptr inbounds %union.anon.21, ptr %74, i32 0, i32 0
  %76 = getelementptr inbounds { double, double }, ptr %75, i32 0, i32 0
  %77 = extractvalue { double, double } %72, 0
  store double %77, ptr %76, align 16
  %78 = getelementptr inbounds { double, double }, ptr %75, i32 0, i32 1
  %79 = extractvalue { double, double } %72, 1
  store double %79, ptr %78, align 8
  %80 = invoke noundef float @_ZN3JPH16DegreesToRadiansEf(float noundef 8.000000e+01)
          to label %81 unwind label %537

81:                                               ; preds = %73
  %82 = getelementptr inbounds { double, double }, ptr %8, i32 0, i32 0
  %83 = load double, ptr %82, align 16
  %84 = getelementptr inbounds { double, double }, ptr %8, i32 0, i32 1
  %85 = load double, ptr %84, align 8
  invoke void @_ZN3JPH25VehicleCollisionTesterRayC2EtNS_4Vec3Ef(ptr noundef nonnull align 16 dereferenceable(68) %71, i16 noundef zeroext 1, double %83, double %85, float noundef %80)
          to label %86 unwind label %537

86:                                               ; preds = %81
  %87 = getelementptr inbounds %class.VehicleConstraintTest, ptr %70, i32 0, i32 3
  %88 = getelementptr inbounds [3 x %"class.JPH::Ref.4"], ptr %87, i64 0, i64 0
  %89 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN3JPH3RefINS_22VehicleCollisionTesterEEaSEPS1_(ptr noundef nonnull align 8 dereferenceable(8) %88, ptr noundef %71)
  %90 = call noundef ptr @_ZN3JPH32VehicleCollisionTesterCastSpherenwEm(i64 noundef 80)
  %91 = invoke { double, double } @_ZN3JPH4Vec36sAxisYEv()
          to label %92 unwind label %541

92:                                               ; preds = %86
  %93 = getelementptr inbounds %"class.JPH::Vec3", ptr %11, i32 0, i32 0
  %94 = getelementptr inbounds %union.anon.21, ptr %93, i32 0, i32 0
  %95 = getelementptr inbounds { double, double }, ptr %94, i32 0, i32 0
  %96 = extractvalue { double, double } %91, 0
  store double %96, ptr %95, align 16
  %97 = getelementptr inbounds { double, double }, ptr %94, i32 0, i32 1
  %98 = extractvalue { double, double } %91, 1
  store double %98, ptr %97, align 8
  %99 = invoke noundef float @_ZN3JPH16DegreesToRadiansEf(float noundef 8.000000e+01)
          to label %100 unwind label %541

100:                                              ; preds = %92
  %101 = getelementptr inbounds { double, double }, ptr %11, i32 0, i32 0
  %102 = load double, ptr %101, align 16
  %103 = getelementptr inbounds { double, double }, ptr %11, i32 0, i32 1
  %104 = load double, ptr %103, align 8
  invoke void @_ZN3JPH32VehicleCollisionTesterCastSphereC2EtfNS_4Vec3Ef(ptr noundef nonnull align 16 dereferenceable(68) %90, i16 noundef zeroext 1, float noundef 0x3FA99999A0000000, double %102, double %104, float noundef %99)
          to label %105 unwind label %541

105:                                              ; preds = %100
  %106 = getelementptr inbounds %class.VehicleConstraintTest, ptr %70, i32 0, i32 3
  %107 = getelementptr inbounds [3 x %"class.JPH::Ref.4"], ptr %106, i64 0, i64 1
  %108 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN3JPH3RefINS_22VehicleCollisionTesterEEaSEPS1_(ptr noundef nonnull align 8 dereferenceable(8) %107, ptr noundef %90)
  %109 = call noundef ptr @_ZN3JPH34VehicleCollisionTesterCastCylindernwEm(i64 noundef 48)
  invoke void @_ZN3JPH34VehicleCollisionTesterCastCylinderC2Etf(ptr noundef nonnull align 8 dereferenceable(48) %109, i16 noundef zeroext 1, float noundef 0x3FB99999A0000000)
          to label %110 unwind label %545

110:                                              ; preds = %105
  %111 = getelementptr inbounds %class.VehicleConstraintTest, ptr %70, i32 0, i32 3
  %112 = getelementptr inbounds [3 x %"class.JPH::Ref.4"], ptr %111, i64 0, i64 2
  %113 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN3JPH3RefINS_22VehicleCollisionTesterEEaSEPS1_(ptr noundef nonnull align 8 dereferenceable(8) %112, ptr noundef %109)
  call void @llvm.lifetime.start.p0(i64 16, ptr %12) #11
  call void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %12, float noundef 0.000000e+00, float noundef 2.000000e+00, float noundef 0.000000e+00)
  call void @llvm.lifetime.start.p0(i64 8, ptr %13) #11
  call void @llvm.lifetime.start.p0(i64 40, ptr %14) #11
  call void @llvm.lifetime.start.p0(i64 96, ptr %15) #11
  call void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %16, float noundef 0.000000e+00, float noundef 0xBFC99999A0000000, float noundef 0.000000e+00)
  %114 = call noundef ptr @_ZN3JPH8BoxShapenwEm(i64 noundef 80)
  invoke void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %17, float noundef 0x3FECCCCCC0000000, float noundef 0x3FC99999A0000000, float noundef 2.000000e+00)
          to label %115 unwind label %549

115:                                              ; preds = %110
  %116 = getelementptr inbounds { double, double }, ptr %17, i32 0, i32 0
  %117 = load double, ptr %116, align 16
  %118 = getelementptr inbounds { double, double }, ptr %17, i32 0, i32 1
  %119 = load double, ptr %118, align 8
  invoke void @_ZN3JPH8BoxShapeC2ENS_4Vec3EfPKNS_15PhysicsMaterialE(ptr noundef nonnull align 16 dereferenceable(80) %114, double %117, double %119, float noundef 0x3FA99999A0000000, ptr noundef null)
          to label %120 unwind label %549

120:                                              ; preds = %115
  %121 = getelementptr inbounds { double, double }, ptr %16, i32 0, i32 0
  %122 = load double, ptr %121, align 16
  %123 = getelementptr inbounds { double, double }, ptr %16, i32 0, i32 1
  %124 = load double, ptr %123, align 8
  call void @_ZN3JPH31OffsetCenterOfMassShapeSettingsC2ENS_4Vec3EPKNS_5ShapeE(ptr noundef nonnull align 16 dereferenceable(96) %15, double %122, double %124, ptr noundef %114)
  invoke void @_ZNK3JPH31OffsetCenterOfMassShapeSettings6CreateEv(ptr dead_on_unwind writable sret(%"class.JPH::Result") align 8 %14, ptr noundef nonnull align 16 dereferenceable(96) %15)
          to label %125 unwind label %553

125:                                              ; preds = %120
  %126 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK3JPH6ResultINS_3RefINS_5ShapeEEEE3GetEv(ptr noundef nonnull align 8 dereferenceable(33) %14)
          to label %127 unwind label %557

127:                                              ; preds = %125
  invoke void @_ZN3JPH8RefConstINS_5ShapeEEC2ERKNS_3RefIS1_EE(ptr noundef nonnull align 8 dereferenceable(8) %13, ptr noundef nonnull align 8 dereferenceable(8) %126)
          to label %128 unwind label %557

128:                                              ; preds = %127
  call void @_ZN3JPH6ResultINS_3RefINS_5ShapeEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(33) %14) #11
  call void @_ZN3JPH22DecoratedShapeSettingsD2Ev(ptr noundef nonnull align 16 dereferenceable(96) %15) #11
  call void @llvm.lifetime.end.p0(i64 96, ptr %15) #11
  call void @llvm.lifetime.end.p0(i64 40, ptr %14) #11
  call void @llvm.lifetime.start.p0(i64 256, ptr %18) #11
  %129 = invoke noundef ptr @_ZNK3JPH8RefConstINS_5ShapeEEcvPKS1_Ev(ptr noundef nonnull align 8 dereferenceable(8) %13)
          to label %130 unwind label %563

130:                                              ; preds = %128
  call void @llvm.memcpy.p0.p0.i64(ptr align 16 %19, ptr align 16 %12, i64 16, i1 false), !tbaa.struct !11
  %131 = invoke { double, double } @_ZN3JPH4Vec36sAxisZEv()
          to label %132 unwind label %563

132:                                              ; preds = %130
  %133 = getelementptr inbounds %"class.JPH::Vec3", ptr %21, i32 0, i32 0
  %134 = getelementptr inbounds %union.anon.21, ptr %133, i32 0, i32 0
  %135 = getelementptr inbounds { double, double }, ptr %134, i32 0, i32 0
  %136 = extractvalue { double, double } %131, 0
  store double %136, ptr %135, align 16
  %137 = getelementptr inbounds { double, double }, ptr %134, i32 0, i32 1
  %138 = extractvalue { double, double } %131, 1
  store double %138, ptr %137, align 8
  %139 = load float, ptr @_ZN21VehicleConstraintTest17sInitialRollAngleE, align 4, !tbaa !9
  %140 = getelementptr inbounds { double, double }, ptr %21, i32 0, i32 0
  %141 = load double, ptr %140, align 16
  %142 = getelementptr inbounds { double, double }, ptr %21, i32 0, i32 1
  %143 = load double, ptr %142, align 8
  %144 = invoke { double, double } @_ZN3JPH4Quat9sRotationENS_4Vec3Ef(double %141, double %143, float noundef %139)
          to label %145 unwind label %563

145:                                              ; preds = %132
  %146 = getelementptr inbounds %"class.JPH::Quat", ptr %20, i32 0, i32 0
  %147 = getelementptr inbounds %"class.JPH::Vec4", ptr %146, i32 0, i32 0
  %148 = getelementptr inbounds %union.anon, ptr %147, i32 0, i32 0
  %149 = getelementptr inbounds { double, double }, ptr %148, i32 0, i32 0
  %150 = extractvalue { double, double } %144, 0
  store double %150, ptr %149, align 16
  %151 = getelementptr inbounds { double, double }, ptr %148, i32 0, i32 1
  %152 = extractvalue { double, double } %144, 1
  store double %152, ptr %151, align 8
  %153 = getelementptr inbounds { double, double }, ptr %19, i32 0, i32 0
  %154 = load double, ptr %153, align 16
  %155 = getelementptr inbounds { double, double }, ptr %19, i32 0, i32 1
  %156 = load double, ptr %155, align 8
  %157 = getelementptr inbounds { double, double }, ptr %20, i32 0, i32 0
  %158 = load double, ptr %157, align 16
  %159 = getelementptr inbounds { double, double }, ptr %20, i32 0, i32 1
  %160 = load double, ptr %159, align 8
  invoke void @_ZN3JPH20BodyCreationSettingsC2EPKNS_5ShapeENS_4Vec3ENS_4QuatENS_11EMotionTypeEt(ptr noundef nonnull align 16 dereferenceable(256) %18, ptr noundef %129, double %154, double %156, double %158, double %160, i8 noundef zeroext 2, i16 noundef zeroext 1)
          to label %161 unwind label %563

161:                                              ; preds = %145
  %162 = getelementptr inbounds %"class.JPH::BodyCreationSettings", ptr %18, i32 0, i32 26
  store i8 1, ptr %162, align 16, !tbaa !13
  %163 = getelementptr inbounds %"class.JPH::BodyCreationSettings", ptr %18, i32 0, i32 28
  %164 = getelementptr inbounds %"class.JPH::MassProperties", ptr %163, i32 0, i32 0
  store float 1.500000e+03, ptr %164, align 16, !tbaa !32
  %165 = getelementptr inbounds %class.Test, ptr %70, i32 0, i32 3
  %166 = load ptr, ptr %165, align 8, !tbaa !33
  %167 = invoke noundef ptr @_ZN3JPH13BodyInterface10CreateBodyERKNS_20BodyCreationSettingsE(ptr noundef nonnull align 8 dereferenceable(24) %166, ptr noundef nonnull align 16 dereferenceable(256) %18)
          to label %168 unwind label %567

168:                                              ; preds = %161
  %169 = getelementptr inbounds %class.VehicleConstraintTest, ptr %70, i32 0, i32 1
  store ptr %167, ptr %169, align 8, !tbaa !39
  %170 = getelementptr inbounds %class.Test, ptr %70, i32 0, i32 3
  %171 = load ptr, ptr %170, align 8, !tbaa !33
  %172 = getelementptr inbounds %class.VehicleConstraintTest, ptr %70, i32 0, i32 1
  %173 = load ptr, ptr %172, align 8, !tbaa !39
  %174 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZNK3JPH4Body5GetIDEv(ptr noundef nonnull align 16 dereferenceable(122) %173)
          to label %175 unwind label %567

175:                                              ; preds = %168
  invoke void @_ZN3JPH13BodyInterface7AddBodyERKNS_6BodyIDENS_11EActivationE(ptr noundef nonnull align 8 dereferenceable(24) %171, ptr noundef nonnull align 4 dereferenceable(4) %174, i32 noundef 0)
          to label %176 unwind label %567

176:                                              ; preds = %175
  call void @llvm.lifetime.start.p0(i64 144, ptr %22) #11
  invoke void @_ZN3JPH25VehicleConstraintSettingsC2Ev(ptr noundef nonnull align 16 dereferenceable(144) %22)
          to label %177 unwind label %571

177:                                              ; preds = %176
  %178 = getelementptr inbounds %"class.JPH::ConstraintSettings", ptr %22, i32 0, i32 6
  store float 0x3FB99999A0000000, ptr %178, align 4, !tbaa !44
  %179 = load float, ptr @_ZN21VehicleConstraintTest13sMaxRollAngleE, align 4, !tbaa !9
  %180 = getelementptr inbounds %"class.JPH::VehicleConstraintSettings", ptr %22, i32 0, i32 3
  store float %179, ptr %180, align 16, !tbaa !50
  call void @llvm.lifetime.start.p0(i64 16, ptr %23) #11
  call void @llvm.lifetime.start.p0(i64 16, ptr %24) #11
  %181 = load float, ptr @_ZN21VehicleConstraintTest29sFrontSuspensionSidewaysAngleE, align 4, !tbaa !9
  %182 = invoke noundef float @_ZN3JPH3TanEf(float noundef %181)
          to label %183 unwind label %575

183:                                              ; preds = %177
  %184 = load float, ptr @_ZN21VehicleConstraintTest28sFrontSuspensionForwardAngleE, align 4, !tbaa !9
  %185 = invoke noundef float @_ZN3JPH3TanEf(float noundef %184)
          to label %186 unwind label %575

186:                                              ; preds = %183
  invoke void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %24, float noundef %182, float noundef -1.000000e+00, float noundef %185)
          to label %187 unwind label %575

187:                                              ; preds = %186
  %188 = invoke { double, double } @_ZNK3JPH4Vec310NormalizedEv(ptr noundef nonnull align 16 dereferenceable(16) %24)
          to label %189 unwind label %575

189:                                              ; preds = %187
  %190 = getelementptr inbounds %"class.JPH::Vec3", ptr %23, i32 0, i32 0
  %191 = getelementptr inbounds %union.anon.21, ptr %190, i32 0, i32 0
  %192 = getelementptr inbounds { double, double }, ptr %191, i32 0, i32 0
  %193 = extractvalue { double, double } %188, 0
  store double %193, ptr %192, align 16
  %194 = getelementptr inbounds { double, double }, ptr %191, i32 0, i32 1
  %195 = extractvalue { double, double } %188, 1
  store double %195, ptr %194, align 8
  call void @llvm.lifetime.end.p0(i64 16, ptr %24) #11
  call void @llvm.lifetime.start.p0(i64 16, ptr %25) #11
  call void @llvm.lifetime.start.p0(i64 16, ptr %26) #11
  %196 = load float, ptr @_ZN21VehicleConstraintTest18sFrontKingPinAngleE, align 4, !tbaa !9
  %197 = invoke noundef float @_ZN3JPH3TanEf(float noundef %196)
          to label %198 unwind label %579

198:                                              ; preds = %189
  %199 = fneg float %197
  %200 = load float, ptr @_ZN21VehicleConstraintTest17sFrontCasterAngleE, align 4, !tbaa !9
  %201 = invoke noundef float @_ZN3JPH3TanEf(float noundef %200)
          to label %202 unwind label %579

202:                                              ; preds = %198
  %203 = fneg float %201
  invoke void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %26, float noundef %199, float noundef 1.000000e+00, float noundef %203)
          to label %204 unwind label %579

204:                                              ; preds = %202
  %205 = invoke { double, double } @_ZNK3JPH4Vec310NormalizedEv(ptr noundef nonnull align 16 dereferenceable(16) %26)
          to label %206 unwind label %579

206:                                              ; preds = %204
  %207 = getelementptr inbounds %"class.JPH::Vec3", ptr %25, i32 0, i32 0
  %208 = getelementptr inbounds %union.anon.21, ptr %207, i32 0, i32 0
  %209 = getelementptr inbounds { double, double }, ptr %208, i32 0, i32 0
  %210 = extractvalue { double, double } %205, 0
  store double %210, ptr %209, align 16
  %211 = getelementptr inbounds { double, double }, ptr %208, i32 0, i32 1
  %212 = extractvalue { double, double } %205, 1
  store double %212, ptr %211, align 8
  call void @llvm.lifetime.end.p0(i64 16, ptr %26) #11
  call void @llvm.lifetime.start.p0(i64 16, ptr %27) #11
  %213 = load float, ptr @_ZN21VehicleConstraintTest12sFrontCamberE, align 4, !tbaa !9
  %214 = invoke noundef float @_ZN3JPH3SinEf(float noundef %213)
          to label %215 unwind label %583

215:                                              ; preds = %206
  %216 = load float, ptr @_ZN21VehicleConstraintTest12sFrontCamberE, align 4, !tbaa !9
  %217 = invoke noundef float @_ZN3JPH3CosEf(float noundef %216)
          to label %218 unwind label %583

218:                                              ; preds = %215
  invoke void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %27, float noundef %214, float noundef %217, float noundef 0.000000e+00)
          to label %219 unwind label %583

219:                                              ; preds = %218
  call void @llvm.lifetime.start.p0(i64 16, ptr %28) #11
  %220 = load float, ptr @_ZN21VehicleConstraintTest9sFrontToeE, align 4, !tbaa !9
  %221 = invoke noundef float @_ZN3JPH3SinEf(float noundef %220)
          to label %222 unwind label %587

222:                                              ; preds = %219
  %223 = fneg float %221
  %224 = load float, ptr @_ZN21VehicleConstraintTest9sFrontToeE, align 4, !tbaa !9
  %225 = invoke noundef float @_ZN3JPH3CosEf(float noundef %224)
          to label %226 unwind label %587

226:                                              ; preds = %222
  invoke void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %28, float noundef %223, float noundef 0.000000e+00, float noundef %225)
          to label %227 unwind label %587

227:                                              ; preds = %226
  call void @llvm.lifetime.start.p0(i64 16, ptr %29) #11
  call void @llvm.lifetime.start.p0(i64 16, ptr %30) #11
  %228 = load float, ptr @_ZN21VehicleConstraintTest28sRearSuspensionSidewaysAngleE, align 4, !tbaa !9
  %229 = invoke noundef float @_ZN3JPH3TanEf(float noundef %228)
          to label %230 unwind label %591

230:                                              ; preds = %227
  %231 = load float, ptr @_ZN21VehicleConstraintTest27sRearSuspensionForwardAngleE, align 4, !tbaa !9
  %232 = invoke noundef float @_ZN3JPH3TanEf(float noundef %231)
          to label %233 unwind label %591

233:                                              ; preds = %230
  invoke void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %30, float noundef %229, float noundef -1.000000e+00, float noundef %232)
          to label %234 unwind label %591

234:                                              ; preds = %233
  %235 = invoke { double, double } @_ZNK3JPH4Vec310NormalizedEv(ptr noundef nonnull align 16 dereferenceable(16) %30)
          to label %236 unwind label %591

236:                                              ; preds = %234
  %237 = getelementptr inbounds %"class.JPH::Vec3", ptr %29, i32 0, i32 0
  %238 = getelementptr inbounds %union.anon.21, ptr %237, i32 0, i32 0
  %239 = getelementptr inbounds { double, double }, ptr %238, i32 0, i32 0
  %240 = extractvalue { double, double } %235, 0
  store double %240, ptr %239, align 16
  %241 = getelementptr inbounds { double, double }, ptr %238, i32 0, i32 1
  %242 = extractvalue { double, double } %235, 1
  store double %242, ptr %241, align 8
  call void @llvm.lifetime.end.p0(i64 16, ptr %30) #11
  call void @llvm.lifetime.start.p0(i64 16, ptr %31) #11
  call void @llvm.lifetime.start.p0(i64 16, ptr %32) #11
  %243 = load float, ptr @_ZN21VehicleConstraintTest17sRearKingPinAngleE, align 4, !tbaa !9
  %244 = invoke noundef float @_ZN3JPH3TanEf(float noundef %243)
          to label %245 unwind label %595

245:                                              ; preds = %236
  %246 = fneg float %244
  %247 = load float, ptr @_ZN21VehicleConstraintTest16sRearCasterAngleE, align 4, !tbaa !9
  %248 = invoke noundef float @_ZN3JPH3TanEf(float noundef %247)
          to label %249 unwind label %595

249:                                              ; preds = %245
  %250 = fneg float %248
  invoke void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %32, float noundef %246, float noundef 1.000000e+00, float noundef %250)
          to label %251 unwind label %595

251:                                              ; preds = %249
  %252 = invoke { double, double } @_ZNK3JPH4Vec310NormalizedEv(ptr noundef nonnull align 16 dereferenceable(16) %32)
          to label %253 unwind label %595

253:                                              ; preds = %251
  %254 = getelementptr inbounds %"class.JPH::Vec3", ptr %31, i32 0, i32 0
  %255 = getelementptr inbounds %union.anon.21, ptr %254, i32 0, i32 0
  %256 = getelementptr inbounds { double, double }, ptr %255, i32 0, i32 0
  %257 = extractvalue { double, double } %252, 0
  store double %257, ptr %256, align 16
  %258 = getelementptr inbounds { double, double }, ptr %255, i32 0, i32 1
  %259 = extractvalue { double, double } %252, 1
  store double %259, ptr %258, align 8
  call void @llvm.lifetime.end.p0(i64 16, ptr %32) #11
  call void @llvm.lifetime.start.p0(i64 16, ptr %33) #11
  %260 = load float, ptr @_ZN21VehicleConstraintTest11sRearCamberE, align 4, !tbaa !9
  %261 = invoke noundef float @_ZN3JPH3SinEf(float noundef %260)
          to label %262 unwind label %599

262:                                              ; preds = %253
  %263 = load float, ptr @_ZN21VehicleConstraintTest11sRearCamberE, align 4, !tbaa !9
  %264 = invoke noundef float @_ZN3JPH3CosEf(float noundef %263)
          to label %265 unwind label %599

265:                                              ; preds = %262
  invoke void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %33, float noundef %261, float noundef %264, float noundef 0.000000e+00)
          to label %266 unwind label %599

266:                                              ; preds = %265
  call void @llvm.lifetime.start.p0(i64 16, ptr %34) #11
  %267 = load float, ptr @_ZN21VehicleConstraintTest8sRearToeE, align 4, !tbaa !9
  %268 = invoke noundef float @_ZN3JPH3SinEf(float noundef %267)
          to label %269 unwind label %603

269:                                              ; preds = %266
  %270 = fneg float %268
  %271 = load float, ptr @_ZN21VehicleConstraintTest8sRearToeE, align 4, !tbaa !9
  %272 = invoke noundef float @_ZN3JPH3CosEf(float noundef %271)
          to label %273 unwind label %603

273:                                              ; preds = %269
  invoke void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %34, float noundef %270, float noundef 0.000000e+00, float noundef %272)
          to label %274 unwind label %603

274:                                              ; preds = %273
  call void @llvm.lifetime.start.p0(i64 16, ptr %35) #11
  invoke void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %35, float noundef -1.000000e+00, float noundef 1.000000e+00, float noundef 1.000000e+00)
          to label %275 unwind label %607

275:                                              ; preds = %274
  call void @llvm.lifetime.start.p0(i64 8, ptr %36) #11
  %276 = invoke noundef ptr @_ZN3JPH15WheelSettingsWVnwEm(i64 noundef 224)
          to label %277 unwind label %611

277:                                              ; preds = %275
  invoke void @_ZN3JPH15WheelSettingsWVC1Ev(ptr noundef nonnull align 16 dereferenceable(216) %276)
          to label %278 unwind label %615

278:                                              ; preds = %277
  store ptr %276, ptr %36, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 16, ptr %37) #11
  invoke void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %37, float noundef 0x3FECCCCCC0000000, float noundef 0xBFC70A3D60000000, float noundef 0x3FF6666660000000)
          to label %279 unwind label %619

279:                                              ; preds = %278
  %280 = load ptr, ptr %36, align 8, !tbaa !5
  %281 = getelementptr inbounds %"class.JPH::WheelSettings", ptr %280, i32 0, i32 3
  call void @llvm.memcpy.p0.p0.i64(ptr align 16 %281, ptr align 16 %37, i64 16, i1 false), !tbaa.struct !11
  call void @llvm.lifetime.end.p0(i64 16, ptr %37) #11
  %282 = load ptr, ptr %36, align 8, !tbaa !5
  %283 = getelementptr inbounds %"class.JPH::WheelSettings", ptr %282, i32 0, i32 5
  call void @llvm.memcpy.p0.p0.i64(ptr align 16 %283, ptr align 16 %23, i64 16, i1 false), !tbaa.struct !11
  %284 = load ptr, ptr %36, align 8, !tbaa !5
  %285 = getelementptr inbounds %"class.JPH::WheelSettings", ptr %284, i32 0, i32 6
  call void @llvm.memcpy.p0.p0.i64(ptr align 16 %285, ptr align 16 %25, i64 16, i1 false), !tbaa.struct !11
  %286 = load ptr, ptr %36, align 8, !tbaa !5
  %287 = getelementptr inbounds %"class.JPH::WheelSettings", ptr %286, i32 0, i32 7
  call void @llvm.memcpy.p0.p0.i64(ptr align 16 %287, ptr align 16 %27, i64 16, i1 false), !tbaa.struct !11
  %288 = load ptr, ptr %36, align 8, !tbaa !5
  %289 = getelementptr inbounds %"class.JPH::WheelSettings", ptr %288, i32 0, i32 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 16 %289, ptr align 16 %28, i64 16, i1 false), !tbaa.struct !11
  %290 = load float, ptr @_ZN21VehicleConstraintTest25sFrontSuspensionMinLengthE, align 4, !tbaa !9
  %291 = load ptr, ptr %36, align 8, !tbaa !5
  %292 = getelementptr inbounds %"class.JPH::WheelSettings", ptr %291, i32 0, i32 9
  store float %290, ptr %292, align 16, !tbaa !55
  %293 = load float, ptr @_ZN21VehicleConstraintTest25sFrontSuspensionMaxLengthE, align 4, !tbaa !9
  %294 = load ptr, ptr %36, align 8, !tbaa !5
  %295 = getelementptr inbounds %"class.JPH::WheelSettings", ptr %294, i32 0, i32 10
  store float %293, ptr %295, align 4, !tbaa !60
  %296 = load float, ptr @_ZN21VehicleConstraintTest25sFrontSuspensionFrequencyE, align 4, !tbaa !9
  %297 = load ptr, ptr %36, align 8, !tbaa !5
  %298 = getelementptr inbounds %"class.JPH::WheelSettings", ptr %297, i32 0, i32 12
  %299 = getelementptr inbounds %"class.JPH::SpringSettings", ptr %298, i32 0, i32 1
  store float %296, ptr %299, align 4, !tbaa !12
  %300 = load float, ptr @_ZN21VehicleConstraintTest23sFrontSuspensionDampingE, align 4, !tbaa !9
  %301 = load ptr, ptr %36, align 8, !tbaa !5
  %302 = getelementptr inbounds %"class.JPH::WheelSettings", ptr %301, i32 0, i32 12
  %303 = getelementptr inbounds %"class.JPH::SpringSettings", ptr %302, i32 0, i32 2
  store float %300, ptr %303, align 4, !tbaa !61
  %304 = load float, ptr @_ZN21VehicleConstraintTest17sMaxSteeringAngleE, align 4, !tbaa !9
  %305 = load ptr, ptr %36, align 8, !tbaa !5
  %306 = getelementptr inbounds %"class.JPH::WheelSettingsWV", ptr %305, i32 0, i32 3
  store float %304, ptr %306, align 4, !tbaa !62
  %307 = load ptr, ptr %36, align 8, !tbaa !5
  %308 = getelementptr inbounds %"class.JPH::WheelSettingsWV", ptr %307, i32 0, i32 7
  store float 0.000000e+00, ptr %308, align 4, !tbaa !66
  call void @llvm.lifetime.start.p0(i64 8, ptr %38) #11
  %309 = invoke noundef ptr @_ZN3JPH15WheelSettingsWVnwEm(i64 noundef 224)
          to label %310 unwind label %623

310:                                              ; preds = %279
  invoke void @_ZN3JPH15WheelSettingsWVC1Ev(ptr noundef nonnull align 16 dereferenceable(216) %309)
          to label %311 unwind label %627

311:                                              ; preds = %310
  store ptr %309, ptr %38, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 16, ptr %39) #11
  invoke void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %39, float noundef 0xBFECCCCCC0000000, float noundef 0xBFC70A3D60000000, float noundef 0x3FF6666660000000)
          to label %312 unwind label %631

312:                                              ; preds = %311
  %313 = load ptr, ptr %38, align 8, !tbaa !5
  %314 = getelementptr inbounds %"class.JPH::WheelSettings", ptr %313, i32 0, i32 3
  call void @llvm.memcpy.p0.p0.i64(ptr align 16 %314, ptr align 16 %39, i64 16, i1 false), !tbaa.struct !11
  call void @llvm.lifetime.end.p0(i64 16, ptr %39) #11
  call void @llvm.lifetime.start.p0(i64 16, ptr %40) #11
  call void @llvm.memcpy.p0.p0.i64(ptr align 16 %41, ptr align 16 %23, i64 16, i1 false), !tbaa.struct !11
  %315 = getelementptr inbounds { double, double }, ptr %41, i32 0, i32 0
  %316 = load double, ptr %315, align 16
  %317 = getelementptr inbounds { double, double }, ptr %41, i32 0, i32 1
  %318 = load double, ptr %317, align 8
  %319 = invoke { double, double } @_ZNK3JPH4Vec3mlES0_(ptr noundef nonnull align 16 dereferenceable(16) %35, double %316, double %318)
          to label %320 unwind label %635

320:                                              ; preds = %312
  %321 = getelementptr inbounds %"class.JPH::Vec3", ptr %40, i32 0, i32 0
  %322 = getelementptr inbounds %union.anon.21, ptr %321, i32 0, i32 0
  %323 = getelementptr inbounds { double, double }, ptr %322, i32 0, i32 0
  %324 = extractvalue { double, double } %319, 0
  store double %324, ptr %323, align 16
  %325 = getelementptr inbounds { double, double }, ptr %322, i32 0, i32 1
  %326 = extractvalue { double, double } %319, 1
  store double %326, ptr %325, align 8
  %327 = load ptr, ptr %38, align 8, !tbaa !5
  %328 = getelementptr inbounds %"class.JPH::WheelSettings", ptr %327, i32 0, i32 5
  call void @llvm.memcpy.p0.p0.i64(ptr align 16 %328, ptr align 16 %40, i64 16, i1 false), !tbaa.struct !11
  call void @llvm.lifetime.end.p0(i64 16, ptr %40) #11
  call void @llvm.lifetime.start.p0(i64 16, ptr %42) #11
  call void @llvm.memcpy.p0.p0.i64(ptr align 16 %43, ptr align 16 %25, i64 16, i1 false), !tbaa.struct !11
  %329 = getelementptr inbounds { double, double }, ptr %43, i32 0, i32 0
  %330 = load double, ptr %329, align 16
  %331 = getelementptr inbounds { double, double }, ptr %43, i32 0, i32 1
  %332 = load double, ptr %331, align 8
  %333 = invoke { double, double } @_ZNK3JPH4Vec3mlES0_(ptr noundef nonnull align 16 dereferenceable(16) %35, double %330, double %332)
          to label %334 unwind label %639

334:                                              ; preds = %320
  %335 = getelementptr inbounds %"class.JPH::Vec3", ptr %42, i32 0, i32 0
  %336 = getelementptr inbounds %union.anon.21, ptr %335, i32 0, i32 0
  %337 = getelementptr inbounds { double, double }, ptr %336, i32 0, i32 0
  %338 = extractvalue { double, double } %333, 0
  store double %338, ptr %337, align 16
  %339 = getelementptr inbounds { double, double }, ptr %336, i32 0, i32 1
  %340 = extractvalue { double, double } %333, 1
  store double %340, ptr %339, align 8
  %341 = load ptr, ptr %38, align 8, !tbaa !5
  %342 = getelementptr inbounds %"class.JPH::WheelSettings", ptr %341, i32 0, i32 6
  call void @llvm.memcpy.p0.p0.i64(ptr align 16 %342, ptr align 16 %42, i64 16, i1 false), !tbaa.struct !11
  call void @llvm.lifetime.end.p0(i64 16, ptr %42) #11
  call void @llvm.lifetime.start.p0(i64 16, ptr %44) #11
  call void @llvm.memcpy.p0.p0.i64(ptr align 16 %45, ptr align 16 %27, i64 16, i1 false), !tbaa.struct !11
  %343 = getelementptr inbounds { double, double }, ptr %45, i32 0, i32 0
  %344 = load double, ptr %343, align 16
  %345 = getelementptr inbounds { double, double }, ptr %45, i32 0, i32 1
  %346 = load double, ptr %345, align 8
  %347 = invoke { double, double } @_ZNK3JPH4Vec3mlES0_(ptr noundef nonnull align 16 dereferenceable(16) %35, double %344, double %346)
          to label %348 unwind label %643

348:                                              ; preds = %334
  %349 = getelementptr inbounds %"class.JPH::Vec3", ptr %44, i32 0, i32 0
  %350 = getelementptr inbounds %union.anon.21, 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 = load ptr, ptr %38, align 8, !tbaa !5
  %356 = getelementptr inbounds %"class.JPH::WheelSettings", ptr %355, i32 0, i32 7
  call void @llvm.memcpy.p0.p0.i64(ptr align 16 %356, ptr align 16 %44, i64 16, i1 false), !tbaa.struct !11
  call void @llvm.lifetime.end.p0(i64 16, ptr %44) #11
  call void @llvm.lifetime.start.p0(i64 16, ptr %46) #11
  call void @llvm.memcpy.p0.p0.i64(ptr align 16 %47, ptr align 16 %28, i64 16, i1 false), !tbaa.struct !11
  %357 = getelementptr inbounds { double, double }, ptr %47, i32 0, i32 0
  %358 = load double, ptr %357, align 16
  %359 = getelementptr inbounds { double, double }, ptr %47, i32 0, i32 1
  %360 = load double, ptr %359, align 8
  %361 = invoke { double, double } @_ZNK3JPH4Vec3mlES0_(ptr noundef nonnull align 16 dereferenceable(16) %35, double %358, double %360)
          to label %362 unwind label %647

362:                                              ; preds = %348
  %363 = getelementptr inbounds %"class.JPH::Vec3", ptr %46, i32 0, i32 0
  %364 = getelementptr inbounds %union.anon.21, ptr %363, i32 0, i32 0
  %365 = getelementptr inbounds { double, double }, ptr %364, i32 0, i32 0
  %366 = extractvalue { double, double } %361, 0
  store double %366, ptr %365, align 16
  %367 = getelementptr inbounds { double, double }, ptr %364, i32 0, i32 1
  %368 = extractvalue { double, double } %361, 1
  store double %368, ptr %367, align 8
  %369 = load ptr, ptr %38, align 8, !tbaa !5
  %370 = getelementptr inbounds %"class.JPH::WheelSettings", ptr %369, i32 0, i32 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 16 %370, ptr align 16 %46, i64 16, i1 false), !tbaa.struct !11
  call void @llvm.lifetime.end.p0(i64 16, ptr %46) #11
  %371 = load float, ptr @_ZN21VehicleConstraintTest25sFrontSuspensionMinLengthE, align 4, !tbaa !9
  %372 = load ptr, ptr %38, align 8, !tbaa !5
  %373 = getelementptr inbounds %"class.JPH::WheelSettings", ptr %372, i32 0, i32 9
  store float %371, ptr %373, align 16, !tbaa !55
  %374 = load float, ptr @_ZN21VehicleConstraintTest25sFrontSuspensionMaxLengthE, align 4, !tbaa !9
  %375 = load ptr, ptr %38, align 8, !tbaa !5
  %376 = getelementptr inbounds %"class.JPH::WheelSettings", ptr %375, i32 0, i32 10
  store float %374, ptr %376, align 4, !tbaa !60
  %377 = load float, ptr @_ZN21VehicleConstraintTest25sFrontSuspensionFrequencyE, align 4, !tbaa !9
  %378 = load ptr, ptr %38, align 8, !tbaa !5
  %379 = getelementptr inbounds %"class.JPH::WheelSettings", ptr %378, i32 0, i32 12
  %380 = getelementptr inbounds %"class.JPH::SpringSettings", ptr %379, i32 0, i32 1
  store float %377, ptr %380, align 4, !tbaa !12
  %381 = load float, ptr @_ZN21VehicleConstraintTest23sFrontSuspensionDampingE, align 4, !tbaa !9
  %382 = load ptr, ptr %38, align 8, !tbaa !5
  %383 = getelementptr inbounds %"class.JPH::WheelSettings", ptr %382, i32 0, i32 12
  %384 = getelementptr inbounds %"class.JPH::SpringSettings", ptr %383, i32 0, i32 2
  store float %381, ptr %384, align 4, !tbaa !61
  %385 = load float, ptr @_ZN21VehicleConstraintTest17sMaxSteeringAngleE, align 4, !tbaa !9
  %386 = load ptr, ptr %38, align 8, !tbaa !5
  %387 = getelementptr inbounds %"class.JPH::WheelSettingsWV", ptr %386, i32 0, i32 3
  store float %385, ptr %387, align 4, !tbaa !62
  %388 = load ptr, ptr %38, align 8, !tbaa !5
  %389 = getelementptr inbounds %"class.JPH::WheelSettingsWV", ptr %388, i32 0, i32 7
  store float 0.000000e+00, ptr %389, align 4, !tbaa !66
  call void @llvm.lifetime.start.p0(i64 8, ptr %48) #11
  %390 = invoke noundef ptr @_ZN3JPH15WheelSettingsWVnwEm(i64 noundef 224)
          to label %391 unwind label %651

391:                                              ; preds = %362
  invoke void @_ZN3JPH15WheelSettingsWVC1Ev(ptr noundef nonnull align 16 dereferenceable(216) %390)
          to label %392 unwind label %655

392:                                              ; preds = %391
  store ptr %390, ptr %48, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 16, ptr %49) #11
  invoke void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %49, float noundef 0x3FECCCCCC0000000, float noundef 0xBFC70A3D60000000, float noundef 0xBFF6666660000000)
          to label %393 unwind label %659

393:                                              ; preds = %392
  %394 = load ptr, ptr %48, align 8, !tbaa !5
  %395 = getelementptr inbounds %"class.JPH::WheelSettings", ptr %394, i32 0, i32 3
  call void @llvm.memcpy.p0.p0.i64(ptr align 16 %395, ptr align 16 %49, i64 16, i1 false), !tbaa.struct !11
  call void @llvm.lifetime.end.p0(i64 16, ptr %49) #11
  %396 = load ptr, ptr %48, align 8, !tbaa !5
  %397 = getelementptr inbounds %"class.JPH::WheelSettings", ptr %396, i32 0, i32 5
  call void @llvm.memcpy.p0.p0.i64(ptr align 16 %397, ptr align 16 %29, i64 16, i1 false), !tbaa.struct !11
  %398 = load ptr, ptr %48, align 8, !tbaa !5
  %399 = getelementptr inbounds %"class.JPH::WheelSettings", ptr %398, i32 0, i32 6
  call void @llvm.memcpy.p0.p0.i64(ptr align 16 %399, ptr align 16 %31, i64 16, i1 false), !tbaa.struct !11
  %400 = load ptr, ptr %48, align 8, !tbaa !5
  %401 = getelementptr inbounds %"class.JPH::WheelSettings", ptr %400, i32 0, i32 7
  call void @llvm.memcpy.p0.p0.i64(ptr align 16 %401, ptr align 16 %33, i64 16, i1 false), !tbaa.struct !11
  %402 = load ptr, ptr %48, align 8, !tbaa !5
  %403 = getelementptr inbounds %"class.JPH::WheelSettings", ptr %402, i32 0, i32 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 16 %403, ptr align 16 %34, i64 16, i1 false), !tbaa.struct !11
  %404 = load float, ptr @_ZN21VehicleConstraintTest24sRearSuspensionMinLengthE, align 4, !tbaa !9
  %405 = load ptr, ptr %48, align 8, !tbaa !5
  %406 = getelementptr inbounds %"class.JPH::WheelSettings", ptr %405, i32 0, i32 9
  store float %404, ptr %406, align 16, !tbaa !55
  %407 = load float, ptr @_ZN21VehicleConstraintTest24sRearSuspensionMaxLengthE, align 4, !tbaa !9
  %408 = load ptr, ptr %48, align 8, !tbaa !5
  %409 = getelementptr inbounds %"class.JPH::WheelSettings", ptr %408, i32 0, i32 10
  store float %407, ptr %409, align 4, !tbaa !60
  %410 = load float, ptr @_ZN21VehicleConstraintTest24sRearSuspensionFrequencyE, align 4, !tbaa !9
  %411 = load ptr, ptr %48, align 8, !tbaa !5
  %412 = getelementptr inbounds %"class.JPH::WheelSettings", ptr %411, i32 0, i32 12
  %413 = getelementptr inbounds %"class.JPH::SpringSettings", ptr %412, i32 0, i32 1
  store float %410, ptr %413, align 4, !tbaa !12
  %414 = load float, ptr @_ZN21VehicleConstraintTest22sRearSuspensionDampingE, align 4, !tbaa !9
  %415 = load ptr, ptr %48, align 8, !tbaa !5
  %416 = getelementptr inbounds %"class.JPH::WheelSettings", ptr %415, i32 0, i32 12
  %417 = getelementptr inbounds %"class.JPH::SpringSettings", ptr %416, i32 0, i32 2
  store float %414, ptr %417, align 4, !tbaa !61
  %418 = load ptr, ptr %48, align 8, !tbaa !5
  %419 = getelementptr inbounds %"class.JPH::WheelSettingsWV", ptr %418, i32 0, i32 3
  store float 0.000000e+00, ptr %419, align 4, !tbaa !62
  call void @llvm.lifetime.start.p0(i64 8, ptr %50) #11
  %420 = invoke noundef ptr @_ZN3JPH15WheelSettingsWVnwEm(i64 noundef 224)
          to label %421 unwind label %663

421:                                              ; preds = %393
  invoke void @_ZN3JPH15WheelSettingsWVC1Ev(ptr noundef nonnull align 16 dereferenceable(216) %420)
          to label %422 unwind label %667

422:                                              ; preds = %421
  store ptr %420, ptr %50, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 16, ptr %51) #11
  invoke void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %51, float noundef 0xBFECCCCCC0000000, float noundef 0xBFC70A3D60000000, float noundef 0xBFF6666660000000)
          to label %423 unwind label %671

423:                                              ; preds = %422
  %424 = load ptr, ptr %50, align 8, !tbaa !5
  %425 = getelementptr inbounds %"class.JPH::WheelSettings", ptr %424, i32 0, i32 3
  call void @llvm.memcpy.p0.p0.i64(ptr align 16 %425, ptr align 16 %51, i64 16, i1 false), !tbaa.struct !11
  call void @llvm.lifetime.end.p0(i64 16, ptr %51) #11
  call void @llvm.lifetime.start.p0(i64 16, ptr %52) #11
  call void @llvm.memcpy.p0.p0.i64(ptr align 16 %53, ptr align 16 %29, i64 16, i1 false), !tbaa.struct !11
  %426 = getelementptr inbounds { double, double }, ptr %53, i32 0, i32 0
  %427 = load double, ptr %426, align 16
  %428 = getelementptr inbounds { double, double }, ptr %53, i32 0, i32 1
  %429 = load double, ptr %428, align 8
  %430 = invoke { double, double } @_ZNK3JPH4Vec3mlES0_(ptr noundef nonnull align 16 dereferenceable(16) %35, double %427, double %429)
          to label %431 unwind label %675

431:                                              ; preds = %423
  %432 = getelementptr inbounds %"class.JPH::Vec3", ptr %52, i32 0, i32 0
  %433 = getelementptr inbounds %union.anon.21, ptr %432, i32 0, i32 0
  %434 = getelementptr inbounds { double, double }, ptr %433, i32 0, i32 0
  %435 = extractvalue { double, double } %430, 0
  store double %435, ptr %434, align 16
  %436 = getelementptr inbounds { double, double }, ptr %433, i32 0, i32 1
  %437 = extractvalue { double, double } %430, 1
  store double %437, ptr %436, align 8
  %438 = load ptr, ptr %50, align 8, !tbaa !5
  %439 = getelementptr inbounds %"class.JPH::WheelSettings", ptr %438, i32 0, i32 5
  call void @llvm.memcpy.p0.p0.i64(ptr align 16 %439, ptr align 16 %52, i64 16, i1 false), !tbaa.struct !11
  call void @llvm.lifetime.end.p0(i64 16, ptr %52) #11
  call void @llvm.lifetime.start.p0(i64 16, ptr %54) #11
  call void @llvm.memcpy.p0.p0.i64(ptr align 16 %55, ptr align 16 %31, i64 16, i1 false), !tbaa.struct !11
  %440 = getelementptr inbounds { double, double }, ptr %55, i32 0, i32 0
  %441 = load double, ptr %440, align 16
  %442 = getelementptr inbounds { double, double }, ptr %55, i32 0, i32 1
  %443 = load double, ptr %442, align 8
  %444 = invoke { double, double } @_ZNK3JPH4Vec3mlES0_(ptr noundef nonnull align 16 dereferenceable(16) %35, double %441, double %443)
          to label %445 unwind label %679

445:                                              ; preds = %431
  %446 = getelementptr inbounds %"class.JPH::Vec3", ptr %54, i32 0, i32 0
  %447 = getelementptr inbounds %union.anon.21, ptr %446, i32 0, i32 0
  %448 = getelementptr inbounds { double, double }, ptr %447, i32 0, i32 0
  %449 = extractvalue { double, double } %444, 0
  store double %449, ptr %448, align 16
  %450 = getelementptr inbounds { double, double }, ptr %447, i32 0, i32 1
  %451 = extractvalue { double, double } %444, 1
  store double %451, ptr %450, align 8
  %452 = load ptr, ptr %50, align 8, !tbaa !5
  %453 = getelementptr inbounds %"class.JPH::WheelSettings", ptr %452, i32 0, i32 6
  call void @llvm.memcpy.p0.p0.i64(ptr align 16 %453, ptr align 16 %54, i64 16, i1 false), !tbaa.struct !11
  call void @llvm.lifetime.end.p0(i64 16, ptr %54) #11
  call void @llvm.lifetime.start.p0(i64 16, ptr %56) #11
  call void @llvm.memcpy.p0.p0.i64(ptr align 16 %57, ptr align 16 %33, i64 16, i1 false), !tbaa.struct !11
  %454 = getelementptr inbounds { double, double }, ptr %57, i32 0, i32 0
  %455 = load double, ptr %454, align 16
  %456 = getelementptr inbounds { double, double }, ptr %57, i32 0, i32 1
  %457 = load double, ptr %456, align 8
  %458 = invoke { double, double } @_ZNK3JPH4Vec3mlES0_(ptr noundef nonnull align 16 dereferenceable(16) %35, double %455, double %457)
          to label %459 unwind label %683

459:                                              ; preds = %445
  %460 = getelementptr inbounds %"class.JPH::Vec3", ptr %56, i32 0, i32 0
  %461 = getelementptr inbounds %union.anon.21, ptr %460, i32 0, i32 0
  %462 = getelementptr inbounds { double, double }, ptr %461, i32 0, i32 0
  %463 = extractvalue { double, double } %458, 0
  store double %463, ptr %462, align 16
  %464 = getelementptr inbounds { double, double }, ptr %461, i32 0, i32 1
  %465 = extractvalue { double, double } %458, 1
  store double %465, ptr %464, align 8
  %466 = load ptr, ptr %50, align 8, !tbaa !5
  %467 = getelementptr inbounds %"class.JPH::WheelSettings", ptr %466, i32 0, i32 7
  call void @llvm.memcpy.p0.p0.i64(ptr align 16 %467, ptr align 16 %56, i64 16, i1 false), !tbaa.struct !11
  call void @llvm.lifetime.end.p0(i64 16, ptr %56) #11
  call void @llvm.lifetime.start.p0(i64 16, ptr %58) #11
  call void @llvm.memcpy.p0.p0.i64(ptr align 16 %59, ptr align 16 %34, i64 16, i1 false), !tbaa.struct !11
  %468 = getelementptr inbounds { double, double }, ptr %59, i32 0, i32 0
  %469 = load double, ptr %468, align 16
  %470 = getelementptr inbounds { double, double }, ptr %59, i32 0, i32 1
  %471 = load double, ptr %470, align 8
  %472 = invoke { double, double } @_ZNK3JPH4Vec3mlES0_(ptr noundef nonnull align 16 dereferenceable(16) %35, double %469, double %471)
          to label %473 unwind label %687

473:                                              ; preds = %459
  %474 = getelementptr inbounds %"class.JPH::Vec3", ptr %58, i32 0, i32 0
  %475 = getelementptr inbounds %union.anon.21, ptr %474, i32 0, i32 0
  %476 = getelementptr inbounds { double, double }, ptr %475, i32 0, i32 0
  %477 = extractvalue { double, double } %472, 0
  store double %477, ptr %476, align 16
  %478 = getelementptr inbounds { double, double }, ptr %475, i32 0, i32 1
  %479 = extractvalue { double, double } %472, 1
  store double %479, ptr %478, align 8
  %480 = load ptr, ptr %50, align 8, !tbaa !5
  %481 = getelementptr inbounds %"class.JPH::WheelSettings", ptr %480, i32 0, i32 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 16 %481, ptr align 16 %58, i64 16, i1 false), !tbaa.struct !11
  call void @llvm.lifetime.end.p0(i64 16, ptr %58) #11
  %482 = load float, ptr @_ZN21VehicleConstraintTest24sRearSuspensionMinLengthE, align 4, !tbaa !9
  %483 = load ptr, ptr %50, align 8, !tbaa !5
  %484 = getelementptr inbounds %"class.JPH::WheelSettings", ptr %483, i32 0, i32 9
  store float %482, ptr %484, align 16, !tbaa !55
  %485 = load float, ptr @_ZN21VehicleConstraintTest24sRearSuspensionMaxLengthE, align 4, !tbaa !9
  %486 = load ptr, ptr %50, align 8, !tbaa !5
  %487 = getelementptr inbounds %"class.JPH::WheelSettings", ptr %486, i32 0, i32 10
  store float %485, ptr %487, align 4, !tbaa !60
  %488 = load float, ptr @_ZN21VehicleConstraintTest24sRearSuspensionFrequencyE, align 4, !tbaa !9
  %489 = load ptr, ptr %50, align 8, !tbaa !5
  %490 = getelementptr inbounds %"class.JPH::WheelSettings", ptr %489, i32 0, i32 12
  %491 = getelementptr inbounds %"class.JPH::SpringSettings", ptr %490, i32 0, i32 1
  store float %488, ptr %491, align 4, !tbaa !12
  %492 = load float, ptr @_ZN21VehicleConstraintTest22sRearSuspensionDampingE, align 4, !tbaa !9
  %493 = load ptr, ptr %50, align 8, !tbaa !5
  %494 = getelementptr inbounds %"class.JPH::WheelSettings", ptr %493, i32 0, i32 12
  %495 = getelementptr inbounds %"class.JPH::SpringSettings", ptr %494, i32 0, i32 2
  store float %492, ptr %495, align 4, !tbaa !61
  %496 = load ptr, ptr %50, align 8, !tbaa !5
  %497 = getelementptr inbounds %"class.JPH::WheelSettingsWV", ptr %496, i32 0, i32 3
  store float 0.000000e+00, ptr %497, align 4, !tbaa !62
  call void @llvm.lifetime.start.p0(i64 32, ptr %61) #11
  store ptr %61, ptr %62, align 8
  %498 = load ptr, ptr %36, align 8, !tbaa !5
  invoke void @_ZN3JPH3RefINS_13WheelSettingsEEC2EPS1_(ptr noundef nonnull align 8 dereferenceable(8) %61, ptr noundef %498)
          to label %499 unwind label %691

499:                                              ; preds = %473
  %500 = getelementptr inbounds %"class.JPH::Ref.57", ptr %61, i64 1
  store ptr %500, ptr %62, align 8
  %501 = load ptr, ptr %38, align 8, !tbaa !5
  invoke void @_ZN3JPH3RefINS_13WheelSettingsEEC2EPS1_(ptr noundef nonnull align 8 dereferenceable(8) %500, ptr noundef %501)
          to label %502 unwind label %691

502:                                              ; preds = %499
  %503 = getelementptr inbounds %"class.JPH::Ref.57", ptr %61, i64 2
  store ptr %503, ptr %62, align 8
  %504 = load ptr, ptr %48, align 8, !tbaa !5
  invoke void @_ZN3JPH3RefINS_13WheelSettingsEEC2EPS1_(ptr noundef nonnull align 8 dereferenceable(8) %503, ptr noundef %504)
          to label %505 unwind label %691

505:                                              ; preds = %502
  %506 = getelementptr inbounds %"class.JPH::Ref.57", ptr %61, i64 3
  store ptr %506, ptr %62, align 8
  %507 = load ptr, ptr %50, align 8, !tbaa !5
  invoke void @_ZN3JPH3RefINS_13WheelSettingsEEC2EPS1_(ptr noundef nonnull align 8 dereferenceable(8) %506, ptr noundef %507)
          to label %508 unwind label %691

508:                                              ; preds = %505
  %509 = getelementptr inbounds %"class.std::initializer_list", ptr %60, i32 0, i32 0
  store ptr %61, ptr %509, align 8, !tbaa !67
  %510 = getelementptr inbounds %"class.std::initializer_list", ptr %60, i32 0, i32 1
  store i64 4, ptr %510, align 8, !tbaa !69
  %511 = getelementptr inbounds %"class.JPH::VehicleConstraintSettings", ptr %22, i32 0, i32 4
  %512 = getelementptr inbounds { ptr, i64 }, ptr %60, i32 0, i32 0
  %513 = load ptr, ptr %512, align 8
  %514 = getelementptr inbounds { ptr, i64 }, ptr %60, i32 0, i32 1
  %515 = load i64, ptr %514, align 8
  %516 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZN3JPH5ArrayINS_3RefINS_13WheelSettingsEEENS_12STLAllocatorIS3_EEEaSESt16initializer_listIS3_E(ptr noundef nonnull align 8 dereferenceable(24) %511, ptr %513, i64 %515)
          to label %517 unwind label %702

517:                                              ; preds = %508
  %518 = getelementptr inbounds [4 x %"class.JPH::Ref.57"], ptr %61, i32 0, i32 0
  %519 = getelementptr inbounds %"class.JPH::Ref.57", ptr %518, i64 4
  br label %520

520:                                              ; preds = %520, %517
  %521 = phi ptr [ %519, %517 ], [ %522, %520 ]
  %522 = getelementptr inbounds %"class.JPH::Ref.57", ptr %521, i64 -1
  call void @_ZN3JPH3RefINS_13WheelSettingsEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %522) #11
  %523 = icmp eq ptr %522, %518
  br i1 %523, label %524, label %520

524:                                              ; preds = %520
  call void @llvm.lifetime.end.p0(i64 32, ptr %61) #11
  call void @llvm.lifetime.start.p0(i64 8, ptr %63) #11
  %525 = getelementptr inbounds %"class.JPH::VehicleConstraintSettings", ptr %22, i32 0, i32 4
  store ptr %525, ptr %63, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %64) #11
  %526 = load ptr, ptr %63, align 8, !tbaa !5
  %527 = invoke noundef ptr @_ZN3JPH5ArrayINS_3RefINS_13WheelSettingsEEENS_12STLAllocatorIS3_EEE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %526)
          to label %528 unwind label %714

528:                                              ; preds = %524
  store ptr %527, ptr %64, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %65) #11
  %529 = load ptr, ptr %63, align 8, !tbaa !5
  %530 = invoke noundef ptr @_ZN3JPH5ArrayINS_3RefINS_13WheelSettingsEEENS_12STLAllocatorIS3_EEE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %529)
          to label %531 unwind label %718

531:                                              ; preds = %528
  store ptr %530, ptr %65, align 8, !tbaa !5
  br label %532

532:                                              ; preds = %730, %531
  %533 = load ptr, ptr %64, align 8, !tbaa !5
  %534 = load ptr, ptr %65, align 8, !tbaa !5
  %535 = icmp ne ptr %533, %534
  br i1 %535, label %722, label %536

536:                                              ; preds = %532
  call void @llvm.lifetime.end.p0(i64 8, ptr %65) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %64) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %63) #11
  br label %739

537:                                              ; preds = %81, %73, %1
  %538 = landingpad { ptr, i32 }
          cleanup
  %539 = extractvalue { ptr, i32 } %538, 0
  store ptr %539, ptr %9, align 8
  %540 = extractvalue { ptr, i32 } %538, 1
  store i32 %540, ptr %10, align 4
  call void @_ZN3JPH25VehicleCollisionTesterRaydlEPv(ptr noundef %71) #11
  br label %877

541:                                              ; preds = %100, %92, %86
  %542 = landingpad { ptr, i32 }
          cleanup
  %543 = extractvalue { ptr, i32 } %542, 0
  store ptr %543, ptr %9, align 8
  %544 = extractvalue { ptr, i32 } %542, 1
  store i32 %544, ptr %10, align 4
  call void @_ZN3JPH32VehicleCollisionTesterCastSpheredlEPv(ptr noundef %90) #11
  br label %877

545:                                              ; preds = %105
  %546 = landingpad { ptr, i32 }
          cleanup
  %547 = extractvalue { ptr, i32 } %546, 0
  store ptr %547, ptr %9, align 8
  %548 = extractvalue { ptr, i32 } %546, 1
  store i32 %548, ptr %10, align 4
  call void @_ZN3JPH34VehicleCollisionTesterCastCylinderdlEPv(ptr noundef %109) #11
  br label %877

549:                                              ; preds = %115, %110
  %550 = landingpad { ptr, i32 }
          cleanup
  %551 = extractvalue { ptr, i32 } %550, 0
  store ptr %551, ptr %9, align 8
  %552 = extractvalue { ptr, i32 } %550, 1
  store i32 %552, ptr %10, align 4
  call void @_ZN3JPH8BoxShapedlEPv(ptr noundef %114) #11
  br label %562

553:                                              ; preds = %120
  %554 = landingpad { ptr, i32 }
          cleanup
  %555 = extractvalue { ptr, i32 } %554, 0
  store ptr %555, ptr %9, align 8
  %556 = extractvalue { ptr, i32 } %554, 1
  store i32 %556, ptr %10, align 4
  br label %561

557:                                              ; preds = %127, %125
  %558 = landingpad { ptr, i32 }
          cleanup
  %559 = extractvalue { ptr, i32 } %558, 0
  store ptr %559, ptr %9, align 8
  %560 = extractvalue { ptr, i32 } %558, 1
  store i32 %560, ptr %10, align 4
  call void @_ZN3JPH6ResultINS_3RefINS_5ShapeEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(33) %14) #11
  br label %561

561:                                              ; preds = %557, %553
  call void @_ZN3JPH22DecoratedShapeSettingsD2Ev(ptr noundef nonnull align 16 dereferenceable(96) %15) #11
  br label %562

562:                                              ; preds = %561, %549
  call void @llvm.lifetime.end.p0(i64 96, ptr %15) #11
  call void @llvm.lifetime.end.p0(i64 40, ptr %14) #11
  br label %876

563:                                              ; preds = %145, %132, %130, %128
  %564 = landingpad { ptr, i32 }
          cleanup
  %565 = extractvalue { ptr, i32 } %564, 0
  store ptr %565, ptr %9, align 8
  %566 = extractvalue { ptr, i32 } %564, 1
  store i32 %566, ptr %10, align 4
  br label %875

567:                                              ; preds = %175, %168, %161
  %568 = landingpad { ptr, i32 }
          cleanup
  %569 = extractvalue { ptr, i32 } %568, 0
  store ptr %569, ptr %9, align 8
  %570 = extractvalue { ptr, i32 } %568, 1
  store i32 %570, ptr %10, align 4
  br label %874

571:                                              ; preds = %176
  %572 = landingpad { ptr, i32 }
          cleanup
  %573 = extractvalue { ptr, i32 } %572, 0
  store ptr %573, ptr %9, align 8
  %574 = extractvalue { ptr, i32 } %572, 1
  store i32 %574, ptr %10, align 4
  br label %873

575:                                              ; preds = %187, %186, %183, %177
  %576 = landingpad { ptr, i32 }
          cleanup
  %577 = extractvalue { ptr, i32 } %576, 0
  store ptr %577, ptr %9, align 8
  %578 = extractvalue { ptr, i32 } %576, 1
  store i32 %578, ptr %10, align 4
  call void @llvm.lifetime.end.p0(i64 16, ptr %24) #11
  br label %872

579:                                              ; preds = %204, %202, %198, %189
  %580 = landingpad { ptr, i32 }
          cleanup
  %581 = extractvalue { ptr, i32 } %580, 0
  store ptr %581, ptr %9, align 8
  %582 = extractvalue { ptr, i32 } %580, 1
  store i32 %582, ptr %10, align 4
  call void @llvm.lifetime.end.p0(i64 16, ptr %26) #11
  br label %871

583:                                              ; preds = %218, %215, %206
  %584 = landingpad { ptr, i32 }
          cleanup
  %585 = extractvalue { ptr, i32 } %584, 0
  store ptr %585, ptr %9, align 8
  %586 = extractvalue { ptr, i32 } %584, 1
  store i32 %586, ptr %10, align 4
  br label %870

587:                                              ; preds = %226, %222, %219
  %588 = landingpad { ptr, i32 }
          cleanup
  %589 = extractvalue { ptr, i32 } %588, 0
  store ptr %589, ptr %9, align 8
  %590 = extractvalue { ptr, i32 } %588, 1
  store i32 %590, ptr %10, align 4
  br label %869

591:                                              ; preds = %234, %233, %230, %227
  %592 = landingpad { ptr, i32 }
          cleanup
  %593 = extractvalue { ptr, i32 } %592, 0
  store ptr %593, ptr %9, align 8
  %594 = extractvalue { ptr, i32 } %592, 1
  store i32 %594, ptr %10, align 4
  call void @llvm.lifetime.end.p0(i64 16, ptr %30) #11
  br label %868

595:                                              ; preds = %251, %249, %245, %236
  %596 = landingpad { ptr, i32 }
          cleanup
  %597 = extractvalue { ptr, i32 } %596, 0
  store ptr %597, ptr %9, align 8
  %598 = extractvalue { ptr, i32 } %596, 1
  store i32 %598, ptr %10, align 4
  call void @llvm.lifetime.end.p0(i64 16, ptr %32) #11
  br label %867

599:                                              ; preds = %265, %262, %253
  %600 = landingpad { ptr, i32 }
          cleanup
  %601 = extractvalue { ptr, i32 } %600, 0
  store ptr %601, ptr %9, align 8
  %602 = extractvalue { ptr, i32 } %600, 1
  store i32 %602, ptr %10, align 4
  br label %866

603:                                              ; preds = %273, %269, %266
  %604 = landingpad { ptr, i32 }
          cleanup
  %605 = extractvalue { ptr, i32 } %604, 0
  store ptr %605, ptr %9, align 8
  %606 = extractvalue { ptr, i32 } %604, 1
  store i32 %606, ptr %10, align 4
  br label %865

607:                                              ; preds = %274
  %608 = landingpad { ptr, i32 }
          cleanup
  %609 = extractvalue { ptr, i32 } %608, 0
  store ptr %609, ptr %9, align 8
  %610 = extractvalue { ptr, i32 } %608, 1
  store i32 %610, ptr %10, align 4
  br label %864

611:                                              ; preds = %275
  %612 = landingpad { ptr, i32 }
          cleanup
  %613 = extractvalue { ptr, i32 } %612, 0
  store ptr %613, ptr %9, align 8
  %614 = extractvalue { ptr, i32 } %612, 1
  store i32 %614, ptr %10, align 4
  br label %863

615:                                              ; preds = %277
  %616 = landingpad { ptr, i32 }
          cleanup
  %617 = extractvalue { ptr, i32 } %616, 0
  store ptr %617, ptr %9, align 8
  %618 = extractvalue { ptr, i32 } %616, 1
  store i32 %618, ptr %10, align 4
  call void @_ZN3JPH15WheelSettingsWVdlEPv(ptr noundef %276) #11
  br label %863

619:                                              ; preds = %278
  %620 = landingpad { ptr, i32 }
          cleanup
  %621 = extractvalue { ptr, i32 } %620, 0
  store ptr %621, ptr %9, align 8
  %622 = extractvalue { ptr, i32 } %620, 1
  store i32 %622, ptr %10, align 4
  call void @llvm.lifetime.end.p0(i64 16, ptr %37) #11
  br label %863

623:                                              ; preds = %279
  %624 = landingpad { ptr, i32 }
          cleanup
  %625 = extractvalue { ptr, i32 } %624, 0
  store ptr %625, ptr %9, align 8
  %626 = extractvalue { ptr, i32 } %624, 1
  store i32 %626, ptr %10, align 4
  br label %862

627:                                              ; preds = %310
  %628 = landingpad { ptr, i32 }
          cleanup
  %629 = extractvalue { ptr, i32 } %628, 0
  store ptr %629, ptr %9, align 8
  %630 = extractvalue { ptr, i32 } %628, 1
  store i32 %630, ptr %10, align 4
  call void @_ZN3JPH15WheelSettingsWVdlEPv(ptr noundef %309) #11
  br label %862

631:                                              ; preds = %311
  %632 = landingpad { ptr, i32 }
          cleanup
  %633 = extractvalue { ptr, i32 } %632, 0
  store ptr %633, ptr %9, align 8
  %634 = extractvalue { ptr, i32 } %632, 1
  store i32 %634, ptr %10, align 4
  call void @llvm.lifetime.end.p0(i64 16, ptr %39) #11
  br label %862

635:                                              ; preds = %312
  %636 = landingpad { ptr, i32 }
          cleanup
  %637 = extractvalue { ptr, i32 } %636, 0
  store ptr %637, ptr %9, align 8
  %638 = extractvalue { ptr, i32 } %636, 1
  store i32 %638, ptr %10, align 4
  call void @llvm.lifetime.end.p0(i64 16, ptr %40) #11
  br label %862

639:                                              ; preds = %320
  %640 = landingpad { ptr, i32 }
          cleanup
  %641 = extractvalue { ptr, i32 } %640, 0
  store ptr %641, ptr %9, align 8
  %642 = extractvalue { ptr, i32 } %640, 1
  store i32 %642, ptr %10, align 4
  call void @llvm.lifetime.end.p0(i64 16, ptr %42) #11
  br label %862

643:                                              ; preds = %334
  %644 = landingpad { ptr, i32 }
          cleanup
  %645 = extractvalue { ptr, i32 } %644, 0
  store ptr %645, ptr %9, align 8
  %646 = extractvalue { ptr, i32 } %644, 1
  store i32 %646, ptr %10, align 4
  call void @llvm.lifetime.end.p0(i64 16, ptr %44) #11
  br label %862

647:                                              ; preds = %348
  %648 = landingpad { ptr, i32 }
          cleanup
  %649 = extractvalue { ptr, i32 } %648, 0
  store ptr %649, ptr %9, align 8
  %650 = extractvalue { ptr, i32 } %648, 1
  store i32 %650, ptr %10, align 4
  call void @llvm.lifetime.end.p0(i64 16, ptr %46) #11
  br label %862

651:                                              ; preds = %362
  %652 = landingpad { ptr, i32 }
          cleanup
  %653 = extractvalue { ptr, i32 } %652, 0
  store ptr %653, ptr %9, align 8
  %654 = extractvalue { ptr, i32 } %652, 1
  store i32 %654, ptr %10, align 4
  br label %861

655:                                              ; preds = %391
  %656 = landingpad { ptr, i32 }
          cleanup
  %657 = extractvalue { ptr, i32 } %656, 0
  store ptr %657, ptr %9, align 8
  %658 = extractvalue { ptr, i32 } %656, 1
  store i32 %658, ptr %10, align 4
  call void @_ZN3JPH15WheelSettingsWVdlEPv(ptr noundef %390) #11
  br label %861

659:                                              ; preds = %392
  %660 = landingpad { ptr, i32 }
          cleanup
  %661 = extractvalue { ptr, i32 } %660, 0
  store ptr %661, ptr %9, align 8
  %662 = extractvalue { ptr, i32 } %660, 1
  store i32 %662, ptr %10, align 4
  call void @llvm.lifetime.end.p0(i64 16, ptr %49) #11
  br label %861

663:                                              ; preds = %393
  %664 = landingpad { ptr, i32 }
          cleanup
  %665 = extractvalue { ptr, i32 } %664, 0
  store ptr %665, ptr %9, align 8
  %666 = extractvalue { ptr, i32 } %664, 1
  store i32 %666, ptr %10, align 4
  br label %860

667:                                              ; preds = %421
  %668 = landingpad { ptr, i32 }
          cleanup
  %669 = extractvalue { ptr, i32 } %668, 0
  store ptr %669, ptr %9, align 8
  %670 = extractvalue { ptr, i32 } %668, 1
  store i32 %670, ptr %10, align 4
  call void @_ZN3JPH15WheelSettingsWVdlEPv(ptr noundef %420) #11
  br label %860

671:                                              ; preds = %422
  %672 = landingpad { ptr, i32 }
          cleanup
  %673 = extractvalue { ptr, i32 } %672, 0
  store ptr %673, ptr %9, align 8
  %674 = extractvalue { ptr, i32 } %672, 1
  store i32 %674, ptr %10, align 4
  call void @llvm.lifetime.end.p0(i64 16, ptr %51) #11
  br label %860

675:                                              ; preds = %423
  %676 = landingpad { ptr, i32 }
          cleanup
  %677 = extractvalue { ptr, i32 } %676, 0
  store ptr %677, ptr %9, align 8
  %678 = extractvalue { ptr, i32 } %676, 1
  store i32 %678, ptr %10, align 4
  call void @llvm.lifetime.end.p0(i64 16, ptr %52) #11
  br label %860

679:                                              ; preds = %431
  %680 = landingpad { ptr, i32 }
          cleanup
  %681 = extractvalue { ptr, i32 } %680, 0
  store ptr %681, ptr %9, align 8
  %682 = extractvalue { ptr, i32 } %680, 1
  store i32 %682, ptr %10, align 4
  call void @llvm.lifetime.end.p0(i64 16, ptr %54) #11
  br label %860

683:                                              ; preds = %445
  %684 = landingpad { ptr, i32 }
          cleanup
  %685 = extractvalue { ptr, i32 } %684, 0
  store ptr %685, ptr %9, align 8
  %686 = extractvalue { ptr, i32 } %684, 1
  store i32 %686, ptr %10, align 4
  call void @llvm.lifetime.end.p0(i64 16, ptr %56) #11
  br label %860

687:                                              ; preds = %459
  %688 = landingpad { ptr, i32 }
          cleanup
  %689 = extractvalue { ptr, i32 } %688, 0
  store ptr %689, ptr %9, align 8
  %690 = extractvalue { ptr, i32 } %688, 1
  store i32 %690, ptr %10, align 4
  call void @llvm.lifetime.end.p0(i64 16, ptr %58) #11
  br label %860

691:                                              ; preds = %505, %502, %499, %473
  %692 = landingpad { ptr, i32 }
          cleanup
  %693 = extractvalue { ptr, i32 } %692, 0
  store ptr %693, ptr %9, align 8
  %694 = extractvalue { ptr, i32 } %692, 1
  store i32 %694, ptr %10, align 4
  %695 = load ptr, ptr %62, align 8
  %696 = icmp eq ptr %61, %695
  br i1 %696, label %701, label %697

697:                                              ; preds = %697, %691
  %698 = phi ptr [ %695, %691 ], [ %699, %697 ]
  %699 = getelementptr inbounds %"class.JPH::Ref.57", ptr %698, i64 -1
  call void @_ZN3JPH3RefINS_13WheelSettingsEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %699) #11
  %700 = icmp eq ptr %699, %61
  br i1 %700, label %701, label %697

701:                                              ; preds = %697, %691
  br label %713

702:                                              ; preds = %508
  %703 = landingpad { ptr, i32 }
          cleanup
  %704 = extractvalue { ptr, i32 } %703, 0
  store ptr %704, ptr %9, align 8
  %705 = extractvalue { ptr, i32 } %703, 1
  store i32 %705, ptr %10, align 4
  %706 = getelementptr inbounds [4 x %"class.JPH::Ref.57"], ptr %61, i32 0, i32 0
  %707 = getelementptr inbounds %"class.JPH::Ref.57", ptr %706, i64 4
  br label %708

708:                                              ; preds = %708, %702
  %709 = phi ptr [ %707, %702 ], [ %710, %708 ]
  %710 = getelementptr inbounds %"class.JPH::Ref.57", ptr %709, i64 -1
  call void @_ZN3JPH3RefINS_13WheelSettingsEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %710) #11
  %711 = icmp eq ptr %710, %706
  br i1 %711, label %712, label %708

712:                                              ; preds = %708
  br label %713

713:                                              ; preds = %712, %701
  call void @llvm.lifetime.end.p0(i64 32, ptr %61) #11
  br label %860

714:                                              ; preds = %524
  %715 = landingpad { ptr, i32 }
          cleanup
  %716 = extractvalue { ptr, i32 } %715, 0
  store ptr %716, ptr %9, align 8
  %717 = extractvalue { ptr, i32 } %715, 1
  store i32 %717, ptr %10, align 4
  br label %738

718:                                              ; preds = %528
  %719 = landingpad { ptr, i32 }
          cleanup
  %720 = extractvalue { ptr, i32 } %719, 0
  store ptr %720, ptr %9, align 8
  %721 = extractvalue { ptr, i32 } %719, 1
  store i32 %721, ptr %10, align 4
  br label %737

722:                                              ; preds = %532
  call void @llvm.lifetime.start.p0(i64 8, ptr %66) #11
  %723 = load ptr, ptr %64, align 8, !tbaa !5
  %724 = invoke noundef ptr @_ZNK3JPH3RefINS_13WheelSettingsEEcvPS1_Ev(ptr noundef nonnull align 8 dereferenceable(8) %723)
          to label %725 unwind label %733

725:                                              ; preds = %722
  store ptr %724, ptr %66, align 8, !tbaa !5
  %726 = load ptr, ptr %66, align 8, !tbaa !5
  %727 = getelementptr inbounds %"class.JPH::WheelSettings", ptr %726, i32 0, i32 13
  store float 0x3FD3333340000000, ptr %727, align 8, !tbaa !70
  %728 = load ptr, ptr %66, align 8, !tbaa !5
  %729 = getelementptr inbounds %"class.JPH::WheelSettings", ptr %728, i32 0, i32 14
  store float 0x3FB99999A0000000, ptr %729, align 4, !tbaa !71
  call void @llvm.lifetime.end.p0(i64 8, ptr %66) #11
  br label %730

730:                                              ; preds = %725
  %731 = load ptr, ptr %64, align 8, !tbaa !5
  %732 = getelementptr inbounds %"class.JPH::Ref.57", ptr %731, i32 1
  store ptr %732, ptr %64, align 8, !tbaa !5
  br label %532

733:                                              ; preds = %722
  %734 = landingpad { ptr, i32 }
          cleanup
  %735 = extractvalue { ptr, i32 } %734, 0
  store ptr %735, ptr %9, align 8
  %736 = extractvalue { ptr, i32 } %734, 1
  store i32 %736, ptr %10, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %66) #11
  br label %737

737:                                              ; preds = %733, %718
  call void @llvm.lifetime.end.p0(i64 8, ptr %65) #11
  br label %738

738:                                              ; preds = %737, %714
  call void @llvm.lifetime.end.p0(i64 8, ptr %64) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %63) #11
  br label %860

739:                                              ; preds = %536
  call void @llvm.lifetime.start.p0(i64 8, ptr %67) #11
  %740 = invoke noundef ptr @_ZN3JPH32WheeledVehicleControllerSettingsnwEm(i64 noundef 176)
          to label %741 unwind label %788

741:                                              ; preds = %739
  invoke void @_ZN3JPH32WheeledVehicleControllerSettingsC2Ev(ptr noundef nonnull align 8 dereferenceable(172) %740)
          to label %742 unwind label %792

742:                                              ; preds = %741
  store ptr %740, ptr %67, align 8, !tbaa !5
  %743 = load ptr, ptr %67, align 8, !tbaa !5
  %744 = getelementptr inbounds %"class.JPH::VehicleConstraintSettings", ptr %22, i32 0, i32 6
  %745 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3JPH3RefINS_25VehicleControllerSettingsEEaSEPS1_(ptr noundef nonnull align 8 dereferenceable(8) %744, ptr noundef %743)
          to label %746 unwind label %788

746:                                              ; preds = %742
  %747 = load ptr, ptr %67, align 8, !tbaa !5
  %748 = getelementptr inbounds %"class.JPH::WheeledVehicleControllerSettings", ptr %747, i32 0, i32 4
  %749 = load i8, ptr @_ZN21VehicleConstraintTest15sFourWheelDriveE, align 1, !tbaa !72, !range !73, !noundef !74
  %750 = trunc i8 %749 to i1
  %751 = zext i1 %750 to i64
  %752 = select i1 %750, i32 2, i32 1
  %753 = sext i32 %752 to i64
  invoke void @_ZN3JPH5ArrayINS_27VehicleDifferentialSettingsENS_12STLAllocatorIS1_EEE6resizeEm(ptr noundef nonnull align 8 dereferenceable(24) %748, i64 noundef %753)
          to label %754 unwind label %788

754:                                              ; preds = %746
  %755 = load ptr, ptr %67, align 8, !tbaa !5
  %756 = getelementptr inbounds %"class.JPH::WheeledVehicleControllerSettings", ptr %755, i32 0, i32 4
  %757 = invoke noundef nonnull align 4 dereferenceable(24) ptr @_ZN3JPH5ArrayINS_27VehicleDifferentialSettingsENS_12STLAllocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %756, i64 noundef 0)
          to label %758 unwind label %788

758:                                              ; preds = %754
  %759 = getelementptr inbounds %"class.JPH::VehicleDifferentialSettings", ptr %757, i32 0, i32 0
  store i32 0, ptr %759, align 4, !tbaa !75
  %760 = load ptr, ptr %67, align 8, !tbaa !5
  %761 = getelementptr inbounds %"class.JPH::WheeledVehicleControllerSettings", ptr %760, i32 0, i32 4
  %762 = invoke noundef nonnull align 4 dereferenceable(24) ptr @_ZN3JPH5ArrayINS_27VehicleDifferentialSettingsENS_12STLAllocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %761, i64 noundef 0)
          to label %763 unwind label %788

763:                                              ; preds = %758
  %764 = getelementptr inbounds %"class.JPH::VehicleDifferentialSettings", ptr %762, i32 0, i32 1
  store i32 1, ptr %764, align 4, !tbaa !77
  %765 = load i8, ptr @_ZN21VehicleConstraintTest15sFourWheelDriveE, align 1, !tbaa !72, !range !73, !noundef !74
  %766 = trunc i8 %765 to i1
  br i1 %766, label %767, label %796

767:                                              ; preds = %763
  %768 = load ptr, ptr %67, align 8, !tbaa !5
  %769 = getelementptr inbounds %"class.JPH::WheeledVehicleControllerSettings", ptr %768, i32 0, i32 4
  %770 = invoke noundef nonnull align 4 dereferenceable(24) ptr @_ZN3JPH5ArrayINS_27VehicleDifferentialSettingsENS_12STLAllocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %769, i64 noundef 1)
          to label %771 unwind label %788

771:                                              ; preds = %767
  %772 = getelementptr inbounds %"class.JPH::VehicleDifferentialSettings", ptr %770, i32 0, i32 0
  store i32 2, ptr %772, align 4, !tbaa !75
  %773 = load ptr, ptr %67, align 8, !tbaa !5
  %774 = getelementptr inbounds %"class.JPH::WheeledVehicleControllerSettings", ptr %773, i32 0, i32 4
  %775 = invoke noundef nonnull align 4 dereferenceable(24) ptr @_ZN3JPH5ArrayINS_27VehicleDifferentialSettingsENS_12STLAllocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %774, i64 noundef 1)
          to label %776 unwind label %788

776:                                              ; preds = %771
  %777 = getelementptr inbounds %"class.JPH::VehicleDifferentialSettings", ptr %775, i32 0, i32 1
  store i32 3, ptr %777, align 4, !tbaa !77
  %778 = load ptr, ptr %67, align 8, !tbaa !5
  %779 = getelementptr inbounds %"class.JPH::WheeledVehicleControllerSettings", ptr %778, i32 0, i32 4
  %780 = invoke noundef nonnull align 4 dereferenceable(24) ptr @_ZN3JPH5ArrayINS_27VehicleDifferentialSettingsENS_12STLAllocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %779, i64 noundef 1)
          to label %781 unwind label %788

781:                                              ; preds = %776
  %782 = getelementptr inbounds %"class.JPH::VehicleDifferentialSettings", ptr %780, i32 0, i32 5
  store float 5.000000e-01, ptr %782, align 4, !tbaa !78
  %783 = load ptr, ptr %67, align 8, !tbaa !5
  %784 = getelementptr inbounds %"class.JPH::WheeledVehicleControllerSettings", ptr %783, i32 0, i32 4
  %785 = invoke noundef nonnull align 4 dereferenceable(24) ptr @_ZN3JPH5ArrayINS_27VehicleDifferentialSettingsENS_12STLAllocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %784, i64 noundef 0)
          to label %786 unwind label %788

786:                                              ; preds = %781
  %787 = getelementptr inbounds %"class.JPH::VehicleDifferentialSettings", ptr %785, i32 0, i32 5
  store float 5.000000e-01, ptr %787, align 4, !tbaa !78
  br label %796

788:                                              ; preds = %849, %847, %838, %837, %832, %829, %826, %823, %818, %812, %808, %804, %801, %799, %781, %776, %771, %767, %758, %754, %746, %742, %739
  %789 = landingpad { ptr, i32 }
          cleanup
  %790 = extractvalue { ptr, i32 } %789, 0
  store ptr %790, ptr %9, align 8
  %791 = extractvalue { ptr, i32 } %789, 1
  store i32 %791, ptr %10, align 4
  br label %859

792:                                              ; preds = %741
  %793 = landingpad { ptr, i32 }
          cleanup
  %794 = extractvalue { ptr, i32 } %793, 0
  store ptr %794, ptr %9, align 8
  %795 = extractvalue { ptr, i32 } %793, 1
  store i32 %795, ptr %10, align 4
  call void @_ZN3JPH32WheeledVehicleControllerSettingsdlEPv(ptr noundef %740) #11
  br label %859

796:                                              ; preds = %786, %763
  %797 = load i8, ptr @_ZN21VehicleConstraintTest12sAntiRollbarE, align 1, !tbaa !72, !range !73, !noundef !74
  %798 = trunc i8 %797 to i1
  br i1 %798, label %799, label %818

799:                                              ; preds = %796
  %800 = getelementptr inbounds %"class.JPH::VehicleConstraintSettings", ptr %22, i32 0, i32 5
  invoke void @_ZN3JPH5ArrayINS_18VehicleAntiRollBarENS_12STLAllocatorIS1_EEE6resizeEm(ptr noundef nonnull align 8 dereferenceable(24) %800, i64 noundef 2)
          to label %801 unwind label %788

801:                                              ; preds = %799
  %802 = getelementptr inbounds %"class.JPH::VehicleConstraintSettings", ptr %22, i32 0, i32 5
  %803 = invoke noundef nonnull align 4 dereferenceable(12) ptr @_ZN3JPH5ArrayINS_18VehicleAntiRollBarENS_12STLAllocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %802, i64 noundef 0)
          to label %804 unwind label %788

804:                                              ; preds = %801
  %805 = getelementptr inbounds %"class.JPH::VehicleAntiRollBar", ptr %803, i32 0, i32 0
  store i32 0, ptr %805, align 4, !tbaa !79
  %806 = getelementptr inbounds %"class.JPH::VehicleConstraintSettings", ptr %22, i32 0, i32 5
  %807 = invoke noundef nonnull align 4 dereferenceable(12) ptr @_ZN3JPH5ArrayINS_18VehicleAntiRollBarENS_12STLAllocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %806, i64 noundef 0)
          to label %808 unwind label %788

808:                                              ; preds = %804
  %809 = getelementptr inbounds %"class.JPH::VehicleAntiRollBar", ptr %807, i32 0, i32 1
  store i32 1, ptr %809, align 4, !tbaa !81
  %810 = getelementptr inbounds %"class.JPH::VehicleConstraintSettings", ptr %22, i32 0, i32 5
  %811 = invoke noundef nonnull align 4 dereferenceable(12) ptr @_ZN3JPH5ArrayINS_18VehicleAntiRollBarENS_12STLAllocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %810, i64 noundef 1)
          to label %812 unwind label %788

812:                                              ; preds = %808
  %813 = getelementptr inbounds %"class.JPH::VehicleAntiRollBar", ptr %811, i32 0, i32 0
  store i32 2, ptr %813, align 4, !tbaa !79
  %814 = getelementptr inbounds %"class.JPH::VehicleConstraintSettings", ptr %22, i32 0, i32 5
  %815 = invoke noundef nonnull align 4 dereferenceable(12) ptr @_ZN3JPH5ArrayINS_18VehicleAntiRollBarENS_12STLAllocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %814, i64 noundef 1)
          to label %816 unwind label %788

816:                                              ; preds = %812
  %817 = getelementptr inbounds %"class.JPH::VehicleAntiRollBar", ptr %815, i32 0, i32 1
  store i32 3, ptr %817, align 4, !tbaa !81
  br label %818

818:                                              ; preds = %816, %796
  %819 = invoke noundef ptr @_ZN3JPH10ConstraintnwEm(i64 noundef 416)
          to label %820 unwind label %788

820:                                              ; preds = %818
  %821 = getelementptr inbounds %class.VehicleConstraintTest, ptr %70, i32 0, i32 1
  %822 = load ptr, ptr %821, align 8, !tbaa !39
  invoke void @_ZN3JPH17VehicleConstraintC1ERNS_4BodyERKNS_25VehicleConstraintSettingsE(ptr noundef nonnull align 16 dereferenceable(408) %819, ptr noundef nonnull align 16 dereferenceable(122) %822, ptr noundef nonnull align 16 dereferenceable(144) %22)
          to label %823 unwind label %851

823:                                              ; preds = %820
  %824 = getelementptr inbounds %class.VehicleConstraintTest, ptr %70, i32 0, i32 2
  %825 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3JPH3RefINS_17VehicleConstraintEEaSEPS1_(ptr noundef nonnull align 8 dereferenceable(8) %824, ptr noundef %819)
          to label %826 unwind label %788

826:                                              ; preds = %823
  %827 = getelementptr inbounds %class.VehicleConstraintTest, ptr %70, i32 0, i32 2
  %828 = invoke noundef ptr @_ZNK3JPH3RefINS_17VehicleConstraintEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %827)
          to label %829 unwind label %788

829:                                              ; preds = %826
  %830 = invoke noundef ptr @_ZN3JPH17VehicleConstraint13GetControllerEv(ptr noundef nonnull align 16 dereferenceable(408) %828)
          to label %831 unwind label %788

831:                                              ; preds = %829
  call void @llvm.lifetime.start.p0(i64 32, ptr %68) #11
  call void @llvm.lifetime.start.p0(i64 1, ptr %69) #11
  call void @"_ZNSt8functionIFvjRfS0_ffffffEEC2IZN21VehicleConstraintTest10InitializeEvE3$_0vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %68, ptr noundef nonnull align 1 dereferenceable(1) %69) #11
  invoke void @_ZN3JPH24WheeledVehicleController25SetTireMaxImpulseCallbackERKSt8functionIFvjRfS2_ffffffEE(ptr noundef nonnull align 8 dereferenceable(256) %830, ptr noundef nonnull align 8 dereferenceable(32) %68)
          to label %832 unwind label %855

832:                                              ; preds = %831
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %68) #11
  call void @llvm.lifetime.end.p0(i64 1, ptr %69) #11
  call void @llvm.lifetime.end.p0(i64 32, ptr %68) #11
  %833 = getelementptr inbounds %class.Test, ptr %70, i32 0, i32 2
  %834 = load ptr, ptr %833, align 16, !tbaa !82
  %835 = getelementptr inbounds %class.VehicleConstraintTest, ptr %70, i32 0, i32 2
  %836 = invoke noundef ptr @_ZNK3JPH3RefINS_17VehicleConstraintEEcvPS1_Ev(ptr noundef nonnull align 8 dereferenceable(8) %835)
          to label %837 unwind label %788

837:                                              ; preds = %832
  invoke void @_ZN3JPH13PhysicsSystem13AddConstraintEPNS_10ConstraintE(ptr noundef nonnull align 16 dereferenceable(1172) %834, ptr noundef %836)
          to label %838 unwind label %788

838:                                              ; preds = %837
  %839 = getelementptr inbounds %class.Test, ptr %70, i32 0, i32 2
  %840 = load ptr, ptr %839, align 16, !tbaa !82
  %841 = getelementptr inbounds %class.VehicleConstraintTest, ptr %70, i32 0, i32 2
  %842 = invoke noundef ptr @_ZNK3JPH3RefINS_17VehicleConstraintEEcvPS1_Ev(ptr noundef nonnull align 8 dereferenceable(8) %841)
          to label %843 unwind label %788

843:                                              ; preds = %838
  %844 = icmp eq ptr %842, null
  br i1 %844, label %847, label %845

845:                                              ; preds = %843
  %846 = getelementptr inbounds i8, ptr %842, i64 32
  br label %847

847:                                              ; preds = %845, %843
  %848 = phi ptr [ %846, %845 ], [ null, %843 ]
  invoke void @_ZN3JPH13PhysicsSystem15AddStepListenerEPNS_19PhysicsStepListenerE(ptr noundef nonnull align 16 dereferenceable(1172) %840, ptr noundef %848)
          to label %849 unwind label %788

849:                                              ; preds = %847
  invoke void @_ZN21VehicleConstraintTest17UpdateCameraPivotEv(ptr noundef nonnull align 16 dereferenceable(260) %70)
          to label %850 unwind label %788

850:                                              ; preds = %849
  call void @llvm.lifetime.end.p0(i64 8, ptr %67) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %50) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %48) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %38) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %36) #11
  call void @llvm.lifetime.end.p0(i64 16, ptr %35) #11
  call void @llvm.lifetime.end.p0(i64 16, ptr %34) #11
  call void @llvm.lifetime.end.p0(i64 16, ptr %33) #11
  call void @llvm.lifetime.end.p0(i64 16, ptr %31) #11
  call void @llvm.lifetime.end.p0(i64 16, ptr %29) #11
  call void @llvm.lifetime.end.p0(i64 16, ptr %28) #11
  call void @llvm.lifetime.end.p0(i64 16, ptr %27) #11
  call void @llvm.lifetime.end.p0(i64 16, ptr %25) #11
  call void @llvm.lifetime.end.p0(i64 16, ptr %23) #11
  call void @_ZN3JPH25VehicleConstraintSettingsD2Ev(ptr noundef nonnull align 16 dereferenceable(144) %22) #11
  call void @llvm.lifetime.end.p0(i64 144, ptr %22) #11
  call void @_ZN3JPH20BodyCreationSettingsD2Ev(ptr noundef nonnull align 16 dereferenceable(256) %18) #11
  call void @llvm.lifetime.end.p0(i64 256, ptr %18) #11
  call void @_ZN3JPH8RefConstINS_5ShapeEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %13) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %13) #11
  call void @llvm.lifetime.end.p0(i64 16, ptr %12) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr %7) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr %6) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr %5) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr %4) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr %3) #11
  ret void

851:                                              ; preds = %820
  %852 = landingpad { ptr, i32 }
          cleanup
  %853 = extractvalue { ptr, i32 } %852, 0
  store ptr %853, ptr %9, align 8
  %854 = extractvalue { ptr, i32 } %852, 1
  store i32 %854, ptr %10, align 4
  call void @_ZN3JPH10ConstraintdlEPv(ptr noundef %819) #11
  br label %859

855:                                              ; preds = %831
  %856 = landingpad { ptr, i32 }
          cleanup
  %857 = extractvalue { ptr, i32 } %856, 0
  store ptr %857, ptr %9, align 8
  %858 = extractvalue { ptr, i32 } %856, 1
  store i32 %858, ptr %10, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %68) #11
  call void @llvm.lifetime.end.p0(i64 1, ptr %69) #11
  call void @llvm.lifetime.end.p0(i64 32, ptr %68) #11
  br label %859

859:                                              ; preds = %855, %851, %792, %788
  call void @llvm.lifetime.end.p0(i64 8, ptr %67) #11
  br label %860

860:                                              ; preds = %859, %738, %713, %687, %683, %679, %675, %671, %667, %663
  call void @llvm.lifetime.end.p0(i64 8, ptr %50) #11
  br label %861

861:                                              ; preds = %860, %659, %655, %651
  call void @llvm.lifetime.end.p0(i64 8, ptr %48) #11
  br label %862

862:                                              ; preds = %861, %647, %643, %639, %635, %631, %627, %623
  call void @llvm.lifetime.end.p0(i64 8, ptr %38) #11
  br label %863

863:                                              ; preds = %862, %619, %615, %611
  call void @llvm.lifetime.end.p0(i64 8, ptr %36) #11
  br label %864

864:                                              ; preds = %863, %607
  call void @llvm.lifetime.end.p0(i64 16, ptr %35) #11
  br label %865

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

866:                                              ; preds = %865, %599
  call void @llvm.lifetime.end.p0(i64 16, ptr %33) #11
  br label %867

867:                                              ; preds = %866, %595
  call void @llvm.lifetime.end.p0(i64 16, ptr %31) #11
  br label %868

868:                                              ; preds = %867, %591
  call void @llvm.lifetime.end.p0(i64 16, ptr %29) #11
  br label %869

869:                                              ; preds = %868, %587
  call void @llvm.lifetime.end.p0(i64 16, ptr %28) #11
  br label %870

870:                                              ; preds = %869, %583
  call void @llvm.lifetime.end.p0(i64 16, ptr %27) #11
  br label %871

871:                                              ; preds = %870, %579
  call void @llvm.lifetime.end.p0(i64 16, ptr %25) #11
  br label %872

872:                                              ; preds = %871, %575
  call void @llvm.lifetime.end.p0(i64 16, ptr %23) #11
  call void @_ZN3JPH25VehicleConstraintSettingsD2Ev(ptr noundef nonnull align 16 dereferenceable(144) %22) #11
  br label %873

873:                                              ; preds = %872, %571
  call void @llvm.lifetime.end.p0(i64 144, ptr %22) #11
  br label %874

874:                                              ; preds = %873, %567
  call void @_ZN3JPH20BodyCreationSettingsD2Ev(ptr noundef nonnull align 16 dereferenceable(256) %18) #11
  br label %875

875:                                              ; preds = %874, %563
  call void @llvm.lifetime.end.p0(i64 256, ptr %18) #11
  call void @_ZN3JPH8RefConstINS_5ShapeEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %13) #11
  br label %876

876:                                              ; preds = %875, %562
  call void @llvm.lifetime.end.p0(i64 8, ptr %13) #11
  call void @llvm.lifetime.end.p0(i64 16, ptr %12) #11
  br label %877

877:                                              ; preds = %876, %545, %541, %537
  call void @llvm.lifetime.end.p0(i64 4, ptr %7) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr %6) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr %5) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr %4) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr %3) #11
  br label %878

878:                                              ; preds = %877
  %879 = load ptr, ptr %9, align 8
  %880 = load i32, ptr %10, align 4
  %881 = insertvalue { ptr, i32 } poison, ptr %879, 0
  %882 = insertvalue { ptr, i32 } %881, i32 %880, 1
  resume { ptr, i32 } %882
}

declare void @_ZN11VehicleTest10InitializeEv(ptr noundef nonnull align 8 dereferenceable(136)) unnamed_addr #3

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN3JPH25VehicleCollisionTesterRayC2EtNS_4Vec3Ef(ptr noundef nonnull align 16 dereferenceable(68), i16 noundef zeroext, double, double, float noundef) unnamed_addr #2 align 2

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN3JPH32VehicleCollisionTesterCastSphereC2EtfNS_4Vec3Ef(ptr noundef nonnull align 16 dereferenceable(68), i16 noundef zeroext, float noundef, double, double, float noundef) unnamed_addr #2 align 2

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

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

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

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

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

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

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

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

declare void @_ZNK3JPH31OffsetCenterOfMassShapeSettings6CreateEv(ptr dead_on_unwind writable sret(%"class.JPH::Result") align 8, ptr noundef nonnull align 16 dereferenceable(96)) unnamed_addr #3

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

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

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

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef ptr @_ZNK3JPH8RefConstINS_5ShapeEEcvPKS1_Ev(ptr noundef nonnull align 8 dereferenceable(8)) #1 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) #9

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

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

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

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

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

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

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

; Function Attrs: alwaysinline mustprogress uwtable
declare dso_local noundef float @_ZN3JPH3TanEf(float noundef) #4

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

; Function Attrs: alwaysinline mustprogress uwtable
declare dso_local noundef float @_ZN3JPH3SinEf(float noundef) #4

; Function Attrs: alwaysinline mustprogress uwtable
declare dso_local noundef float @_ZN3JPH3CosEf(float noundef) #4

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

declare void @_ZN3JPH15WheelSettingsWVC1Ev(ptr noundef nonnull align 16 dereferenceable(216)) unnamed_addr #3

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

declare void @_ZN3JPH17VehicleConstraintC1ERNS_4BodyERKNS_25VehicleConstraintSettingsE(ptr noundef nonnull align 16 dereferenceable(408), ptr noundef nonnull align 16 dereferenceable(122), ptr noundef nonnull align 16 dereferenceable(144)) unnamed_addr #3

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

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

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare hidden void @"_ZNSt8functionIFvjRfS0_ffffffEEC2IZN21VehicleConstraintTest10InitializeEvE3$_0vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 1 dereferenceable(1)) unnamed_addr #8 align 2

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

declare void @_ZN3JPH13PhysicsSystem15AddStepListenerEPNS_19PhysicsStepListenerE(ptr noundef nonnull align 16 dereferenceable(1172), ptr noundef) #3

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local void @_ZN3JPH25VehicleConstraintSettingsD2Ev(ptr noundef nonnull align 16 dereferenceable(144)) unnamed_addr #1 align 2

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

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

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

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"float", !7, i64 0}
!11 = !{i64 0, i64 16, !12}
!12 = !{!7, !7, i64 0}
!13 = !{!14, !27, i64 144}
!14 = !{!"_ZTSN3JPH20BodyCreationSettingsE", !15, i64 0, !16, i64 16, !15, i64 32, !15, i64 48, !18, i64 64, !19, i64 72, !20, i64 80, !23, i64 96, !24, i64 97, !25, i64 98, !25, i64 99, !25, i64 100, !25, i64 101, !25, i64 102, !26, i64 103, !25, i64 104, !25, i64 105, !10, i64 108, !10, i64 112, !10, i64 116, !10, i64 120, !10, i64 124, !10, i64 128, !10, i64 132, !22, i64 136, !22, i64 140, !27, i64 144, !10, i64 148, !28, i64 160, !30, i64 240, !31, i64 248}
!15 = !{!"_ZTSN3JPH4Vec3E", !7, i64 0}
!16 = !{!"_ZTSN3JPH4QuatE", !17, i64 0}
!17 = !{!"_ZTSN3JPH4Vec4E", !7, i64 0}
!18 = !{!"long", !7, i64 0}
!19 = !{!"short", !7, i64 0}
!20 = !{!"_ZTSN3JPH14CollisionGroupE", !21, i64 0, !22, i64 8, !22, i64 12}
!21 = !{!"_ZTSN3JPH8RefConstINS_11GroupFilterEEE", !6, i64 0}
!22 = !{!"int", !7, i64 0}
!23 = !{!"_ZTSN3JPH11EMotionTypeE", !7, i64 0}
!24 = !{!"_ZTSN3JPH12EAllowedDOFsE", !7, i64 0}
!25 = !{!"bool", !7, i64 0}
!26 = !{!"_ZTSN3JPH14EMotionQualityE", !7, i64 0}
!27 = !{!"_ZTSN3JPH23EOverrideMassPropertiesE", !7, i64 0}
!28 = !{!"_ZTSN3JPH14MassPropertiesE", !10, i64 0, !29, i64 16}
!29 = !{!"_ZTSN3JPH5Mat44E", !7, i64 0}
!30 = !{!"_ZTSN3JPH8RefConstINS_13ShapeSettingsEEE", !6, i64 0}
!31 = !{!"_ZTSN3JPH8RefConstINS_5ShapeEEE", !6, i64 0}
!32 = !{!14, !10, i64 160}
!33 = !{!34, !6, i64 24}
!34 = !{!"_ZTS4Test", !6, i64 8, !6, i64 16, !6, i64 24, !6, i64 32, !6, i64 40, !25, i64 48, !35, i64 56}
!35 = !{!"_ZTSSt13unordered_mapIN3JPH6BodyIDENSt7__cxx1112basic_stringIcSt11char_traitsIcENS0_12STLAllocatorIcEEEESt4hashIS1_ESt8equal_toIS1_ESaISt4pairIKS1_S8_EEE", !36, i64 0}
!36 = !{!"_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, !18, i64 8, !37, i64 16, !18, i64 24, !38, i64 32, !6, i64 48}
!37 = !{!"_ZTSNSt8__detail15_Hash_node_baseE", !6, i64 0}
!38 = !{!"_ZTSNSt8__detail20_Prime_rehash_policyE", !10, i64 0, !18, i64 8}
!39 = !{!40, !6, i64 136}
!40 = !{!"_ZTS21VehicleConstraintTest", !41, i64 0, !6, i64 136, !43, i64 144, !7, i64 152, !29, i64 176, !10, i64 240, !10, i64 244, !10, i64 248, !10, i64 252, !10, i64 256}
!41 = !{!"_ZTS11VehicleTest", !34, i64 0, !42, i64 112}
!42 = !{!"_ZTSN3JPH5ArrayIN11VehicleTest4LineENS_12STLAllocatorIS2_EEEE", !18, i64 0, !18, i64 8, !6, i64 16}
!43 = !{!"_ZTSN3JPH3RefINS_17VehicleConstraintEEE", !6, i64 0}
!44 = !{!45, !10, i64 28}
!45 = !{!"_ZTSN3JPH18ConstraintSettingsE", !46, i64 0, !47, i64 8, !25, i64 12, !22, i64 16, !22, i64 20, !22, i64 24, !10, i64 28, !18, i64 32}
!46 = !{!"_ZTSN3JPH18SerializableObjectE"}
!47 = !{!"_ZTSN3JPH9RefTargetINS_18ConstraintSettingsEEE", !48, i64 0}
!48 = !{!"_ZTSSt6atomicIjE", !49, i64 0}
!49 = !{!"_ZTSSt13__atomic_baseIjE", !22, i64 0}
!50 = !{!51, !10, i64 80}
!51 = !{!"_ZTSN3JPH25VehicleConstraintSettingsE", !45, i64 0, !15, i64 48, !15, i64 64, !10, i64 80, !52, i64 88, !53, i64 112, !54, i64 136}
!52 = !{!"_ZTSN3JPH5ArrayINS_3RefINS_13WheelSettingsEEENS_12STLAllocatorIS3_EEEE", !18, i64 0, !18, i64 8, !6, i64 16}
!53 = !{!"_ZTSN3JPH5ArrayINS_18VehicleAntiRollBarENS_12STLAllocatorIS1_EEEE", !18, i64 0, !18, i64 8, !6, i64 16}
!54 = !{!"_ZTSN3JPH3RefINS_25VehicleControllerSettingsEEE", !6, i64 0}
!55 = !{!56, !10, i64 112}
!56 = !{!"_ZTSN3JPH13WheelSettingsE", !46, i64 0, !57, i64 8, !15, i64 16, !15, i64 32, !15, i64 48, !15, i64 64, !15, i64 80, !15, i64 96, !10, i64 112, !10, i64 116, !10, i64 120, !58, i64 124, !10, i64 136, !10, i64 140, !25, i64 144}
!57 = !{!"_ZTSN3JPH9RefTargetINS_13WheelSettingsEEE", !48, i64 0}
!58 = !{!"_ZTSN3JPH14SpringSettingsE", !59, i64 0, !7, i64 4, !10, i64 8}
!59 = !{!"_ZTSN3JPH11ESpringModeE", !7, i64 0}
!60 = !{!56, !10, i64 116}
!61 = !{!56, !10, i64 132}
!62 = !{!63, !10, i64 156}
!63 = !{!"_ZTSN3JPH15WheelSettingsWVE", !56, i64 0, !10, i64 148, !10, i64 152, !10, i64 156, !64, i64 160, !64, i64 184, !10, i64 208, !10, i64 212}
!64 = !{!"_ZTSN3JPH11LinearCurveE", !65, i64 0}
!65 = !{!"_ZTSN3JPH5ArrayINS_11LinearCurve5PointENS_12STLAllocatorIS2_EEEE", !18, i64 0, !18, i64 8, !6, i64 16}
!66 = !{!63, !10, i64 212}
!67 = !{!68, !6, i64 0}
!68 = !{!"_ZTSSt16initializer_listIN3JPH3RefINS0_13WheelSettingsEEEE", !6, i64 0, !18, i64 8}
!69 = !{!68, !18, i64 8}
!70 = !{!56, !10, i64 136}
!71 = !{!56, !10, i64 140}
!72 = !{!25, !25, i64 0}
!73 = !{i8 0, i8 2}
!74 = !{}
!75 = !{!76, !22, i64 0}
!76 = !{!"_ZTSN3JPH27VehicleDifferentialSettingsE", !22, i64 0, !22, i64 4, !10, i64 8, !10, i64 12, !10, i64 16, !10, i64 20}
!77 = !{!76, !22, i64 4}
!78 = !{!76, !10, i64 20}
!79 = !{!80, !22, i64 0}
!80 = !{!"_ZTSN3JPH18VehicleAntiRollBarE", !22, i64 0, !22, i64 4, !10, i64 8}
!81 = !{!80, !22, i64 4}
!82 = !{!34, !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.21 }
%union.anon.21 = type { <4 x float> }
%"class.JPH::RefConst.34" = type { ptr }
%"class.JPH::Result" = type <{ %union.anon.35, i8, [7 x i8] }>
%union.anon.35 = 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.39 }
%"struct.std::__cxx11::basic_string<char, std::char_traits<char>, JPH::STLAllocator<char>>::_Alloc_hider" = type { ptr }
%union.anon.39 = type { i64, [8 x i8] }
%"class.JPH::OffsetCenterOfMassShapeSettings" = type { %"class.JPH::DecoratedShapeSettings", %"class.JPH::Vec3" }
%"class.JPH::DecoratedShapeSettings" = type { %"class.JPH::ShapeSettings", %"class.JPH::RefConst.41", %"class.JPH::RefConst.34" }
%"class.JPH::ShapeSettings" = type { %"class.JPH::SerializableObject", %"class.JPH::RefTarget.40", i64, %"class.JPH::Result" }
%"class.JPH::SerializableObject" = type { ptr }
%"class.JPH::RefTarget.40" = type { %"struct.std::atomic" }
%"struct.std::atomic" = type { %"struct.std::__atomic_base" }
%"struct.std::__atomic_base" = type { i32 }
%"class.JPH::RefConst.41" = type { ptr }
%"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.41", %"class.JPH::RefConst.34" }
%"class.JPH::Quat" = type { %"class.JPH::Vec4" }
%"class.JPH::Vec4" = type { %union.anon }
%union.anon = type { <4 x float> }
%"class.JPH::CollisionGroup" = type { %"class.JPH::RefConst.44", i32, i32 }
%"class.JPH::RefConst.44" = type { ptr }
%"class.JPH::MassProperties" = type { float, %"class.JPH::Mat44" }
%"class.JPH::Mat44" = type { [4 x %"class.JPH::Vec4"] }
%"class.JPH::VehicleConstraintSettings" = type { %"class.JPH::ConstraintSettings", %"class.JPH::Vec3", %"class.JPH::Vec3", float, %"class.JPH::Array.48", %"class.JPH::Array.25", %"class.JPH::Ref.51" }
%"class.JPH::ConstraintSettings" = type { %"class.JPH::SerializableObject", %"class.JPH::RefTarget.47", i8, i32, i32, i32, float, i64 }
%"class.JPH::RefTarget.47" = type { %"struct.std::atomic" }
%"class.JPH::Array.48" = type { i64, i64, ptr }
%"class.JPH::Array.25" = type { i64, i64, ptr }
%"class.JPH::Ref.51" = type { ptr }
%"class.JPH::Ref.57" = type { ptr }
%"class.std::function.65" = type { %"class.std::_Function_base", ptr }
%"class.std::_Function_base" = type { %"union.std::_Any_data", ptr }
%"union.std::_Any_data" = type { %"union.std::_Nocopy_types" }
%"union.std::_Nocopy_types" = type { { i64, i64 } }
%class.anon.67 = type { i8 }

@_ZN21VehicleConstraintTest17sInitialRollAngleE = external dso_local local_unnamed_addr global float, align 4
@_ZN21VehicleConstraintTest13sMaxRollAngleE = external dso_local local_unnamed_addr global float, align 4
@_ZN21VehicleConstraintTest29sFrontSuspensionSidewaysAngleE = external dso_local local_unnamed_addr global float, align 4
@_ZN21VehicleConstraintTest28sFrontSuspensionForwardAngleE = external dso_local local_unnamed_addr global float, align 4
@_ZN21VehicleConstraintTest18sFrontKingPinAngleE = external dso_local local_unnamed_addr global float, align 4
@_ZN21VehicleConstraintTest17sFrontCasterAngleE = external dso_local local_unnamed_addr global float, align 4
@_ZN21VehicleConstraintTest12sFrontCamberE = external dso_local local_unnamed_addr global float, align 4
@_ZN21VehicleConstraintTest9sFrontToeE = external dso_local local_unnamed_addr global float, align 4
@_ZN21VehicleConstraintTest28sRearSuspensionSidewaysAngleE = external dso_local local_unnamed_addr global float, align 4
@_ZN21VehicleConstraintTest27sRearSuspensionForwardAngleE = external dso_local local_unnamed_addr global float, align 4
@_ZN21VehicleConstraintTest17sRearKingPinAngleE = external dso_local local_unnamed_addr global float, align 4
@_ZN21VehicleConstraintTest16sRearCasterAngleE = external dso_local local_unnamed_addr global float, align 4
@_ZN21VehicleConstraintTest11sRearCamberE = external dso_local local_unnamed_addr global float, align 4
@_ZN21VehicleConstraintTest8sRearToeE = external dso_local local_unnamed_addr global float, align 4
@_ZN21VehicleConstraintTest25sFrontSuspensionMinLengthE = external dso_local local_unnamed_addr global float, align 4
@_ZN21VehicleConstraintTest25sFrontSuspensionMaxLengthE = external dso_local local_unnamed_addr global float, align 4
@_ZN21VehicleConstraintTest25sFrontSuspensionFrequencyE = external dso_local local_unnamed_addr global float, align 4
@_ZN21VehicleConstraintTest23sFrontSuspensionDampingE = external dso_local local_unnamed_addr global float, align 4
@_ZN21VehicleConstraintTest17sMaxSteeringAngleE = external dso_local local_unnamed_addr global float, align 4
@_ZN21VehicleConstraintTest24sRearSuspensionMinLengthE = external dso_local local_unnamed_addr global float, align 4
@_ZN21VehicleConstraintTest24sRearSuspensionMaxLengthE = external dso_local local_unnamed_addr global float, align 4
@_ZN21VehicleConstraintTest24sRearSuspensionFrequencyE = external dso_local local_unnamed_addr global float, align 4
@_ZN21VehicleConstraintTest22sRearSuspensionDampingE = external dso_local local_unnamed_addr global float, align 4
@_ZN21VehicleConstraintTest15sFourWheelDriveE = external dso_local local_unnamed_addr global i8, align 1
@_ZN21VehicleConstraintTest12sAntiRollbarE = external dso_local local_unnamed_addr global i8, align 1

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

declare i32 @__gxx_personality_v0(...)

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

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

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN21VehicleConstraintTest10InitializeEv(ptr noundef nonnull align 16 dereferenceable(260) %0) unnamed_addr #2 align 2 personality ptr @__gxx_personality_v0 {
  %2 = alloca %"class.JPH::Vec3", align 16
  %3 = alloca %"class.JPH::RefConst.34", align 8
  %4 = alloca %"class.JPH::Result", align 8
  %5 = alloca %"class.JPH::OffsetCenterOfMassShapeSettings", align 16
  %6 = alloca %"class.JPH::Vec3", align 16
  %7 = alloca %"class.JPH::Vec3", align 16
  %8 = alloca %"class.JPH::BodyCreationSettings", align 16
  %9 = alloca %"class.JPH::VehicleConstraintSettings", align 16
  %10 = alloca %"class.JPH::Vec3", align 16
  %11 = alloca %"class.JPH::Vec3", align 16
  %12 = alloca %"class.JPH::Vec3", align 16
  %13 = alloca %"class.JPH::Vec3", align 16
  %14 = alloca %"class.JPH::Vec3", align 16
  %15 = alloca %"class.JPH::Vec3", align 16
  %16 = alloca %"class.JPH::Vec3", align 16
  %17 = alloca %"class.JPH::Vec3", align 16
  %18 = alloca %"class.JPH::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 [4 x %"class.JPH::Ref.57"], align 8
  %24 = alloca %"class.std::function.65", align 8
  %25 = alloca %class.anon.67, align 1
  tail call void @_ZN11VehicleTest10InitializeEv(ptr noundef nonnull align 8 dereferenceable(136) %0)
  %26 = tail call noundef ptr @_ZN3JPH25VehicleCollisionTesterRaynwEm(i64 noundef 80)
  %27 = invoke { double, double } @_ZN3JPH4Vec36sAxisYEv()
          to label %28 unwind label %276

28:                                               ; preds = %1
  %29 = extractvalue { double, double } %27, 0
  %30 = extractvalue { double, double } %27, 1
  %31 = tail call noundef float @_ZN3JPH16DegreesToRadiansEf(float noundef 8.000000e+01)
  invoke void @_ZN3JPH25VehicleCollisionTesterRayC2EtNS_4Vec3Ef(ptr noundef nonnull align 16 dereferenceable(68) %26, i16 noundef zeroext 1, double %29, double %30, float noundef %31)
          to label %32 unwind label %276

32:                                               ; preds = %28
  %33 = getelementptr inbounds i8, ptr %0, i64 152
  %34 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZN3JPH3RefINS_22VehicleCollisionTesterEEaSEPS1_(ptr noundef nonnull align 8 dereferenceable(8) %33, ptr noundef nonnull %26)
  %35 = tail call noundef ptr @_ZN3JPH32VehicleCollisionTesterCastSpherenwEm(i64 noundef 80)
  %36 = invoke { double, double } @_ZN3JPH4Vec36sAxisYEv()
          to label %37 unwind label %278

37:                                               ; preds = %32
  %38 = extractvalue { double, double } %36, 0
  %39 = extractvalue { double, double } %36, 1
  %40 = tail call noundef float @_ZN3JPH16DegreesToRadiansEf(float noundef 8.000000e+01)
  invoke void @_ZN3JPH32VehicleCollisionTesterCastSphereC2EtfNS_4Vec3Ef(ptr noundef nonnull align 16 dereferenceable(68) %35, i16 noundef zeroext 1, float noundef 0x3FA99999A0000000, double %38, double %39, float noundef %40)
          to label %41 unwind label %278

41:                                               ; preds = %37
  %42 = getelementptr inbounds i8, ptr %0, i64 160
  %43 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZN3JPH3RefINS_22VehicleCollisionTesterEEaSEPS1_(ptr noundef nonnull align 8 dereferenceable(8) %42, ptr noundef nonnull %35)
  %44 = tail call noundef ptr @_ZN3JPH34VehicleCollisionTesterCastCylindernwEm(i64 noundef 48)
  invoke void @_ZN3JPH34VehicleCollisionTesterCastCylinderC2Etf(ptr noundef nonnull align 8 dereferenceable(48) %44, i16 noundef zeroext 1, float noundef 0x3FB99999A0000000)
          to label %45 unwind label %280

45:                                               ; preds = %41
  %46 = getelementptr inbounds i8, ptr %0, i64 168
  %47 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZN3JPH3RefINS_22VehicleCollisionTesterEEaSEPS1_(ptr noundef nonnull align 8 dereferenceable(8) %46, ptr noundef nonnull %44)
  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 2.000000e+00, float noundef 0.000000e+00)
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %3) #11
  call void @llvm.lifetime.start.p0(i64 40, ptr nonnull %4) #11
  call void @llvm.lifetime.start.p0(i64 96, ptr nonnull %5) #11
  call void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %6, float noundef 0.000000e+00, float noundef 0xBFC99999A0000000, float noundef 0.000000e+00)
  %48 = call noundef ptr @_ZN3JPH8BoxShapenwEm(i64 noundef 80)
  call void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %7, float noundef 0x3FECCCCCC0000000, float noundef 0x3FC99999A0000000, float noundef 2.000000e+00)
  %49 = load double, ptr %7, align 16
  %50 = getelementptr inbounds i8, ptr %7, i64 8
  %51 = load double, ptr %50, align 8
  invoke void @_ZN3JPH8BoxShapeC2ENS_4Vec3EfPKNS_15PhysicsMaterialE(ptr noundef nonnull align 16 dereferenceable(80) %48, double %49, double %51, float noundef 0x3FA99999A0000000, ptr noundef null)
          to label %52 unwind label %282

52:                                               ; preds = %45
  %53 = load double, ptr %6, align 16
  %54 = getelementptr inbounds i8, ptr %6, i64 8
  %55 = load double, ptr %54, align 8
  call void @_ZN3JPH31OffsetCenterOfMassShapeSettingsC2ENS_4Vec3EPKNS_5ShapeE(ptr noundef nonnull align 16 dereferenceable(96) %5, double %53, double %55, ptr noundef nonnull %48)
  invoke void @_ZNK3JPH31OffsetCenterOfMassShapeSettings6CreateEv(ptr dead_on_unwind nonnull writable sret(%"class.JPH::Result") align 8 %4, ptr noundef nonnull align 16 dereferenceable(96) %5)
          to label %56 unwind label %284

56:                                               ; preds = %52
  %57 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK3JPH6ResultINS_3RefINS_5ShapeEEEE3GetEv(ptr noundef nonnull align 8 dereferenceable(33) %4)
          to label %58 unwind label %286

58:                                               ; preds = %56
  invoke void @_ZN3JPH8RefConstINS_5ShapeEEC2ERKNS_3RefIS1_EE(ptr noundef nonnull align 8 dereferenceable(8) %3, ptr noundef nonnull align 8 dereferenceable(8) %57)
          to label %59 unwind label %286

59:                                               ; preds = %58
  call void @_ZN3JPH6ResultINS_3RefINS_5ShapeEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(33) %4) #11
  call void @_ZN3JPH22DecoratedShapeSettingsD2Ev(ptr noundef nonnull align 16 dereferenceable(96) %5) #11
  call void @llvm.lifetime.end.p0(i64 96, ptr nonnull %5) #11
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %4) #11
  call void @llvm.lifetime.start.p0(i64 256, ptr nonnull %8) #11
  %60 = call noundef ptr @_ZNK3JPH8RefConstINS_5ShapeEEcvPKS1_Ev(ptr noundef nonnull align 8 dereferenceable(8) %3)
  %.sroa.0105.0.copyload = load double, ptr %2, align 16
  %.sroa.2106.0..sroa_idx = getelementptr inbounds i8, ptr %2, i64 8
  %.sroa.2106.0.copyload = load double, ptr %.sroa.2106.0..sroa_idx, align 8, !tbaa !5
  %61 = invoke { double, double } @_ZN3JPH4Vec36sAxisZEv()
          to label %62 unwind label %290

62:                                               ; preds = %59
  %63 = extractvalue { double, double } %61, 0
  %64 = extractvalue { double, double } %61, 1
  %65 = load float, ptr @_ZN21VehicleConstraintTest17sInitialRollAngleE, align 4, !tbaa !8
  %66 = invoke { double, double } @_ZN3JPH4Quat9sRotationENS_4Vec3Ef(double %63, double %64, float noundef %65)
          to label %67 unwind label %290

67:                                               ; preds = %62
  %68 = extractvalue { double, double } %66, 0
  %69 = extractvalue { double, double } %66, 1
  invoke void @_ZN3JPH20BodyCreationSettingsC2EPKNS_5ShapeENS_4Vec3ENS_4QuatENS_11EMotionTypeEt(ptr noundef nonnull align 16 dereferenceable(256) %8, ptr noundef %60, double %.sroa.0105.0.copyload, double %.sroa.2106.0.copyload, double %68, double %69, i8 noundef zeroext 2, i16 noundef zeroext 1)
          to label %70 unwind label %290

70:                                               ; preds = %67
  %71 = getelementptr inbounds i8, ptr %8, i64 144
  store i8 1, ptr %71, align 16, !tbaa !10
  %72 = getelementptr inbounds i8, ptr %8, i64 160
  store float 1.500000e+03, ptr %72, align 16, !tbaa !30
  %73 = getelementptr inbounds i8, ptr %0, i64 24
  %74 = load ptr, ptr %73, align 8, !tbaa !31
  %75 = invoke noundef ptr @_ZN3JPH13BodyInterface10CreateBodyERKNS_20BodyCreationSettingsE(ptr noundef nonnull align 8 dereferenceable(24) %74, ptr noundef nonnull align 16 dereferenceable(256) %8)
          to label %76 unwind label %292

76:                                               ; preds = %70
  %77 = getelementptr inbounds i8, ptr %0, i64 136
  store ptr %75, ptr %77, align 8, !tbaa !37
  %78 = load ptr, ptr %73, align 8, !tbaa !31
  %79 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK3JPH4Body5GetIDEv(ptr noundef nonnull align 16 dereferenceable(122) %75)
  invoke void @_ZN3JPH13BodyInterface7AddBodyERKNS_6BodyIDENS_11EActivationE(ptr noundef nonnull align 8 dereferenceable(24) %78, ptr noundef nonnull align 4 dereferenceable(4) %79, i32 noundef 0)
          to label %80 unwind label %292

80:                                               ; preds = %76
  call void @llvm.lifetime.start.p0(i64 144, ptr nonnull %9) #11
  invoke void @_ZN3JPH25VehicleConstraintSettingsC2Ev(ptr noundef nonnull align 16 dereferenceable(144) %9)
          to label %81 unwind label %294

81:                                               ; preds = %80
  %82 = getelementptr inbounds i8, ptr %9, i64 28
  store float 0x3FB99999A0000000, ptr %82, align 4, !tbaa !42
  %83 = load float, ptr @_ZN21VehicleConstraintTest13sMaxRollAngleE, align 4, !tbaa !8
  %84 = getelementptr inbounds i8, ptr %9, i64 80
  store float %83, ptr %84, align 16, !tbaa !48
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %10) #11
  %85 = load float, ptr @_ZN21VehicleConstraintTest29sFrontSuspensionSidewaysAngleE, align 4, !tbaa !8
  %86 = invoke noundef float @_ZN3JPH3TanEf(float noundef %85)
          to label %87 unwind label %296

87:                                               ; preds = %81
  %88 = load float, ptr @_ZN21VehicleConstraintTest28sFrontSuspensionForwardAngleE, align 4, !tbaa !8
  %89 = invoke noundef float @_ZN3JPH3TanEf(float noundef %88)
          to label %90 unwind label %296

90:                                               ; preds = %87
  call void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %10, float noundef %86, float noundef -1.000000e+00, float noundef %89)
  %91 = invoke { double, double } @_ZNK3JPH4Vec310NormalizedEv(ptr noundef nonnull align 16 dereferenceable(16) %10)
          to label %92 unwind label %296

92:                                               ; preds = %90
  %93 = extractvalue { double, double } %91, 0
  %94 = extractvalue { double, double } %91, 1
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %10) #11
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %11) #11
  %95 = load float, ptr @_ZN21VehicleConstraintTest18sFrontKingPinAngleE, align 4, !tbaa !8
  %96 = invoke noundef float @_ZN3JPH3TanEf(float noundef %95)
          to label %97 unwind label %298

97:                                               ; preds = %92
  %98 = load float, ptr @_ZN21VehicleConstraintTest17sFrontCasterAngleE, align 4, !tbaa !8
  %99 = invoke noundef float @_ZN3JPH3TanEf(float noundef %98)
          to label %100 unwind label %298

100:                                              ; preds = %97
  %101 = fneg float %96
  %102 = fneg float %99
  call void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %11, float noundef %101, float noundef 1.000000e+00, float noundef %102)
  %103 = invoke { double, double } @_ZNK3JPH4Vec310NormalizedEv(ptr noundef nonnull align 16 dereferenceable(16) %11)
          to label %104 unwind label %298

104:                                              ; preds = %100
  %105 = extractvalue { double, double } %103, 0
  %106 = extractvalue { double, double } %103, 1
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %11) #11
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %12) #11
  %107 = load float, ptr @_ZN21VehicleConstraintTest12sFrontCamberE, align 4, !tbaa !8
  %108 = invoke noundef float @_ZN3JPH3SinEf(float noundef %107)
          to label %109 unwind label %300

109:                                              ; preds = %104
  %110 = load float, ptr @_ZN21VehicleConstraintTest12sFrontCamberE, align 4, !tbaa !8
  %111 = invoke noundef float @_ZN3JPH3CosEf(float noundef %110)
          to label %112 unwind label %300

112:                                              ; preds = %109
  call void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %12, float noundef %108, float noundef %111, float noundef 0.000000e+00)
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %13) #11
  %113 = load float, ptr @_ZN21VehicleConstraintTest9sFrontToeE, align 4, !tbaa !8
  %114 = invoke noundef float @_ZN3JPH3SinEf(float noundef %113)
          to label %115 unwind label %302

115:                                              ; preds = %112
  %116 = load float, ptr @_ZN21VehicleConstraintTest9sFrontToeE, align 4, !tbaa !8
  %117 = invoke noundef float @_ZN3JPH3CosEf(float noundef %116)
          to label %118 unwind label %302

118:                                              ; preds = %115
  %119 = fneg float %114
  call void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %13, float noundef %119, float noundef 0.000000e+00, float noundef %117)
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %14) #11
  %120 = load float, ptr @_ZN21VehicleConstraintTest28sRearSuspensionSidewaysAngleE, align 4, !tbaa !8
  %121 = invoke noundef float @_ZN3JPH3TanEf(float noundef %120)
          to label %122 unwind label %304

122:                                              ; preds = %118
  %123 = load float, ptr @_ZN21VehicleConstraintTest27sRearSuspensionForwardAngleE, align 4, !tbaa !8
  %124 = invoke noundef float @_ZN3JPH3TanEf(float noundef %123)
          to label %125 unwind label %304

125:                                              ; preds = %122
  call void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %14, float noundef %121, float noundef -1.000000e+00, float noundef %124)
  %126 = invoke { double, double } @_ZNK3JPH4Vec310NormalizedEv(ptr noundef nonnull align 16 dereferenceable(16) %14)
          to label %127 unwind label %304

127:                                              ; preds = %125
  %128 = extractvalue { double, double } %126, 0
  %129 = extractvalue { double, double } %126, 1
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %14) #11
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %15) #11
  %130 = load float, ptr @_ZN21VehicleConstraintTest17sRearKingPinAngleE, align 4, !tbaa !8
  %131 = invoke noundef float @_ZN3JPH3TanEf(float noundef %130)
          to label %132 unwind label %306

132:                                              ; preds = %127
  %133 = load float, ptr @_ZN21VehicleConstraintTest16sRearCasterAngleE, align 4, !tbaa !8
  %134 = invoke noundef float @_ZN3JPH3TanEf(float noundef %133)
          to label %135 unwind label %306

135:                                              ; preds = %132
  %136 = fneg float %131
  %137 = fneg float %134
  call void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %15, float noundef %136, float noundef 1.000000e+00, float noundef %137)
  %138 = invoke { double, double } @_ZNK3JPH4Vec310NormalizedEv(ptr noundef nonnull align 16 dereferenceable(16) %15)
          to label %139 unwind label %306

139:                                              ; preds = %135
  %140 = extractvalue { double, double } %138, 0
  %141 = extractvalue { double, double } %138, 1
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %15) #11
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %16) #11
  %142 = load float, ptr @_ZN21VehicleConstraintTest11sRearCamberE, align 4, !tbaa !8
  %143 = invoke noundef float @_ZN3JPH3SinEf(float noundef %142)
          to label %144 unwind label %308

144:                                              ; preds = %139
  %145 = load float, ptr @_ZN21VehicleConstraintTest11sRearCamberE, align 4, !tbaa !8
  %146 = invoke noundef float @_ZN3JPH3CosEf(float noundef %145)
          to label %147 unwind label %308

147:                                              ; preds = %144
  call void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %16, float noundef %143, float noundef %146, float noundef 0.000000e+00)
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %17) #11
  %148 = load float, ptr @_ZN21VehicleConstraintTest8sRearToeE, align 4, !tbaa !8
  %149 = invoke noundef float @_ZN3JPH3SinEf(float noundef %148)
          to label %150 unwind label %310

150:                                              ; preds = %147
  %151 = load float, ptr @_ZN21VehicleConstraintTest8sRearToeE, align 4, !tbaa !8
  %152 = invoke noundef float @_ZN3JPH3CosEf(float noundef %151)
          to label %153 unwind label %310

153:                                              ; preds = %150
  %154 = fneg float %149
  call void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %17, float noundef %154, float noundef 0.000000e+00, float noundef %152)
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %18) #11
  call void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %18, float noundef -1.000000e+00, float noundef 1.000000e+00, float noundef 1.000000e+00)
  %155 = invoke noundef ptr @_ZN3JPH15WheelSettingsWVnwEm(i64 noundef 224)
          to label %156 unwind label %312

156:                                              ; preds = %153
  invoke void @_ZN3JPH15WheelSettingsWVC1Ev(ptr noundef nonnull align 16 dereferenceable(216) %155)
          to label %157 unwind label %314

157:                                              ; preds = %156
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %19) #11
  call void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %19, float noundef 0x3FECCCCCC0000000, float noundef 0xBFC70A3D60000000, float noundef 0x3FF6666660000000)
  %158 = getelementptr inbounds i8, ptr %155, i64 16
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 16 dereferenceable(16) %158, ptr noundef nonnull align 16 dereferenceable(16) %19, i64 16, i1 false), !tbaa.struct !53
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %19) #11
  %159 = getelementptr inbounds i8, ptr %155, i64 48
  store double %93, ptr %159, align 16
  %.sroa.6100.0..sroa_idx = getelementptr inbounds i8, ptr %155, i64 56
  store double %94, ptr %.sroa.6100.0..sroa_idx, align 8, !tbaa !5
  %160 = getelementptr inbounds i8, ptr %155, i64 64
  store double %105, ptr %160, align 16
  %.sroa.698.0..sroa_idx = getelementptr inbounds i8, ptr %155, i64 72
  store double %106, ptr %.sroa.698.0..sroa_idx, align 8, !tbaa !5
  %161 = getelementptr inbounds i8, ptr %155, i64 80
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 16 dereferenceable(16) %161, ptr noundef nonnull align 16 dereferenceable(16) %12, i64 16, i1 false), !tbaa.struct !53
  %162 = getelementptr inbounds i8, ptr %155, i64 96
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 16 dereferenceable(16) %162, ptr noundef nonnull align 16 dereferenceable(16) %13, i64 16, i1 false), !tbaa.struct !53
  %163 = load float, ptr @_ZN21VehicleConstraintTest25sFrontSuspensionMinLengthE, align 4, !tbaa !8
  %164 = getelementptr inbounds i8, ptr %155, i64 112
  store float %163, ptr %164, align 16, !tbaa !54
  %165 = load float, ptr @_ZN21VehicleConstraintTest25sFrontSuspensionMaxLengthE, align 4, !tbaa !8
  %166 = getelementptr inbounds i8, ptr %155, i64 116
  store float %165, ptr %166, align 4, !tbaa !59
  %167 = load float, ptr @_ZN21VehicleConstraintTest25sFrontSuspensionFrequencyE, align 4, !tbaa !8
  %168 = getelementptr inbounds i8, ptr %155, i64 128
  store float %167, ptr %168, align 4, !tbaa !5
  %169 = load float, ptr @_ZN21VehicleConstraintTest23sFrontSuspensionDampingE, align 4, !tbaa !8
  %170 = getelementptr inbounds i8, ptr %155, i64 132
  store float %169, ptr %170, align 4, !tbaa !60
  %171 = load float, ptr @_ZN21VehicleConstraintTest17sMaxSteeringAngleE, align 4, !tbaa !8
  %172 = getelementptr inbounds i8, ptr %155, i64 156
  store float %171, ptr %172, align 4, !tbaa !61
  %173 = getelementptr inbounds i8, ptr %155, i64 212
  store float 0.000000e+00, ptr %173, align 4, !tbaa !65
  %174 = invoke noundef ptr @_ZN3JPH15WheelSettingsWVnwEm(i64 noundef 224)
          to label %175 unwind label %316

175:                                              ; preds = %157
  invoke void @_ZN3JPH15WheelSettingsWVC1Ev(ptr noundef nonnull align 16 dereferenceable(216) %174)
          to label %176 unwind label %318

176:                                              ; preds = %175
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %20) #11
  call void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %20, float noundef 0xBFECCCCCC0000000, float noundef 0xBFC70A3D60000000, float noundef 0x3FF6666660000000)
  %177 = getelementptr inbounds i8, ptr %174, i64 16
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 16 dereferenceable(16) %177, ptr noundef nonnull align 16 dereferenceable(16) %20, i64 16, i1 false), !tbaa.struct !53
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %20) #11
  %178 = invoke { double, double } @_ZNK3JPH4Vec3mlES0_(ptr noundef nonnull align 16 dereferenceable(16) %18, double %93, double %94)
          to label %179 unwind label %320

179:                                              ; preds = %176
  %180 = extractvalue { double, double } %178, 0
  %181 = extractvalue { double, double } %178, 1
  %182 = getelementptr inbounds i8, ptr %174, i64 48
  store double %180, ptr %182, align 16
  %.sroa.569.0..sroa_idx = getelementptr inbounds i8, ptr %174, i64 56
  store double %181, ptr %.sroa.569.0..sroa_idx, align 8, !tbaa !5
  %183 = invoke { double, double } @_ZNK3JPH4Vec3mlES0_(ptr noundef nonnull align 16 dereferenceable(16) %18, double %105, double %106)
          to label %184 unwind label %322

184:                                              ; preds = %179
  %185 = extractvalue { double, double } %183, 0
  %186 = extractvalue { double, double } %183, 1
  %187 = getelementptr inbounds i8, ptr %174, i64 64
  store double %185, ptr %187, align 16
  %.sroa.565.0..sroa_idx = getelementptr inbounds i8, ptr %174, i64 72
  store double %186, ptr %.sroa.565.0..sroa_idx, align 8, !tbaa !5
  %.sroa.058.0.copyload = load double, ptr %12, align 16
  %.sroa.259.0..sroa_idx = getelementptr inbounds i8, ptr %12, i64 8
  %.sroa.259.0.copyload = load double, ptr %.sroa.259.0..sroa_idx, align 8, !tbaa !5
  %188 = invoke { double, double } @_ZNK3JPH4Vec3mlES0_(ptr noundef nonnull align 16 dereferenceable(16) %18, double %.sroa.058.0.copyload, double %.sroa.259.0.copyload)
          to label %189 unwind label %324

189:                                              ; preds = %184
  %190 = extractvalue { double, double } %188, 0
  %191 = extractvalue { double, double } %188, 1
  %192 = getelementptr inbounds i8, ptr %174, i64 80
  store double %190, ptr %192, align 16
  %.sroa.561.0..sroa_idx = getelementptr inbounds i8, ptr %174, i64 88
  store double %191, ptr %.sroa.561.0..sroa_idx, align 8, !tbaa !5
  %.sroa.054.0.copyload = load double, ptr %13, align 16
  %.sroa.255.0..sroa_idx = getelementptr inbounds i8, ptr %13, i64 8
  %.sroa.255.0.copyload = load double, ptr %.sroa.255.0..sroa_idx, align 8, !tbaa !5
  %193 = invoke { double, double } @_ZNK3JPH4Vec3mlES0_(ptr noundef nonnull align 16 dereferenceable(16) %18, double %.sroa.054.0.copyload, double %.sroa.255.0.copyload)
          to label %194 unwind label %326

194:                                              ; preds = %189
  %195 = extractvalue { double, double } %193, 0
  %196 = extractvalue { double, double } %193, 1
  %197 = getelementptr inbounds i8, ptr %174, i64 96
  store double %195, ptr %197, align 16
  %.sroa.557.0..sroa_idx = getelementptr inbounds i8, ptr %174, i64 104
  store double %196, ptr %.sroa.557.0..sroa_idx, align 8, !tbaa !5
  %198 = load float, ptr @_ZN21VehicleConstraintTest25sFrontSuspensionMinLengthE, align 4, !tbaa !8
  %199 = getelementptr inbounds i8, ptr %174, i64 112
  store float %198, ptr %199, align 16, !tbaa !54
  %200 = load float, ptr @_ZN21VehicleConstraintTest25sFrontSuspensionMaxLengthE, align 4, !tbaa !8
  %201 = getelementptr inbounds i8, ptr %174, i64 116
  store float %200, ptr %201, align 4, !tbaa !59
  %202 = load float, ptr @_ZN21VehicleConstraintTest25sFrontSuspensionFrequencyE, align 4, !tbaa !8
  %203 = getelementptr inbounds i8, ptr %174, i64 128
  store float %202, ptr %203, align 4, !tbaa !5
  %204 = load float, ptr @_ZN21VehicleConstraintTest23sFrontSuspensionDampingE, align 4, !tbaa !8
  %205 = getelementptr inbounds i8, ptr %174, i64 132
  store float %204, ptr %205, align 4, !tbaa !60
  %206 = load float, ptr @_ZN21VehicleConstraintTest17sMaxSteeringAngleE, align 4, !tbaa !8
  %207 = getelementptr inbounds i8, ptr %174, i64 156
  store float %206, ptr %207, align 4, !tbaa !61
  %208 = getelementptr inbounds i8, ptr %174, i64 212
  store float 0.000000e+00, ptr %208, align 4, !tbaa !65
  %209 = invoke noundef ptr @_ZN3JPH15WheelSettingsWVnwEm(i64 noundef 224)
          to label %210 unwind label %328

210:                                              ; preds = %194
  invoke void @_ZN3JPH15WheelSettingsWVC1Ev(ptr noundef nonnull align 16 dereferenceable(216) %209)
          to label %211 unwind label %330

211:                                              ; preds = %210
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %21) #11
  call void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %21, float noundef 0x3FECCCCCC0000000, float noundef 0xBFC70A3D60000000, float noundef 0xBFF6666660000000)
  %212 = getelementptr inbounds i8, ptr %209, i64 16
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 16 dereferenceable(16) %212, ptr noundef nonnull align 16 dereferenceable(16) %21, i64 16, i1 false), !tbaa.struct !53
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %21) #11
  %213 = getelementptr inbounds i8, ptr %209, i64 48
  store double %128, ptr %213, align 16
  %.sroa.696.0..sroa_idx = getelementptr inbounds i8, ptr %209, i64 56
  store double %129, ptr %.sroa.696.0..sroa_idx, align 8, !tbaa !5
  %214 = getelementptr inbounds i8, ptr %209, i64 64
  store double %140, ptr %214, align 16
  %.sroa.6.0..sroa_idx = getelementptr inbounds i8, ptr %209, i64 72
  store double %141, ptr %.sroa.6.0..sroa_idx, align 8, !tbaa !5
  %215 = getelementptr inbounds i8, ptr %209, i64 80
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 16 dereferenceable(16) %215, ptr noundef nonnull align 16 dereferenceable(16) %16, i64 16, i1 false), !tbaa.struct !53
  %216 = getelementptr inbounds i8, ptr %209, i64 96
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 16 dereferenceable(16) %216, ptr noundef nonnull align 16 dereferenceable(16) %17, i64 16, i1 false), !tbaa.struct !53
  %217 = load float, ptr @_ZN21VehicleConstraintTest24sRearSuspensionMinLengthE, align 4, !tbaa !8
  %218 = getelementptr inbounds i8, ptr %209, i64 112
  store float %217, ptr %218, align 16, !tbaa !54
  %219 = load float, ptr @_ZN21VehicleConstraintTest24sRearSuspensionMaxLengthE, align 4, !tbaa !8
  %220 = getelementptr inbounds i8, ptr %209, i64 116
  store float %219, ptr %220, align 4, !tbaa !59
  %221 = load float, ptr @_ZN21VehicleConstraintTest24sRearSuspensionFrequencyE, align 4, !tbaa !8
  %222 = getelementptr inbounds i8, ptr %209, i64 128
  store float %221, ptr %222, align 4, !tbaa !5
  %223 = load float, ptr @_ZN21VehicleConstraintTest22sRearSuspensionDampingE, align 4, !tbaa !8
  %224 = getelementptr inbounds i8, ptr %209, i64 132
  store float %223, ptr %224, align 4, !tbaa !60
  %225 = getelementptr inbounds i8, ptr %209, i64 156
  store float 0.000000e+00, ptr %225, align 4, !tbaa !61
  %226 = invoke noundef ptr @_ZN3JPH15WheelSettingsWVnwEm(i64 noundef 224)
          to label %227 unwind label %332

227:                                              ; preds = %211
  invoke void @_ZN3JPH15WheelSettingsWVC1Ev(ptr noundef nonnull align 16 dereferenceable(216) %226)
          to label %228 unwind label %334

228:                                              ; preds = %227
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %22) #11
  call void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %22, float noundef 0xBFECCCCCC0000000, float noundef 0xBFC70A3D60000000, float noundef 0xBFF6666660000000)
  %229 = getelementptr inbounds i8, ptr %226, i64 16
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 16 dereferenceable(16) %229, ptr noundef nonnull align 16 dereferenceable(16) %22, i64 16, i1 false), !tbaa.struct !53
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %22) #11
  %230 = invoke { double, double } @_ZNK3JPH4Vec3mlES0_(ptr noundef nonnull align 16 dereferenceable(16) %18, double %128, double %129)
          to label %231 unwind label %336

231:                                              ; preds = %228
  %232 = extractvalue { double, double } %230, 0
  %233 = extractvalue { double, double } %230, 1
  %234 = getelementptr inbounds i8, ptr %226, i64 48
  store double %232, ptr %234, align 16
  %.sroa.531.0..sroa_idx = getelementptr inbounds i8, ptr %226, i64 56
  store double %233, ptr %.sroa.531.0..sroa_idx, align 8, !tbaa !5
  %235 = invoke { double, double } @_ZNK3JPH4Vec3mlES0_(ptr noundef nonnull align 16 dereferenceable(16) %18, double %140, double %141)
          to label %236 unwind label %338

236:                                              ; preds = %231
  %237 = extractvalue { double, double } %235, 0
  %238 = extractvalue { double, double } %235, 1
  %239 = getelementptr inbounds i8, ptr %226, i64 64
  store double %237, ptr %239, align 16
  %.sroa.527.0..sroa_idx = getelementptr inbounds i8, ptr %226, i64 72
  store double %238, ptr %.sroa.527.0..sroa_idx, align 8, !tbaa !5
  %.sroa.020.0.copyload = load double, ptr %16, align 16
  %.sroa.221.0..sroa_idx = getelementptr inbounds i8, ptr %16, i64 8
  %.sroa.221.0.copyload = load double, ptr %.sroa.221.0..sroa_idx, align 8, !tbaa !5
  %240 = invoke { double, double } @_ZNK3JPH4Vec3mlES0_(ptr noundef nonnull align 16 dereferenceable(16) %18, double %.sroa.020.0.copyload, double %.sroa.221.0.copyload)
          to label %241 unwind label %340

241:                                              ; preds = %236
  %242 = extractvalue { double, double } %240, 0
  %243 = extractvalue { double, double } %240, 1
  %244 = getelementptr inbounds i8, ptr %226, i64 80
  store double %242, ptr %244, align 16
  %.sroa.523.0..sroa_idx = getelementptr inbounds i8, ptr %226, i64 88
  store double %243, ptr %.sroa.523.0..sroa_idx, align 8, !tbaa !5
  %.sroa.017.0.copyload = load double, ptr %17, align 16
  %.sroa.218.0..sroa_idx = getelementptr inbounds i8, ptr %17, i64 8
  %.sroa.218.0.copyload = load double, ptr %.sroa.218.0..sroa_idx, align 8, !tbaa !5
  %245 = invoke { double, double } @_ZNK3JPH4Vec3mlES0_(ptr noundef nonnull align 16 dereferenceable(16) %18, double %.sroa.017.0.copyload, double %.sroa.218.0.copyload)
          to label %246 unwind label %342

246:                                              ; preds = %241
  %247 = extractvalue { double, double } %245, 0
  %248 = extractvalue { double, double } %245, 1
  %249 = getelementptr inbounds i8, ptr %226, i64 96
  store double %247, ptr %249, align 16
  %.sroa.5.0..sroa_idx = getelementptr inbounds i8, ptr %226, i64 104
  store double %248, ptr %.sroa.5.0..sroa_idx, align 8, !tbaa !5
  %250 = load float, ptr @_ZN21VehicleConstraintTest24sRearSuspensionMinLengthE, align 4, !tbaa !8
  %251 = getelementptr inbounds i8, ptr %226, i64 112
  store float %250, ptr %251, align 16, !tbaa !54
  %252 = load float, ptr @_ZN21VehicleConstraintTest24sRearSuspensionMaxLengthE, align 4, !tbaa !8
  %253 = getelementptr inbounds i8, ptr %226, i64 116
  store float %252, ptr %253, align 4, !tbaa !59
  %254 = load float, ptr @_ZN21VehicleConstraintTest24sRearSuspensionFrequencyE, align 4, !tbaa !8
  %255 = getelementptr inbounds i8, ptr %226, i64 128
  store float %254, ptr %255, align 4, !tbaa !5
  %256 = load float, ptr @_ZN21VehicleConstraintTest22sRearSuspensionDampingE, align 4, !tbaa !8
  %257 = getelementptr inbounds i8, ptr %226, i64 132
  store float %256, ptr %257, align 4, !tbaa !60
  %258 = getelementptr inbounds i8, ptr %226, i64 156
  store float 0.000000e+00, ptr %258, align 4, !tbaa !61
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %23) #11
  invoke void @_ZN3JPH3RefINS_13WheelSettingsEEC2EPS1_(ptr noundef nonnull align 8 dereferenceable(8) %23, ptr noundef nonnull %155)
          to label %260 unwind label %.thread

.thread:                                          ; preds = %246
  %259 = landingpad { ptr, i32 }
          cleanup
  br label %.loopexit

260:                                              ; preds = %246
  %261 = getelementptr inbounds i8, ptr %23, i64 8
  invoke void @_ZN3JPH3RefINS_13WheelSettingsEEC2EPS1_(ptr noundef nonnull align 8 dereferenceable(8) %261, ptr noundef nonnull %174)
          to label %262 unwind label %344

262:                                              ; preds = %260
  %263 = getelementptr inbounds i8, ptr %23, i64 16
  invoke void @_ZN3JPH3RefINS_13WheelSettingsEEC2EPS1_(ptr noundef nonnull align 8 dereferenceable(8) %263, ptr noundef nonnull %209)
          to label %264 unwind label %344

264:                                              ; preds = %262
  %265 = getelementptr inbounds i8, ptr %23, i64 24
  invoke void @_ZN3JPH3RefINS_13WheelSettingsEEC2EPS1_(ptr noundef nonnull align 8 dereferenceable(8) %265, ptr noundef nonnull %226)
          to label %266 unwind label %344

266:                                              ; preds = %264
  %267 = getelementptr inbounds i8, ptr %9, i64 88
  %268 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZN3JPH5ArrayINS_3RefINS_13WheelSettingsEEENS_12STLAllocatorIS3_EEEaSESt16initializer_listIS3_E(ptr noundef nonnull align 8 dereferenceable(24) %267, ptr nonnull %23, i64 4)
          to label %269 unwind label %.loopexit.loopexit

269:                                              ; preds = %266
  %270 = getelementptr inbounds i8, ptr %23, i64 24
  call void @_ZN3JPH3RefINS_13WheelSettingsEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %270) #11
  %271 = getelementptr inbounds i8, ptr %23, i64 16
  call void @_ZN3JPH3RefINS_13WheelSettingsEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %271) #11
  %272 = getelementptr inbounds i8, ptr %23, i64 8
  call void @_ZN3JPH3RefINS_13WheelSettingsEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %272) #11
  call void @_ZN3JPH3RefINS_13WheelSettingsEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %23) #11
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %23) #11
  %273 = call noundef ptr @_ZN3JPH5ArrayINS_3RefINS_13WheelSettingsEEENS_12STLAllocatorIS3_EEE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %267)
  %274 = call noundef ptr @_ZN3JPH5ArrayINS_3RefINS_13WheelSettingsEEENS_12STLAllocatorIS3_EEE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %267)
  %.not162 = icmp eq ptr %273, %274
  br i1 %.not162, label %._crit_edge, label %.lr.ph

._crit_edge:                                      ; preds = %.lr.ph, %269
  %275 = invoke noundef ptr @_ZN3JPH32WheeledVehicleControllerSettingsnwEm(i64 noundef 176)
          to label %357 unwind label %386

276:                                              ; preds = %28, %1
  %277 = landingpad { ptr, i32 }
          cleanup
  tail call void @_ZN3JPH25VehicleCollisionTesterRaydlEPv(ptr noundef %26) #11
  br label %442

278:                                              ; preds = %37, %32
  %279 = landingpad { ptr, i32 }
          cleanup
  tail call void @_ZN3JPH32VehicleCollisionTesterCastSpheredlEPv(ptr noundef %35) #11
  br label %442

280:                                              ; preds = %41
  %281 = landingpad { ptr, i32 }
          cleanup
  tail call void @_ZN3JPH34VehicleCollisionTesterCastCylinderdlEPv(ptr noundef %44) #11
  br label %442

282:                                              ; preds = %45
  %283 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3JPH8BoxShapedlEPv(ptr noundef %48) #11
  br label %289

284:                                              ; preds = %52
  %285 = landingpad { ptr, i32 }
          cleanup
  br label %288

286:                                              ; preds = %58, %56
  %287 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3JPH6ResultINS_3RefINS_5ShapeEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(33) %4) #11
  br label %288

288:                                              ; preds = %286, %284
  %.pn = phi { ptr, i32 } [ %287, %286 ], [ %285, %284 ]
  call void @_ZN3JPH22DecoratedShapeSettingsD2Ev(ptr noundef nonnull align 16 dereferenceable(96) %5) #11
  br label %289

289:                                              ; preds = %288, %282
  %.pn.pn = phi { ptr, i32 } [ %.pn, %288 ], [ %283, %282 ]
  call void @llvm.lifetime.end.p0(i64 96, ptr nonnull %5) #11
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %4) #11
  br label %441

290:                                              ; preds = %67, %62, %59
  %291 = landingpad { ptr, i32 }
          cleanup
  br label %440

292:                                              ; preds = %76, %70
  %293 = landingpad { ptr, i32 }
          cleanup
  br label %439

294:                                              ; preds = %80
  %295 = landingpad { ptr, i32 }
          cleanup
  br label %438

296:                                              ; preds = %90, %87, %81
  %297 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %10) #11
  br label %437

298:                                              ; preds = %100, %97, %92
  %299 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %11) #11
  br label %437

300:                                              ; preds = %109, %104
  %301 = landingpad { ptr, i32 }
          cleanup
  br label %436

302:                                              ; preds = %115, %112
  %303 = landingpad { ptr, i32 }
          cleanup
  br label %435

304:                                              ; preds = %125, %122, %118
  %305 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %14) #11
  br label %435

306:                                              ; preds = %135, %132, %127
  %307 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %15) #11
  br label %435

308:                                              ; preds = %144, %139
  %309 = landingpad { ptr, i32 }
          cleanup
  br label %434

310:                                              ; preds = %150, %147
  %311 = landingpad { ptr, i32 }
          cleanup
  br label %433

312:                                              ; preds = %153
  %313 = landingpad { ptr, i32 }
          cleanup
  br label %432

314:                                              ; preds = %156
  %315 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3JPH15WheelSettingsWVdlEPv(ptr noundef %155) #11
  br label %432

316:                                              ; preds = %157
  %317 = landingpad { ptr, i32 }
          cleanup
  br label %432

318:                                              ; preds = %175
  %319 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3JPH15WheelSettingsWVdlEPv(ptr noundef %174) #11
  br label %432

320:                                              ; preds = %176
  %321 = landingpad { ptr, i32 }
          cleanup
  br label %432

322:                                              ; preds = %179
  %323 = landingpad { ptr, i32 }
          cleanup
  br label %432

324:                                              ; preds = %184
  %325 = landingpad { ptr, i32 }
          cleanup
  br label %432

326:                                              ; preds = %189
  %327 = landingpad { ptr, i32 }
          cleanup
  br label %432

328:                                              ; preds = %194
  %329 = landingpad { ptr, i32 }
          cleanup
  br label %432

330:                                              ; preds = %210
  %331 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3JPH15WheelSettingsWVdlEPv(ptr noundef %209) #11
  br label %432

332:                                              ; preds = %211
  %333 = landingpad { ptr, i32 }
          cleanup
  br label %432

334:                                              ; preds = %227
  %335 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3JPH15WheelSettingsWVdlEPv(ptr noundef %226) #11
  br label %432

336:                                              ; preds = %228
  %337 = landingpad { ptr, i32 }
          cleanup
  br label %432

338:                                              ; preds = %231
  %339 = landingpad { ptr, i32 }
          cleanup
  br label %432

340:                                              ; preds = %236
  %341 = landingpad { ptr, i32 }
          cleanup
  br label %432

342:                                              ; preds = %241
  %343 = landingpad { ptr, i32 }
          cleanup
  br label %432

344:                                              ; preds = %264, %262, %260
  %.0134 = phi ptr [ %265, %264 ], [ %263, %262 ], [ %261, %260 ]
  %345 = landingpad { ptr, i32 }
          cleanup
  br label %346

346:                                              ; preds = %344, %346
  %347 = phi ptr [ %.0134, %344 ], [ %348, %346 ]
  %348 = getelementptr inbounds i8, ptr %347, i64 -8
  call void @_ZN3JPH3RefINS_13WheelSettingsEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %348) #11
  %349 = icmp eq ptr %348, %23
  br i1 %349, label %.loopexit, label %346

.loopexit.loopexit:                               ; preds = %266
  %350 = landingpad { ptr, i32 }
          cleanup
  %351 = getelementptr inbounds i8, ptr %23, i64 24
  call void @_ZN3JPH3RefINS_13WheelSettingsEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %351) #11
  %352 = getelementptr inbounds i8, ptr %23, i64 16
  call void @_ZN3JPH3RefINS_13WheelSettingsEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %352) #11
  %353 = getelementptr inbounds i8, ptr %23, i64 8
  call void @_ZN3JPH3RefINS_13WheelSettingsEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %353) #11
  call void @_ZN3JPH3RefINS_13WheelSettingsEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %23) #11
  br label %.loopexit

.loopexit:                                        ; preds = %346, %.loopexit.loopexit, %.thread
  %.pn139 = phi { ptr, i32 } [ %259, %.thread ], [ %350, %.loopexit.loopexit ], [ %345, %346 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %23) #11
  br label %432

.lr.ph:                                           ; preds = %269, %.lr.ph
  %.0135163 = phi ptr [ %356, %.lr.ph ], [ %273, %269 ]
  %354 = call noundef ptr @_ZNK3JPH3RefINS_13WheelSettingsEEcvPS1_Ev(ptr noundef nonnull align 8 dereferenceable(8) %.0135163)
  %355 = getelementptr inbounds i8, ptr %354, i64 136
  store <2 x float> <float 0x3FD3333340000000, float 0x3FB99999A0000000>, ptr %355, align 8, !tbaa !8
  %356 = getelementptr inbounds i8, ptr %.0135163, i64 8
  %.not = icmp eq ptr %356, %274
  br i1 %.not, label %._crit_edge, label %.lr.ph

357:                                              ; preds = %._crit_edge
  invoke void @_ZN3JPH32WheeledVehicleControllerSettingsC2Ev(ptr noundef nonnull align 8 dereferenceable(172) %275)
          to label %358 unwind label %388

358:                                              ; preds = %357
  %359 = getelementptr inbounds i8, ptr %9, i64 136
  %360 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3JPH3RefINS_25VehicleControllerSettingsEEaSEPS1_(ptr noundef nonnull align 8 dereferenceable(8) %359, ptr noundef nonnull %275)
          to label %361 unwind label %386

361:                                              ; preds = %358
  %362 = getelementptr inbounds i8, ptr %275, i64 144
  %363 = load i8, ptr @_ZN21VehicleConstraintTest15sFourWheelDriveE, align 1, !tbaa !66, !range !67, !noundef !68
  %364 = trunc nuw i8 %363 to i1
  %365 = select i1 %364, i64 2, i64 1
  invoke void @_ZN3JPH5ArrayINS_27VehicleDifferentialSettingsENS_12STLAllocatorIS1_EEE6resizeEm(ptr noundef nonnull align 8 dereferenceable(24) %362, i64 noundef %365)
          to label %366 unwind label %386

366:                                              ; preds = %361
  %367 = invoke noundef nonnull align 4 dereferenceable(24) ptr @_ZN3JPH5ArrayINS_27VehicleDifferentialSettingsENS_12STLAllocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %362, i64 noundef 0)
          to label %368 unwind label %386

368:                                              ; preds = %366
  store i32 0, ptr %367, align 4, !tbaa !69
  %369 = invoke noundef nonnull align 4 dereferenceable(24) ptr @_ZN3JPH5ArrayINS_27VehicleDifferentialSettingsENS_12STLAllocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %362, i64 noundef 0)
          to label %370 unwind label %386

370:                                              ; preds = %368
  %371 = getelementptr inbounds i8, ptr %369, i64 4
  store i32 1, ptr %371, align 4, !tbaa !71
  %372 = load i8, ptr @_ZN21VehicleConstraintTest15sFourWheelDriveE, align 1, !tbaa !66, !range !67, !noundef !68
  %373 = trunc nuw i8 %372 to i1
  br i1 %373, label %374, label %390

374:                                              ; preds = %370
  %375 = invoke noundef nonnull align 4 dereferenceable(24) ptr @_ZN3JPH5ArrayINS_27VehicleDifferentialSettingsENS_12STLAllocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %362, i64 noundef 1)
          to label %376 unwind label %386

376:                                              ; preds = %374
  store i32 2, ptr %375, align 4, !tbaa !69
  %377 = invoke noundef nonnull align 4 dereferenceable(24) ptr @_ZN3JPH5ArrayINS_27VehicleDifferentialSettingsENS_12STLAllocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %362, i64 noundef 1)
          to label %378 unwind label %386

378:                                              ; preds = %376
  %379 = getelementptr inbounds i8, ptr %377, i64 4
  store i32 3, ptr %379, align 4, !tbaa !71
  %380 = invoke noundef nonnull align 4 dereferenceable(24) ptr @_ZN3JPH5ArrayINS_27VehicleDifferentialSettingsENS_12STLAllocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %362, i64 noundef 1)
          to label %381 unwind label %386

381:                                              ; preds = %378
  %382 = getelementptr inbounds i8, ptr %380, i64 20
  store float 5.000000e-01, ptr %382, align 4, !tbaa !72
  %383 = invoke noundef nonnull align 4 dereferenceable(24) ptr @_ZN3JPH5ArrayINS_27VehicleDifferentialSettingsENS_12STLAllocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %362, i64 noundef 0)
          to label %384 unwind label %386

384:                                              ; preds = %381
  %385 = getelementptr inbounds i8, ptr %383, i64 20
  store float 5.000000e-01, ptr %385, align 4, !tbaa !72
  br label %390

386:                                              ; preds = %426, %420, %416, %410, %406, %402, %399, %397, %395, %393, %381, %378, %376, %374, %368, %366, %361, %358, %._crit_edge
  %387 = landingpad { ptr, i32 }
          cleanup
  br label %432

388:                                              ; preds = %357
  %389 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3JPH32WheeledVehicleControllerSettingsdlEPv(ptr noundef %275) #11
  br label %432

390:                                              ; preds = %384, %370
  %391 = load i8, ptr @_ZN21VehicleConstraintTest12sAntiRollbarE, align 1, !tbaa !66, !range !67, !noundef !68
  %392 = trunc nuw i8 %391 to i1
  br i1 %392, label %393, label %406

393:                                              ; preds = %390
  %394 = getelementptr inbounds i8, ptr %9, i64 112
  invoke void @_ZN3JPH5ArrayINS_18VehicleAntiRollBarENS_12STLAllocatorIS1_EEE6resizeEm(ptr noundef nonnull align 8 dereferenceable(24) %394, i64 noundef 2)
          to label %395 unwind label %386

395:                                              ; preds = %393
  %396 = invoke noundef nonnull align 4 dereferenceable(12) ptr @_ZN3JPH5ArrayINS_18VehicleAntiRollBarENS_12STLAllocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %394, i64 noundef 0)
          to label %397 unwind label %386

397:                                              ; preds = %395
  store i32 0, ptr %396, align 4, !tbaa !73
  %398 = invoke noundef nonnull align 4 dereferenceable(12) ptr @_ZN3JPH5ArrayINS_18VehicleAntiRollBarENS_12STLAllocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %394, i64 noundef 0)
          to label %399 unwind label %386

399:                                              ; preds = %397
  %400 = getelementptr inbounds i8, ptr %398, i64 4
  store i32 1, ptr %400, align 4, !tbaa !75
  %401 = invoke noundef nonnull align 4 dereferenceable(12) ptr @_ZN3JPH5ArrayINS_18VehicleAntiRollBarENS_12STLAllocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %394, i64 noundef 1)
          to label %402 unwind label %386

402:                                              ; preds = %399
  store i32 2, ptr %401, align 4, !tbaa !73
  %403 = invoke noundef nonnull align 4 dereferenceable(12) ptr @_ZN3JPH5ArrayINS_18VehicleAntiRollBarENS_12STLAllocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %394, i64 noundef 1)
          to label %404 unwind label %386

404:                                              ; preds = %402
  %405 = getelementptr inbounds i8, ptr %403, i64 4
  store i32 3, ptr %405, align 4, !tbaa !75
  br label %406

406:                                              ; preds = %404, %390
  %407 = invoke noundef ptr @_ZN3JPH10ConstraintnwEm(i64 noundef 416)
          to label %408 unwind label %386

408:                                              ; preds = %406
  %409 = load ptr, ptr %77, align 8, !tbaa !37
  invoke void @_ZN3JPH17VehicleConstraintC1ERNS_4BodyERKNS_25VehicleConstraintSettingsE(ptr noundef nonnull align 16 dereferenceable(408) %407, ptr noundef nonnull align 16 dereferenceable(122) %409, ptr noundef nonnull align 16 dereferenceable(144) %9)
          to label %410 unwind label %428

410:                                              ; preds = %408
  %411 = getelementptr inbounds i8, ptr %0, i64 144
  %412 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3JPH3RefINS_17VehicleConstraintEEaSEPS1_(ptr noundef nonnull align 8 dereferenceable(8) %411, ptr noundef nonnull %407)
          to label %413 unwind label %386

413:                                              ; preds = %410
  %414 = call noundef ptr @_ZNK3JPH3RefINS_17VehicleConstraintEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %411)
  %415 = call noundef ptr @_ZN3JPH17VehicleConstraint13GetControllerEv(ptr noundef nonnull align 16 dereferenceable(408) %414)
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %24) #11
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %25) #11
  call void @"_ZNSt8functionIFvjRfS0_ffffffEEC2IZN21VehicleConstraintTest10InitializeEvE3$_0vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %24, ptr noundef nonnull align 1 dereferenceable(1) %25) #11
  invoke void @_ZN3JPH24WheeledVehicleController25SetTireMaxImpulseCallbackERKSt8functionIFvjRfS2_ffffffEE(ptr noundef nonnull align 8 dereferenceable(256) %415, ptr noundef nonnull align 8 dereferenceable(32) %24)
          to label %416 unwind label %430

416:                                              ; preds = %413
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %24) #11
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %25) #11
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %24) #11
  %417 = getelementptr inbounds i8, ptr %0, i64 16
  %418 = load ptr, ptr %417, align 16, !tbaa !76
  %419 = call noundef ptr @_ZNK3JPH3RefINS_17VehicleConstraintEEcvPS1_Ev(ptr noundef nonnull align 8 dereferenceable(8) %411)
  invoke void @_ZN3JPH13PhysicsSystem13AddConstraintEPNS_10ConstraintE(ptr noundef nonnull align 16 dereferenceable(1172) %418, ptr noundef %419)
          to label %420 unwind label %386

420:                                              ; preds = %416
  %421 = load ptr, ptr %417, align 16, !tbaa !76
  %422 = call noundef ptr @_ZNK3JPH3RefINS_17VehicleConstraintEEcvPS1_Ev(ptr noundef nonnull align 8 dereferenceable(8) %411)
  %423 = icmp eq ptr %422, null
  %424 = getelementptr inbounds i8, ptr %422, i64 32
  %425 = select i1 %423, ptr null, ptr %424
  invoke void @_ZN3JPH13PhysicsSystem15AddStepListenerEPNS_19PhysicsStepListenerE(ptr noundef nonnull align 16 dereferenceable(1172) %421, ptr noundef %425)
          to label %426 unwind label %386

426:                                              ; preds = %420
  invoke void @_ZN21VehicleConstraintTest17UpdateCameraPivotEv(ptr noundef nonnull align 16 dereferenceable(260) %0)
          to label %427 unwind label %386

427:                                              ; preds = %426
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %18) #11
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %17) #11
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %16) #11
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %13) #11
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %12) #11
  call void @_ZN3JPH25VehicleConstraintSettingsD2Ev(ptr noundef nonnull align 16 dereferenceable(144) %9) #11
  call void @llvm.lifetime.end.p0(i64 144, ptr nonnull %9) #11
  call void @_ZN3JPH20BodyCreationSettingsD2Ev(ptr noundef nonnull align 16 dereferenceable(256) %8) #11
  call void @llvm.lifetime.end.p0(i64 256, ptr nonnull %8) #11
  call void @_ZN3JPH8RefConstINS_5ShapeEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %3) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %3) #11
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %2) #11
  ret void

428:                                              ; preds = %408
  %429 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3JPH10ConstraintdlEPv(ptr noundef %407) #11
  br label %432

430:                                              ; preds = %413
  %431 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %24) #11
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %25) #11
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %24) #11
  br label %432

432:                                              ; preds = %316, %318, %320, %322, %324, %326, %332, %334, %336, %338, %340, %342, %.loopexit, %430, %428, %388, %386, %330, %328, %314, %312
  %.pn141.pn.pn.pn.pn = phi { ptr, i32 } [ %315, %314 ], [ %313, %312 ], [ %327, %326 ], [ %325, %324 ], [ %323, %322 ], [ %321, %320 ], [ %319, %318 ], [ %317, %316 ], [ %331, %330 ], [ %329, %328 ], [ %.pn139, %.loopexit ], [ %343, %342 ], [ %341, %340 ], [ %339, %338 ], [ %337, %336 ], [ %335, %334 ], [ %333, %332 ], [ %387, %386 ], [ %431, %430 ], [ %429, %428 ], [ %389, %388 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %18) #11
  br label %433

433:                                              ; preds = %432, %310
  %.pn141.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn141.pn.pn.pn.pn, %432 ], [ %311, %310 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %17) #11
  br label %434

434:                                              ; preds = %433, %308
  %.pn141.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn141.pn.pn.pn.pn.pn, %433 ], [ %309, %308 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %16) #11
  br label %435

435:                                              ; preds = %304, %434, %306, %302
  %.pn141.pn.pn.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %303, %302 ], [ %305, %304 ], [ %.pn141.pn.pn.pn.pn.pn.pn, %434 ], [ %307, %306 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %13) #11
  br label %436

436:                                              ; preds = %435, %300
  %.pn141.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn141.pn.pn.pn.pn.pn.pn.pn.pn.pn, %435 ], [ %301, %300 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %12) #11
  br label %437

437:                                              ; preds = %298, %436, %296
  %.pn141.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %297, %296 ], [ %.pn141.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn, %436 ], [ %299, %298 ]
  call void @_ZN3JPH25VehicleConstraintSettingsD2Ev(ptr noundef nonnull align 16 dereferenceable(144) %9) #11
  br label %438

438:                                              ; preds = %437, %294
  %.pn141.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn141.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn, %437 ], [ %295, %294 ]
  call void @llvm.lifetime.end.p0(i64 144, ptr nonnull %9) #11
  br label %439

439:                                              ; preds = %438, %292
  %.pn141.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn141.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn, %438 ], [ %293, %292 ]
  call void @_ZN3JPH20BodyCreationSettingsD2Ev(ptr noundef nonnull align 16 dereferenceable(256) %8) #11
  br label %440

440:                                              ; preds = %439, %290
  %.pn141.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn141.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn, %439 ], [ %291, %290 ]
  call void @llvm.lifetime.end.p0(i64 256, ptr nonnull %8) #11
  call void @_ZN3JPH8RefConstINS_5ShapeEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %3) #11
  br label %441

441:                                              ; preds = %440, %289
  %.pn141.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn141.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn, %440 ], [ %.pn.pn, %289 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %3) #11
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %2) #11
  br label %442

442:                                              ; preds = %441, %280, %278, %276
  %.pn141.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn141.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn, %441 ], [ %281, %280 ], [ %279, %278 ], [ %277, %276 ]
  resume { ptr, i32 } %.pn141.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn
}

declare void @_ZN11VehicleTest10InitializeEv(ptr noundef nonnull align 8 dereferenceable(136)) unnamed_addr #3

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN3JPH25VehicleCollisionTesterRayC2EtNS_4Vec3Ef(ptr noundef nonnull align 16 dereferenceable(68), i16 noundef zeroext, double, double, float noundef) unnamed_addr #2 align 2

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN3JPH32VehicleCollisionTesterCastSphereC2EtfNS_4Vec3Ef(ptr noundef nonnull align 16 dereferenceable(68), i16 noundef zeroext, float noundef, double, double, float noundef) unnamed_addr #2 align 2

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

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

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

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

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

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

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

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

declare void @_ZNK3JPH31OffsetCenterOfMassShapeSettings6CreateEv(ptr dead_on_unwind writable sret(%"class.JPH::Result") align 8, ptr noundef nonnull align 16 dereferenceable(96)) unnamed_addr #3

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

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

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

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

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

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

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

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

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

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

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

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

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

; Function Attrs: alwaysinline mustprogress uwtable
declare dso_local noundef float @_ZN3JPH3TanEf(float noundef) local_unnamed_addr #4

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

; Function Attrs: alwaysinline mustprogress uwtable
declare dso_local noundef float @_ZN3JPH3SinEf(float noundef) local_unnamed_addr #4

; Function Attrs: alwaysinline mustprogress uwtable
declare dso_local noundef float @_ZN3JPH3CosEf(float noundef) local_unnamed_addr #4

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

declare void @_ZN3JPH15WheelSettingsWVC1Ev(ptr noundef nonnull align 16 dereferenceable(216)) unnamed_addr #3

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

declare void @_ZN3JPH17VehicleConstraintC1ERNS_4BodyERKNS_25VehicleConstraintSettingsE(ptr noundef nonnull align 16 dereferenceable(408), ptr noundef nonnull align 16 dereferenceable(122), ptr noundef nonnull align 16 dereferenceable(144)) unnamed_addr #3

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN3JPH24WheeledVehicleController25SetTireMaxImpulseCallbackERKSt8functionIFvjRfS2_ffffffEE(ptr noundef nonnull align 8 dereferenceable(256), ptr noundef nonnull align 8 dereferenceable(32)) local_unnamed_addr #2 align 2

; Function Attrs: mustprogress nounwind uwtable
declare hidden void @"_ZNSt8functionIFvjRfS0_ffffffEEC2IZN21VehicleConstraintTest10InitializeEvE3$_0vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 1 dereferenceable(1)) unnamed_addr #8 align 2

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

declare void @_ZN3JPH13PhysicsSystem15AddStepListenerEPNS_19PhysicsStepListenerE(ptr noundef nonnull align 16 dereferenceable(1172), ptr noundef) local_unnamed_addr #3

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local void @_ZN3JPH25VehicleConstraintSettingsD2Ev(ptr noundef nonnull align 16 dereferenceable(144)) unnamed_addr #1 align 2

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

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

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

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"omnipotent char", !7, i64 0}
!7 = !{!"Simple C++ TBAA"}
!8 = !{!9, !9, i64 0}
!9 = !{!"float", !6, i64 0}
!10 = !{!11, !25, i64 144}
!11 = !{!"_ZTSN3JPH20BodyCreationSettingsE", !12, i64 0, !13, i64 16, !12, i64 32, !12, i64 48, !15, i64 64, !16, i64 72, !17, i64 80, !21, i64 96, !22, i64 97, !23, i64 98, !23, i64 99, !23, i64 100, !23, i64 101, !23, i64 102, !24, i64 103, !23, i64 104, !23, i64 105, !9, i64 108, !9, i64 112, !9, i64 116, !9, i64 120, !9, i64 124, !9, i64 128, !9, i64 132, !20, i64 136, !20, i64 140, !25, i64 144, !9, i64 148, !26, i64 160, !28, i64 240, !29, i64 248}
!12 = !{!"_ZTSN3JPH4Vec3E", !6, i64 0}
!13 = !{!"_ZTSN3JPH4QuatE", !14, i64 0}
!14 = !{!"_ZTSN3JPH4Vec4E", !6, i64 0}
!15 = !{!"long", !6, i64 0}
!16 = !{!"short", !6, i64 0}
!17 = !{!"_ZTSN3JPH14CollisionGroupE", !18, i64 0, !20, i64 8, !20, i64 12}
!18 = !{!"_ZTSN3JPH8RefConstINS_11GroupFilterEEE", !19, i64 0}
!19 = !{!"any pointer", !6, i64 0}
!20 = !{!"int", !6, i64 0}
!21 = !{!"_ZTSN3JPH11EMotionTypeE", !6, i64 0}
!22 = !{!"_ZTSN3JPH12EAllowedDOFsE", !6, i64 0}
!23 = !{!"bool", !6, i64 0}
!24 = !{!"_ZTSN3JPH14EMotionQualityE", !6, i64 0}
!25 = !{!"_ZTSN3JPH23EOverrideMassPropertiesE", !6, i64 0}
!26 = !{!"_ZTSN3JPH14MassPropertiesE", !9, i64 0, !27, i64 16}
!27 = !{!"_ZTSN3JPH5Mat44E", !6, i64 0}
!28 = !{!"_ZTSN3JPH8RefConstINS_13ShapeSettingsEEE", !19, i64 0}
!29 = !{!"_ZTSN3JPH8RefConstINS_5ShapeEEE", !19, i64 0}
!30 = !{!11, !9, i64 160}
!31 = !{!32, !19, i64 24}
!32 = !{!"_ZTS4Test", !19, i64 8, !19, i64 16, !19, i64 24, !19, i64 32, !19, i64 40, !23, i64 48, !33, i64 56}
!33 = !{!"_ZTSSt13unordered_mapIN3JPH6BodyIDENSt7__cxx1112basic_stringIcSt11char_traitsIcENS0_12STLAllocatorIcEEEESt4hashIS1_ESt8equal_toIS1_ESaISt4pairIKS1_S8_EEE", !34, i64 0}
!34 = !{!"_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", !19, i64 0, !15, i64 8, !35, i64 16, !15, i64 24, !36, i64 32, !19, i64 48}
!35 = !{!"_ZTSNSt8__detail15_Hash_node_baseE", !19, i64 0}
!36 = !{!"_ZTSNSt8__detail20_Prime_rehash_policyE", !9, i64 0, !15, i64 8}
!37 = !{!38, !19, i64 136}
!38 = !{!"_ZTS21VehicleConstraintTest", !39, i64 0, !19, i64 136, !41, i64 144, !6, i64 152, !27, i64 176, !9, i64 240, !9, i64 244, !9, i64 248, !9, i64 252, !9, i64 256}
!39 = !{!"_ZTS11VehicleTest", !32, i64 0, !40, i64 112}
!40 = !{!"_ZTSN3JPH5ArrayIN11VehicleTest4LineENS_12STLAllocatorIS2_EEEE", !15, i64 0, !15, i64 8, !19, i64 16}
!41 = !{!"_ZTSN3JPH3RefINS_17VehicleConstraintEEE", !19, i64 0}
!42 = !{!43, !9, i64 28}
!43 = !{!"_ZTSN3JPH18ConstraintSettingsE", !44, i64 0, !45, i64 8, !23, i64 12, !20, i64 16, !20, i64 20, !20, i64 24, !9, i64 28, !15, i64 32}
!44 = !{!"_ZTSN3JPH18SerializableObjectE"}
!45 = !{!"_ZTSN3JPH9RefTargetINS_18ConstraintSettingsEEE", !46, i64 0}
!46 = !{!"_ZTSSt6atomicIjE", !47, i64 0}
!47 = !{!"_ZTSSt13__atomic_baseIjE", !20, i64 0}
!48 = !{!49, !9, i64 80}
!49 = !{!"_ZTSN3JPH25VehicleConstraintSettingsE", !43, i64 0, !12, i64 48, !12, i64 64, !9, i64 80, !50, i64 88, !51, i64 112, !52, i64 136}
!50 = !{!"_ZTSN3JPH5ArrayINS_3RefINS_13WheelSettingsEEENS_12STLAllocatorIS3_EEEE", !15, i64 0, !15, i64 8, !19, i64 16}
!51 = !{!"_ZTSN3JPH5ArrayINS_18VehicleAntiRollBarENS_12STLAllocatorIS1_EEEE", !15, i64 0, !15, i64 8, !19, i64 16}
!52 = !{!"_ZTSN3JPH3RefINS_25VehicleControllerSettingsEEE", !19, i64 0}
!53 = !{i64 0, i64 16, !5}
!54 = !{!55, !9, i64 112}
!55 = !{!"_ZTSN3JPH13WheelSettingsE", !44, i64 0, !56, i64 8, !12, i64 16, !12, i64 32, !12, i64 48, !12, i64 64, !12, i64 80, !12, i64 96, !9, i64 112, !9, i64 116, !9, i64 120, !57, i64 124, !9, i64 136, !9, i64 140, !23, i64 144}
!56 = !{!"_ZTSN3JPH9RefTargetINS_13WheelSettingsEEE", !46, i64 0}
!57 = !{!"_ZTSN3JPH14SpringSettingsE", !58, i64 0, !6, i64 4, !9, i64 8}
!58 = !{!"_ZTSN3JPH11ESpringModeE", !6, i64 0}
!59 = !{!55, !9, i64 116}
!60 = !{!55, !9, i64 132}
!61 = !{!62, !9, i64 156}
!62 = !{!"_ZTSN3JPH15WheelSettingsWVE", !55, i64 0, !9, i64 148, !9, i64 152, !9, i64 156, !63, i64 160, !63, i64 184, !9, i64 208, !9, i64 212}
!63 = !{!"_ZTSN3JPH11LinearCurveE", !64, i64 0}
!64 = !{!"_ZTSN3JPH5ArrayINS_11LinearCurve5PointENS_12STLAllocatorIS2_EEEE", !15, i64 0, !15, i64 8, !19, i64 16}
!65 = !{!62, !9, i64 212}
!66 = !{!23, !23, i64 0}
!67 = !{i8 0, i8 2}
!68 = !{}
!69 = !{!70, !20, i64 0}
!70 = !{!"_ZTSN3JPH27VehicleDifferentialSettingsE", !20, i64 0, !20, i64 4, !9, i64 8, !9, i64 12, !9, i64 16, !9, i64 20}
!71 = !{!70, !20, i64 4}
!72 = !{!70, !9, i64 20}
!73 = !{!74, !20, i64 0}
!74 = !{!"_ZTSN3JPH18VehicleAntiRollBarE", !20, i64 0, !20, i64 4, !9, i64 8}
!75 = !{!74, !20, i64 4}
!76 = !{!32, !19, i64 16}


; Effective O3 passes: EarlyCSEPass,GVNPass,GlobalOptPass,IPSCCPPass,InferFunctionAttrsPass,InstCombinePass,JumpThreadingPass,LoopRotatePass,LoopSimplifyPass,LoopUnrollPass,SLPVectorizerPass,SROAPass,SimplifyCFGPass,TailCallElimPass