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

; 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::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.6", %"class.JPH::RefConst" }
%"class.JPH::Quat" = type { %"class.JPH::Vec4" }
%"class.JPH::Vec4" = type { %union.anon.4 }
%union.anon.4 = type { <4 x float> }
%"class.JPH::Vec3" = type { %union.anon }
%union.anon = type { <4 x float> }
%"class.JPH::CollisionGroup" = type { %"class.JPH::RefConst.5", i32, i32 }
%"class.JPH::RefConst.5" = type { ptr }
%"class.JPH::MassProperties" = type { float, %"class.JPH::Mat44" }
%"class.JPH::Mat44" = type { [4 x %"class.JPH::Vec4"] }
%"class.JPH::RefConst.6" = type { ptr }
%"class.JPH::RefConst" = type { ptr }
%"class.JPH::Ref" = type { ptr }
%"class.JPH::Ref.13" = type { ptr }
%"class.JPH::BodyID" = type { i32 }
%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.ChangeMotionQualityTest = type <{ %class.Test, ptr, float, [4 x i8] }>

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

declare i32 @__gxx_personality_v0(...)

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

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN23ChangeMotionQualityTest10InitializeEv(ptr noundef nonnull align 8 dereferenceable(124) %0) unnamed_addr #1 align 2 personality ptr @__gxx_personality_v0 {
  %2 = alloca ptr, align 8
  %3 = alloca %"class.JPH::BodyCreationSettings", align 16
  %4 = alloca %"class.JPH::Ref", align 8
  %5 = alloca ptr, align 8
  %6 = alloca i32, align 4
  %7 = alloca %"class.JPH::Vec3", align 16
  %8 = alloca %"class.JPH::Ref.13", align 8
  %9 = alloca %"class.JPH::Vec3", align 16
  %10 = alloca %"class.JPH::Quat", align 16
  %11 = alloca %"class.JPH::Vec3", align 16
  %12 = alloca %"class.JPH::Quat", align 16
  %13 = alloca %"class.JPH::Vec3", align 16
  %14 = alloca %"class.JPH::Quat", align 16
  %15 = alloca %"class.JPH::Vec3", align 16
  %16 = alloca %"class.JPH::Vec3", align 16
  %17 = alloca %"class.JPH::Quat", align 16
  %18 = alloca %"class.JPH::Vec3", align 16
  %19 = alloca %"class.JPH::Vec3", align 16
  %20 = alloca %"class.JPH::BodyID", align 4
  %21 = alloca %"class.JPH::BodyCreationSettings", align 16
  %22 = alloca %"class.JPH::Vec3", align 16
  %23 = alloca %"class.JPH::Vec3", align 16
  store ptr %0, ptr %2, align 8, !tbaa !5
  %24 = load ptr, ptr %2, align 8
  %25 = call noundef nonnull align 16 dereferenceable(122) ptr @_ZN4Test11CreateFloorEf(ptr noundef nonnull align 8 dereferenceable(112) %24, float noundef 2.000000e+02)
  call void @llvm.lifetime.start.p0(i64 256, ptr %3) #10
  call void @_ZN3JPH20BodyCreationSettingsC2Ev(ptr noundef nonnull align 16 dereferenceable(256) %3)
  call void @llvm.lifetime.start.p0(i64 8, ptr %4) #10
  %26 = invoke noundef ptr @_ZN3JPH16BoxShapeSettingsnwEm(i64 noundef 112)
          to label %27 unwind label %193

27:                                               ; preds = %1
  invoke void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %7, float noundef 5.000000e+00, float noundef 1.000000e+00, float noundef 0x3FB99999A0000000)
          to label %28 unwind label %197

28:                                               ; preds = %27
  %29 = getelementptr inbounds { double, double }, ptr %7, i32 0, i32 0
  %30 = load double, ptr %29, align 16
  %31 = getelementptr inbounds { double, double }, ptr %7, i32 0, i32 1
  %32 = load double, ptr %31, align 8
  invoke void @_ZN3JPH16BoxShapeSettingsC2ENS_4Vec3EfPKNS_15PhysicsMaterialE(ptr noundef nonnull align 16 dereferenceable(112) %26, double %30, double %32, float noundef 0x3FA99999A0000000, ptr noundef null)
          to label %33 unwind label %197

33:                                               ; preds = %28
  invoke void @_ZN3JPH3RefINS_16BoxShapeSettingsEEC2EPS1_(ptr noundef nonnull align 8 dereferenceable(8) %4, ptr noundef %26)
          to label %34 unwind label %193

34:                                               ; preds = %33
  call void @llvm.lifetime.start.p0(i64 8, ptr %8) #10
  %35 = invoke noundef ptr @_ZN3JPH27StaticCompoundShapeSettingsnwEm(i64 noundef 88)
          to label %36 unwind label %201

36:                                               ; preds = %34
  call void @llvm.memset.p0.i64(ptr align 8 %35, i8 0, i64 88, i1 false)
  invoke void @_ZN3JPH27StaticCompoundShapeSettingsC2Ev(ptr noundef nonnull align 8 dereferenceable(88) %35)
          to label %37 unwind label %205

37:                                               ; preds = %36
  invoke void @_ZN3JPH3RefINS_27StaticCompoundShapeSettingsEEC2EPS1_(ptr noundef nonnull align 8 dereferenceable(8) %8, ptr noundef %35)
          to label %38 unwind label %201

38:                                               ; preds = %37
  %39 = invoke noundef ptr @_ZNK3JPH3RefINS_27StaticCompoundShapeSettingsEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %8)
          to label %40 unwind label %209

40:                                               ; preds = %38
  invoke void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %9, float noundef 0.000000e+00, float noundef 0.000000e+00, float noundef 5.000000e+00)
          to label %41 unwind label %209

41:                                               ; preds = %40
  %42 = invoke { double, double } @_ZN3JPH4Quat9sIdentityEv()
          to label %43 unwind label %209

43:                                               ; preds = %41
  %44 = getelementptr inbounds %"class.JPH::Quat", ptr %10, i32 0, i32 0
  %45 = getelementptr inbounds %"class.JPH::Vec4", ptr %44, i32 0, i32 0
  %46 = getelementptr inbounds %union.anon.4, ptr %45, i32 0, i32 0
  %47 = getelementptr inbounds { double, double }, ptr %46, i32 0, i32 0
  %48 = extractvalue { double, double } %42, 0
  store double %48, ptr %47, align 16
  %49 = getelementptr inbounds { double, double }, ptr %46, i32 0, i32 1
  %50 = extractvalue { double, double } %42, 1
  store double %50, ptr %49, align 8
  %51 = invoke noundef ptr @_ZNK3JPH3RefINS_16BoxShapeSettingsEEcvPS1_Ev(ptr noundef nonnull align 8 dereferenceable(8) %4)
          to label %52 unwind label %209

