; LLVM IR from jrouwe/JoltPhysics :: Samples/Tests/Constraints (PoweredSliderConstraintTest)

; 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::Ref" = type { ptr }
%"class.JPH::RefConst" = type { ptr }
%"class.JPH::Vec3" = type { %union.anon }
%union.anon = type { <4 x float> }
%"class.JPH::BodyCreationSettings" = type { %"class.JPH::Vec3", %"class.JPH::Quat", %"class.JPH::Vec3", %"class.JPH::Vec3", i64, i16, %"class.JPH::CollisionGroup", i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, float, float, float, float, float, float, float, i32, i32, i8, float, %"class.JPH::MassProperties", %"class.JPH::RefConst.10", %"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::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.10" = type { ptr }
%"class.JPH::SliderConstraintSettings" = type <{ %"class.JPH::TwoBodyConstraintSettings", i32, i8, [3 x i8], %"class.JPH::Vec3", %"class.JPH::Vec3", %"class.JPH::Vec3", %"class.JPH::Vec3", %"class.JPH::Vec3", %"class.JPH::Vec3", float, float, %"class.JPH::SpringSettings", float, %"class.JPH::MotorSettings", [12 x i8] }>
%"class.JPH::TwoBodyConstraintSettings" = type { %"class.JPH::ConstraintSettings" }
%"class.JPH::ConstraintSettings" = type { %"class.JPH::SerializableObject", %"class.JPH::RefTarget.11", i8, i32, i32, i32, float, i64 }
%"class.JPH::SerializableObject" = type { ptr }
%"class.JPH::RefTarget.11" = type { %"struct.std::atomic.6" }
%"struct.std::atomic.6" = type { %"struct.std::__atomic_base.7" }
%"struct.std::__atomic_base.7" = type { i32 }
%"class.JPH::SpringSettings" = type { i8, %union.anon.12, float }
%union.anon.12 = type { float }
%"class.JPH::MotorSettings" = type { %"class.JPH::SpringSettings", float, float, float, float }
%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.PoweredSliderConstraintTest = type { %class.Test, ptr, ptr }

; 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 @_ZN27PoweredSliderConstraintTest10InitializeEv(ptr noundef nonnull align 8 dereferenceable(128) %0) unnamed_addr #1 align 2 personality ptr @__gxx_personality_v0 {
  %2 = alloca ptr, align 8
  %3 = alloca %"class.JPH::Ref", align 8
  %4 = alloca ptr, align 8
  %5 = alloca i32, align 4
  %6 = alloca float, align 4
  %7 = alloca %"class.JPH::RefConst", align 8
  %8 = alloca %"class.JPH::Vec3", align 16
  %9 = alloca %"class.JPH::Vec3", align 16
  %10 = alloca ptr, align 8
  %11 = alloca %"class.JPH::BodyCreationSettings", align 16
  %12 = alloca %"class.JPH::Vec3", align 16
  %13 = alloca %"class.JPH::Quat", align 16
  %14 = alloca %"class.JPH::CollisionGroup", align 8
  %15 = alloca %"class.JPH::Vec3", align 16
  %16 = alloca %"class.JPH::BodyCreationSettings", align 16
  %17 = alloca %"class.JPH::Vec3", align 16
  %18 = alloca %"class.JPH::Quat", align 16
  %19 = alloca %"class.JPH::CollisionGroup", align 8
  %20 = alloca %"class.JPH::SliderConstraintSettings", align 16
  %21 = alloca %"class.JPH::Vec3", align 16
  store ptr %0, ptr %2, align 8, !tbaa !5
  %22 = load ptr, ptr %2, align 8
  %23 = call noundef nonnull align 16 dereferenceable(122) ptr @_ZN4Test11CreateFloorEf(ptr noundef nonnull align 8 dereferenceable(112) %22, float noundef 2.000000e+02)
  call void @llvm.lifetime.start.p0(i64 8, ptr %3) #10
  %24 = call noundef ptr @_ZN3JPH16GroupFilterTablenwEm(i64 noundef 40)
  invoke void @_ZN3JPH16GroupFilterTableC2Ej(ptr noundef nonnull align 8 dereferenceable(40) %24, i32 noundef 0)
          to label %25 unwind label %169

25:                                               ; preds = %1
  call void @_ZN3JPH3RefINS_16GroupFilterTableEEC2EPS1_(ptr noundef nonnull align 8 dereferenceable(8) %3, ptr noundef %24)
  call void @llvm.lifetime.start.p0(i64 4, ptr %6) #10
  store float 4.000000e+00, ptr %6, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %7) #10
  %26 = invoke noundef ptr @_ZN3JPH8BoxShapenwEm(i64 noundef 80)
          to label %27 unwind label %173

27:                                               ; preds = %25
  %28 = load float, ptr %6, align 4, !tbaa !9
  %29 = fmul float 5.000000e-01, %28
  %30 = invoke { double, double } @_ZN3JPH4Vec310sReplicateEf(float noundef %29)
          to label %31 unwind label %177

31:                                               ; preds = %27
  %32 = getelementptr inbounds %"class.JPH::Vec3", ptr %8, i32 0, i32 0
  %33 = getelementptr inbounds %union.anon, ptr %32, i32 0, i32 0
  %34 = getelementptr inbounds { double, double }, ptr %33, i32 0, i32 0
  %35 = extractvalue { double, double } %30, 0
  store double %35, ptr %34, align 16
  %36 = getelementptr inbounds { double, double }, ptr %33, i32 0, i32 1
  %37 = extractvalue { double, double } %30, 1
  store double %37, ptr %36, align 8
  %38 = getelementptr inbounds { double, double }, ptr %8, i32 0, i32 0
  %39 = load double, ptr %38, align 16
  %40 = getelementptr inbounds { double, double }, ptr %8, i32 0, i32 1
  %41 = load double, ptr %40, align 8
  invoke void @_ZN3JPH8BoxShapeC2ENS_4Vec3EfPKNS_15PhysicsMaterialE(ptr noundef nonnull align 16 dereferenceable(80) %26, double %39, double %41, float noundef 0x3FA99999A0000000, ptr noundef null)
          to label %42 unwind label %177

42:                                               ; preds = %31
  invoke void @_ZN3JPH8RefConstINS_5ShapeEEC2EPKS1_(ptr noundef nonnull align 8 dereferenceable(8) %7, ptr noundef %26)
          to label %43 unwind label %173

43:                                               ; preds = %42
  call void @llvm.lifetime.start.p0(i64 16, ptr %9) #10
  invoke void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %9, float noundef 0.000000e+00, float noundef 1.000000e+01, float noundef 0.000000e+00)
          to label %44 unwind label %181

44:                                               ; preds = %43
  call void @llvm.lifetime.start.p0(i64 8, ptr %10) #10
  %45 = getelementptr inbounds %class.Test, ptr %22, i32 0, i32 3
  %46 = load ptr, ptr %45, align 8, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 256, ptr %11) #10
  %47 = invoke noundef ptr @_ZNK3JPH8RefConstINS_5ShapeEEcvPKS1_Ev(ptr noundef nonnull align 8 dereferenceable(8) %7)
          to label %48 unwind label %185

48:                                               ; preds = %44
  call void @llvm.memcpy.p0.p0.i64(ptr align 16 %12, ptr align 16 %9, i64 16, i1 false), !tbaa.struct !19
  %49 = invoke { double, double } @_ZN3JPH4Quat9sIdentityEv()
          to label %50 unwind label %185