52:                                               ; preds = %43
  %53 = getelementptr inbounds { double, double }, ptr %9, i32 0, i32 0
  %54 = load double, ptr %53, align 16
  %55 = getelementptr inbounds { double, double }, ptr %9, i32 0, i32 1
  %56 = load double, ptr %55, align 8
  %57 = getelementptr inbounds { double, double }, ptr %10, i32 0, i32 0
  %58 = load double, ptr %57, align 16
  %59 = getelementptr inbounds { double, double }, ptr %10, i32 0, i32 1
  %60 = load double, ptr %59, align 8
  invoke void @_ZN3JPH21CompoundShapeSettings8AddShapeENS_4Vec3ENS_4QuatEPKNS_13ShapeSettingsEj(ptr noundef nonnull align 8 dereferenceable(88) %39, double %54, double %56, double %58, double %60, ptr noundef %51, i32 noundef 0)
          to label %61 unwind label %209

61:                                               ; preds = %52
  %62 = invoke noundef ptr @_ZNK3JPH3RefINS_27StaticCompoundShapeSettingsEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %8)
          to label %63 unwind label %209

63:                                               ; preds = %61
  invoke void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %11, float noundef 0.000000e+00, float noundef 0.000000e+00, float noundef -5.000000e+00)
          to label %64 unwind label %209

64:                                               ; preds = %63
  %65 = invoke { double, double } @_ZN3JPH4Quat9sIdentityEv()
          to label %66 unwind label %209

66:                                               ; preds = %64
  %67 = getelementptr inbounds %"class.JPH::Quat", ptr %12, i32 0, i32 0
  %68 = getelementptr inbounds %"class.JPH::Vec4", ptr %67, i32 0, i32 0
  %69 = getelementptr inbounds %union.anon.4, ptr %68, i32 0, i32 0
  %70 = getelementptr inbounds { double, double }, ptr %69, i32 0, i32 0
  %71 = extractvalue { double, double } %65, 0
  store double %71, ptr %70, align 16
  %72 = getelementptr inbounds { double, double }, ptr %69, i32 0, i32 1
  %73 = extractvalue { double, double } %65, 1
  store double %73, ptr %72, align 8
  %74 = invoke noundef ptr @_ZNK3JPH3RefINS_16BoxShapeSettingsEEcvPS1_Ev(ptr noundef nonnull align 8 dereferenceable(8) %4)
          to label %75 unwind label %209

75:                                               ; preds = %66
  %76 = getelementptr inbounds { double, double }, ptr %11, i32 0, i32 0
  %77 = load double, ptr %76, align 16
  %78 = getelementptr inbounds { double, double }, ptr %11, i32 0, i32 1
  %79 = load double, ptr %78, align 8
  %80 = getelementptr inbounds { double, double }, ptr %12, i32 0, i32 0
  %81 = load double, ptr %80, align 16
  %82 = getelementptr inbounds { double, double }, ptr %12, i32 0, i32 1
  %83 = load double, ptr %82, align 8
  invoke void @_ZN3JPH21CompoundShapeSettings8AddShapeENS_4Vec3ENS_4QuatEPKNS_13ShapeSettingsEj(ptr noundef nonnull align 8 dereferenceable(88) %62, double %77, double %79, double %81, double %83, ptr noundef %74, i32 noundef 0)
          to label %84 unwind label %209

84:                                               ; preds = %75
  %85 = invoke noundef ptr @_ZNK3JPH3RefINS_27StaticCompoundShapeSettingsEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %8)
          to label %86 unwind label %209

86:                                               ; preds = %84
  invoke void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %13, float noundef 5.000000e+00, float noundef 0.000000e+00, float noundef 0.000000e+00)
          to label %87 unwind label %209

87:                                               ; preds = %86
  %88 = invoke { double, double } @_ZN3JPH4Vec36sAxisYEv()
          to label %89 unwind label %209

89:                                               ; preds = %87
  %90 = getelementptr inbounds %"class.JPH::Vec3", ptr %15, i32 0, i32 0
  %91 = getelementptr inbounds %union.anon, ptr %90, i32 0, i32 0
  %92 = getelementptr inbounds { double, double }, ptr %91, i32 0, i32 0
  %93 = extractvalue { double, double } %88, 0
  store double %93, ptr %92, align 16
  %94 = getelementptr inbounds { double, double }, ptr %91, i32 0, i32 1
  %95 = extractvalue { double, double } %88, 1
  store double %95, ptr %94, align 8
  %96 = getelementptr inbounds { double, double }, ptr %15, i32 0, i32 0
  %97 = load double, ptr %96, align 16
  %98 = getelementptr inbounds { double, double }, ptr %15, i32 0, i32 1
  %99 = load double, ptr %98, align 8
  %100 = invoke { double, double } @_ZN3JPH4Quat9sRotationENS_4Vec3Ef(double %97, double %99, float noundef 0x3FF921FB60000000)
          to label %101 unwind label %209

101:                                              ; preds = %89
  %102 = getelementptr inbounds %"class.JPH::Quat", ptr %14, i32 0, i32 0
  %103 = getelementptr inbounds %"class.JPH::Vec4", ptr %102, i32 0, i32 0
  %104 = getelementptr inbounds %union.anon.4, ptr %103, i32 0, i32 0
  %105 = getelementptr inbounds { double, double }, ptr %104, i32 0, i32 0
  %106 = extractvalue { double, double } %100, 0
  store double %106, ptr %105, align 16
  %107 = getelementptr inbounds { double, double }, ptr %104, i32 0, i32 1
  %108 = extractvalue { double, double } %100, 1
  store double %108, ptr %107, align 8
  %109 = invoke noundef ptr @_ZNK3JPH3RefINS_16BoxShapeSettingsEEcvPS1_Ev(ptr noundef nonnull align 8 dereferenceable(8) %4)
          to label %110 unwind label %209

110:                                              ; preds = %101
  %111 = getelementptr inbounds { double, double }, ptr %13, i32 0, i32 0
  %112 = load double, ptr %111, align 16
  %113 = getelementptr inbounds { double, double }, ptr %13, i32 0, i32 1
  %114 = load double, ptr %113, align 8
  %115 = getelementptr inbounds { double, double }, ptr %14, i32 0, i32 0
  %116 = load double, ptr %115, align 16
  %117 = getelementptr inbounds { double, double }, ptr %14, i32 0, i32 1
  %118 = load double, ptr %117, align 8
  invoke void @_ZN3JPH21CompoundShapeSettings8AddShapeENS_4Vec3ENS_4QuatEPKNS_13ShapeSettingsEj(ptr noundef nonnull align 8 dereferenceable(88) %85, double %112, double %114, double %116, double %118, ptr noundef %109, i32 noundef 0)
          to label %119 unwind label %209

119:                                              ; preds = %110
  %120 = invoke noundef ptr @_ZNK3JPH3RefINS_27StaticCompoundShapeSettingsEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %8)
          to label %121 unwind label %209

121:                                              ; preds = %119
  invoke void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %16, float noundef -5.000000e+00, float noundef 0.000000e+00, float noundef 0.000000e+00)
          to label %122 unwind label %209

122:                                              ; preds = %121
  %123 = invoke { double, double } @_ZN3JPH4Vec36sAxisYEv()
          to label %124 unwind label %209

124:                                              ; preds = %122
  %125 = getelementptr inbounds %"class.JPH::Vec3", ptr %18, i32 0, i32 0
  %126 = getelementptr inbounds %union.anon, ptr %125, i32 0, i32 0
  %127 = getelementptr inbounds { double, double }, ptr %126, i32 0, i32 0
  %128 = extractvalue { double, double } %123, 0
  store double %128, ptr %127, align 16
  %129 = getelementptr inbounds { double, double }, ptr %126, i32 0, i32 1
  %130 = extractvalue { double, double } %123, 1
  store double %130, ptr %129, align 8
  %131 = getelementptr inbounds { double, double }, ptr %18, i32 0, i32 0
  %132 = load double, ptr %131, align 16
  %133 = getelementptr inbounds { double, double }, ptr %18, i32 0, i32 1
  %134 = load double, ptr %133, align 8
  %135 = invoke { double, double } @_ZN3JPH4Quat9sRotationENS_4Vec3Ef(double %132, double %134, float noundef 0x3FF921FB60000000)
          to label %136 unwind label %209

136:                                              ; preds = %124
  %137 = getelementptr inbounds %"class.JPH::Quat", ptr %17, i32 0, i32 0
  %138 = getelementptr inbounds %"class.JPH::Vec4", ptr %137, i32 0, i32 0
  %139 = getelementptr inbounds %union.anon.4, ptr %138, i32 0, i32 0
  %140 = getelementptr inbounds { double, double }, ptr %139, i32 0, i32 0
  %141 = extractvalue { double, double } %135, 0
  store double %141, ptr %140, align 16
  %142 = getelementptr inbounds { double, double }, ptr %139, i32 0, i32 1
  %143 = extractvalue { double, double } %135, 1
  store double %143, ptr %142, align 8
  %144 = invoke noundef ptr @_ZNK3JPH3RefINS_16BoxShapeSettingsEEcvPS1_Ev(ptr noundef nonnull align 8 dereferenceable(8) %4)
          to label %145 unwind label %209

145:                                              ; preds = %136
  %146 = getelementptr inbounds { double, double }, ptr %16, i32 0, i32 0
  %147 = load double, ptr %146, align 16
  %148 = getelementptr inbounds { double, double }, ptr %16, i32 0, i32 1
  %149 = load double, ptr %148, align 8
  %150 = getelementptr inbounds { double, double }, ptr %17, i32 0, i32 0
  %151 = load double, ptr %150, align 16
  %152 = getelementptr inbounds { double, double }, ptr %17, i32 0, i32 1
  %153 = load double, ptr %152, align 8
  invoke void @_ZN3JPH21CompoundShapeSettings8AddShapeENS_4Vec3ENS_4QuatEPKNS_13ShapeSettingsEj(ptr noundef nonnull align 8 dereferenceable(88) %120, double %147, double %149, double %151, double %153, ptr noundef %144, i32 noundef 0)
          to label %154 unwind label %209

154:                                              ; preds = %145
  %155 = invoke noundef ptr @_ZNK3JPH3RefINS_27StaticCompoundShapeSettingsEEcvPS1_Ev(ptr noundef nonnull align 8 dereferenceable(8) %8)
          to label %156 unwind label %209

156:                                              ; preds = %154
  invoke void @_ZN3JPH20BodyCreationSettings16SetShapeSettingsEPKNS_13ShapeSettingsE(ptr noundef nonnull align 16 dereferenceable(256) %3, ptr noundef %155)
          to label %157 unwind label %209

157:                                              ; preds = %156
  %158 = getelementptr inbounds %"class.JPH::BodyCreationSettings", ptr %3, i32 0, i32 7
  store i8 1, ptr %158, align 16, !tbaa !9
  %159 = getelementptr inbounds %"class.JPH::BodyCreationSettings", ptr %3, i32 0, i32 5
  store i16 1, ptr %159, align 8, !tbaa !29
  call void @llvm.lifetime.start.p0(i64 16, ptr %19) #10
  invoke void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %19, float noundef 0.000000e+00, float noundef 1.000000e+00, float noundef 0.000000e+00)
          to label %160 unwind label %213

160:                                              ; preds = %157
  %161 = getelementptr inbounds %"class.JPH::BodyCreationSettings", ptr %3, i32 0, i32 0
  call void @llvm.memcpy.p0.p0.i64(ptr align 16 %161, ptr align 16 %19, i64 16, i1 false), !tbaa.struct !30
  call void @llvm.lifetime.end.p0(i64 16, ptr %19) #10
  %162 = getelementptr inbounds %class.Test, ptr %24, i32 0, i32 3
  %163 = load ptr, ptr %162, align 8, !tbaa !32
  %164 = invoke i32 @_ZN3JPH13BodyInterface16CreateAndAddBodyERKNS_20BodyCreationSettingsENS_11EActivationE(ptr noundef nonnull align 8 dereferenceable(24) %163, ptr noundef nonnull align 16 dereferenceable(256) %3, i32 noundef 0)
          to label %165 unwind label %209

165:                                              ; preds = %160
  %166 = getelementptr inbounds %"class.JPH::BodyID", ptr %20, i32 0, i32 0
  store i32 %164, ptr %166, align 4
  call void @llvm.lifetime.start.p0(i64 256, ptr %21) #10
  invoke void @_ZN3JPH20BodyCreationSettingsC2Ev(ptr noundef nonnull align 16 dereferenceable(256) %21)
          to label %167 unwind label %217

167:                                              ; preds = %165
  %168 = invoke noundef ptr @_ZN3JPH11SphereShapenwEm(i64 noundef 48)
          to label %169 unwind label %221

169:                                              ; preds = %167
  invoke void @_ZN3JPH11SphereShapeC2EfPKNS_15PhysicsMaterialE(ptr noundef nonnull align 8 dereferenceable(48) %168, float noundef 1.000000e+00, ptr noundef null)
          to label %170 unwind label %225

170:                                              ; preds = %169
  invoke void @_ZN3JPH20BodyCreationSettings8SetShapeEPKNS_5ShapeE(ptr noundef nonnull align 16 dereferenceable(256) %21, ptr noundef %168)
          to label %171 unwind label %221

171:                                              ; preds = %170
  call void @llvm.lifetime.start.p0(i64 16, ptr %22) #10
  invoke void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %22, float noundef 0.000000e+00, float noundef 5.000000e-01, float noundef 0.000000e+00)
          to label %172 unwind label %229

172:                                              ; preds = %171
  %173 = getelementptr inbounds %"class.JPH::BodyCreationSettings", ptr %21, i32 0, i32 0
  call void @llvm.memcpy.p0.p0.i64(ptr align 16 %173, ptr align 16 %22, i64 16, i1 false), !tbaa.struct !30
  call void @llvm.lifetime.end.p0(i64 16, ptr %22) #10
  %174 = getelementptr inbounds %"class.JPH::BodyCreationSettings", ptr %21, i32 0, i32 7
  store i8 2, ptr %174, align 16, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 16, ptr %23) #10
  invoke void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %23, float noundef -2.400000e+02, float noundef 0.000000e+00, float noundef -1.200000e+02)
          to label %175 unwind label %233