50:                                               ; preds = %48
  %51 = getelementptr inbounds %"class.JPH::Quat", ptr %13, i32 0, i32 0
  %52 = getelementptr inbounds %"class.JPH::Vec4", ptr %51, i32 0, i32 0
  %53 = getelementptr inbounds %union.anon.4, ptr %52, i32 0, i32 0
  %54 = getelementptr inbounds { double, double }, ptr %53, i32 0, i32 0
  %55 = extractvalue { double, double } %49, 0
  store double %55, ptr %54, align 16
  %56 = getelementptr inbounds { double, double }, ptr %53, i32 0, i32 1
  %57 = extractvalue { double, double } %49, 1
  store double %57, ptr %56, align 8
  %58 = getelementptr inbounds { double, double }, ptr %12, i32 0, i32 0
  %59 = load double, ptr %58, align 16
  %60 = getelementptr inbounds { double, double }, ptr %12, i32 0, i32 1
  %61 = load double, ptr %60, align 8
  %62 = getelementptr inbounds { double, double }, ptr %13, i32 0, i32 0
  %63 = load double, ptr %62, align 16
  %64 = getelementptr inbounds { double, double }, ptr %13, i32 0, i32 1
  %65 = load double, ptr %64, align 8
  invoke void @_ZN3JPH20BodyCreationSettingsC2EPKNS_5ShapeENS_4Vec3ENS_4QuatENS_11EMotionTypeEt(ptr noundef nonnull align 16 dereferenceable(256) %11, ptr noundef %47, double %59, double %61, double %63, double %65, i8 noundef zeroext 0, i16 noundef zeroext 0)
          to label %66 unwind label %185

66:                                               ; preds = %50
  %67 = invoke noundef ptr @_ZN3JPH13BodyInterface10CreateBodyERKNS_20BodyCreationSettingsE(ptr noundef nonnull align 8 dereferenceable(24) %46, ptr noundef nonnull align 16 dereferenceable(256) %11)
          to label %68 unwind label %189

68:                                               ; preds = %66
  call void @_ZN3JPH20BodyCreationSettingsD2Ev(ptr noundef nonnull align 16 dereferenceable(256) %11) #10
  call void @llvm.lifetime.end.p0(i64 256, ptr %11) #10
  store ptr %67, ptr %10, align 8, !tbaa !5
  %69 = load ptr, ptr %10, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 16, ptr %14) #10
  %70 = invoke noundef ptr @_ZNK3JPH3RefINS_16GroupFilterTableEEcvPS1_Ev(ptr noundef nonnull align 8 dereferenceable(8) %3)
          to label %71 unwind label %194

71:                                               ; preds = %68
  invoke void @_ZN3JPH14CollisionGroupC2EPKNS_11GroupFilterEjj(ptr noundef nonnull align 8 dereferenceable(16) %14, ptr noundef %70, i32 noundef 0, i32 noundef 0)
          to label %72 unwind label %194

72:                                               ; preds = %71
  invoke void @_ZN3JPH4Body17SetCollisionGroupERKNS_14CollisionGroupE(ptr noundef nonnull align 16 dereferenceable(122) %69, ptr noundef nonnull align 8 dereferenceable(16) %14)
          to label %73 unwind label %198

73:                                               ; preds = %72
  call void @_ZN3JPH14CollisionGroupD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %14) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr %14) #10
  %74 = getelementptr inbounds %class.Test, ptr %22, i32 0, i32 3
  %75 = load ptr, ptr %74, align 8, !tbaa !11
  %76 = load ptr, ptr %10, align 8, !tbaa !5
  %77 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZNK3JPH4Body5GetIDEv(ptr noundef nonnull align 16 dereferenceable(122) %76)
          to label %78 unwind label %203

78:                                               ; preds = %73
  invoke void @_ZN3JPH13BodyInterface7AddBodyERKNS_6BodyIDENS_11EActivationE(ptr noundef nonnull align 8 dereferenceable(24) %75, ptr noundef nonnull align 4 dereferenceable(4) %77, i32 noundef 1)
          to label %79 unwind label %203

79:                                               ; preds = %78
  %80 = load float, ptr %6, align 4, !tbaa !9
  %81 = fadd float %80, 1.000000e+01
  invoke void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %15, float noundef %81, float noundef 0.000000e+00, float noundef 0.000000e+00)
          to label %82 unwind label %203

82:                                               ; preds = %79
  %83 = getelementptr inbounds { double, double }, ptr %15, i32 0, i32 0
  %84 = load double, ptr %83, align 16
  %85 = getelementptr inbounds { double, double }, ptr %15, i32 0, i32 1
  %86 = load double, ptr %85, align 8
  %87 = invoke noundef nonnull align 16 dereferenceable(16) ptr @_ZN3JPH4Vec3pLES0_(ptr noundef nonnull align 16 dereferenceable(16) %9, double %84, double %86)
          to label %88 unwind label %203

88:                                               ; preds = %82
  %89 = getelementptr inbounds %class.Test, ptr %22, i32 0, i32 3
  %90 = load ptr, ptr %89, align 8, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 256, ptr %16) #10
  %91 = invoke noundef ptr @_ZNK3JPH8RefConstINS_5ShapeEEcvPKS1_Ev(ptr noundef nonnull align 8 dereferenceable(8) %7)
          to label %92 unwind label %207

92:                                               ; preds = %88
  call void @llvm.memcpy.p0.p0.i64(ptr align 16 %17, ptr align 16 %9, i64 16, i1 false), !tbaa.struct !19
  %93 = invoke { double, double } @_ZN3JPH4Quat9sIdentityEv()
          to label %94 unwind label %207

94:                                               ; preds = %92
  %95 = getelementptr inbounds %"class.JPH::Quat", ptr %18, i32 0, i32 0
  %96 = getelementptr inbounds %"class.JPH::Vec4", ptr %95, i32 0, i32 0
  %97 = getelementptr inbounds %union.anon.4, ptr %96, i32 0, i32 0
  %98 = getelementptr inbounds { double, double }, ptr %97, i32 0, i32 0
  %99 = extractvalue { double, double } %93, 0
  store double %99, ptr %98, align 16
  %100 = getelementptr inbounds { double, double }, ptr %97, i32 0, i32 1
  %101 = extractvalue { double, double } %93, 1
  store double %101, ptr %100, align 8
  %102 = getelementptr inbounds { double, double }, ptr %17, i32 0, i32 0
  %103 = load double, ptr %102, align 16
  %104 = getelementptr inbounds { double, double }, ptr %17, i32 0, i32 1
  %105 = load double, ptr %104, align 8
  %106 = getelementptr inbounds { double, double }, ptr %18, i32 0, i32 0
  %107 = load double, ptr %106, align 16
  %108 = getelementptr inbounds { double, double }, ptr %18, i32 0, i32 1
  %109 = load double, ptr %108, align 8
  invoke void @_ZN3JPH20BodyCreationSettingsC2EPKNS_5ShapeENS_4Vec3ENS_4QuatENS_11EMotionTypeEt(ptr noundef nonnull align 16 dereferenceable(256) %16, ptr noundef %91, double %103, double %105, double %107, double %109, i8 noundef zeroext 2, i16 noundef zeroext 1)
          to label %110 unwind label %207

110:                                              ; preds = %94
  %111 = invoke noundef ptr @_ZN3JPH13BodyInterface10CreateBodyERKNS_20BodyCreationSettingsE(ptr noundef nonnull align 8 dereferenceable(24) %90, ptr noundef nonnull align 16 dereferenceable(256) %16)
          to label %112 unwind label %211