175:                                              ; preds = %172
  %176 = getelementptr inbounds %"class.JPH::BodyCreationSettings", ptr %21, i32 0, i32 2
  call void @llvm.memcpy.p0.p0.i64(ptr align 16 %176, ptr align 16 %23, i64 16, i1 false), !tbaa.struct !30
  call void @llvm.lifetime.end.p0(i64 16, ptr %23) #10
  %177 = getelementptr inbounds %"class.JPH::BodyCreationSettings", ptr %21, i32 0, i32 17
  store float 0.000000e+00, ptr %177, align 4, !tbaa !38
  %178 = getelementptr inbounds %"class.JPH::BodyCreationSettings", ptr %21, i32 0, i32 18
  store float 1.000000e+00, ptr %178, align 16, !tbaa !39
  %179 = getelementptr inbounds %"class.JPH::BodyCreationSettings", ptr %21, i32 0, i32 5
  store i16 1, ptr %179, align 8, !tbaa !29
  %180 = getelementptr inbounds %class.Test, ptr %24, i32 0, i32 3
  %181 = load ptr, ptr %180, align 8, !tbaa !32
  %182 = invoke noundef ptr @_ZN3JPH13BodyInterface10CreateBodyERKNS_20BodyCreationSettingsE(ptr noundef nonnull align 8 dereferenceable(24) %181, ptr noundef nonnull align 16 dereferenceable(256) %21)
          to label %183 unwind label %221

183:                                              ; preds = %175
  %184 = getelementptr inbounds %class.ChangeMotionQualityTest, ptr %24, i32 0, i32 1
  store ptr %182, ptr %184, align 8, !tbaa !40
  %185 = getelementptr inbounds %class.Test, ptr %24, i32 0, i32 3
  %186 = load ptr, ptr %185, align 8, !tbaa !32
  %187 = getelementptr inbounds %class.ChangeMotionQualityTest, ptr %24, i32 0, i32 1
  %188 = load ptr, ptr %187, align 8, !tbaa !40
  %189 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZNK3JPH4Body5GetIDEv(ptr noundef nonnull align 16 dereferenceable(122) %188)
          to label %190 unwind label %221

190:                                              ; preds = %183
  invoke void @_ZN3JPH13BodyInterface7AddBodyERKNS_6BodyIDENS_11EActivationE(ptr noundef nonnull align 8 dereferenceable(24) %186, ptr noundef nonnull align 4 dereferenceable(4) %189, i32 noundef 0)
          to label %191 unwind label %221

191:                                              ; preds = %190
  invoke void @_ZN23ChangeMotionQualityTest19UpdateMotionQualityEv(ptr noundef nonnull align 8 dereferenceable(124) %24)
          to label %192 unwind label %221

192:                                              ; preds = %191
  call void @_ZN3JPH20BodyCreationSettingsD2Ev(ptr noundef nonnull align 16 dereferenceable(256) %21) #10
  call void @llvm.lifetime.end.p0(i64 256, ptr %21) #10
  call void @_ZN3JPH3RefINS_27StaticCompoundShapeSettingsEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %8) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %8) #10
  call void @_ZN3JPH3RefINS_16BoxShapeSettingsEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %4) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %4) #10
  call void @_ZN3JPH20BodyCreationSettingsD2Ev(ptr noundef nonnull align 16 dereferenceable(256) %3) #10
  call void @llvm.lifetime.end.p0(i64 256, ptr %3) #10
  ret void

193:                                              ; preds = %33, %1
  %194 = landingpad { ptr, i32 }
          cleanup
  %195 = extractvalue { ptr, i32 } %194, 0
  store ptr %195, ptr %5, align 8
  %196 = extractvalue { ptr, i32 } %194, 1
  store i32 %196, ptr %6, align 4
  br label %241

197:                                              ; preds = %28, %27
  %198 = landingpad { ptr, i32 }
          cleanup
  %199 = extractvalue { ptr, i32 } %198, 0
  store ptr %199, ptr %5, align 8
  %200 = extractvalue { ptr, i32 } %198, 1
  store i32 %200, ptr %6, align 4
  call void @_ZN3JPH16BoxShapeSettingsdlEPv(ptr noundef %26) #10
  br label %241

201:                                              ; preds = %37, %34
  %202 = landingpad { ptr, i32 }
          cleanup
  %203 = extractvalue { ptr, i32 } %202, 0
  store ptr %203, ptr %5, align 8
  %204 = extractvalue { ptr, i32 } %202, 1
  store i32 %204, ptr %6, align 4
  br label %240

205:                                              ; preds = %36
  %206 = landingpad { ptr, i32 }
          cleanup
  %207 = extractvalue { ptr, i32 } %206, 0
  store ptr %207, ptr %5, align 8
  %208 = extractvalue { ptr, i32 } %206, 1
  store i32 %208, ptr %6, align 4
  call void @_ZN3JPH27StaticCompoundShapeSettingsdlEPv(ptr noundef %35) #10
  br label %240

209:                                              ; preds = %160, %156, %154, %145, %136, %124, %122, %121, %119, %110, %101, %89, %87, %86, %84, %75, %66, %64, %63, %61, %52, %43, %41, %40, %38
  %210 = landingpad { ptr, i32 }
          cleanup
  %211 = extractvalue { ptr, i32 } %210, 0
  store ptr %211, ptr %5, align 8
  %212 = extractvalue { ptr, i32 } %210, 1
  store i32 %212, ptr %6, align 4
  br label %239

213:                                              ; preds = %157
  %214 = landingpad { ptr, i32 }
          cleanup
  %215 = extractvalue { ptr, i32 } %214, 0
  store ptr %215, ptr %5, align 8
  %216 = extractvalue { ptr, i32 } %214, 1
  store i32 %216, ptr %6, align 4
  call void @llvm.lifetime.end.p0(i64 16, ptr %19) #10
  br label %239

217:                                              ; preds = %165
  %218 = landingpad { ptr, i32 }
          cleanup
  %219 = extractvalue { ptr, i32 } %218, 0
  store ptr %219, ptr %5, align 8
  %220 = extractvalue { ptr, i32 } %218, 1
  store i32 %220, ptr %6, align 4
  br label %238

221:                                              ; preds = %191, %190, %183, %175, %170, %167
  %222 = landingpad { ptr, i32 }
          cleanup
  %223 = extractvalue { ptr, i32 } %222, 0
  store ptr %223, ptr %5, align 8
  %224 = extractvalue { ptr, i32 } %222, 1
  store i32 %224, ptr %6, align 4
  br label %237

225:                                              ; preds = %169
  %226 = landingpad { ptr, i32 }
          cleanup
  %227 = extractvalue { ptr, i32 } %226, 0
  store ptr %227, ptr %5, align 8
  %228 = extractvalue { ptr, i32 } %226, 1
  store i32 %228, ptr %6, align 4
  call void @_ZN3JPH11SphereShapedlEPv(ptr noundef %168) #10
  br label %237

229:                                              ; preds = %171
  %230 = landingpad { ptr, i32 }
          cleanup
  %231 = extractvalue { ptr, i32 } %230, 0
  store ptr %231, ptr %5, align 8
  %232 = extractvalue { ptr, i32 } %230, 1
  store i32 %232, ptr %6, align 4
  call void @llvm.lifetime.end.p0(i64 16, ptr %22) #10
  br label %237

233:                                              ; preds = %172
  %234 = landingpad { ptr, i32 }
          cleanup
  %235 = extractvalue { ptr, i32 } %234, 0
  store ptr %235, ptr %5, align 8
  %236 = extractvalue { ptr, i32 } %234, 1
  store i32 %236, ptr %6, align 4
  call void @llvm.lifetime.end.p0(i64 16, ptr %23) #10
  br label %237

237:                                              ; preds = %233, %229, %225, %221
  call void @_ZN3JPH20BodyCreationSettingsD2Ev(ptr noundef nonnull align 16 dereferenceable(256) %21) #10
  br label %238

238:                                              ; preds = %237, %217
  call void @llvm.lifetime.end.p0(i64 256, ptr %21) #10
  br label %239

239:                                              ; preds = %238, %213, %209
  call void @_ZN3JPH3RefINS_27StaticCompoundShapeSettingsEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %8) #10
  br label %240

240:                                              ; preds = %239, %205, %201
  call void @llvm.lifetime.end.p0(i64 8, ptr %8) #10
  call void @_ZN3JPH3RefINS_16BoxShapeSettingsEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %4) #10
  br label %241

241:                                              ; preds = %240, %197, %193
  call void @llvm.lifetime.end.p0(i64 8, ptr %4) #10
  call void @_ZN3JPH20BodyCreationSettingsD2Ev(ptr noundef nonnull align 16 dereferenceable(256) %3) #10
  call void @llvm.lifetime.end.p0(i64 256, ptr %3) #10
  br label %242

242:                                              ; preds = %241
  %243 = load ptr, ptr %5, align 8
  %244 = load i32, ptr %6, align 4
  %245 = insertvalue { ptr, i32 } poison, ptr %243, 0
  %246 = insertvalue { ptr, i32 } %245, i32 %244, 1
  resume { ptr, i32 } %246
}

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN23ChangeMotionQualityTest19UpdateMotionQualityEv(ptr noundef nonnull align 8 dereferenceable(124)) #1 align 2

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

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

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

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = !{!10, !19, i64 96}
!10 = !{!"_ZTSN3JPH20BodyCreationSettingsE", !11, i64 0, !12, i64 16, !11, i64 32, !11, i64 48, !14, i64 64, !15, i64 72, !16, i64 80, !19, i64 96, !20, i64 97, !21, i64 98, !21, i64 99, !21, i64 100, !21, i64 101, !21, i64 102, !22, i64 103, !21, i64 104, !21, i64 105, !23, i64 108, !23, i64 112, !23, i64 116, !23, i64 120, !23, i64 124, !23, i64 128, !23, i64 132, !18, i64 136, !18, i64 140, !24, i64 144, !23, i64 148, !25, i64 160, !27, i64 240, !28, i64 248}
!11 = !{!"_ZTSN3JPH4Vec3E", !7, i64 0}
!12 = !{!"_ZTSN3JPH4QuatE", !13, i64 0}
!13 = !{!"_ZTSN3JPH4Vec4E", !7, i64 0}
!14 = !{!"long", !7, i64 0}
!15 = !{!"short", !7, i64 0}
!16 = !{!"_ZTSN3JPH14CollisionGroupE", !17, i64 0, !18, i64 8, !18, i64 12}
!17 = !{!"_ZTSN3JPH8RefConstINS_11GroupFilterEEE", !6, i64 0}
!18 = !{!"int", !7, i64 0}
!19 = !{!"_ZTSN3JPH11EMotionTypeE", !7, i64 0}
!20 = !{!"_ZTSN3JPH12EAllowedDOFsE", !7, i64 0}
!21 = !{!"bool", !7, i64 0}
!22 = !{!"_ZTSN3JPH14EMotionQualityE", !7, i64 0}
!23 = !{!"float", !7, i64 0}
!24 = !{!"_ZTSN3JPH23EOverrideMassPropertiesE", !7, i64 0}
!25 = !{!"_ZTSN3JPH14MassPropertiesE", !23, i64 0, !26, i64 16}
!26 = !{!"_ZTSN3JPH5Mat44E", !7, i64 0}
!27 = !{!"_ZTSN3JPH8RefConstINS_13ShapeSettingsEEE", !6, i64 0}
!28 = !{!"_ZTSN3JPH8RefConstINS_5ShapeEEE", !6, i64 0}
!29 = !{!10, !15, i64 72}
!30 = !{i64 0, i64 16, !31}
!31 = !{!7, !7, i64 0}
!32 = !{!33, !6, i64 24}
!33 = !{!"_ZTS4Test", !6, i64 8, !6, i64 16, !6, i64 24, !6, i64 32, !6, i64 40, !21, i64 48, !34, i64 56}
!34 = !{!"_ZTSSt13unordered_mapIN3JPH6BodyIDENSt7__cxx1112basic_stringIcSt11char_traitsIcENS0_12STLAllocatorIcEEEESt4hashIS1_ESt8equal_toIS1_ESaISt4pairIKS1_S8_EEE", !35, i64 0}
!35 = !{!"_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, !14, i64 8, !36, i64 16, !14, i64 24, !37, i64 32, !6, i64 48}
!36 = !{!"_ZTSNSt8__detail15_Hash_node_baseE", !6, i64 0}
!37 = !{!"_ZTSNSt8__detail20_Prime_rehash_policyE", !23, i64 0, !14, i64 8}
!38 = !{!10, !23, i64 108}
!39 = !{!10, !23, i64 112}
!40 = !{!41, !6, i64 112}
!41 = !{!"_ZTS23ChangeMotionQualityTest", !33, i64 0, !6, i64 112, !23, i64 120}


; 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::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.6", %"class.JPH::RefConst" }
%"class.JPH::Quat" = type { %"class.JPH::Vec4" }
%"class.JPH::Vec4" = type { %union.anon.4 }
%union.anon.4 = type { <4 x float> }
%"class.JPH::Vec3" = type { %union.anon }
%union.anon = type { <4 x float> }
%"class.JPH::CollisionGroup" = type { %"class.JPH::RefConst.5", i32, i32 }
%"class.JPH::RefConst.5" = type { ptr }
%"class.JPH::MassProperties" = type { float, %"class.JPH::Mat44" }
%"class.JPH::Mat44" = type { [4 x %"class.JPH::Vec4"] }
%"class.JPH::RefConst.6" = type { ptr }
%"class.JPH::RefConst" = type { ptr }
%"class.JPH::Ref" = type { ptr }
%"class.JPH::Ref.13" = type { ptr }

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

declare i32 @__gxx_personality_v0(...)

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

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN23ChangeMotionQualityTest10InitializeEv(ptr noundef nonnull align 8 dereferenceable(124) %0) unnamed_addr #1 align 2 personality ptr @__gxx_personality_v0 {
  %2 = alloca %"class.JPH::BodyCreationSettings", align 16
  %3 = alloca %"class.JPH::Ref", align 8
  %4 = alloca %"class.JPH::Vec3", align 16
  %5 = alloca %"class.JPH::Ref.13", align 8
  %6 = alloca %"class.JPH::Vec3", align 16
  %7 = alloca %"class.JPH::Vec3", align 16
  %8 = alloca %"class.JPH::Vec3", align 16
  %9 = alloca %"class.JPH::Vec3", align 16
  %10 = alloca %"class.JPH::Vec3", align 16
  %11 = alloca %"class.JPH::BodyCreationSettings", align 16
  %12 = alloca %"class.JPH::Vec3", align 16
  %13 = alloca %"class.JPH::Vec3", align 16
  %14 = tail call noundef nonnull align 16 dereferenceable(122) ptr @_ZN4Test11CreateFloorEf(ptr noundef nonnull align 8 dereferenceable(112) %0, float noundef 2.000000e+02)
  call void @llvm.lifetime.start.p0(i64 256, ptr nonnull %2) #10
  call void @_ZN3JPH20BodyCreationSettingsC2Ev(ptr noundef nonnull align 16 dereferenceable(256) %2)
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %3) #10
  %15 = invoke noundef ptr @_ZN3JPH16BoxShapeSettingsnwEm(i64 noundef 112)
          to label %16 unwind label %107