112:                                              ; preds = %110
  %113 = getelementptr inbounds %class.PoweredSliderConstraintTest, ptr %22, i32 0, i32 1
  store ptr %111, ptr %113, align 8, !tbaa !21
  call void @_ZN3JPH20BodyCreationSettingsD2Ev(ptr noundef nonnull align 16 dereferenceable(256) %16) #10
  call void @llvm.lifetime.end.p0(i64 256, ptr %16) #10
  %114 = getelementptr inbounds %class.PoweredSliderConstraintTest, ptr %22, i32 0, i32 1
  %115 = load ptr, ptr %114, align 8, !tbaa !21
  call void @llvm.lifetime.start.p0(i64 16, ptr %19) #10
  %116 = invoke noundef ptr @_ZNK3JPH3RefINS_16GroupFilterTableEEcvPS1_Ev(ptr noundef nonnull align 8 dereferenceable(8) %3)
          to label %117 unwind label %216

117:                                              ; preds = %112
  invoke void @_ZN3JPH14CollisionGroupC2EPKNS_11GroupFilterEjj(ptr noundef nonnull align 8 dereferenceable(16) %19, ptr noundef %116, i32 noundef 0, i32 noundef 0)
          to label %118 unwind label %216

118:                                              ; preds = %117
  invoke void @_ZN3JPH4Body17SetCollisionGroupERKNS_14CollisionGroupE(ptr noundef nonnull align 16 dereferenceable(122) %115, ptr noundef nonnull align 8 dereferenceable(16) %19)
          to label %119 unwind label %220

119:                                              ; preds = %118
  call void @_ZN3JPH14CollisionGroupD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %19) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr %19) #10
  %120 = getelementptr inbounds %class.PoweredSliderConstraintTest, ptr %22, i32 0, i32 1
  %121 = load ptr, ptr %120, align 8, !tbaa !21
  %122 = invoke noundef ptr @_ZN3JPH4Body19GetMotionPropertiesEv(ptr noundef nonnull align 16 dereferenceable(122) %121)
          to label %123 unwind label %203

123:                                              ; preds = %119
  invoke void @_ZN3JPH16MotionProperties16SetLinearDampingEf(ptr noundef nonnull align 16 dereferenceable(182) %122, float noundef 0.000000e+00)
          to label %124 unwind label %203

124:                                              ; preds = %123
  %125 = getelementptr inbounds %class.PoweredSliderConstraintTest, ptr %22, i32 0, i32 1
  %126 = load ptr, ptr %125, align 8, !tbaa !21
  invoke void @_ZN3JPH4Body16SetAllowSleepingEb(ptr noundef nonnull align 16 dereferenceable(122) %126, i1 noundef zeroext false)
          to label %127 unwind label %203

127:                                              ; preds = %124
  %128 = getelementptr inbounds %class.Test, ptr %22, i32 0, i32 3
  %129 = load ptr, ptr %128, align 8, !tbaa !11
  %130 = getelementptr inbounds %class.PoweredSliderConstraintTest, ptr %22, i32 0, i32 1
  %131 = load ptr, ptr %130, align 8, !tbaa !21
  %132 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZNK3JPH4Body5GetIDEv(ptr noundef nonnull align 16 dereferenceable(122) %131)
          to label %133 unwind label %203

133:                                              ; preds = %127
  invoke void @_ZN3JPH13BodyInterface7AddBodyERKNS_6BodyIDENS_11EActivationE(ptr noundef nonnull align 8 dereferenceable(24) %129, ptr noundef nonnull align 4 dereferenceable(4) %132, i32 noundef 0)
          to label %134 unwind label %203

134:                                              ; preds = %133
  call void @llvm.lifetime.start.p0(i64 208, ptr %20) #10
  invoke void @_ZN3JPH24SliderConstraintSettingsC2Ev(ptr noundef nonnull align 16 dereferenceable(208) %20)
          to label %135 unwind label %225

135:                                              ; preds = %134
  %136 = getelementptr inbounds %"class.JPH::SliderConstraintSettings", ptr %20, i32 0, i32 2
  store i8 1, ptr %136, align 4, !tbaa !23
  %137 = invoke { double, double } @_ZN3JPH4Vec36sAxisXEv()
          to label %138 unwind label %229

138:                                              ; preds = %135
  %139 = getelementptr inbounds %"class.JPH::Vec3", ptr %21, i32 0, i32 0
  %140 = getelementptr inbounds %union.anon, ptr %139, i32 0, i32 0
  %141 = getelementptr inbounds { double, double }, ptr %140, i32 0, i32 0
  %142 = extractvalue { double, double } %137, 0
  store double %142, ptr %141, align 16
  %143 = getelementptr inbounds { double, double }, ptr %140, i32 0, i32 1
  %144 = extractvalue { double, double } %137, 1
  store double %144, ptr %143, align 8
  %145 = getelementptr inbounds { double, double }, ptr %21, i32 0, i32 0
  %146 = load double, ptr %145, align 16
  %147 = getelementptr inbounds { double, double }, ptr %21, i32 0, i32 1
  %148 = load double, ptr %147, align 8
  invoke void @_ZN3JPH24SliderConstraintSettings13SetSliderAxisENS_4Vec3E(ptr noundef nonnull align 16 dereferenceable(208) %20, double %146, double %148)
          to label %149 unwind label %229

149:                                              ; preds = %138
  %150 = getelementptr inbounds %"class.JPH::SliderConstraintSettings", ptr %20, i32 0, i32 10
  store float -5.000000e+00, ptr %150, align 16, !tbaa !37
  %151 = getelementptr inbounds %"class.JPH::SliderConstraintSettings", ptr %20, i32 0, i32 11
  store float 1.000000e+02, ptr %151, align 4, !tbaa !38
  %152 = load ptr, ptr %10, align 8, !tbaa !5
  %153 = getelementptr inbounds %class.PoweredSliderConstraintTest, ptr %22, i32 0, i32 1
  %154 = load ptr, ptr %153, align 8, !tbaa !21
  %155 = invoke noundef ptr @_ZNK3JPH24SliderConstraintSettings6CreateERNS_4BodyES2_(ptr noundef nonnull align 16 dereferenceable(208) %20, ptr noundef nonnull align 16 dereferenceable(122) %152, ptr noundef nonnull align 16 dereferenceable(122) %154)
          to label %156 unwind label %229

156:                                              ; preds = %149
  %157 = getelementptr inbounds %class.PoweredSliderConstraintTest, ptr %22, i32 0, i32 2
  store ptr %155, ptr %157, align 8, !tbaa !39
  %158 = getelementptr inbounds %class.PoweredSliderConstraintTest, ptr %22, i32 0, i32 2
  %159 = load ptr, ptr %158, align 8, !tbaa !39
  invoke void @_ZN3JPH16SliderConstraint13SetMotorStateENS_11EMotorStateE(ptr noundef nonnull align 16 dereferenceable(832) %159, i32 noundef 1)
          to label %160 unwind label %229

160:                                              ; preds = %156
  %161 = getelementptr inbounds %class.PoweredSliderConstraintTest, ptr %22, i32 0, i32 2
  %162 = load ptr, ptr %161, align 8, !tbaa !39
  invoke void @_ZN3JPH16SliderConstraint17SetTargetVelocityEf(ptr noundef nonnull align 16 dereferenceable(832) %162, float noundef 1.000000e+00)
          to label %163 unwind label %229

163:                                              ; preds = %160
  %164 = getelementptr inbounds %class.Test, ptr %22, i32 0, i32 2
  %165 = load ptr, ptr %164, align 8, !tbaa !40
  %166 = getelementptr inbounds %class.PoweredSliderConstraintTest, ptr %22, i32 0, i32 2
  %167 = load ptr, ptr %166, align 8, !tbaa !39
  invoke void @_ZN3JPH13PhysicsSystem13AddConstraintEPNS_10ConstraintE(ptr noundef nonnull align 16 dereferenceable(1172) %165, ptr noundef %167)
          to label %168 unwind label %229

168:                                              ; preds = %163
  call void @_ZN3JPH18ConstraintSettingsD2Ev(ptr noundef nonnull align 16 dereferenceable(208) %20) #10
  call void @llvm.lifetime.end.p0(i64 208, ptr %20) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %10) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr %9) #10
  call void @_ZN3JPH8RefConstINS_5ShapeEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %7) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %7) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %6) #10
  call void @_ZN3JPH3RefINS_16GroupFilterTableEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %3) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %3) #10
  ret void

169:                                              ; preds = %1
  %170 = landingpad { ptr, i32 }
          cleanup
  %171 = extractvalue { ptr, i32 } %170, 0
  store ptr %171, ptr %4, align 8
  %172 = extractvalue { ptr, i32 } %170, 1
  store i32 %172, ptr %5, align 4
  call void @_ZN3JPH16GroupFilterTabledlEPv(ptr noundef %24) #10
  br label %237

173:                                              ; preds = %42, %25
  %174 = landingpad { ptr, i32 }
          cleanup
  %175 = extractvalue { ptr, i32 } %174, 0
  store ptr %175, ptr %4, align 8
  %176 = extractvalue { ptr, i32 } %174, 1
  store i32 %176, ptr %5, align 4
  br label %236

177:                                              ; preds = %31, %27
  %178 = landingpad { ptr, i32 }
          cleanup
  %179 = extractvalue { ptr, i32 } %178, 0
  store ptr %179, ptr %4, align 8
  %180 = extractvalue { ptr, i32 } %178, 1
  store i32 %180, ptr %5, align 4
  call void @_ZN3JPH8BoxShapedlEPv(ptr noundef %26) #10
  br label %236

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

185:                                              ; preds = %50, %48, %44
  %186 = landingpad { ptr, i32 }
          cleanup
  %187 = extractvalue { ptr, i32 } %186, 0
  store ptr %187, ptr %4, align 8
  %188 = extractvalue { ptr, i32 } %186, 1
  store i32 %188, ptr %5, align 4
  br label %193

189:                                              ; preds = %66
  %190 = landingpad { ptr, i32 }
          cleanup
  %191 = extractvalue { ptr, i32 } %190, 0
  store ptr %191, ptr %4, align 8
  %192 = extractvalue { ptr, i32 } %190, 1
  store i32 %192, ptr %5, align 4
  call void @_ZN3JPH20BodyCreationSettingsD2Ev(ptr noundef nonnull align 16 dereferenceable(256) %11) #10
  br label %193

193:                                              ; preds = %189, %185
  call void @llvm.lifetime.end.p0(i64 256, ptr %11) #10
  br label %234

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

198:                                              ; preds = %72
  %199 = landingpad { ptr, i32 }
          cleanup
  %200 = extractvalue { ptr, i32 } %199, 0
  store ptr %200, ptr %4, align 8
  %201 = extractvalue { ptr, i32 } %199, 1
  store i32 %201, ptr %5, align 4
  call void @_ZN3JPH14CollisionGroupD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %14) #10
  br label %202

202:                                              ; preds = %198, %194
  call void @llvm.lifetime.end.p0(i64 16, ptr %14) #10
  br label %234

203:                                              ; preds = %133, %127, %124, %123, %119, %82, %79, %78, %73
  %204 = landingpad { ptr, i32 }
          cleanup
  %205 = extractvalue { ptr, i32 } %204, 0
  store ptr %205, ptr %4, align 8
  %206 = extractvalue { ptr, i32 } %204, 1
  store i32 %206, ptr %5, align 4
  br label %234

207:                                              ; preds = %94, %92, %88
  %208 = landingpad { ptr, i32 }
          cleanup
  %209 = extractvalue { ptr, i32 } %208, 0
  store ptr %209, ptr %4, align 8
  %210 = extractvalue { ptr, i32 } %208, 1
  store i32 %210, ptr %5, align 4
  br label %215

211:                                              ; preds = %110
  %212 = landingpad { ptr, i32 }
          cleanup
  %213 = extractvalue { ptr, i32 } %212, 0
  store ptr %213, ptr %4, align 8
  %214 = extractvalue { ptr, i32 } %212, 1
  store i32 %214, ptr %5, align 4
  call void @_ZN3JPH20BodyCreationSettingsD2Ev(ptr noundef nonnull align 16 dereferenceable(256) %16) #10
  br label %215

215:                                              ; preds = %211, %207
  call void @llvm.lifetime.end.p0(i64 256, ptr %16) #10
  br label %234

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

220:                                              ; preds = %118
  %221 = landingpad { ptr, i32 }
          cleanup
  %222 = extractvalue { ptr, i32 } %221, 0
  store ptr %222, ptr %4, align 8
  %223 = extractvalue { ptr, i32 } %221, 1
  store i32 %223, ptr %5, align 4
  call void @_ZN3JPH14CollisionGroupD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %19) #10
  br label %224

224:                                              ; preds = %220, %216
  call void @llvm.lifetime.end.p0(i64 16, ptr %19) #10
  br label %234

225:                                              ; preds = %134
  %226 = landingpad { ptr, i32 }
          cleanup
  %227 = extractvalue { ptr, i32 } %226, 0
  store ptr %227, ptr %4, align 8
  %228 = extractvalue { ptr, i32 } %226, 1
  store i32 %228, ptr %5, align 4
  br label %233

229:                                              ; preds = %163, %160, %156, %149, %138, %135
  %230 = landingpad { ptr, i32 }
          cleanup
  %231 = extractvalue { ptr, i32 } %230, 0
  store ptr %231, ptr %4, align 8
  %232 = extractvalue { ptr, i32 } %230, 1
  store i32 %232, ptr %5, align 4
  call void @_ZN3JPH18ConstraintSettingsD2Ev(ptr noundef nonnull align 16 dereferenceable(208) %20) #10
  br label %233

233:                                              ; preds = %229, %225
  call void @llvm.lifetime.end.p0(i64 208, ptr %20) #10
  br label %234

234:                                              ; preds = %233, %224, %215, %203, %202, %193
  call void @llvm.lifetime.end.p0(i64 8, ptr %10) #10
  br label %235

235:                                              ; preds = %234, %181
  call void @llvm.lifetime.end.p0(i64 16, ptr %9) #10
  call void @_ZN3JPH8RefConstINS_5ShapeEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %7) #10
  br label %236

236:                                              ; preds = %235, %177, %173
  call void @llvm.lifetime.end.p0(i64 8, ptr %7) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %6) #10
  call void @_ZN3JPH3RefINS_16GroupFilterTableEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %3) #10
  br label %237

237:                                              ; preds = %236, %169
  call void @llvm.lifetime.end.p0(i64 8, ptr %3) #10
  br label %238

238:                                              ; preds = %237
  %239 = load ptr, ptr %4, align 8
  %240 = load i32, ptr %5, align 4
  %241 = insertvalue { ptr, i32 } poison, ptr %239, 0
  %242 = insertvalue { ptr, i32 } %241, i32 %240, 1
  resume { ptr, i32 } %242
}

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