16:                                               ; preds = %1
  invoke void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %4, float noundef 5.000000e+00, float noundef 1.000000e+00, float noundef 0x3FB99999A0000000)
          to label %17 unwind label %109

17:                                               ; preds = %16
  %18 = load double, ptr %4, align 16
  %19 = getelementptr inbounds i8, ptr %4, i64 8
  %20 = load double, ptr %19, align 8
  invoke void @_ZN3JPH16BoxShapeSettingsC2ENS_4Vec3EfPKNS_15PhysicsMaterialE(ptr noundef nonnull align 16 dereferenceable(112) %15, double %18, double %20, float noundef 0x3FA99999A0000000, ptr noundef null)
          to label %21 unwind label %109

21:                                               ; preds = %17
  invoke void @_ZN3JPH3RefINS_16BoxShapeSettingsEEC2EPS1_(ptr noundef nonnull align 8 dereferenceable(8) %3, ptr noundef nonnull %15)
          to label %22 unwind label %107

22:                                               ; preds = %21
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %5) #10
  %23 = invoke noundef ptr @_ZN3JPH27StaticCompoundShapeSettingsnwEm(i64 noundef 88)
          to label %24 unwind label %111

24:                                               ; preds = %22
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(88) %23, i8 0, i64 88, i1 false)
  invoke void @_ZN3JPH27StaticCompoundShapeSettingsC2Ev(ptr noundef nonnull align 8 dereferenceable(88) %23)
          to label %25 unwind label %113

25:                                               ; preds = %24
  invoke void @_ZN3JPH3RefINS_27StaticCompoundShapeSettingsEEC2EPS1_(ptr noundef nonnull align 8 dereferenceable(8) %5, ptr noundef nonnull %23)
          to label %26 unwind label %111

26:                                               ; preds = %25
  %27 = call noundef ptr @_ZNK3JPH3RefINS_27StaticCompoundShapeSettingsEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %5)
  invoke void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %6, float noundef 0.000000e+00, float noundef 0.000000e+00, float noundef 5.000000e+00)
          to label %28 unwind label %115

28:                                               ; preds = %26
  %29 = invoke { double, double } @_ZN3JPH4Quat9sIdentityEv()
          to label %30 unwind label %115

30:                                               ; preds = %28
  %31 = extractvalue { double, double } %29, 0
  %32 = extractvalue { double, double } %29, 1
  %33 = call noundef ptr @_ZNK3JPH3RefINS_16BoxShapeSettingsEEcvPS1_Ev(ptr noundef nonnull align 8 dereferenceable(8) %3)
  %34 = load double, ptr %6, align 16
  %35 = getelementptr inbounds i8, ptr %6, i64 8
  %36 = load double, ptr %35, align 8
  invoke void @_ZN3JPH21CompoundShapeSettings8AddShapeENS_4Vec3ENS_4QuatEPKNS_13ShapeSettingsEj(ptr noundef nonnull align 8 dereferenceable(88) %27, double %34, double %36, double %31, double %32, ptr noundef %33, i32 noundef 0)
          to label %37 unwind label %115

37:                                               ; preds = %30
  %38 = call noundef ptr @_ZNK3JPH3RefINS_27StaticCompoundShapeSettingsEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %5)
  invoke void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %7, float noundef 0.000000e+00, float noundef 0.000000e+00, float noundef -5.000000e+00)
          to label %39 unwind label %115

39:                                               ; preds = %37
  %40 = invoke { double, double } @_ZN3JPH4Quat9sIdentityEv()
          to label %41 unwind label %115

41:                                               ; preds = %39
  %42 = extractvalue { double, double } %40, 0
  %43 = extractvalue { double, double } %40, 1
  %44 = call noundef ptr @_ZNK3JPH3RefINS_16BoxShapeSettingsEEcvPS1_Ev(ptr noundef nonnull align 8 dereferenceable(8) %3)
  %45 = load double, ptr %7, align 16
  %46 = getelementptr inbounds i8, ptr %7, i64 8
  %47 = load double, ptr %46, align 8
  invoke void @_ZN3JPH21CompoundShapeSettings8AddShapeENS_4Vec3ENS_4QuatEPKNS_13ShapeSettingsEj(ptr noundef nonnull align 8 dereferenceable(88) %38, double %45, double %47, double %42, double %43, ptr noundef %44, i32 noundef 0)
          to label %48 unwind label %115

48:                                               ; preds = %41
  %49 = call noundef ptr @_ZNK3JPH3RefINS_27StaticCompoundShapeSettingsEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %5)
  invoke void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %8, float noundef 5.000000e+00, float noundef 0.000000e+00, float noundef 0.000000e+00)
          to label %50 unwind label %115

50:                                               ; preds = %48
  %51 = invoke { double, double } @_ZN3JPH4Vec36sAxisYEv()
          to label %52 unwind label %115

52:                                               ; preds = %50
  %53 = extractvalue { double, double } %51, 0
  %54 = extractvalue { double, double } %51, 1
  %55 = invoke { double, double } @_ZN3JPH4Quat9sRotationENS_4Vec3Ef(double %53, double %54, float noundef 0x3FF921FB60000000)
          to label %56 unwind label %115

56:                                               ; preds = %52
  %57 = extractvalue { double, double } %55, 0
  %58 = extractvalue { double, double } %55, 1
  %59 = call noundef ptr @_ZNK3JPH3RefINS_16BoxShapeSettingsEEcvPS1_Ev(ptr noundef nonnull align 8 dereferenceable(8) %3)
  %60 = load double, ptr %8, align 16
  %61 = getelementptr inbounds i8, ptr %8, i64 8
  %62 = load double, ptr %61, align 8
  invoke void @_ZN3JPH21CompoundShapeSettings8AddShapeENS_4Vec3ENS_4QuatEPKNS_13ShapeSettingsEj(ptr noundef nonnull align 8 dereferenceable(88) %49, double %60, double %62, double %57, double %58, ptr noundef %59, i32 noundef 0)
          to label %63 unwind label %115

63:                                               ; preds = %56
  %64 = call noundef ptr @_ZNK3JPH3RefINS_27StaticCompoundShapeSettingsEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %5)
  invoke void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %9, float noundef -5.000000e+00, float noundef 0.000000e+00, float noundef 0.000000e+00)
          to label %65 unwind label %115

65:                                               ; preds = %63
  %66 = invoke { double, double } @_ZN3JPH4Vec36sAxisYEv()
          to label %67 unwind label %115

67:                                               ; preds = %65
  %68 = extractvalue { double, double } %66, 0
  %69 = extractvalue { double, double } %66, 1
  %70 = invoke { double, double } @_ZN3JPH4Quat9sRotationENS_4Vec3Ef(double %68, double %69, float noundef 0x3FF921FB60000000)
          to label %71 unwind label %115

71:                                               ; preds = %67
  %72 = extractvalue { double, double } %70, 0
  %73 = extractvalue { double, double } %70, 1
  %74 = call noundef ptr @_ZNK3JPH3RefINS_16BoxShapeSettingsEEcvPS1_Ev(ptr noundef nonnull align 8 dereferenceable(8) %3)
  %75 = load double, ptr %9, align 16
  %76 = getelementptr inbounds i8, ptr %9, i64 8
  %77 = load double, ptr %76, align 8
  invoke void @_ZN3JPH21CompoundShapeSettings8AddShapeENS_4Vec3ENS_4QuatEPKNS_13ShapeSettingsEj(ptr noundef nonnull align 8 dereferenceable(88) %64, double %75, double %77, double %72, double %73, ptr noundef %74, i32 noundef 0)
          to label %78 unwind label %115

78:                                               ; preds = %71
  %79 = call noundef ptr @_ZNK3JPH3RefINS_27StaticCompoundShapeSettingsEEcvPS1_Ev(ptr noundef nonnull align 8 dereferenceable(8) %5)
  invoke void @_ZN3JPH20BodyCreationSettings16SetShapeSettingsEPKNS_13ShapeSettingsE(ptr noundef nonnull align 16 dereferenceable(256) %2, ptr noundef %79)
          to label %80 unwind label %115

80:                                               ; preds = %78
  %81 = getelementptr inbounds i8, ptr %2, i64 96
  store i8 1, ptr %81, align 16, !tbaa !5
  %82 = getelementptr inbounds i8, ptr %2, i64 72
  store i16 1, ptr %82, align 8, !tbaa !28
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %10) #10
  invoke void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %10, float noundef 0.000000e+00, float noundef 1.000000e+00, float noundef 0.000000e+00)
          to label %83 unwind label %117

83:                                               ; preds = %80
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 16 dereferenceable(16) %2, ptr noundef nonnull align 16 dereferenceable(16) %10, i64 16, i1 false), !tbaa.struct !29
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %10) #10
  %84 = getelementptr inbounds i8, ptr %0, i64 24
  %85 = load ptr, ptr %84, align 8, !tbaa !31
  %86 = invoke i32 @_ZN3JPH13BodyInterface16CreateAndAddBodyERKNS_20BodyCreationSettingsENS_11EActivationE(ptr noundef nonnull align 8 dereferenceable(24) %85, ptr noundef nonnull align 16 dereferenceable(256) %2, i32 noundef 0)
          to label %87 unwind label %115

87:                                               ; preds = %83
  call void @llvm.lifetime.start.p0(i64 256, ptr nonnull %11) #10
  invoke void @_ZN3JPH20BodyCreationSettingsC2Ev(ptr noundef nonnull align 16 dereferenceable(256) %11)
          to label %88 unwind label %119

88:                                               ; preds = %87
  %89 = invoke noundef ptr @_ZN3JPH11SphereShapenwEm(i64 noundef 48)
          to label %90 unwind label %121

90:                                               ; preds = %88
  invoke void @_ZN3JPH11SphereShapeC2EfPKNS_15PhysicsMaterialE(ptr noundef nonnull align 8 dereferenceable(48) %89, float noundef 1.000000e+00, ptr noundef null)
          to label %91 unwind label %123

91:                                               ; preds = %90
  invoke void @_ZN3JPH20BodyCreationSettings8SetShapeEPKNS_5ShapeE(ptr noundef nonnull align 16 dereferenceable(256) %11, ptr noundef nonnull %89)
          to label %92 unwind label %121

92:                                               ; preds = %91
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %12) #10
  invoke void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %12, float noundef 0.000000e+00, float noundef 5.000000e-01, float noundef 0.000000e+00)
          to label %93 unwind label %125

93:                                               ; preds = %92
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 16 dereferenceable(16) %11, ptr noundef nonnull align 16 dereferenceable(16) %12, i64 16, i1 false), !tbaa.struct !29
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %12) #10
  %94 = getelementptr inbounds i8, ptr %11, i64 96
  store i8 2, ptr %94, align 16, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %13) #10
  invoke void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %13, float noundef -2.400000e+02, float noundef 0.000000e+00, float noundef -1.200000e+02)
          to label %95 unwind label %127

95:                                               ; preds = %93
  %96 = getelementptr inbounds i8, ptr %11, i64 32
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 16 dereferenceable(16) %96, ptr noundef nonnull align 16 dereferenceable(16) %13, i64 16, i1 false), !tbaa.struct !29
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %13) #10
  %97 = getelementptr inbounds i8, ptr %11, i64 108
  store <2 x float> <float 0.000000e+00, float 1.000000e+00>, ptr %97, align 4, !tbaa !37
  %98 = getelementptr inbounds i8, ptr %11, i64 72
  store i16 1, ptr %98, align 8, !tbaa !28
  %99 = load ptr, ptr %84, align 8, !tbaa !31
  %100 = invoke noundef ptr @_ZN3JPH13BodyInterface10CreateBodyERKNS_20BodyCreationSettingsE(ptr noundef nonnull align 8 dereferenceable(24) %99, ptr noundef nonnull align 16 dereferenceable(256) %11)
          to label %101 unwind label %121

101:                                              ; preds = %95
  %102 = getelementptr inbounds i8, ptr %0, i64 112
  store ptr %100, ptr %102, align 8, !tbaa !38
  %103 = load ptr, ptr %84, align 8, !tbaa !31
  %104 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK3JPH4Body5GetIDEv(ptr noundef nonnull align 16 dereferenceable(122) %100)
  invoke void @_ZN3JPH13BodyInterface7AddBodyERKNS_6BodyIDENS_11EActivationE(ptr noundef nonnull align 8 dereferenceable(24) %103, ptr noundef nonnull align 4 dereferenceable(4) %104, i32 noundef 0)
          to label %105 unwind label %121

105:                                              ; preds = %101
  invoke void @_ZN23ChangeMotionQualityTest19UpdateMotionQualityEv(ptr noundef nonnull align 8 dereferenceable(124) %0)
          to label %106 unwind label %121