declare void @_ZN3JPH4Body16SetAllowSleepingEb(ptr noundef nonnull align 16 dereferenceable(122), i1 noundef zeroext) #2

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZN3JPH24SliderConstraintSettingsC2Ev(ptr noundef nonnull align 16 dereferenceable(208)) unnamed_addr #5 align 2

declare void @_ZN3JPH24SliderConstraintSettings13SetSliderAxisENS_4Vec3E(ptr noundef nonnull align 16 dereferenceable(208), double, double) #2

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

declare noundef ptr @_ZNK3JPH24SliderConstraintSettings6CreateERNS_4BodyES2_(ptr noundef nonnull align 16 dereferenceable(208), ptr noundef nonnull align 16 dereferenceable(122), ptr noundef nonnull align 16 dereferenceable(122)) unnamed_addr #2

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZN3JPH16SliderConstraint17SetTargetVelocityEf(ptr noundef nonnull align 16 dereferenceable(832), float noundef) #9 align 2

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

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

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

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

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"float", !7, i64 0}
!11 = !{!12, !6, i64 24}
!12 = !{!"_ZTS4Test", !6, i64 8, !6, i64 16, !6, i64 24, !6, i64 32, !6, i64 40, !13, i64 48, !14, i64 56}
!13 = !{!"bool", !7, i64 0}
!14 = !{!"_ZTSSt13unordered_mapIN3JPH6BodyIDENSt7__cxx1112basic_stringIcSt11char_traitsIcENS0_12STLAllocatorIcEEEESt4hashIS1_ESt8equal_toIS1_ESaISt4pairIKS1_S8_EEE", !15, i64 0}
!15 = !{!"_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, !16, i64 8, !17, i64 16, !16, i64 24, !18, i64 32, !6, i64 48}
!16 = !{!"long", !7, i64 0}
!17 = !{!"_ZTSNSt8__detail15_Hash_node_baseE", !6, i64 0}
!18 = !{!"_ZTSNSt8__detail20_Prime_rehash_policyE", !10, i64 0, !16, i64 8}
!19 = !{i64 0, i64 16, !20}
!20 = !{!7, !7, i64 0}
!21 = !{!22, !6, i64 112}
!22 = !{!"_ZTS27PoweredSliderConstraintTest", !12, i64 0, !6, i64 112, !6, i64 120}
!23 = !{!24, !13, i64 44}
!24 = !{!"_ZTSN3JPH24SliderConstraintSettingsE", !25, i64 0, !32, i64 40, !13, i64 44, !33, i64 48, !33, i64 64, !33, i64 80, !33, i64 96, !33, i64 112, !33, i64 128, !10, i64 144, !10, i64 148, !34, i64 152, !10, i64 164, !36, i64 168}
!25 = !{!"_ZTSN3JPH25TwoBodyConstraintSettingsE", !26, i64 0}
!26 = !{!"_ZTSN3JPH18ConstraintSettingsE", !27, i64 0, !28, i64 8, !13, i64 12, !31, i64 16, !31, i64 20, !31, i64 24, !10, i64 28, !16, i64 32}
!27 = !{!"_ZTSN3JPH18SerializableObjectE"}
!28 = !{!"_ZTSN3JPH9RefTargetINS_18ConstraintSettingsEEE", !29, i64 0}
!29 = !{!"_ZTSSt6atomicIjE", !30, i64 0}
!30 = !{!"_ZTSSt13__atomic_baseIjE", !31, i64 0}
!31 = !{!"int", !7, i64 0}
!32 = !{!"_ZTSN3JPH16EConstraintSpaceE", !7, i64 0}
!33 = !{!"_ZTSN3JPH4Vec3E", !7, i64 0}
!34 = !{!"_ZTSN3JPH14SpringSettingsE", !35, i64 0, !7, i64 4, !10, i64 8}
!35 = !{!"_ZTSN3JPH11ESpringModeE", !7, i64 0}
!36 = !{!"_ZTSN3JPH13MotorSettingsE", !34, i64 0, !10, i64 12, !10, i64 16, !10, i64 20, !10, i64 24}
!37 = !{!24, !10, i64 144}
!38 = !{!24, !10, i64 148}
!39 = !{!22, !6, i64 120}
!40 = !{!12, !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::Ref" = type { ptr }
%"class.JPH::RefConst" = type { ptr }
%"class.JPH::Vec3" = type { %union.anon }
%union.anon = type { <4 x float> }
%"class.JPH::BodyCreationSettings" = type { %"class.JPH::Vec3", %"class.JPH::Quat", %"class.JPH::Vec3", %"class.JPH::Vec3", i64, i16, %"class.JPH::CollisionGroup", i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, float, float, float, float, float, float, float, i32, i32, i8, float, %"class.JPH::MassProperties", %"class.JPH::RefConst.10", %"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::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.10" = type { ptr }
%"class.JPH::SliderConstraintSettings" = type <{ %"class.JPH::TwoBodyConstraintSettings", i32, i8, [3 x i8], %"class.JPH::Vec3", %"class.JPH::Vec3", %"class.JPH::Vec3", %"class.JPH::Vec3", %"class.JPH::Vec3", %"class.JPH::Vec3", float, float, %"class.JPH::SpringSettings", float, %"class.JPH::MotorSettings", [12 x i8] }>
%"class.JPH::TwoBodyConstraintSettings" = type { %"class.JPH::ConstraintSettings" }
%"class.JPH::ConstraintSettings" = type { %"class.JPH::SerializableObject", %"class.JPH::RefTarget.11", i8, i32, i32, i32, float, i64 }
%"class.JPH::SerializableObject" = type { ptr }
%"class.JPH::RefTarget.11" = type { %"struct.std::atomic.6" }
%"struct.std::atomic.6" = type { %"struct.std::__atomic_base.7" }
%"struct.std::__atomic_base.7" = type { i32 }
%"class.JPH::SpringSettings" = type { i8, %union.anon.12, float }
%union.anon.12 = type { float }
%"class.JPH::MotorSettings" = type { %"class.JPH::SpringSettings", float, float, float, float }

; 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 @_ZN27PoweredSliderConstraintTest10InitializeEv(ptr noundef nonnull align 8 dereferenceable(128) %0) unnamed_addr #1 align 2 personality ptr @__gxx_personality_v0 {
  %2 = alloca %"class.JPH::Ref", align 8
  %3 = alloca %"class.JPH::RefConst", align 8
  %4 = alloca %"class.JPH::Vec3", align 16
  %5 = alloca %"class.JPH::BodyCreationSettings", align 16
  %6 = alloca %"class.JPH::CollisionGroup", align 8
  %7 = alloca %"class.JPH::Vec3", align 16
  %8 = alloca %"class.JPH::BodyCreationSettings", align 16
  %9 = alloca %"class.JPH::CollisionGroup", align 8
  %10 = alloca %"class.JPH::SliderConstraintSettings", align 16
  %11 = 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 8, ptr nonnull %2) #9
  %12 = tail call noundef ptr @_ZN3JPH16GroupFilterTablenwEm(i64 noundef 40)
  invoke void @_ZN3JPH16GroupFilterTableC2Ej(ptr noundef nonnull align 8 dereferenceable(40) %12, i32 noundef 0)
          to label %13 unwind label %87

13:                                               ; preds = %1
  call void @_ZN3JPH3RefINS_16GroupFilterTableEEC2EPS1_(ptr noundef nonnull align 8 dereferenceable(8) %2, ptr noundef nonnull %12)
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %3) #9
  %14 = invoke noundef ptr @_ZN3JPH8BoxShapenwEm(i64 noundef 80)
          to label %15 unwind label %89

15:                                               ; preds = %13
  %16 = invoke { double, double } @_ZN3JPH4Vec310sReplicateEf(float noundef 2.000000e+00)
          to label %17 unwind label %91

17:                                               ; preds = %15
  %18 = extractvalue { double, double } %16, 0
  %19 = extractvalue { double, double } %16, 1
  invoke void @_ZN3JPH8BoxShapeC2ENS_4Vec3EfPKNS_15PhysicsMaterialE(ptr noundef nonnull align 16 dereferenceable(80) %14, double %18, double %19, float noundef 0x3FA99999A0000000, ptr noundef null)
          to label %20 unwind label %91

20:                                               ; preds = %17
  invoke void @_ZN3JPH8RefConstINS_5ShapeEEC2EPKS1_(ptr noundef nonnull align 8 dereferenceable(8) %3, ptr noundef nonnull %14)
          to label %21 unwind label %89

21:                                               ; preds = %20
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %4) #9
  invoke void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %4, float noundef 0.000000e+00, float noundef 1.000000e+01, float noundef 0.000000e+00)
          to label %22 unwind label %93

22:                                               ; preds = %21
  %23 = getelementptr inbounds i8, ptr %0, i64 24
  %24 = load ptr, ptr %23, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 256, ptr nonnull %5) #9
  %25 = call noundef ptr @_ZNK3JPH8RefConstINS_5ShapeEEcvPKS1_Ev(ptr noundef nonnull align 8 dereferenceable(8) %3)
  %.sroa.07.0.copyload = load double, ptr %4, align 16
  %.sroa.28.0..sroa_idx = getelementptr inbounds i8, ptr %4, i64 8
  %.sroa.28.0.copyload = load double, ptr %.sroa.28.0..sroa_idx, align 8, !tbaa !17
  %26 = invoke { double, double } @_ZN3JPH4Quat9sIdentityEv()
          to label %27 unwind label %95

27:                                               ; preds = %22
  %28 = extractvalue { double, double } %26, 0
  %29 = extractvalue { double, double } %26, 1
  invoke void @_ZN3JPH20BodyCreationSettingsC2EPKNS_5ShapeENS_4Vec3ENS_4QuatENS_11EMotionTypeEt(ptr noundef nonnull align 16 dereferenceable(256) %5, ptr noundef %25, double %.sroa.07.0.copyload, double %.sroa.28.0.copyload, double %28, double %29, i8 noundef zeroext 0, i16 noundef zeroext 0)
          to label %30 unwind label %95

30:                                               ; preds = %27
  %31 = invoke noundef ptr @_ZN3JPH13BodyInterface10CreateBodyERKNS_20BodyCreationSettingsE(ptr noundef nonnull align 8 dereferenceable(24) %24, ptr noundef nonnull align 16 dereferenceable(256) %5)
          to label %32 unwind label %97

32:                                               ; preds = %30
  call void @_ZN3JPH20BodyCreationSettingsD2Ev(ptr noundef nonnull align 16 dereferenceable(256) %5) #9
  call void @llvm.lifetime.end.p0(i64 256, ptr nonnull %5) #9
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %6) #9
  %33 = call noundef ptr @_ZNK3JPH3RefINS_16GroupFilterTableEEcvPS1_Ev(ptr noundef nonnull align 8 dereferenceable(8) %2)
  invoke void @_ZN3JPH14CollisionGroupC2EPKNS_11GroupFilterEjj(ptr noundef nonnull align 8 dereferenceable(16) %6, ptr noundef %33, i32 noundef 0, i32 noundef 0)
          to label %34 unwind label %100

34:                                               ; preds = %32
  invoke void @_ZN3JPH4Body17SetCollisionGroupERKNS_14CollisionGroupE(ptr noundef nonnull align 16 dereferenceable(122) %31, ptr noundef nonnull align 8 dereferenceable(16) %6)
          to label %35 unwind label %102

35:                                               ; preds = %34
  call void @_ZN3JPH14CollisionGroupD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %6) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %6) #9
  %36 = load ptr, ptr %23, align 8, !tbaa !5
  %37 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK3JPH4Body5GetIDEv(ptr noundef nonnull align 16 dereferenceable(122) %31)
  invoke void @_ZN3JPH13BodyInterface7AddBodyERKNS_6BodyIDENS_11EActivationE(ptr noundef nonnull align 8 dereferenceable(24) %36, ptr noundef nonnull align 4 dereferenceable(4) %37, i32 noundef 1)
          to label %38 unwind label %105

38:                                               ; preds = %35
  invoke void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %7, float noundef 1.400000e+01, float noundef 0.000000e+00, float noundef 0.000000e+00)
          to label %39 unwind label %105

39:                                               ; preds = %38
  %40 = load double, ptr %7, align 16
  %41 = getelementptr inbounds i8, ptr %7, i64 8
  %42 = load double, ptr %41, align 8
  %43 = invoke noundef nonnull align 16 dereferenceable(16) ptr @_ZN3JPH4Vec3pLES0_(ptr noundef nonnull align 16 dereferenceable(16) %4, double %40, double %42)
          to label %44 unwind label %105

44:                                               ; preds = %39
  %45 = load ptr, ptr %23, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 256, ptr nonnull %8) #9
  %46 = call noundef ptr @_ZNK3JPH8RefConstINS_5ShapeEEcvPKS1_Ev(ptr noundef nonnull align 8 dereferenceable(8) %3)
  %.sroa.03.0.copyload = load double, ptr %4, align 16
  %.sroa.24.0.copyload = load double, ptr %.sroa.28.0..sroa_idx, align 8, !tbaa !17
  %47 = invoke { double, double } @_ZN3JPH4Quat9sIdentityEv()
          to label %48 unwind label %107

48:                                               ; preds = %44
  %49 = extractvalue { double, double } %47, 0
  %50 = extractvalue { double, double } %47, 1
  invoke void @_ZN3JPH20BodyCreationSettingsC2EPKNS_5ShapeENS_4Vec3ENS_4QuatENS_11EMotionTypeEt(ptr noundef nonnull align 16 dereferenceable(256) %8, ptr noundef %46, double %.sroa.03.0.copyload, double %.sroa.24.0.copyload, double %49, double %50, i8 noundef zeroext 2, i16 noundef zeroext 1)
          to label %51 unwind label %107

51:                                               ; preds = %48
  %52 = invoke noundef ptr @_ZN3JPH13BodyInterface10CreateBodyERKNS_20BodyCreationSettingsE(ptr noundef nonnull align 8 dereferenceable(24) %45, ptr noundef nonnull align 16 dereferenceable(256) %8)
          to label %53 unwind label %109

53:                                               ; preds = %51
  %54 = getelementptr inbounds i8, ptr %0, i64 112
  store ptr %52, ptr %54, align 8, !tbaa !18
  call void @_ZN3JPH20BodyCreationSettingsD2Ev(ptr noundef nonnull align 16 dereferenceable(256) %8) #9
  call void @llvm.lifetime.end.p0(i64 256, ptr nonnull %8) #9
  %55 = load ptr, ptr %54, align 8, !tbaa !18
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %9) #9
  %56 = call noundef ptr @_ZNK3JPH3RefINS_16GroupFilterTableEEcvPS1_Ev(ptr noundef nonnull align 8 dereferenceable(8) %2)
  invoke void @_ZN3JPH14CollisionGroupC2EPKNS_11GroupFilterEjj(ptr noundef nonnull align 8 dereferenceable(16) %9, ptr noundef %56, i32 noundef 0, i32 noundef 0)
          to label %57 unwind label %112