106:                                              ; preds = %105
  call void @_ZN3JPH20BodyCreationSettingsD2Ev(ptr noundef nonnull align 16 dereferenceable(256) %11) #10
  call void @llvm.lifetime.end.p0(i64 256, ptr nonnull %11) #10
  call void @_ZN3JPH3RefINS_27StaticCompoundShapeSettingsEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %5) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %5) #10
  call void @_ZN3JPH3RefINS_16BoxShapeSettingsEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %3) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %3) #10
  call void @_ZN3JPH20BodyCreationSettingsD2Ev(ptr noundef nonnull align 16 dereferenceable(256) %2) #10
  call void @llvm.lifetime.end.p0(i64 256, ptr nonnull %2) #10
  ret void

107:                                              ; preds = %21, %1
  %108 = landingpad { ptr, i32 }
          cleanup
  br label %133

109:                                              ; preds = %17, %16
  %110 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3JPH16BoxShapeSettingsdlEPv(ptr noundef %15) #10
  br label %133

111:                                              ; preds = %25, %22
  %112 = landingpad { ptr, i32 }
          cleanup
  br label %132

113:                                              ; preds = %24
  %114 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3JPH27StaticCompoundShapeSettingsdlEPv(ptr noundef nonnull %23) #10
  br label %132

115:                                              ; preds = %83, %78, %71, %67, %65, %63, %56, %52, %50, %48, %41, %39, %37, %30, %28, %26
  %116 = landingpad { ptr, i32 }
          cleanup
  br label %131

117:                                              ; preds = %80
  %118 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %10) #10
  br label %131

119:                                              ; preds = %87
  %120 = landingpad { ptr, i32 }
          cleanup
  br label %130

121:                                              ; preds = %105, %101, %95, %91, %88
  %122 = landingpad { ptr, i32 }
          cleanup
  br label %129

123:                                              ; preds = %90
  %124 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3JPH11SphereShapedlEPv(ptr noundef %89) #10
  br label %129

125:                                              ; preds = %92
  %126 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %12) #10
  br label %129

127:                                              ; preds = %93
  %128 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %13) #10
  br label %129

129:                                              ; preds = %127, %125, %123, %121
  %.pn = phi { ptr, i32 } [ %122, %121 ], [ %128, %127 ], [ %126, %125 ], [ %124, %123 ]
  call void @_ZN3JPH20BodyCreationSettingsD2Ev(ptr noundef nonnull align 16 dereferenceable(256) %11) #10
  br label %130

130:                                              ; preds = %129, %119
  %.pn.pn = phi { ptr, i32 } [ %.pn, %129 ], [ %120, %119 ]
  call void @llvm.lifetime.end.p0(i64 256, ptr nonnull %11) #10
  br label %131

131:                                              ; preds = %130, %117, %115
  %.pn.pn.pn = phi { ptr, i32 } [ %.pn.pn, %130 ], [ %116, %115 ], [ %118, %117 ]
  call void @_ZN3JPH3RefINS_27StaticCompoundShapeSettingsEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %5) #10
  br label %132

132:                                              ; preds = %131, %113, %111
  %.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn.pn.pn, %131 ], [ %112, %111 ], [ %114, %113 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %5) #10
  call void @_ZN3JPH3RefINS_16BoxShapeSettingsEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %3) #10
  br label %133

133:                                              ; preds = %132, %109, %107
  %.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn.pn.pn.pn, %132 ], [ %108, %107 ], [ %110, %109 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %3) #10
  call void @_ZN3JPH20BodyCreationSettingsD2Ev(ptr noundef nonnull align 16 dereferenceable(256) %2) #10
  call void @llvm.lifetime.end.p0(i64 256, ptr nonnull %2) #10
  resume { ptr, i32 } %.pn.pn.pn.pn.pn
}

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN23ChangeMotionQualityTest19UpdateMotionQualityEv(ptr noundef nonnull align 8 dereferenceable(124)) local_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 #8 align 2

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

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

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !18, i64 96}
!6 = !{!"_ZTSN3JPH20BodyCreationSettingsE", !7, i64 0, !10, i64 16, !7, i64 32, !7, i64 48, !12, i64 64, !13, i64 72, !14, i64 80, !18, i64 96, !19, i64 97, !20, i64 98, !20, i64 99, !20, i64 100, !20, i64 101, !20, i64 102, !21, i64 103, !20, i64 104, !20, i64 105, !22, i64 108, !22, i64 112, !22, i64 116, !22, i64 120, !22, i64 124, !22, i64 128, !22, i64 132, !17, i64 136, !17, i64 140, !23, i64 144, !22, i64 148, !24, i64 160, !26, i64 240, !27, i64 248}
!7 = !{!"_ZTSN3JPH4Vec3E", !8, i64 0}
!8 = !{!"omnipotent char", !9, i64 0}
!9 = !{!"Simple C++ TBAA"}
!10 = !{!"_ZTSN3JPH4QuatE", !11, i64 0}
!11 = !{!"_ZTSN3JPH4Vec4E", !8, i64 0}
!12 = !{!"long", !8, i64 0}
!13 = !{!"short", !8, i64 0}
!14 = !{!"_ZTSN3JPH14CollisionGroupE", !15, i64 0, !17, i64 8, !17, i64 12}
!15 = !{!"_ZTSN3JPH8RefConstINS_11GroupFilterEEE", !16, i64 0}
!16 = !{!"any pointer", !8, i64 0}
!17 = !{!"int", !8, i64 0}
!18 = !{!"_ZTSN3JPH11EMotionTypeE", !8, i64 0}
!19 = !{!"_ZTSN3JPH12EAllowedDOFsE", !8, i64 0}
!20 = !{!"bool", !8, i64 0}
!21 = !{!"_ZTSN3JPH14EMotionQualityE", !8, i64 0}
!22 = !{!"float", !8, i64 0}
!23 = !{!"_ZTSN3JPH23EOverrideMassPropertiesE", !8, i64 0}
!24 = !{!"_ZTSN3JPH14MassPropertiesE", !22, i64 0, !25, i64 16}
!25 = !{!"_ZTSN3JPH5Mat44E", !8, i64 0}
!26 = !{!"_ZTSN3JPH8RefConstINS_13ShapeSettingsEEE", !16, i64 0}
!27 = !{!"_ZTSN3JPH8RefConstINS_5ShapeEEE", !16, i64 0}
!28 = !{!6, !13, i64 72}
!29 = !{i64 0, i64 16, !30}
!30 = !{!8, !8, i64 0}
!31 = !{!32, !16, i64 24}
!32 = !{!"_ZTS4Test", !16, i64 8, !16, i64 16, !16, i64 24, !16, i64 32, !16, i64 40, !20, 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", !16, i64 0, !12, i64 8, !35, i64 16, !12, i64 24, !36, i64 32, !16, i64 48}
!35 = !{!"_ZTSNSt8__detail15_Hash_node_baseE", !16, i64 0}
!36 = !{!"_ZTSNSt8__detail20_Prime_rehash_policyE", !22, i64 0, !12, i64 8}
!37 = !{!22, !22, i64 0}
!38 = !{!39, !16, i64 112}
!39 = !{!"_ZTS23ChangeMotionQualityTest", !32, i64 0, !16, i64 112, !22, i64 120}


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