57:                                               ; preds = %53
  invoke void @_ZN3JPH4Body17SetCollisionGroupERKNS_14CollisionGroupE(ptr noundef nonnull align 16 dereferenceable(122) %55, ptr noundef nonnull align 8 dereferenceable(16) %9)
          to label %58 unwind label %114

58:                                               ; preds = %57
  call void @_ZN3JPH14CollisionGroupD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %9) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %9) #9
  %59 = load ptr, ptr %54, align 8, !tbaa !18
  %60 = invoke noundef ptr @_ZN3JPH4Body19GetMotionPropertiesEv(ptr noundef nonnull align 16 dereferenceable(122) %59)
          to label %61 unwind label %105

61:                                               ; preds = %58
  invoke void @_ZN3JPH16MotionProperties16SetLinearDampingEf(ptr noundef nonnull align 16 dereferenceable(182) %60, float noundef 0.000000e+00)
          to label %62 unwind label %105

62:                                               ; preds = %61
  %63 = load ptr, ptr %54, align 8, !tbaa !18
  invoke void @_ZN3JPH4Body16SetAllowSleepingEb(ptr noundef nonnull align 16 dereferenceable(122) %63, i1 noundef zeroext false)
          to label %64 unwind label %105

64:                                               ; preds = %62
  %65 = load ptr, ptr %23, align 8, !tbaa !5
  %66 = load ptr, ptr %54, align 8, !tbaa !18
  %67 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK3JPH4Body5GetIDEv(ptr noundef nonnull align 16 dereferenceable(122) %66)
  invoke void @_ZN3JPH13BodyInterface7AddBodyERKNS_6BodyIDENS_11EActivationE(ptr noundef nonnull align 8 dereferenceable(24) %65, ptr noundef nonnull align 4 dereferenceable(4) %67, i32 noundef 0)
          to label %68 unwind label %105

68:                                               ; preds = %64
  call void @llvm.lifetime.start.p0(i64 208, ptr nonnull %10) #9
  invoke void @_ZN3JPH24SliderConstraintSettingsC2Ev(ptr noundef nonnull align 16 dereferenceable(208) %10)
          to label %69 unwind label %117

69:                                               ; preds = %68
  %70 = getelementptr inbounds i8, ptr %10, i64 44
  store i8 1, ptr %70, align 4, !tbaa !20
  %71 = invoke { double, double } @_ZN3JPH4Vec36sAxisXEv()
          to label %72 unwind label %119

72:                                               ; preds = %69
  %73 = extractvalue { double, double } %71, 0
  %74 = extractvalue { double, double } %71, 1
  invoke void @_ZN3JPH24SliderConstraintSettings13SetSliderAxisENS_4Vec3E(ptr noundef nonnull align 16 dereferenceable(208) %10, double %73, double %74)
          to label %75 unwind label %119

75:                                               ; preds = %72
  %76 = getelementptr inbounds i8, ptr %10, i64 144
  store <2 x float> <float -5.000000e+00, float 1.000000e+02>, ptr %76, align 16, !tbaa !34
  %77 = load ptr, ptr %54, align 8, !tbaa !18
  %78 = invoke noundef ptr @_ZNK3JPH24SliderConstraintSettings6CreateERNS_4BodyES2_(ptr noundef nonnull align 16 dereferenceable(208) %10, ptr noundef nonnull align 16 dereferenceable(122) %31, ptr noundef nonnull align 16 dereferenceable(122) %77)
          to label %79 unwind label %119

79:                                               ; preds = %75
  %80 = getelementptr inbounds i8, ptr %0, i64 120
  store ptr %78, ptr %80, align 8, !tbaa !35
  invoke void @_ZN3JPH16SliderConstraint13SetMotorStateENS_11EMotorStateE(ptr noundef nonnull align 16 dereferenceable(832) %78, i32 noundef 1)
          to label %81 unwind label %119

81:                                               ; preds = %79
  %82 = load ptr, ptr %80, align 8, !tbaa !35
  call void @_ZN3JPH16SliderConstraint17SetTargetVelocityEf(ptr noundef nonnull align 16 dereferenceable(832) %82, float noundef 1.000000e+00)
  %83 = getelementptr inbounds i8, ptr %0, i64 16
  %84 = load ptr, ptr %83, align 8, !tbaa !36
  %85 = load ptr, ptr %80, align 8, !tbaa !35
  invoke void @_ZN3JPH13PhysicsSystem13AddConstraintEPNS_10ConstraintE(ptr noundef nonnull align 16 dereferenceable(1172) %84, ptr noundef %85)
          to label %86 unwind label %119

86:                                               ; preds = %81
  call void @_ZN3JPH18ConstraintSettingsD2Ev(ptr noundef nonnull align 16 dereferenceable(208) %10) #9
  call void @llvm.lifetime.end.p0(i64 208, ptr nonnull %10) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %4) #9
  call void @_ZN3JPH8RefConstINS_5ShapeEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %3) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %3) #9
  call void @_ZN3JPH3RefINS_16GroupFilterTableEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %2) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %2) #9
  ret void

87:                                               ; preds = %1
  %88 = landingpad { ptr, i32 }
          cleanup
  tail call void @_ZN3JPH16GroupFilterTabledlEPv(ptr noundef %12) #9
  br label %124

89:                                               ; preds = %20, %13
  %90 = landingpad { ptr, i32 }
          cleanup
  br label %123

91:                                               ; preds = %17, %15
  %92 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3JPH8BoxShapedlEPv(ptr noundef %14) #9
  br label %123

93:                                               ; preds = %21
  %94 = landingpad { ptr, i32 }
          cleanup
  br label %122

95:                                               ; preds = %27, %22
  %96 = landingpad { ptr, i32 }
          cleanup
  br label %99

97:                                               ; preds = %30
  %98 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3JPH20BodyCreationSettingsD2Ev(ptr noundef nonnull align 16 dereferenceable(256) %5) #9
  br label %99

99:                                               ; preds = %97, %95
  %.pn = phi { ptr, i32 } [ %98, %97 ], [ %96, %95 ]
  call void @llvm.lifetime.end.p0(i64 256, ptr nonnull %5) #9
  br label %122

100:                                              ; preds = %32
  %101 = landingpad { ptr, i32 }
          cleanup
  br label %104

102:                                              ; preds = %34
  %103 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3JPH14CollisionGroupD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %6) #9
  br label %104

104:                                              ; preds = %102, %100
  %.pn27 = phi { ptr, i32 } [ %103, %102 ], [ %101, %100 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %6) #9
  br label %122

105:                                              ; preds = %64, %62, %61, %58, %39, %38, %35
  %106 = landingpad { ptr, i32 }
          cleanup
  br label %122

107:                                              ; preds = %48, %44
  %108 = landingpad { ptr, i32 }
          cleanup
  br label %111

109:                                              ; preds = %51
  %110 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3JPH20BodyCreationSettingsD2Ev(ptr noundef nonnull align 16 dereferenceable(256) %8) #9
  br label %111

111:                                              ; preds = %109, %107
  %.pn29 = phi { ptr, i32 } [ %110, %109 ], [ %108, %107 ]
  call void @llvm.lifetime.end.p0(i64 256, ptr nonnull %8) #9
  br label %122

112:                                              ; preds = %53
  %113 = landingpad { ptr, i32 }
          cleanup
  br label %116

114:                                              ; preds = %57
  %115 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3JPH14CollisionGroupD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %9) #9
  br label %116

116:                                              ; preds = %114, %112
  %.pn31 = phi { ptr, i32 } [ %115, %114 ], [ %113, %112 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %9) #9
  br label %122

117:                                              ; preds = %68
  %118 = landingpad { ptr, i32 }
          cleanup
  br label %121

119:                                              ; preds = %81, %79, %75, %72, %69
  %120 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3JPH18ConstraintSettingsD2Ev(ptr noundef nonnull align 16 dereferenceable(208) %10) #9
  br label %121

121:                                              ; preds = %119, %117
  %.pn33 = phi { ptr, i32 } [ %120, %119 ], [ %118, %117 ]
  call void @llvm.lifetime.end.p0(i64 208, ptr nonnull %10) #9
  br label %122

122:                                              ; preds = %99, %104, %105, %111, %116, %121, %93
  %.pn33.pn.pn = phi { ptr, i32 } [ %94, %93 ], [ %.pn33, %121 ], [ %106, %105 ], [ %.pn31, %116 ], [ %.pn29, %111 ], [ %.pn27, %104 ], [ %.pn, %99 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %4) #9
  call void @_ZN3JPH8RefConstINS_5ShapeEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %3) #9
  br label %123

123:                                              ; preds = %122, %91, %89
  %.pn33.pn.pn.pn = phi { ptr, i32 } [ %.pn33.pn.pn, %122 ], [ %90, %89 ], [ %92, %91 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %3) #9
  call void @_ZN3JPH3RefINS_16GroupFilterTableEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %2) #9
  br label %124

124:                                              ; preds = %123, %87
  %.pn33.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn33.pn.pn.pn, %123 ], [ %88, %87 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %2) #9
  resume { ptr, i32 } %.pn33.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: alwaysinline mustprogress uwtable
declare dso_local noundef ptr @_ZN3JPH16GroupFilterTablenwEm(i64 noundef) local_unnamed_addr #3 align 2

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

declare void @_ZN3JPH13BodyInterface7AddBodyERKNS_6BodyIDENS_11EActivationE(ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 4 dereferenceable(4), i32 noundef) local_unnamed_addr #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 #7 align 2

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

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

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

declare void @_ZN3JPH4Body16SetAllowSleepingEb(ptr noundef nonnull align 16 dereferenceable(122), i1 noundef zeroext) local_unnamed_addr #2

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZN3JPH24SliderConstraintSettingsC2Ev(ptr noundef nonnull align 16 dereferenceable(208)) unnamed_addr #5 align 2

declare void @_ZN3JPH24SliderConstraintSettings13SetSliderAxisENS_4Vec3E(ptr noundef nonnull align 16 dereferenceable(208), double, double) local_unnamed_addr #2

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

declare noundef ptr @_ZNK3JPH24SliderConstraintSettings6CreateERNS_4BodyES2_(ptr noundef nonnull align 16 dereferenceable(208), ptr noundef nonnull align 16 dereferenceable(122), ptr noundef nonnull align 16 dereferenceable(122)) unnamed_addr #2

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZN3JPH16SliderConstraint17SetTargetVelocityEf(ptr noundef nonnull align 16 dereferenceable(832), float noundef) local_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 #1 align 2

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

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local void @_ZN3JPH3RefINS_16GroupFilterTableEED2Ev(ptr noundef nonnull align 8 dereferenceable(8)) unnamed_addr #7 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 nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #5 = { 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 #6 = { 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 #7 = { inlinehint mustprogress nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #8 = { mustprogress nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #9 = { nounwind }

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !7, i64 24}
!6 = !{!"_ZTS4Test", !7, i64 8, !7, i64 16, !7, i64 24, !7, i64 32, !7, i64 40, !10, i64 48, !11, i64 56}
!7 = !{!"any pointer", !8, i64 0}
!8 = !{!"omnipotent char", !9, i64 0}
!9 = !{!"Simple C++ TBAA"}
!10 = !{!"bool", !8, i64 0}
!11 = !{!"_ZTSSt13unordered_mapIN3JPH6BodyIDENSt7__cxx1112basic_stringIcSt11char_traitsIcENS0_12STLAllocatorIcEEEESt4hashIS1_ESt8equal_toIS1_ESaISt4pairIKS1_S8_EEE", !12, i64 0}
!12 = !{!"_ZTSSt10_HashtableIN3JPH6BodyIDESt4pairIKS1_NSt7__cxx1112basic_stringIcSt11char_traitsIcENS0_12STLAllocatorIcEEEEESaISB_ENSt8__detail10_Select1stESt8equal_toIS1_ESt4hashIS1_ENSD_18_Mod_range_hashingENSD_20_Default_ranged_hashENSD_20_Prime_rehash_policyENSD_17_Hashtable_traitsILb1ELb0ELb1EEEE", !7, i64 0, !13, i64 8, !14, i64 16, !13, i64 24, !15, i64 32, !7, i64 48}
!13 = !{!"long", !8, i64 0}
!14 = !{!"_ZTSNSt8__detail15_Hash_node_baseE", !7, i64 0}
!15 = !{!"_ZTSNSt8__detail20_Prime_rehash_policyE", !16, i64 0, !13, i64 8}
!16 = !{!"float", !8, i64 0}
!17 = !{!8, !8, i64 0}
!18 = !{!19, !7, i64 112}
!19 = !{!"_ZTS27PoweredSliderConstraintTest", !6, i64 0, !7, i64 112, !7, i64 120}
!20 = !{!21, !10, i64 44}
!21 = !{!"_ZTSN3JPH24SliderConstraintSettingsE", !22, i64 0, !29, i64 40, !10, i64 44, !30, i64 48, !30, i64 64, !30, i64 80, !30, i64 96, !30, i64 112, !30, i64 128, !16, i64 144, !16, i64 148, !31, i64 152, !16, i64 164, !33, i64 168}
!22 = !{!"_ZTSN3JPH25TwoBodyConstraintSettingsE", !23, i64 0}
!23 = !{!"_ZTSN3JPH18ConstraintSettingsE", !24, i64 0, !25, i64 8, !10, i64 12, !28, i64 16, !28, i64 20, !28, i64 24, !16, i64 28, !13, i64 32}
!24 = !{!"_ZTSN3JPH18SerializableObjectE"}
!25 = !{!"_ZTSN3JPH9RefTargetINS_18ConstraintSettingsEEE", !26, i64 0}
!26 = !{!"_ZTSSt6atomicIjE", !27, i64 0}
!27 = !{!"_ZTSSt13__atomic_baseIjE", !28, i64 0}
!28 = !{!"int", !8, i64 0}
!29 = !{!"_ZTSN3JPH16EConstraintSpaceE", !8, i64 0}
!30 = !{!"_ZTSN3JPH4Vec3E", !8, i64 0}
!31 = !{!"_ZTSN3JPH14SpringSettingsE", !32, i64 0, !8, i64 4, !16, i64 8}
!32 = !{!"_ZTSN3JPH11ESpringModeE", !8, i64 0}
!33 = !{!"_ZTSN3JPH13MotorSettingsE", !31, i64 0, !16, i64 12, !16, i64 16, !16, i64 20, !16, i64 24}
!34 = !{!16, !16, i64 0}
!35 = !{!19, !7, i64 120}
!36 = !{!6, !7, i64 16}


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