; LLVM IR from jrouwe/JoltPhysics :: Samples/Tests/Constraints/SliderConstraintTest.ll (ZN20SliderConstraintTest10InitializeEv)

; 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.std::linear_congruential_engine" = type { i64 }
%"class.std::uniform_real_distribution" = type { %"struct.std::uniform_real_distribution<float>::param_type" }
%"struct.std::uniform_real_distribution<float>::param_type" = type { float, float }
%"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 }

; 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 @_ZN20SliderConstraintTest10InitializeEv(ptr noundef nonnull align 8 dereferenceable(112) %0) unnamed_addr #1 align 2 personality ptr @__gxx_personality_v0 {
  %2 = alloca ptr, align 8
  %3 = alloca i32, align 4
  %4 = alloca %"class.JPH::Ref", align 8
  %5 = alloca ptr, align 8
  %6 = alloca i32, align 4
  %7 = alloca i32, align 4
  %8 = alloca i32, align 4
  %9 = alloca float, align 4
  %10 = alloca %"class.JPH::RefConst", align 8
  %11 = alloca %"class.JPH::Vec3", align 16
  %12 = alloca i32, align 4
  %13 = alloca i32, align 4
  %14 = alloca %"class.JPH::Vec3", align 16
  %15 = alloca ptr, align 8
  %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.std::linear_congruential_engine", align 8
  %21 = alloca %"class.std::uniform_real_distribution", align 4
  %22 = alloca ptr, align 8
  %23 = alloca i32, align 4
  %24 = alloca %"class.JPH::Quat", align 16
  %25 = alloca %"class.JPH::Vec3", align 16
  %26 = alloca %"class.JPH::Vec3", align 16
  %27 = alloca %"class.JPH::Quat", align 16
  %28 = alloca %"class.JPH::Vec3", align 16
  %29 = alloca %"class.JPH::Quat", align 16
  %30 = alloca %"class.JPH::Vec3", align 16
  %31 = alloca %"class.JPH::Vec3", align 16
  %32 = alloca %"class.JPH::Quat", align 16
  %33 = alloca %"class.JPH::Vec3", align 16
  %34 = alloca %"class.JPH::Quat", align 16
  %35 = alloca %"class.JPH::Vec3", align 16
  %36 = alloca %"class.JPH::Vec3", align 16
  %37 = alloca %"class.JPH::Quat", align 16
  %38 = alloca %"class.JPH::Vec3", align 16
  %39 = alloca ptr, align 8
  %40 = alloca %"class.JPH::BodyCreationSettings", align 16
  %41 = alloca %"class.JPH::Vec3", align 16
  %42 = alloca %"class.JPH::Quat", align 16
  %43 = alloca %"class.JPH::CollisionGroup", align 8
  %44 = alloca %"class.JPH::SliderConstraintSettings", align 16
  %45 = alloca %"class.JPH::Vec3", align 16
  %46 = alloca ptr, align 8
  %47 = alloca %"class.JPH::BodyCreationSettings", align 16
  %48 = alloca %"class.JPH::Vec3", align 16
  %49 = alloca %"class.JPH::Vec3", align 16
  %50 = alloca %"class.JPH::Quat", align 16
  %51 = alloca %"class.JPH::CollisionGroup", align 8
  %52 = alloca ptr, align 8
  %53 = alloca %"class.JPH::BodyCreationSettings", align 16
  %54 = alloca %"class.JPH::Vec3", align 16
  %55 = alloca %"class.JPH::Vec3", align 16
  %56 = alloca %"class.JPH::Quat", align 16
  %57 = alloca %"class.JPH::CollisionGroup", align 8
  %58 = alloca ptr, align 8
  %59 = alloca %"class.JPH::BodyCreationSettings", align 16
  %60 = alloca %"class.JPH::Vec3", align 16
  %61 = alloca %"class.JPH::Vec3", align 16
  %62 = alloca %"class.JPH::Quat", align 16
  %63 = alloca %"class.JPH::CollisionGroup", align 8
  %64 = alloca %"class.JPH::SliderConstraintSettings", align 16
  %65 = alloca %"class.JPH::Vec3", align 16
  %66 = alloca %"class.JPH::SliderConstraintSettings", align 16
  %67 = alloca %"class.JPH::Vec3", align 16
  %68 = alloca ptr, align 8
  %69 = alloca %"class.JPH::BodyCreationSettings", align 16
  %70 = alloca %"class.JPH::Vec3", align 16
  %71 = alloca %"class.JPH::Vec3", align 16
  %72 = alloca %"class.JPH::Quat", align 16
  %73 = alloca %"class.JPH::CollisionGroup", align 8
  %74 = alloca ptr, align 8
  %75 = alloca %"class.JPH::BodyCreationSettings", align 16
  %76 = alloca %"class.JPH::Vec3", align 16
  %77 = alloca %"class.JPH::Vec3", align 16
  %78 = alloca %"class.JPH::Quat", align 16
  %79 = alloca %"class.JPH::CollisionGroup", align 8
  %80 = alloca %"class.JPH::SliderConstraintSettings", align 16
  %81 = alloca %"class.JPH::Vec3", align 16
  %82 = alloca ptr, align 8
  %83 = alloca %"class.JPH::BodyCreationSettings", align 16
  %84 = alloca %"class.JPH::Vec3", align 16
  %85 = alloca %"class.JPH::Vec3", align 16
  %86 = alloca %"class.JPH::Quat", align 16
  %87 = alloca %"class.JPH::CollisionGroup", align 8
  %88 = alloca ptr, align 8
  %89 = alloca %"class.JPH::BodyCreationSettings", align 16
  %90 = alloca %"class.JPH::Vec3", align 16
  %91 = alloca %"class.JPH::Vec3", align 16
  %92 = alloca %"class.JPH::Quat", align 16
  %93 = alloca %"class.JPH::CollisionGroup", align 8
  %94 = alloca %"class.JPH::SliderConstraintSettings", align 16
  %95 = alloca %"class.JPH::Vec3", align 16
  store ptr %0, ptr %2, align 8, !tbaa !5
  %96 = load ptr, ptr %2, align 8
  %97 = call noundef nonnull align 16 dereferenceable(122) ptr @_ZN4Test11CreateFloorEf(ptr noundef nonnull align 8 dereferenceable(112) %96, float noundef 2.000000e+02)
  call void @llvm.lifetime.start.p0(i64 4, ptr %3) #9
  store i32 10, ptr %3, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %4) #9
  %98 = call noundef ptr @_ZN3JPH16GroupFilterTablenwEm(i64 noundef 40)
  invoke void @_ZN3JPH16GroupFilterTableC2Ej(ptr noundef nonnull align 8 dereferenceable(40) %98, i32 noundef 10)
          to label %99 unwind label %104

99:                                               ; preds = %1
  call void @_ZN3JPH3RefINS_16GroupFilterTableEEC2EPS1_(ptr noundef nonnull align 8 dereferenceable(8) %4, ptr noundef %98)
  call void @llvm.lifetime.start.p0(i64 4, ptr %7) #9
  store i32 0, ptr %7, align 4, !tbaa !9
  br label %100

100:                                              ; preds = %115, %99
  %101 = load i32, ptr %7, align 4, !tbaa !9
  %102 = icmp ult i32 %101, 9
  br i1 %102, label %108, label %103

103:                                              ; preds = %100
  call void @llvm.lifetime.end.p0(i64 4, ptr %7) #9
  br label %122

104:                                              ; preds = %1
  %105 = landingpad { ptr, i32 }
          cleanup
  %106 = extractvalue { ptr, i32 } %105, 0
  store ptr %106, ptr %5, align 8
  %107 = extractvalue { ptr, i32 } %105, 1
  store i32 %107, ptr %6, align 4
  call void @_ZN3JPH16GroupFilterTabledlEPv(ptr noundef %98) #9
  br label %1189

108:                                              ; preds = %100
  %109 = invoke noundef ptr @_ZNK3JPH3RefINS_16GroupFilterTableEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %4)
          to label %110 unwind label %118

110:                                              ; preds = %108
  %111 = load i32, ptr %7, align 4, !tbaa !9
  %112 = load i32, ptr %7, align 4, !tbaa !9
  %113 = add i32 %112, 1
  invoke void @_ZN3JPH16GroupFilterTable16DisableCollisionEjj(ptr noundef nonnull align 8 dereferenceable(40) %109, i32 noundef %111, i32 noundef %113)
          to label %114 unwind label %118

114:                                              ; preds = %110
  br label %115

115:                                              ; preds = %114
  %116 = load i32, ptr %7, align 4, !tbaa !9
  %117 = add i32 %116, 1
  store i32 %117, ptr %7, align 4, !tbaa !9
  br label %100, !llvm.loop !11

118:                                              ; preds = %110, %108
  %119 = landingpad { ptr, i32 }
          cleanup
  %120 = extractvalue { ptr, i32 } %119, 0
  store ptr %120, ptr %5, align 8
  %121 = extractvalue { ptr, i32 } %119, 1
  store i32 %121, ptr %6, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %7) #9
  br label %1188

122:                                              ; preds = %103
  call void @llvm.lifetime.start.p0(i64 4, ptr %8) #9
  store i32 0, ptr %8, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %9) #9
  store float 4.000000e+00, ptr %9, align 4, !tbaa !13
  call void @llvm.lifetime.start.p0(i64 8, ptr %10) #9
  %123 = invoke noundef ptr @_ZN3JPH8BoxShapenwEm(i64 noundef 80)
          to label %124 unwind label %145

124:                                              ; preds = %122
  %125 = load float, ptr %9, align 4, !tbaa !13
  %126 = fmul float 5.000000e-01, %125
  %127 = invoke { double, double } @_ZN3JPH4Vec310sReplicateEf(float noundef %126)
          to label %128 unwind label %149

128:                                              ; preds = %124
  %129 = getelementptr inbounds %"class.JPH::Vec3", ptr %11, i32 0, i32 0
  %130 = getelementptr inbounds %union.anon, ptr %129, i32 0, i32 0
  %131 = getelementptr inbounds { double, double }, ptr %130, i32 0, i32 0
  %132 = extractvalue { double, double } %127, 0
  store double %132, ptr %131, align 16
  %133 = getelementptr inbounds { double, double }, ptr %130, i32 0, i32 1
  %134 = extractvalue { double, double } %127, 1
  store double %134, ptr %133, align 8
  %135 = getelementptr inbounds { double, double }, ptr %11, i32 0, i32 0
  %136 = load double, ptr %135, align 16
  %137 = getelementptr inbounds { double, double }, ptr %11, i32 0, i32 1
  %138 = load double, ptr %137, align 8
  invoke void @_ZN3JPH8BoxShapeC2ENS_4Vec3EfPKNS_15PhysicsMaterialE(ptr noundef nonnull align 16 dereferenceable(80) %123, double %136, double %138, float noundef 0x3FA99999A0000000, ptr noundef null)
          to label %139 unwind label %149

139:                                              ; preds = %128
  invoke void @_ZN3JPH8RefConstINS_5ShapeEEC2EPKS1_(ptr noundef nonnull align 8 dereferenceable(8) %10, ptr noundef %123)
          to label %140 unwind label %145

140:                                              ; preds = %139
  call void @llvm.lifetime.start.p0(i64 4, ptr %12) #9
  store i32 0, ptr %12, align 4, !tbaa !9
  br label %141

141:                                              ; preds = %496, %140
  %142 = load i32, ptr %12, align 4, !tbaa !9
  %143 = icmp slt i32 %142, 2
  br i1 %143, label %153, label %144

144:                                              ; preds = %141
  store i32 5, ptr %13, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %12) #9
  br label %503

145:                                              ; preds = %139, %122
  %146 = landingpad { ptr, i32 }
          cleanup
  %147 = extractvalue { ptr, i32 } %146, 0
  store ptr %147, ptr %5, align 8
  %148 = extractvalue { ptr, i32 } %146, 1
  store i32 %148, ptr %6, align 4
  br label %1187

149:                                              ; preds = %128, %124
  %150 = landingpad { ptr, i32 }
          cleanup
  %151 = extractvalue { ptr, i32 } %150, 0
  store ptr %151, ptr %5, align 8
  %152 = extractvalue { ptr, i32 } %150, 1
  store i32 %152, ptr %6, align 4
  call void @_ZN3JPH8BoxShapedlEPv(ptr noundef %123) #9
  br label %1187

153:                                              ; preds = %141
  call void @llvm.lifetime.start.p0(i64 16, ptr %14) #9
  %154 = load i32, ptr %12, align 4, !tbaa !9
  %155 = sub nsw i32 0, %154
  %156 = sitofp i32 %155 to float
  %157 = fmul float %156, 2.000000e+01
  invoke void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %14, float noundef 0.000000e+00, float noundef 2.500000e+01, float noundef %157)
          to label %158 unwind label %202

158:                                              ; preds = %153
  call void @llvm.lifetime.start.p0(i64 8, ptr %15) #9
  %159 = getelementptr inbounds %class.Test, ptr %96, i32 0, i32 3
  %160 = load ptr, ptr %159, align 8, !tbaa !15
  call void @llvm.lifetime.start.p0(i64 256, ptr %16) #9
  %161 = invoke noundef ptr @_ZNK3JPH8RefConstINS_5ShapeEEcvPKS1_Ev(ptr noundef nonnull align 8 dereferenceable(8) %10)
          to label %162 unwind label %206

162:                                              ; preds = %158
  call void @llvm.memcpy.p0.p0.i64(ptr align 16 %17, ptr align 16 %14, i64 16, i1 false), !tbaa.struct !23
  %163 = invoke { double, double } @_ZN3JPH4Quat9sIdentityEv()
          to label %164 unwind label %206

164:                                              ; preds = %162
  %165 = getelementptr inbounds %"class.JPH::Quat", ptr %18, i32 0, i32 0
  %166 = getelementptr inbounds %"class.JPH::Vec4", ptr %165, i32 0, i32 0
  %167 = getelementptr inbounds %union.anon.4, ptr %166, i32 0, i32 0
  %168 = getelementptr inbounds { double, double }, ptr %167, i32 0, i32 0
  %169 = extractvalue { double, double } %163, 0
  store double %169, ptr %168, align 16
  %170 = getelementptr inbounds { double, double }, ptr %167, i32 0, i32 1
  %171 = extractvalue { double, double } %163, 1
  store double %171, ptr %170, align 8
  %172 = getelementptr inbounds { double, double }, ptr %17, i32 0, i32 0
  %173 = load double, ptr %172, align 16
  %174 = getelementptr inbounds { double, double }, ptr %17, i32 0, i32 1
  %175 = load double, ptr %174, align 8
  %176 = getelementptr inbounds { double, double }, ptr %18, i32 0, i32 0
  %177 = load double, ptr %176, align 16
  %178 = getelementptr inbounds { double, double }, ptr %18, i32 0, i32 1
  %179 = load double, ptr %178, align 8
  invoke void @_ZN3JPH20BodyCreationSettingsC2EPKNS_5ShapeENS_4Vec3ENS_4QuatENS_11EMotionTypeEt(ptr noundef nonnull align 16 dereferenceable(256) %16, ptr noundef %161, double %173, double %175, double %177, double %179, i8 noundef zeroext 0, i16 noundef zeroext 0)
          to label %180 unwind label %206

180:                                              ; preds = %164
  %181 = invoke noundef ptr @_ZN3JPH13BodyInterface10CreateBodyERKNS_20BodyCreationSettingsE(ptr noundef nonnull align 8 dereferenceable(24) %160, ptr noundef nonnull align 16 dereferenceable(256) %16)
          to label %182 unwind label %210

182:                                              ; preds = %180
  call void @_ZN3JPH20BodyCreationSettingsD2Ev(ptr noundef nonnull align 16 dereferenceable(256) %16) #9
  call void @llvm.lifetime.end.p0(i64 256, ptr %16) #9
  store ptr %181, ptr %15, align 8, !tbaa !5
  %183 = load ptr, ptr %15, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 16, ptr %19) #9
  %184 = invoke noundef ptr @_ZNK3JPH3RefINS_16GroupFilterTableEEcvPS1_Ev(ptr noundef nonnull align 8 dereferenceable(8) %4)
          to label %185 unwind label %215

185:                                              ; preds = %182
  %186 = load i32, ptr %8, align 4, !tbaa !9
  invoke void @_ZN3JPH14CollisionGroupC2EPKNS_11GroupFilterEjj(ptr noundef nonnull align 8 dereferenceable(16) %19, ptr noundef %184, i32 noundef %186, i32 noundef 0)
          to label %187 unwind label %215

187:                                              ; preds = %185
  invoke void @_ZN3JPH4Body17SetCollisionGroupERKNS_14CollisionGroupE(ptr noundef nonnull align 16 dereferenceable(122) %183, ptr noundef nonnull align 8 dereferenceable(16) %19)
          to label %188 unwind label %219

188:                                              ; preds = %187
  call void @_ZN3JPH14CollisionGroupD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %19) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %19) #9
  %189 = getelementptr inbounds %class.Test, ptr %96, i32 0, i32 3
  %190 = load ptr, ptr %189, align 8, !tbaa !15
  %191 = load ptr, ptr %15, align 8, !tbaa !5
  %192 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZNK3JPH4Body5GetIDEv(ptr noundef nonnull align 16 dereferenceable(122) %191)
          to label %193 unwind label %224

193:                                              ; preds = %188
  invoke void @_ZN3JPH13BodyInterface7AddBodyERKNS_6BodyIDENS_11EActivationE(ptr noundef nonnull align 8 dereferenceable(24) %190, ptr noundef nonnull align 4 dereferenceable(4) %192, i32 noundef 1)
          to label %194 unwind label %224

194:                                              ; preds = %193
  call void @llvm.lifetime.start.p0(i64 8, ptr %20) #9
  invoke void @_ZNSt26linear_congruential_engineImLm16807ELm0ELm2147483647EEC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %20)
          to label %195 unwind label %228

195:                                              ; preds = %194
  call void @llvm.lifetime.start.p0(i64 8, ptr %21) #9
  invoke void @_ZNSt25uniform_real_distributionIfEC2Eff(ptr noundef nonnull align 4 dereferenceable(8) %21, float noundef -1.000000e+00, float noundef 1.000000e+00)
          to label %196 unwind label %232

196:                                              ; preds = %195
  call void @llvm.lifetime.start.p0(i64 8, ptr %22) #9
  %197 = load ptr, ptr %15, align 8, !tbaa !5
  store ptr %197, ptr %22, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %23) #9
  store i32 1, ptr %23, align 4, !tbaa !9
  br label %198

198:                                              ; preds = %457, %196
  %199 = load i32, ptr %23, align 4, !tbaa !9
  %200 = icmp slt i32 %199, 10
  br i1 %200, label %236, label %201

201:                                              ; preds = %198
  store i32 8, ptr %13, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %23) #9
  br label %493

202:                                              ; preds = %153
  %203 = landingpad { ptr, i32 }
          cleanup
  %204 = extractvalue { ptr, i32 } %203, 0
  store ptr %204, ptr %5, align 8
  %205 = extractvalue { ptr, i32 } %203, 1
  store i32 %205, ptr %6, align 4
  br label %502

206:                                              ; preds = %164, %162, %158
  %207 = landingpad { ptr, i32 }
          cleanup
  %208 = extractvalue { ptr, i32 } %207, 0
  store ptr %208, ptr %5, align 8
  %209 = extractvalue { ptr, i32 } %207, 1
  store i32 %209, ptr %6, align 4
  br label %214

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

214:                                              ; preds = %210, %206
  call void @llvm.lifetime.end.p0(i64 256, ptr %16) #9
  br label %501

215:                                              ; preds = %185, %182
  %216 = landingpad { ptr, i32 }
          cleanup
  %217 = extractvalue { ptr, i32 } %216, 0
  store ptr %217, ptr %5, align 8
  %218 = extractvalue { ptr, i32 } %216, 1
  store i32 %218, ptr %6, align 4
  br label %223

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

223:                                              ; preds = %219, %215
  call void @llvm.lifetime.end.p0(i64 16, ptr %19) #9
  br label %501

224:                                              ; preds = %193, %188
  %225 = landingpad { ptr, i32 }
          cleanup
  %226 = extractvalue { ptr, i32 } %225, 0
  store ptr %226, ptr %5, align 8
  %227 = extractvalue { ptr, i32 } %225, 1
  store i32 %227, ptr %6, align 4
  br label %501

228:                                              ; preds = %194
  %229 = landingpad { ptr, i32 }
          cleanup
  %230 = extractvalue { ptr, i32 } %229, 0
  store ptr %230, ptr %5, align 8
  %231 = extractvalue { ptr, i32 } %229, 1
  store i32 %231, ptr %6, align 4
  br label %500

232:                                              ; preds = %195
  %233 = landingpad { ptr, i32 }
          cleanup
  %234 = extractvalue { ptr, i32 } %233, 0
  store ptr %234, ptr %5, align 8
  %235 = extractvalue { ptr, i32 } %233, 1
  store i32 %235, ptr %6, align 4
  br label %499

236:                                              ; preds = %198
  call void @llvm.lifetime.start.p0(i64 16, ptr %24) #9
  call void @llvm.lifetime.start.p0(i64 16, ptr %25) #9
  %237 = load i32, ptr %12, align 4, !tbaa !9
  %238 = icmp eq i32 %237, 0
  br i1 %238, label %239, label %301

239:                                              ; preds = %236
  %240 = load float, ptr %9, align 4, !tbaa !13
  invoke void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %26, float noundef %240, float noundef 0.000000e+00, float noundef 0.000000e+00)
          to label %241 unwind label %289

241:                                              ; preds = %239
  %242 = getelementptr inbounds { double, double }, ptr %26, i32 0, i32 0
  %243 = load double, ptr %242, align 16
  %244 = getelementptr inbounds { double, double }, ptr %26, i32 0, i32 1
  %245 = load double, ptr %244, align 8
  %246 = invoke noundef nonnull align 16 dereferenceable(16) ptr @_ZN3JPH4Vec3pLES0_(ptr noundef nonnull align 16 dereferenceable(16) %14, double %243, double %245)
          to label %247 unwind label %289

247:                                              ; preds = %241
  call void @llvm.lifetime.start.p0(i64 16, ptr %27) #9
  %248 = invoke { double, double } @_ZN3JPH4Quat9sIdentityEv()
          to label %249 unwind label %293

249:                                              ; preds = %247
  %250 = getelementptr inbounds %"class.JPH::Quat", ptr %27, i32 0, i32 0
  %251 = getelementptr inbounds %"class.JPH::Vec4", ptr %250, i32 0, i32 0
  %252 = getelementptr inbounds %union.anon.4, ptr %251, i32 0, i32 0
  %253 = getelementptr inbounds { double, double }, ptr %252, i32 0, i32 0
  %254 = extractvalue { double, double } %248, 0
  store double %254, ptr %253, align 16
  %255 = getelementptr inbounds { double, double }, ptr %252, i32 0, i32 1
  %256 = extractvalue { double, double } %248, 1
  store double %256, ptr %255, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 16 %24, ptr align 16 %27, i64 16, i1 false), !tbaa.struct !23
  call void @llvm.lifetime.end.p0(i64 16, ptr %27) #9
  call void @llvm.lifetime.start.p0(i64 16, ptr %28) #9
  call void @llvm.lifetime.start.p0(i64 16, ptr %29) #9
  %257 = invoke { double, double } @_ZN3JPH4Vec36sAxisZEv()
          to label %258 unwind label %297

258:                                              ; preds = %249
  %259 = getelementptr inbounds %"class.JPH::Vec3", ptr %30, i32 0, i32 0
  %260 = getelementptr inbounds %union.anon, ptr %259, i32 0, i32 0
  %261 = getelementptr inbounds { double, double }, ptr %260, i32 0, i32 0
  %262 = extractvalue { double, double } %257, 0
  store double %262, ptr %261, align 16
  %263 = getelementptr inbounds { double, double }, ptr %260, i32 0, i32 1
  %264 = extractvalue { double, double } %257, 1
  store double %264, ptr %263, align 8
  %265 = invoke noundef float @_ZN3JPH16DegreesToRadiansEf(float noundef 1.000000e+01)
          to label %266 unwind label %297

266:                                              ; preds = %258
  %267 = fneg float %265
  %268 = getelementptr inbounds { double, double }, ptr %30, i32 0, i32 0
  %269 = load double, ptr %268, align 16
  %270 = getelementptr inbounds { double, double }, ptr %30, i32 0, i32 1
  %271 = load double, ptr %270, align 8
  %272 = invoke { double, double } @_ZN3JPH4Quat9sRotationENS_4Vec3Ef(double %269, double %271, float noundef %267)
          to label %273 unwind label %297

273:                                              ; preds = %266
  %274 = getelementptr inbounds %"class.JPH::Quat", ptr %29, i32 0, i32 0
  %275 = getelementptr inbounds %"class.JPH::Vec4", ptr %274, i32 0, i32 0
  %276 = getelementptr inbounds %union.anon.4, ptr %275, i32 0, i32 0
  %277 = getelementptr inbounds { double, double }, ptr %276, i32 0, i32 0
  %278 = extractvalue { double, double } %272, 0
  store double %278, ptr %277, align 16
  %279 = getelementptr inbounds { double, double }, ptr %276, i32 0, i32 1
  %280 = extractvalue { double, double } %272, 1
  store double %280, ptr %279, align 8
  %281 = invoke { double, double } @_ZNK3JPH4Quat11RotateAxisXEv(ptr noundef nonnull align 16 dereferenceable(16) %29)
          to label %282 unwind label %297

282:                                              ; preds = %273
  %283 = getelementptr inbounds %"class.JPH::Vec3", ptr %28, i32 0, i32 0
  %284 = getelementptr inbounds %union.anon, ptr %283, i32 0, i32 0
  %285 = getelementptr inbounds { double, double }, ptr %284, i32 0, i32 0
  %286 = extractvalue { double, double } %281, 0
  store double %286, ptr %285, align 16
  %287 = getelementptr inbounds { double, double }, ptr %284, i32 0, i32 1
  %288 = extractvalue { double, double } %281, 1
  store double %288, ptr %287, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 16 %25, ptr align 16 %28, i64 16, i1 false), !tbaa.struct !23
  call void @llvm.lifetime.end.p0(i64 16, ptr %29) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %28) #9
  br label %411

289:                                              ; preds = %312, %311, %309, %306, %304, %301, %241, %239
  %290 = landingpad { ptr, i32 }
          cleanup
  %291 = extractvalue { ptr, i32 } %290, 0
  store ptr %291, ptr %5, align 8
  %292 = extractvalue { ptr, i32 } %290, 1
  store i32 %292, ptr %6, align 4
  br label %492

293:                                              ; preds = %247
  %294 = landingpad { ptr, i32 }
          cleanup
  %295 = extractvalue { ptr, i32 } %294, 0
  store ptr %295, ptr %5, align 8
  %296 = extractvalue { ptr, i32 } %294, 1
  store i32 %296, ptr %6, align 4
  call void @llvm.lifetime.end.p0(i64 16, ptr %27) #9
  br label %492

297:                                              ; preds = %273, %266, %258, %249
  %298 = landingpad { ptr, i32 }
          cleanup
  %299 = extractvalue { ptr, i32 } %298, 0
  store ptr %299, ptr %5, align 8
  %300 = extractvalue { ptr, i32 } %298, 1
  store i32 %300, ptr %6, align 4
  call void @llvm.lifetime.end.p0(i64 16, ptr %29) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %28) #9
  br label %492

301:                                              ; preds = %236
  %302 = load float, ptr %9, align 4, !tbaa !13
  %303 = invoke noundef float @_ZNSt25uniform_real_distributionIfEclISt26linear_congruential_engineImLm16807ELm0ELm2147483647EEEEfRT_(ptr noundef nonnull align 4 dereferenceable(8) %21, ptr noundef nonnull align 8 dereferenceable(8) %20)
          to label %304 unwind label %289

304:                                              ; preds = %301
  %305 = invoke noundef float @_ZSt3absf(float noundef %303)
          to label %306 unwind label %289

306:                                              ; preds = %304
  %307 = fadd float %302, %305
  %308 = invoke noundef float @_ZNSt25uniform_real_distributionIfEclISt26linear_congruential_engineImLm16807ELm0ELm2147483647EEEEfRT_(ptr noundef nonnull align 4 dereferenceable(8) %21, ptr noundef nonnull align 8 dereferenceable(8) %20)
          to label %309 unwind label %289

309:                                              ; preds = %306
  %310 = invoke noundef float @_ZNSt25uniform_real_distributionIfEclISt26linear_congruential_engineImLm16807ELm0ELm2147483647EEEEfRT_(ptr noundef nonnull align 4 dereferenceable(8) %21, ptr noundef nonnull align 8 dereferenceable(8) %20)
          to label %311 unwind label %289

311:                                              ; preds = %309
  invoke void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %31, float noundef %307, float noundef %308, float noundef %310)
          to label %312 unwind label %289

312:                                              ; preds = %311
  %313 = getelementptr inbounds { double, double }, ptr %31, i32 0, i32 0
  %314 = load double, ptr %313, align 16
  %315 = getelementptr inbounds { double, double }, ptr %31, i32 0, i32 1
  %316 = load double, ptr %315, align 8
  %317 = invoke noundef nonnull align 16 dereferenceable(16) ptr @_ZN3JPH4Vec3pLES0_(ptr noundef nonnull align 16 dereferenceable(16) %14, double %314, double %316)
          to label %318 unwind label %289

318:                                              ; preds = %312
  call void @llvm.lifetime.start.p0(i64 16, ptr %32) #9
  %319 = invoke { double, double } @_ZN3JPH4Quat7sRandomISt26linear_congruential_engineImLm16807ELm0ELm2147483647EEEES0_RT_(ptr noundef nonnull align 8 dereferenceable(8) %20)
          to label %320 unwind label %398

320:                                              ; preds = %318
  %321 = getelementptr inbounds %"class.JPH::Quat", ptr %32, i32 0, i32 0
  %322 = getelementptr inbounds %"class.JPH::Vec4", ptr %321, i32 0, i32 0
  %323 = getelementptr inbounds %union.anon.4, ptr %322, i32 0, i32 0
  %324 = getelementptr inbounds { double, double }, ptr %323, i32 0, i32 0
  %325 = extractvalue { double, double } %319, 0
  store double %325, ptr %324, align 16
  %326 = getelementptr inbounds { double, double }, ptr %323, i32 0, i32 1
  %327 = extractvalue { double, double } %319, 1
  store double %327, ptr %326, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 16 %24, ptr align 16 %32, i64 16, i1 false), !tbaa.struct !23
  call void @llvm.lifetime.end.p0(i64 16, ptr %32) #9
  call void @llvm.lifetime.start.p0(i64 16, ptr %33) #9
  call void @llvm.lifetime.start.p0(i64 16, ptr %34) #9
  %328 = invoke { double, double } @_ZN3JPH4Vec36sAxisYEv()
          to label %329 unwind label %402

329:                                              ; preds = %320
  %330 = getelementptr inbounds %"class.JPH::Vec3", ptr %35, i32 0, i32 0
  %331 = getelementptr inbounds %union.anon, ptr %330, i32 0, i32 0
  %332 = getelementptr inbounds { double, double }, ptr %331, i32 0, i32 0
  %333 = extractvalue { double, double } %328, 0
  store double %333, ptr %332, align 16
  %334 = getelementptr inbounds { double, double }, ptr %331, i32 0, i32 1
  %335 = extractvalue { double, double } %328, 1
  store double %335, ptr %334, align 8
  %336 = invoke noundef float @_ZNSt25uniform_real_distributionIfEclISt26linear_congruential_engineImLm16807ELm0ELm2147483647EEEEfRT_(ptr noundef nonnull align 4 dereferenceable(8) %21, ptr noundef nonnull align 8 dereferenceable(8) %20)
          to label %337 unwind label %402

337:                                              ; preds = %329
  %338 = invoke noundef float @_ZN3JPH16DegreesToRadiansEf(float noundef 2.000000e+01)
          to label %339 unwind label %402

339:                                              ; preds = %337
  %340 = fmul float %336, %338
  %341 = getelementptr inbounds { double, double }, ptr %35, i32 0, i32 0
  %342 = load double, ptr %341, align 16
  %343 = getelementptr inbounds { double, double }, ptr %35, i32 0, i32 1
  %344 = load double, ptr %343, align 8
  %345 = invoke { double, double } @_ZN3JPH4Quat9sRotationENS_4Vec3Ef(double %342, double %344, float noundef %340)
          to label %346 unwind label %402

346:                                              ; preds = %339
  %347 = getelementptr inbounds %"class.JPH::Quat", ptr %34, i32 0, i32 0
  %348 = getelementptr inbounds %"class.JPH::Vec4", ptr %347, i32 0, i32 0
  %349 = getelementptr inbounds %union.anon.4, ptr %348, i32 0, i32 0
  %350 = getelementptr inbounds { double, double }, ptr %349, i32 0, i32 0
  %351 = extractvalue { double, double } %345, 0
  store double %351, ptr %350, align 16
  %352 = getelementptr inbounds { double, double }, ptr %349, i32 0, i32 1
  %353 = extractvalue { double, double } %345, 1
  store double %353, ptr %352, align 8
  call void @llvm.lifetime.start.p0(i64 16, ptr %37) #9
  %354 = invoke { double, double } @_ZN3JPH4Vec36sAxisZEv()
          to label %355 unwind label %406

355:                                              ; preds = %346
  %356 = getelementptr inbounds %"class.JPH::Vec3", ptr %38, i32 0, i32 0
  %357 = getelementptr inbounds %union.anon, ptr %356, i32 0, i32 0
  %358 = getelementptr inbounds { double, double }, ptr %357, i32 0, i32 0
  %359 = extractvalue { double, double } %354, 0
  store double %359, ptr %358, align 16
  %360 = getelementptr inbounds { double, double }, ptr %357, i32 0, i32 1
  %361 = extractvalue { double, double } %354, 1
  store double %361, ptr %360, align 8
  %362 = invoke noundef float @_ZN3JPH16DegreesToRadiansEf(float noundef 1.000000e+01)
          to label %363 unwind label %406

363:                                              ; preds = %355
  %364 = fneg float %362
  %365 = getelementptr inbounds { double, double }, ptr %38, i32 0, i32 0
  %366 = load double, ptr %365, align 16
  %367 = getelementptr inbounds { double, double }, ptr %38, i32 0, i32 1
  %368 = load double, ptr %367, align 8
  %369 = invoke { double, double } @_ZN3JPH4Quat9sRotationENS_4Vec3Ef(double %366, double %368, float noundef %364)
          to label %370 unwind label %406

370:                                              ; preds = %363
  %371 = getelementptr inbounds %"class.JPH::Quat", ptr %37, i32 0, i32 0
  %372 = getelementptr inbounds %"class.JPH::Vec4", ptr %371, i32 0, i32 0
  %373 = getelementptr inbounds %union.anon.4, ptr %372, i32 0, i32 0
  %374 = getelementptr inbounds { double, double }, ptr %373, i32 0, i32 0
  %375 = extractvalue { double, double } %369, 0
  store double %375, ptr %374, align 16
  %376 = getelementptr inbounds { double, double }, ptr %373, i32 0, i32 1
  %377 = extractvalue { double, double } %369, 1
  store double %377, ptr %376, align 8
  %378 = invoke { double, double } @_ZNK3JPH4Quat11RotateAxisXEv(ptr noundef nonnull align 16 dereferenceable(16) %37)
          to label %379 unwind label %406

379:                                              ; preds = %370
  %380 = getelementptr inbounds %"class.JPH::Vec3", ptr %36, i32 0, i32 0
  %381 = getelementptr inbounds %union.anon, ptr %380, i32 0, i32 0
  %382 = getelementptr inbounds { double, double }, ptr %381, i32 0, i32 0
  %383 = extractvalue { double, double } %378, 0
  store double %383, ptr %382, align 16
  %384 = getelementptr inbounds { double, double }, ptr %381, i32 0, i32 1
  %385 = extractvalue { double, double } %378, 1
  store double %385, ptr %384, align 8
  %386 = getelementptr inbounds { double, double }, ptr %36, i32 0, i32 0
  %387 = load double, ptr %386, align 16
  %388 = getelementptr inbounds { double, double }, ptr %36, i32 0, i32 1
  %389 = load double, ptr %388, align 8
  %390 = invoke { double, double } @_ZNK3JPH4QuatmlENS_4Vec3E(ptr noundef nonnull align 16 dereferenceable(16) %34, double %387, double %389)
          to label %391 unwind label %406

391:                                              ; preds = %379
  %392 = getelementptr inbounds %"class.JPH::Vec3", ptr %33, i32 0, i32 0
  %393 = getelementptr inbounds %union.anon, ptr %392, i32 0, i32 0
  %394 = getelementptr inbounds { double, double }, ptr %393, i32 0, i32 0
  %395 = extractvalue { double, double } %390, 0
  store double %395, ptr %394, align 16
  %396 = getelementptr inbounds { double, double }, ptr %393, i32 0, i32 1
  %397 = extractvalue { double, double } %390, 1
  store double %397, ptr %396, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 16 %25, ptr align 16 %33, i64 16, i1 false), !tbaa.struct !23
  call void @llvm.lifetime.end.p0(i64 16, ptr %37) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %34) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %33) #9
  br label %411

398:                                              ; preds = %318
  %399 = landingpad { ptr, i32 }
          cleanup
  %400 = extractvalue { ptr, i32 } %399, 0
  store ptr %400, ptr %5, align 8
  %401 = extractvalue { ptr, i32 } %399, 1
  store i32 %401, ptr %6, align 4
  call void @llvm.lifetime.end.p0(i64 16, ptr %32) #9
  br label %492

402:                                              ; preds = %339, %337, %329, %320
  %403 = landingpad { ptr, i32 }
          cleanup
  %404 = extractvalue { ptr, i32 } %403, 0
  store ptr %404, ptr %5, align 8
  %405 = extractvalue { ptr, i32 } %403, 1
  store i32 %405, ptr %6, align 4
  br label %410

406:                                              ; preds = %379, %370, %363, %355, %346
  %407 = landingpad { ptr, i32 }
          cleanup
  %408 = extractvalue { ptr, i32 } %407, 0
  store ptr %408, ptr %5, align 8
  %409 = extractvalue { ptr, i32 } %407, 1
  store i32 %409, ptr %6, align 4
  call void @llvm.lifetime.end.p0(i64 16, ptr %37) #9
  br label %410

410:                                              ; preds = %406, %402
  call void @llvm.lifetime.end.p0(i64 16, ptr %34) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %33) #9
  br label %492

411:                                              ; preds = %391, %282
  call void @llvm.lifetime.start.p0(i64 8, ptr %39) #9
  %412 = getelementptr inbounds %class.Test, ptr %96, i32 0, i32 3
  %413 = load ptr, ptr %412, align 8, !tbaa !15
  call void @llvm.lifetime.start.p0(i64 256, ptr %40) #9
  %414 = invoke noundef ptr @_ZNK3JPH8RefConstINS_5ShapeEEcvPKS1_Ev(ptr noundef nonnull align 8 dereferenceable(8) %10)
          to label %415 unwind label %460

415:                                              ; preds = %411
  call void @llvm.memcpy.p0.p0.i64(ptr align 16 %41, ptr align 16 %14, i64 16, i1 false), !tbaa.struct !23
  call void @llvm.memcpy.p0.p0.i64(ptr align 16 %42, ptr align 16 %24, i64 16, i1 false), !tbaa.struct !23
  %416 = getelementptr inbounds { double, double }, ptr %41, i32 0, i32 0
  %417 = load double, ptr %416, align 16
  %418 = getelementptr inbounds { double, double }, ptr %41, i32 0, i32 1
  %419 = load double, ptr %418, align 8
  %420 = getelementptr inbounds { double, double }, ptr %42, i32 0, i32 0
  %421 = load double, ptr %420, align 16
  %422 = getelementptr inbounds { double, double }, ptr %42, i32 0, i32 1
  %423 = load double, ptr %422, align 8
  invoke void @_ZN3JPH20BodyCreationSettingsC2EPKNS_5ShapeENS_4Vec3ENS_4QuatENS_11EMotionTypeEt(ptr noundef nonnull align 16 dereferenceable(256) %40, ptr noundef %414, double %417, double %419, double %421, double %423, i8 noundef zeroext 2, i16 noundef zeroext 1)
          to label %424 unwind label %460

424:                                              ; preds = %415
  %425 = invoke noundef ptr @_ZN3JPH13BodyInterface10CreateBodyERKNS_20BodyCreationSettingsE(ptr noundef nonnull align 8 dereferenceable(24) %413, ptr noundef nonnull align 16 dereferenceable(256) %40)
          to label %426 unwind label %464

426:                                              ; preds = %424
  call void @_ZN3JPH20BodyCreationSettingsD2Ev(ptr noundef nonnull align 16 dereferenceable(256) %40) #9
  call void @llvm.lifetime.end.p0(i64 256, ptr %40) #9
  store ptr %425, ptr %39, align 8, !tbaa !5
  %427 = load ptr, ptr %39, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 16, ptr %43) #9
  %428 = invoke noundef ptr @_ZNK3JPH3RefINS_16GroupFilterTableEEcvPS1_Ev(ptr noundef nonnull align 8 dereferenceable(8) %4)
          to label %429 unwind label %469

429:                                              ; preds = %426
  %430 = load i32, ptr %8, align 4, !tbaa !9
  %431 = load i32, ptr %23, align 4, !tbaa !9
  invoke void @_ZN3JPH14CollisionGroupC2EPKNS_11GroupFilterEjj(ptr noundef nonnull align 8 dereferenceable(16) %43, ptr noundef %428, i32 noundef %430, i32 noundef %431)
          to label %432 unwind label %469

432:                                              ; preds = %429
  invoke void @_ZN3JPH4Body17SetCollisionGroupERKNS_14CollisionGroupE(ptr noundef nonnull align 16 dereferenceable(122) %427, ptr noundef nonnull align 8 dereferenceable(16) %43)
          to label %433 unwind label %473

433:                                              ; preds = %432
  call void @_ZN3JPH14CollisionGroupD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %43) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %43) #9
  %434 = getelementptr inbounds %class.Test, ptr %96, i32 0, i32 3
  %435 = load ptr, ptr %434, align 8, !tbaa !15
  %436 = load ptr, ptr %39, align 8, !tbaa !5
  %437 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZNK3JPH4Body5GetIDEv(ptr noundef nonnull align 16 dereferenceable(122) %436)
          to label %438 unwind label %478

438:                                              ; preds = %433
  invoke void @_ZN3JPH13BodyInterface7AddBodyERKNS_6BodyIDENS_11EActivationE(ptr noundef nonnull align 8 dereferenceable(24) %435, ptr noundef nonnull align 4 dereferenceable(4) %437, i32 noundef 0)
          to label %439 unwind label %478

439:                                              ; preds = %438
  call void @llvm.lifetime.start.p0(i64 208, ptr %44) #9
  invoke void @_ZN3JPH24SliderConstraintSettingsC2Ev(ptr noundef nonnull align 16 dereferenceable(208) %44)
          to label %440 unwind label %482

440:                                              ; preds = %439
  %441 = getelementptr inbounds %"class.JPH::SliderConstraintSettings", ptr %44, i32 0, i32 2
  store i8 1, ptr %441, align 4, !tbaa !25
  call void @llvm.memcpy.p0.p0.i64(ptr align 16 %45, ptr align 16 %25, i64 16, i1 false), !tbaa.struct !23
  %442 = getelementptr inbounds { double, double }, ptr %45, i32 0, i32 0
  %443 = load double, ptr %442, align 16
  %444 = getelementptr inbounds { double, double }, ptr %45, i32 0, i32 1
  %445 = load double, ptr %444, align 8
  invoke void @_ZN3JPH24SliderConstraintSettings13SetSliderAxisENS_4Vec3E(ptr noundef nonnull align 16 dereferenceable(208) %44, double %443, double %445)
          to label %446 unwind label %486

446:                                              ; preds = %440
  %447 = getelementptr inbounds %"class.JPH::SliderConstraintSettings", ptr %44, i32 0, i32 10
  store float -5.000000e+00, ptr %447, align 16, !tbaa !38
  %448 = getelementptr inbounds %"class.JPH::SliderConstraintSettings", ptr %44, i32 0, i32 11
  store float 1.000000e+01, ptr %448, align 4, !tbaa !39
  %449 = getelementptr inbounds %class.Test, ptr %96, i32 0, i32 2
  %450 = load ptr, ptr %449, align 8, !tbaa !40
  %451 = load ptr, ptr %22, align 8, !tbaa !5
  %452 = load ptr, ptr %39, align 8, !tbaa !5
  %453 = invoke noundef ptr @_ZNK3JPH24SliderConstraintSettings6CreateERNS_4BodyES2_(ptr noundef nonnull align 16 dereferenceable(208) %44, ptr noundef nonnull align 16 dereferenceable(122) %451, ptr noundef nonnull align 16 dereferenceable(122) %452)
          to label %454 unwind label %486

454:                                              ; preds = %446
  invoke void @_ZN3JPH13PhysicsSystem13AddConstraintEPNS_10ConstraintE(ptr noundef nonnull align 16 dereferenceable(1172) %450, ptr noundef %453)
          to label %455 unwind label %486

455:                                              ; preds = %454
  %456 = load ptr, ptr %39, align 8, !tbaa !5
  store ptr %456, ptr %22, align 8, !tbaa !5
  call void @_ZN3JPH18ConstraintSettingsD2Ev(ptr noundef nonnull align 16 dereferenceable(208) %44) #9
  call void @llvm.lifetime.end.p0(i64 208, ptr %44) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %39) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %25) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %24) #9
  br label %457

457:                                              ; preds = %455
  %458 = load i32, ptr %23, align 4, !tbaa !9
  %459 = add nsw i32 %458, 1
  store i32 %459, ptr %23, align 4, !tbaa !9
  br label %198, !llvm.loop !41

460:                                              ; preds = %415, %411
  %461 = landingpad { ptr, i32 }
          cleanup
  %462 = extractvalue { ptr, i32 } %461, 0
  store ptr %462, ptr %5, align 8
  %463 = extractvalue { ptr, i32 } %461, 1
  store i32 %463, ptr %6, align 4
  br label %468

464:                                              ; preds = %424
  %465 = landingpad { ptr, i32 }
          cleanup
  %466 = extractvalue { ptr, i32 } %465, 0
  store ptr %466, ptr %5, align 8
  %467 = extractvalue { ptr, i32 } %465, 1
  store i32 %467, ptr %6, align 4
  call void @_ZN3JPH20BodyCreationSettingsD2Ev(ptr noundef nonnull align 16 dereferenceable(256) %40) #9
  br label %468

468:                                              ; preds = %464, %460
  call void @llvm.lifetime.end.p0(i64 256, ptr %40) #9
  br label %491

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

473:                                              ; preds = %432
  %474 = landingpad { ptr, i32 }
          cleanup
  %475 = extractvalue { ptr, i32 } %474, 0
  store ptr %475, ptr %5, align 8
  %476 = extractvalue { ptr, i32 } %474, 1
  store i32 %476, ptr %6, align 4
  call void @_ZN3JPH14CollisionGroupD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %43) #9
  br label %477

477:                                              ; preds = %473, %469
  call void @llvm.lifetime.end.p0(i64 16, ptr %43) #9
  br label %491

478:                                              ; preds = %438, %433
  %479 = landingpad { ptr, i32 }
          cleanup
  %480 = extractvalue { ptr, i32 } %479, 0
  store ptr %480, ptr %5, align 8
  %481 = extractvalue { ptr, i32 } %479, 1
  store i32 %481, ptr %6, align 4
  br label %491

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

486:                                              ; preds = %454, %446, %440
  %487 = landingpad { ptr, i32 }
          cleanup
  %488 = extractvalue { ptr, i32 } %487, 0
  store ptr %488, ptr %5, align 8
  %489 = extractvalue { ptr, i32 } %487, 1
  store i32 %489, ptr %6, align 4
  call void @_ZN3JPH18ConstraintSettingsD2Ev(ptr noundef nonnull align 16 dereferenceable(208) %44) #9
  br label %490

490:                                              ; preds = %486, %482
  call void @llvm.lifetime.end.p0(i64 208, ptr %44) #9
  br label %491

491:                                              ; preds = %490, %478, %477, %468
  call void @llvm.lifetime.end.p0(i64 8, ptr %39) #9
  br label %492

492:                                              ; preds = %491, %410, %398, %297, %293, %289
  call void @llvm.lifetime.end.p0(i64 16, ptr %25) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %24) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %23) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %22) #9
  br label %499

493:                                              ; preds = %201
  %494 = load i32, ptr %8, align 4, !tbaa !9
  %495 = add i32 %494, 1
  store i32 %495, ptr %8, align 4, !tbaa !9
  call void @llvm.lifetime.end.p0(i64 8, ptr %22) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %21) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %20) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %15) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %14) #9
  br label %496

496:                                              ; preds = %493
  %497 = load i32, ptr %12, align 4, !tbaa !9
  %498 = add nsw i32 %497, 1
  store i32 %498, ptr %12, align 4, !tbaa !9
  br label %141, !llvm.loop !42

499:                                              ; preds = %492, %232
  call void @llvm.lifetime.end.p0(i64 8, ptr %21) #9
  br label %500

500:                                              ; preds = %499, %228
  call void @llvm.lifetime.end.p0(i64 8, ptr %20) #9
  br label %501

501:                                              ; preds = %500, %224, %223, %214
  call void @llvm.lifetime.end.p0(i64 8, ptr %15) #9
  br label %502

502:                                              ; preds = %501, %202
  call void @llvm.lifetime.end.p0(i64 16, ptr %14) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %12) #9
  br label %1186

503:                                              ; preds = %144
  call void @llvm.lifetime.start.p0(i64 8, ptr %46) #9
  %504 = getelementptr inbounds %class.Test, ptr %96, i32 0, i32 3
  %505 = load ptr, ptr %504, align 8, !tbaa !15
  call void @llvm.lifetime.start.p0(i64 256, ptr %47) #9
  %506 = invoke noundef ptr @_ZN3JPH8BoxShapenwEm(i64 noundef 80)
          to label %507 unwind label %960

507:                                              ; preds = %503
  %508 = invoke { double, double } @_ZN3JPH4Vec310sReplicateEf(float noundef 0x3FB99999A0000000)
          to label %509 unwind label %964

509:                                              ; preds = %507
  %510 = getelementptr inbounds %"class.JPH::Vec3", ptr %48, i32 0, i32 0
  %511 = getelementptr inbounds %union.anon, ptr %510, i32 0, i32 0
  %512 = getelementptr inbounds { double, double }, ptr %511, i32 0, i32 0
  %513 = extractvalue { double, double } %508, 0
  store double %513, ptr %512, align 16
  %514 = getelementptr inbounds { double, double }, ptr %511, i32 0, i32 1
  %515 = extractvalue { double, double } %508, 1
  store double %515, ptr %514, align 8
  %516 = getelementptr inbounds { double, double }, ptr %48, i32 0, i32 0
  %517 = load double, ptr %516, align 16
  %518 = getelementptr inbounds { double, double }, ptr %48, i32 0, i32 1
  %519 = load double, ptr %518, align 8
  invoke void @_ZN3JPH8BoxShapeC2ENS_4Vec3EfPKNS_15PhysicsMaterialE(ptr noundef nonnull align 16 dereferenceable(80) %506, double %517, double %519, float noundef 0x3FA99999A0000000, ptr noundef null)
          to label %520 unwind label %964

520:                                              ; preds = %509
  invoke void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %49, float noundef -5.000000e+00, float noundef 7.000000e+00, float noundef 0xC014CCCCC0000000)
          to label %521 unwind label %960

521:                                              ; preds = %520
  %522 = invoke { double, double } @_ZN3JPH4Quat9sIdentityEv()
          to label %523 unwind label %960

523:                                              ; preds = %521
  %524 = getelementptr inbounds %"class.JPH::Quat", ptr %50, i32 0, i32 0
  %525 = getelementptr inbounds %"class.JPH::Vec4", ptr %524, i32 0, i32 0
  %526 = getelementptr inbounds %union.anon.4, ptr %525, i32 0, i32 0
  %527 = getelementptr inbounds { double, double }, ptr %526, i32 0, i32 0
  %528 = extractvalue { double, double } %522, 0
  store double %528, ptr %527, align 16
  %529 = getelementptr inbounds { double, double }, ptr %526, i32 0, i32 1
  %530 = extractvalue { double, double } %522, 1
  store double %530, ptr %529, align 8
  %531 = getelementptr inbounds { double, double }, ptr %49, i32 0, i32 0
  %532 = load double, ptr %531, align 16
  %533 = getelementptr inbounds { double, double }, ptr %49, i32 0, i32 1
  %534 = load double, ptr %533, align 8
  %535 = getelementptr inbounds { double, double }, ptr %50, i32 0, i32 0
  %536 = load double, ptr %535, align 16
  %537 = getelementptr inbounds { double, double }, ptr %50, i32 0, i32 1
  %538 = load double, ptr %537, align 8
  invoke void @_ZN3JPH20BodyCreationSettingsC2EPKNS_5ShapeENS_4Vec3ENS_4QuatENS_11EMotionTypeEt(ptr noundef nonnull align 16 dereferenceable(256) %47, ptr noundef %506, double %532, double %534, double %536, double %538, i8 noundef zeroext 2, i16 noundef zeroext 1)
          to label %539 unwind label %960

539:                                              ; preds = %523
  %540 = invoke noundef ptr @_ZN3JPH13BodyInterface10CreateBodyERKNS_20BodyCreationSettingsE(ptr noundef nonnull align 8 dereferenceable(24) %505, ptr noundef nonnull align 16 dereferenceable(256) %47)
          to label %541 unwind label %968

541:                                              ; preds = %539
  call void @_ZN3JPH20BodyCreationSettingsD2Ev(ptr noundef nonnull align 16 dereferenceable(256) %47) #9
  call void @llvm.lifetime.end.p0(i64 256, ptr %47) #9
  store ptr %540, ptr %46, align 8, !tbaa !5
  %542 = load ptr, ptr %46, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 16, ptr %51) #9
  %543 = invoke noundef ptr @_ZNK3JPH3RefINS_16GroupFilterTableEEcvPS1_Ev(ptr noundef nonnull align 8 dereferenceable(8) %4)
          to label %544 unwind label %973

544:                                              ; preds = %541
  %545 = load i32, ptr %8, align 4, !tbaa !9
  invoke void @_ZN3JPH14CollisionGroupC2EPKNS_11GroupFilterEjj(ptr noundef nonnull align 8 dereferenceable(16) %51, ptr noundef %543, i32 noundef %545, i32 noundef 0)
          to label %546 unwind label %973

546:                                              ; preds = %544
  invoke void @_ZN3JPH4Body17SetCollisionGroupERKNS_14CollisionGroupE(ptr noundef nonnull align 16 dereferenceable(122) %542, ptr noundef nonnull align 8 dereferenceable(16) %51)
          to label %547 unwind label %977

547:                                              ; preds = %546
  call void @_ZN3JPH14CollisionGroupD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %51) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %51) #9
  %548 = getelementptr inbounds %class.Test, ptr %96, i32 0, i32 3
  %549 = load ptr, ptr %548, align 8, !tbaa !15
  %550 = load ptr, ptr %46, align 8, !tbaa !5
  %551 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZNK3JPH4Body5GetIDEv(ptr noundef nonnull align 16 dereferenceable(122) %550)
          to label %552 unwind label %982

552:                                              ; preds = %547
  invoke void @_ZN3JPH13BodyInterface7AddBodyERKNS_6BodyIDENS_11EActivationE(ptr noundef nonnull align 8 dereferenceable(24) %549, ptr noundef nonnull align 4 dereferenceable(4) %551, i32 noundef 0)
          to label %553 unwind label %982

553:                                              ; preds = %552
  call void @llvm.lifetime.start.p0(i64 8, ptr %52) #9
  %554 = getelementptr inbounds %class.Test, ptr %96, i32 0, i32 3
  %555 = load ptr, ptr %554, align 8, !tbaa !15
  call void @llvm.lifetime.start.p0(i64 256, ptr %53) #9
  %556 = invoke noundef ptr @_ZN3JPH8BoxShapenwEm(i64 noundef 80)
          to label %557 unwind label %986

557:                                              ; preds = %553
  %558 = invoke { double, double } @_ZN3JPH4Vec310sReplicateEf(float noundef 5.000000e+00)
          to label %559 unwind label %990

559:                                              ; preds = %557
  %560 = getelementptr inbounds %"class.JPH::Vec3", ptr %54, i32 0, i32 0
  %561 = getelementptr inbounds %union.anon, ptr %560, i32 0, i32 0
  %562 = getelementptr inbounds { double, double }, ptr %561, i32 0, i32 0
  %563 = extractvalue { double, double } %558, 0
  store double %563, ptr %562, align 16
  %564 = getelementptr inbounds { double, double }, ptr %561, i32 0, i32 1
  %565 = extractvalue { double, double } %558, 1
  store double %565, ptr %564, align 8
  %566 = getelementptr inbounds { double, double }, ptr %54, i32 0, i32 0
  %567 = load double, ptr %566, align 16
  %568 = getelementptr inbounds { double, double }, ptr %54, i32 0, i32 1
  %569 = load double, ptr %568, align 8
  invoke void @_ZN3JPH8BoxShapeC2ENS_4Vec3EfPKNS_15PhysicsMaterialE(ptr noundef nonnull align 16 dereferenceable(80) %556, double %567, double %569, float noundef 0x3FA99999A0000000, ptr noundef null)
          to label %570 unwind label %990

570:                                              ; preds = %559
  invoke void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %55, float noundef -5.000000e+00, float noundef 7.000000e+00, float noundef 0.000000e+00)
          to label %571 unwind label %986

571:                                              ; preds = %570
  %572 = invoke { double, double } @_ZN3JPH4Quat9sIdentityEv()
          to label %573 unwind label %986

573:                                              ; preds = %571
  %574 = getelementptr inbounds %"class.JPH::Quat", ptr %56, i32 0, i32 0
  %575 = getelementptr inbounds %"class.JPH::Vec4", ptr %574, i32 0, i32 0
  %576 = getelementptr inbounds %union.anon.4, ptr %575, i32 0, i32 0
  %577 = getelementptr inbounds { double, double }, ptr %576, i32 0, i32 0
  %578 = extractvalue { double, double } %572, 0
  store double %578, ptr %577, align 16
  %579 = getelementptr inbounds { double, double }, ptr %576, i32 0, i32 1
  %580 = extractvalue { double, double } %572, 1
  store double %580, ptr %579, align 8
  %581 = getelementptr inbounds { double, double }, ptr %55, i32 0, i32 0
  %582 = load double, ptr %581, align 16
  %583 = getelementptr inbounds { double, double }, ptr %55, i32 0, i32 1
  %584 = load double, ptr %583, align 8
  %585 = getelementptr inbounds { double, double }, ptr %56, i32 0, i32 0
  %586 = load double, ptr %585, align 16
  %587 = getelementptr inbounds { double, double }, ptr %56, i32 0, i32 1
  %588 = load double, ptr %587, align 8
  invoke void @_ZN3JPH20BodyCreationSettingsC2EPKNS_5ShapeENS_4Vec3ENS_4QuatENS_11EMotionTypeEt(ptr noundef nonnull align 16 dereferenceable(256) %53, ptr noundef %556, double %582, double %584, double %586, double %588, i8 noundef zeroext 2, i16 noundef zeroext 1)
          to label %589 unwind label %986

589:                                              ; preds = %573
  %590 = invoke noundef ptr @_ZN3JPH13BodyInterface10CreateBodyERKNS_20BodyCreationSettingsE(ptr noundef nonnull align 8 dereferenceable(24) %555, ptr noundef nonnull align 16 dereferenceable(256) %53)
          to label %591 unwind label %994

591:                                              ; preds = %589
  call void @_ZN3JPH20BodyCreationSettingsD2Ev(ptr noundef nonnull align 16 dereferenceable(256) %53) #9
  call void @llvm.lifetime.end.p0(i64 256, ptr %53) #9
  store ptr %590, ptr %52, align 8, !tbaa !5
  %592 = load ptr, ptr %52, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 16, ptr %57) #9
  %593 = invoke noundef ptr @_ZNK3JPH3RefINS_16GroupFilterTableEEcvPS1_Ev(ptr noundef nonnull align 8 dereferenceable(8) %4)
          to label %594 unwind label %999

594:                                              ; preds = %591
  %595 = load i32, ptr %8, align 4, !tbaa !9
  invoke void @_ZN3JPH14CollisionGroupC2EPKNS_11GroupFilterEjj(ptr noundef nonnull align 8 dereferenceable(16) %57, ptr noundef %593, i32 noundef %595, i32 noundef 1)
          to label %596 unwind label %999

596:                                              ; preds = %594
  invoke void @_ZN3JPH4Body17SetCollisionGroupERKNS_14CollisionGroupE(ptr noundef nonnull align 16 dereferenceable(122) %592, ptr noundef nonnull align 8 dereferenceable(16) %57)
          to label %597 unwind label %1003

597:                                              ; preds = %596
  call void @_ZN3JPH14CollisionGroupD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %57) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %57) #9
  %598 = getelementptr inbounds %class.Test, ptr %96, i32 0, i32 3
  %599 = load ptr, ptr %598, align 8, !tbaa !15
  %600 = load ptr, ptr %52, align 8, !tbaa !5
  %601 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZNK3JPH4Body5GetIDEv(ptr noundef nonnull align 16 dereferenceable(122) %600)
          to label %602 unwind label %1008

602:                                              ; preds = %597
  invoke void @_ZN3JPH13BodyInterface7AddBodyERKNS_6BodyIDENS_11EActivationE(ptr noundef nonnull align 8 dereferenceable(24) %599, ptr noundef nonnull align 4 dereferenceable(4) %601, i32 noundef 0)
          to label %603 unwind label %1008

603:                                              ; preds = %602
  call void @llvm.lifetime.start.p0(i64 8, ptr %58) #9
  %604 = getelementptr inbounds %class.Test, ptr %96, i32 0, i32 3
  %605 = load ptr, ptr %604, align 8, !tbaa !15
  call void @llvm.lifetime.start.p0(i64 256, ptr %59) #9
  %606 = invoke noundef ptr @_ZN3JPH8BoxShapenwEm(i64 noundef 80)
          to label %607 unwind label %1012

607:                                              ; preds = %603
  %608 = invoke { double, double } @_ZN3JPH4Vec310sReplicateEf(float noundef 0x3FB99999A0000000)
          to label %609 unwind label %1016

609:                                              ; preds = %607
  %610 = getelementptr inbounds %"class.JPH::Vec3", ptr %60, i32 0, i32 0
  %611 = getelementptr inbounds %union.anon, ptr %610, i32 0, i32 0
  %612 = getelementptr inbounds { double, double }, ptr %611, i32 0, i32 0
  %613 = extractvalue { double, double } %608, 0
  store double %613, ptr %612, align 16
  %614 = getelementptr inbounds { double, double }, ptr %611, i32 0, i32 1
  %615 = extractvalue { double, double } %608, 1
  store double %615, ptr %614, align 8
  %616 = getelementptr inbounds { double, double }, ptr %60, i32 0, i32 0
  %617 = load double, ptr %616, align 16
  %618 = getelementptr inbounds { double, double }, ptr %60, i32 0, i32 1
  %619 = load double, ptr %618, align 8
  invoke void @_ZN3JPH8BoxShapeC2ENS_4Vec3EfPKNS_15PhysicsMaterialE(ptr noundef nonnull align 16 dereferenceable(80) %606, double %617, double %619, float noundef 0x3FA99999A0000000, ptr noundef null)
          to label %620 unwind label %1016

620:                                              ; preds = %609
  invoke void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %61, float noundef -5.000000e+00, float noundef 7.000000e+00, float noundef 0x4014CCCCC0000000)
          to label %621 unwind label %1012

621:                                              ; preds = %620
  %622 = invoke { double, double } @_ZN3JPH4Quat9sIdentityEv()
          to label %623 unwind label %1012

623:                                              ; preds = %621
  %624 = getelementptr inbounds %"class.JPH::Quat", ptr %62, i32 0, i32 0
  %625 = getelementptr inbounds %"class.JPH::Vec4", ptr %624, i32 0, i32 0
  %626 = getelementptr inbounds %union.anon.4, ptr %625, i32 0, i32 0
  %627 = getelementptr inbounds { double, double }, ptr %626, i32 0, i32 0
  %628 = extractvalue { double, double } %622, 0
  store double %628, ptr %627, align 16
  %629 = getelementptr inbounds { double, double }, ptr %626, i32 0, i32 1
  %630 = extractvalue { double, double } %622, 1
  store double %630, ptr %629, align 8
  %631 = getelementptr inbounds { double, double }, ptr %61, i32 0, i32 0
  %632 = load double, ptr %631, align 16
  %633 = getelementptr inbounds { double, double }, ptr %61, i32 0, i32 1
  %634 = load double, ptr %633, align 8
  %635 = getelementptr inbounds { double, double }, ptr %62, i32 0, i32 0
  %636 = load double, ptr %635, align 16
  %637 = getelementptr inbounds { double, double }, ptr %62, i32 0, i32 1
  %638 = load double, ptr %637, align 8
  invoke void @_ZN3JPH20BodyCreationSettingsC2EPKNS_5ShapeENS_4Vec3ENS_4QuatENS_11EMotionTypeEt(ptr noundef nonnull align 16 dereferenceable(256) %59, ptr noundef %606, double %632, double %634, double %636, double %638, i8 noundef zeroext 2, i16 noundef zeroext 1)
          to label %639 unwind label %1012

639:                                              ; preds = %623
  %640 = invoke noundef ptr @_ZN3JPH13BodyInterface10CreateBodyERKNS_20BodyCreationSettingsE(ptr noundef nonnull align 8 dereferenceable(24) %605, ptr noundef nonnull align 16 dereferenceable(256) %59)
          to label %641 unwind label %1020

641:                                              ; preds = %639
  call void @_ZN3JPH20BodyCreationSettingsD2Ev(ptr noundef nonnull align 16 dereferenceable(256) %59) #9
  call void @llvm.lifetime.end.p0(i64 256, ptr %59) #9
  store ptr %640, ptr %58, align 8, !tbaa !5
  %642 = load ptr, ptr %58, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 16, ptr %63) #9
  %643 = invoke noundef ptr @_ZNK3JPH3RefINS_16GroupFilterTableEEcvPS1_Ev(ptr noundef nonnull align 8 dereferenceable(8) %4)
          to label %644 unwind label %1025

644:                                              ; preds = %641
  %645 = load i32, ptr %8, align 4, !tbaa !9
  invoke void @_ZN3JPH14CollisionGroupC2EPKNS_11GroupFilterEjj(ptr noundef nonnull align 8 dereferenceable(16) %63, ptr noundef %643, i32 noundef %645, i32 noundef 2)
          to label %646 unwind label %1025

646:                                              ; preds = %644
  invoke void @_ZN3JPH4Body17SetCollisionGroupERKNS_14CollisionGroupE(ptr noundef nonnull align 16 dereferenceable(122) %642, ptr noundef nonnull align 8 dereferenceable(16) %63)
          to label %647 unwind label %1029

647:                                              ; preds = %646
  call void @_ZN3JPH14CollisionGroupD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %63) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %63) #9
  %648 = getelementptr inbounds %class.Test, ptr %96, i32 0, i32 3
  %649 = load ptr, ptr %648, align 8, !tbaa !15
  %650 = load ptr, ptr %58, align 8, !tbaa !5
  %651 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZNK3JPH4Body5GetIDEv(ptr noundef nonnull align 16 dereferenceable(122) %650)
          to label %652 unwind label %1034

652:                                              ; preds = %647
  invoke void @_ZN3JPH13BodyInterface7AddBodyERKNS_6BodyIDENS_11EActivationE(ptr noundef nonnull align 8 dereferenceable(24) %649, ptr noundef nonnull align 4 dereferenceable(4) %651, i32 noundef 0)
          to label %653 unwind label %1034

653:                                              ; preds = %652
  %654 = load i32, ptr %8, align 4, !tbaa !9
  %655 = add i32 %654, 1
  store i32 %655, ptr %8, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 208, ptr %64) #9
  invoke void @_ZN3JPH24SliderConstraintSettingsC2Ev(ptr noundef nonnull align 16 dereferenceable(208) %64)
          to label %656 unwind label %1038

656:                                              ; preds = %653
  %657 = getelementptr inbounds %"class.JPH::SliderConstraintSettings", ptr %64, i32 0, i32 2
  store i8 1, ptr %657, align 4, !tbaa !25
  %658 = invoke { double, double } @_ZN3JPH4Vec36sAxisZEv()
          to label %659 unwind label %1042

659:                                              ; preds = %656
  %660 = getelementptr inbounds %"class.JPH::Vec3", ptr %65, i32 0, i32 0
  %661 = getelementptr inbounds %union.anon, ptr %660, i32 0, i32 0
  %662 = getelementptr inbounds { double, double }, ptr %661, i32 0, i32 0
  %663 = extractvalue { double, double } %658, 0
  store double %663, ptr %662, align 16
  %664 = getelementptr inbounds { double, double }, ptr %661, i32 0, i32 1
  %665 = extractvalue { double, double } %658, 1
  store double %665, ptr %664, align 8
  %666 = getelementptr inbounds { double, double }, ptr %65, i32 0, i32 0
  %667 = load double, ptr %666, align 16
  %668 = getelementptr inbounds { double, double }, ptr %65, i32 0, i32 1
  %669 = load double, ptr %668, align 8
  invoke void @_ZN3JPH24SliderConstraintSettings13SetSliderAxisENS_4Vec3E(ptr noundef nonnull align 16 dereferenceable(208) %64, double %667, double %669)
          to label %670 unwind label %1042

670:                                              ; preds = %659
  %671 = getelementptr inbounds %"class.JPH::SliderConstraintSettings", ptr %64, i32 0, i32 10
  store float 0.000000e+00, ptr %671, align 16, !tbaa !38
  %672 = getelementptr inbounds %"class.JPH::SliderConstraintSettings", ptr %64, i32 0, i32 11
  store float 1.000000e+00, ptr %672, align 4, !tbaa !39
  %673 = getelementptr inbounds %class.Test, ptr %96, i32 0, i32 2
  %674 = load ptr, ptr %673, align 8, !tbaa !40
  %675 = load ptr, ptr %46, align 8, !tbaa !5
  %676 = load ptr, ptr %52, align 8, !tbaa !5
  %677 = invoke noundef ptr @_ZNK3JPH24SliderConstraintSettings6CreateERNS_4BodyES2_(ptr noundef nonnull align 16 dereferenceable(208) %64, ptr noundef nonnull align 16 dereferenceable(122) %675, ptr noundef nonnull align 16 dereferenceable(122) %676)
          to label %678 unwind label %1042

678:                                              ; preds = %670
  invoke void @_ZN3JPH13PhysicsSystem13AddConstraintEPNS_10ConstraintE(ptr noundef nonnull align 16 dereferenceable(1172) %674, ptr noundef %677)
          to label %679 unwind label %1042

679:                                              ; preds = %678
  call void @llvm.lifetime.start.p0(i64 208, ptr %66) #9
  invoke void @_ZN3JPH24SliderConstraintSettingsC2Ev(ptr noundef nonnull align 16 dereferenceable(208) %66)
          to label %680 unwind label %1046

680:                                              ; preds = %679
  %681 = getelementptr inbounds %"class.JPH::SliderConstraintSettings", ptr %66, i32 0, i32 2
  store i8 1, ptr %681, align 4, !tbaa !25
  %682 = invoke { double, double } @_ZN3JPH4Vec36sAxisZEv()
          to label %683 unwind label %1050

683:                                              ; preds = %680
  %684 = getelementptr inbounds %"class.JPH::Vec3", ptr %67, i32 0, i32 0
  %685 = getelementptr inbounds %union.anon, ptr %684, i32 0, i32 0
  %686 = getelementptr inbounds { double, double }, ptr %685, i32 0, i32 0
  %687 = extractvalue { double, double } %682, 0
  store double %687, ptr %686, align 16
  %688 = getelementptr inbounds { double, double }, ptr %685, i32 0, i32 1
  %689 = extractvalue { double, double } %682, 1
  store double %689, ptr %688, align 8
  %690 = getelementptr inbounds { double, double }, ptr %67, i32 0, i32 0
  %691 = load double, ptr %690, align 16
  %692 = getelementptr inbounds { double, double }, ptr %67, i32 0, i32 1
  %693 = load double, ptr %692, align 8
  invoke void @_ZN3JPH24SliderConstraintSettings13SetSliderAxisENS_4Vec3E(ptr noundef nonnull align 16 dereferenceable(208) %66, double %691, double %693)
          to label %694 unwind label %1050

694:                                              ; preds = %683
  %695 = getelementptr inbounds %"class.JPH::SliderConstraintSettings", ptr %66, i32 0, i32 10
  store float 0.000000e+00, ptr %695, align 16, !tbaa !38
  %696 = getelementptr inbounds %"class.JPH::SliderConstraintSettings", ptr %66, i32 0, i32 11
  store float 1.000000e+00, ptr %696, align 4, !tbaa !39
  %697 = getelementptr inbounds %class.Test, ptr %96, i32 0, i32 2
  %698 = load ptr, ptr %697, align 8, !tbaa !40
  %699 = load ptr, ptr %52, align 8, !tbaa !5
  %700 = load ptr, ptr %58, align 8, !tbaa !5
  %701 = invoke noundef ptr @_ZNK3JPH24SliderConstraintSettings6CreateERNS_4BodyES2_(ptr noundef nonnull align 16 dereferenceable(208) %66, ptr noundef nonnull align 16 dereferenceable(122) %699, ptr noundef nonnull align 16 dereferenceable(122) %700)
          to label %702 unwind label %1050

702:                                              ; preds = %694
  invoke void @_ZN3JPH13PhysicsSystem13AddConstraintEPNS_10ConstraintE(ptr noundef nonnull align 16 dereferenceable(1172) %698, ptr noundef %701)
          to label %703 unwind label %1050

703:                                              ; preds = %702
  call void @_ZN3JPH18ConstraintSettingsD2Ev(ptr noundef nonnull align 16 dereferenceable(208) %66) #9
  call void @llvm.lifetime.end.p0(i64 208, ptr %66) #9
  call void @_ZN3JPH18ConstraintSettingsD2Ev(ptr noundef nonnull align 16 dereferenceable(208) %64) #9
  call void @llvm.lifetime.end.p0(i64 208, ptr %64) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %58) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %52) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %46) #9
  call void @llvm.lifetime.start.p0(i64 8, ptr %68) #9
  %704 = getelementptr inbounds %class.Test, ptr %96, i32 0, i32 3
  %705 = load ptr, ptr %704, align 8, !tbaa !15
  call void @llvm.lifetime.start.p0(i64 256, ptr %69) #9
  %706 = invoke noundef ptr @_ZN3JPH8BoxShapenwEm(i64 noundef 80)
          to label %707 unwind label %1060

707:                                              ; preds = %703
  %708 = invoke { double, double } @_ZN3JPH4Vec34sOneEv()
          to label %709 unwind label %1064

709:                                              ; preds = %707
  %710 = getelementptr inbounds %"class.JPH::Vec3", ptr %70, i32 0, i32 0
  %711 = getelementptr inbounds %union.anon, ptr %710, i32 0, i32 0
  %712 = getelementptr inbounds { double, double }, ptr %711, i32 0, i32 0
  %713 = extractvalue { double, double } %708, 0
  store double %713, ptr %712, align 16
  %714 = getelementptr inbounds { double, double }, ptr %711, i32 0, i32 1
  %715 = extractvalue { double, double } %708, 1
  store double %715, ptr %714, align 8
  %716 = getelementptr inbounds { double, double }, ptr %70, i32 0, i32 0
  %717 = load double, ptr %716, align 16
  %718 = getelementptr inbounds { double, double }, ptr %70, i32 0, i32 1
  %719 = load double, ptr %718, align 8
  invoke void @_ZN3JPH8BoxShapeC2ENS_4Vec3EfPKNS_15PhysicsMaterialE(ptr noundef nonnull align 16 dereferenceable(80) %706, double %717, double %719, float noundef 0x3FA99999A0000000, ptr noundef null)
          to label %720 unwind label %1064

720:                                              ; preds = %709
  invoke void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %71, float noundef 5.000000e+00, float noundef 9.000000e+00, float noundef 0.000000e+00)
          to label %721 unwind label %1060

721:                                              ; preds = %720
  %722 = invoke { double, double } @_ZN3JPH4Quat9sIdentityEv()
          to label %723 unwind label %1060

723:                                              ; preds = %721
  %724 = getelementptr inbounds %"class.JPH::Quat", ptr %72, i32 0, i32 0
  %725 = getelementptr inbounds %"class.JPH::Vec4", ptr %724, i32 0, i32 0
  %726 = getelementptr inbounds %union.anon.4, ptr %725, i32 0, i32 0
  %727 = getelementptr inbounds { double, double }, ptr %726, i32 0, i32 0
  %728 = extractvalue { double, double } %722, 0
  store double %728, ptr %727, align 16
  %729 = getelementptr inbounds { double, double }, ptr %726, i32 0, i32 1
  %730 = extractvalue { double, double } %722, 1
  store double %730, ptr %729, align 8
  %731 = getelementptr inbounds { double, double }, ptr %71, i32 0, i32 0
  %732 = load double, ptr %731, align 16
  %733 = getelementptr inbounds { double, double }, ptr %71, i32 0, i32 1
  %734 = load double, ptr %733, align 8
  %735 = getelementptr inbounds { double, double }, ptr %72, i32 0, i32 0
  %736 = load double, ptr %735, align 16
  %737 = getelementptr inbounds { double, double }, ptr %72, i32 0, i32 1
  %738 = load double, ptr %737, align 8
  invoke void @_ZN3JPH20BodyCreationSettingsC2EPKNS_5ShapeENS_4Vec3ENS_4QuatENS_11EMotionTypeEt(ptr noundef nonnull align 16 dereferenceable(256) %69, ptr noundef %706, double %732, double %734, double %736, double %738, i8 noundef zeroext 2, i16 noundef zeroext 1)
          to label %739 unwind label %1060

739:                                              ; preds = %723
  %740 = invoke noundef ptr @_ZN3JPH13BodyInterface10CreateBodyERKNS_20BodyCreationSettingsE(ptr noundef nonnull align 8 dereferenceable(24) %705, ptr noundef nonnull align 16 dereferenceable(256) %69)
          to label %741 unwind label %1068

741:                                              ; preds = %739
  call void @_ZN3JPH20BodyCreationSettingsD2Ev(ptr noundef nonnull align 16 dereferenceable(256) %69) #9
  call void @llvm.lifetime.end.p0(i64 256, ptr %69) #9
  store ptr %740, ptr %68, align 8, !tbaa !5
  %742 = load ptr, ptr %68, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 16, ptr %73) #9
  %743 = invoke noundef ptr @_ZNK3JPH3RefINS_16GroupFilterTableEEcvPS1_Ev(ptr noundef nonnull align 8 dereferenceable(8) %4)
          to label %744 unwind label %1073

744:                                              ; preds = %741
  %745 = load i32, ptr %8, align 4, !tbaa !9
  invoke void @_ZN3JPH14CollisionGroupC2EPKNS_11GroupFilterEjj(ptr noundef nonnull align 8 dereferenceable(16) %73, ptr noundef %743, i32 noundef %745, i32 noundef 0)
          to label %746 unwind label %1073

746:                                              ; preds = %744
  invoke void @_ZN3JPH4Body17SetCollisionGroupERKNS_14CollisionGroupE(ptr noundef nonnull align 16 dereferenceable(122) %742, ptr noundef nonnull align 8 dereferenceable(16) %73)
          to label %747 unwind label %1077

747:                                              ; preds = %746
  call void @_ZN3JPH14CollisionGroupD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %73) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %73) #9
  %748 = getelementptr inbounds %class.Test, ptr %96, i32 0, i32 3
  %749 = load ptr, ptr %748, align 8, !tbaa !15
  %750 = load ptr, ptr %68, align 8, !tbaa !5
  %751 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZNK3JPH4Body5GetIDEv(ptr noundef nonnull align 16 dereferenceable(122) %750)
          to label %752 unwind label %1082

752:                                              ; preds = %747
  invoke void @_ZN3JPH13BodyInterface7AddBodyERKNS_6BodyIDENS_11EActivationE(ptr noundef nonnull align 8 dereferenceable(24) %749, ptr noundef nonnull align 4 dereferenceable(4) %751, i32 noundef 0)
          to label %753 unwind label %1082

753:                                              ; preds = %752
  call void @llvm.lifetime.start.p0(i64 8, ptr %74) #9
  %754 = getelementptr inbounds %class.Test, ptr %96, i32 0, i32 3
  %755 = load ptr, ptr %754, align 8, !tbaa !15
  call void @llvm.lifetime.start.p0(i64 256, ptr %75) #9
  %756 = invoke noundef ptr @_ZN3JPH8BoxShapenwEm(i64 noundef 80)
          to label %757 unwind label %1086

757:                                              ; preds = %753
  %758 = invoke { double, double } @_ZN3JPH4Vec34sOneEv()
          to label %759 unwind label %1090

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

770:                                              ; preds = %759
  invoke void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %77, float noundef 5.000000e+00, float noundef 3.000000e+00, float noundef 0.000000e+00)
          to label %771 unwind label %1086

771:                                              ; preds = %770
  %772 = invoke { double, double } @_ZN3JPH4Quat9sIdentityEv()
          to label %773 unwind label %1086

773:                                              ; preds = %771
  %774 = getelementptr inbounds %"class.JPH::Quat", ptr %78, i32 0, i32 0
  %775 = getelementptr inbounds %"class.JPH::Vec4", ptr %774, i32 0, i32 0
  %776 = getelementptr inbounds %union.anon.4, ptr %775, i32 0, i32 0
  %777 = getelementptr inbounds { double, double }, ptr %776, i32 0, i32 0
  %778 = extractvalue { double, double } %772, 0
  store double %778, ptr %777, align 16
  %779 = getelementptr inbounds { double, double }, ptr %776, i32 0, i32 1
  %780 = extractvalue { double, double } %772, 1
  store double %780, ptr %779, align 8
  %781 = getelementptr inbounds { double, double }, ptr %77, i32 0, i32 0
  %782 = load double, ptr %781, align 16
  %783 = getelementptr inbounds { double, double }, ptr %77, i32 0, i32 1
  %784 = load double, ptr %783, align 8
  %785 = getelementptr inbounds { double, double }, ptr %78, i32 0, i32 0
  %786 = load double, ptr %785, align 16
  %787 = getelementptr inbounds { double, double }, ptr %78, i32 0, i32 1
  %788 = load double, ptr %787, align 8
  invoke void @_ZN3JPH20BodyCreationSettingsC2EPKNS_5ShapeENS_4Vec3ENS_4QuatENS_11EMotionTypeEt(ptr noundef nonnull align 16 dereferenceable(256) %75, ptr noundef %756, double %782, double %784, double %786, double %788, i8 noundef zeroext 2, i16 noundef zeroext 1)
          to label %789 unwind label %1086

789:                                              ; preds = %773
  %790 = invoke noundef ptr @_ZN3JPH13BodyInterface10CreateBodyERKNS_20BodyCreationSettingsE(ptr noundef nonnull align 8 dereferenceable(24) %755, ptr noundef nonnull align 16 dereferenceable(256) %75)
          to label %791 unwind label %1094

791:                                              ; preds = %789
  call void @_ZN3JPH20BodyCreationSettingsD2Ev(ptr noundef nonnull align 16 dereferenceable(256) %75) #9
  call void @llvm.lifetime.end.p0(i64 256, ptr %75) #9
  store ptr %790, ptr %74, align 8, !tbaa !5
  %792 = load ptr, ptr %74, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 16, ptr %79) #9
  %793 = invoke noundef ptr @_ZNK3JPH3RefINS_16GroupFilterTableEEcvPS1_Ev(ptr noundef nonnull align 8 dereferenceable(8) %4)
          to label %794 unwind label %1099

794:                                              ; preds = %791
  %795 = load i32, ptr %8, align 4, !tbaa !9
  invoke void @_ZN3JPH14CollisionGroupC2EPKNS_11GroupFilterEjj(ptr noundef nonnull align 8 dereferenceable(16) %79, ptr noundef %793, i32 noundef %795, i32 noundef 1)
          to label %796 unwind label %1099

796:                                              ; preds = %794
  invoke void @_ZN3JPH4Body17SetCollisionGroupERKNS_14CollisionGroupE(ptr noundef nonnull align 16 dereferenceable(122) %792, ptr noundef nonnull align 8 dereferenceable(16) %79)
          to label %797 unwind label %1103

797:                                              ; preds = %796
  call void @_ZN3JPH14CollisionGroupD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %79) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %79) #9
  %798 = getelementptr inbounds %class.Test, ptr %96, i32 0, i32 3
  %799 = load ptr, ptr %798, align 8, !tbaa !15
  %800 = load ptr, ptr %74, align 8, !tbaa !5
  %801 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZNK3JPH4Body5GetIDEv(ptr noundef nonnull align 16 dereferenceable(122) %800)
          to label %802 unwind label %1108

802:                                              ; preds = %797
  invoke void @_ZN3JPH13BodyInterface7AddBodyERKNS_6BodyIDENS_11EActivationE(ptr noundef nonnull align 8 dereferenceable(24) %799, ptr noundef nonnull align 4 dereferenceable(4) %801, i32 noundef 0)
          to label %803 unwind label %1108

803:                                              ; preds = %802
  %804 = load i32, ptr %8, align 4, !tbaa !9
  %805 = add i32 %804, 1
  store i32 %805, ptr %8, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 208, ptr %80) #9
  invoke void @_ZN3JPH24SliderConstraintSettingsC2Ev(ptr noundef nonnull align 16 dereferenceable(208) %80)
          to label %806 unwind label %1112

806:                                              ; preds = %803
  %807 = getelementptr inbounds %"class.JPH::SliderConstraintSettings", ptr %80, i32 0, i32 2
  store i8 1, ptr %807, align 4, !tbaa !25
  %808 = invoke { double, double } @_ZN3JPH4Vec36sAxisYEv()
          to label %809 unwind label %1116

809:                                              ; preds = %806
  %810 = getelementptr inbounds %"class.JPH::Vec3", ptr %81, i32 0, i32 0
  %811 = getelementptr inbounds %union.anon, ptr %810, i32 0, i32 0
  %812 = getelementptr inbounds { double, double }, ptr %811, i32 0, i32 0
  %813 = extractvalue { double, double } %808, 0
  store double %813, ptr %812, align 16
  %814 = getelementptr inbounds { double, double }, ptr %811, i32 0, i32 1
  %815 = extractvalue { double, double } %808, 1
  store double %815, ptr %814, align 8
  %816 = getelementptr inbounds { double, double }, ptr %81, i32 0, i32 0
  %817 = load double, ptr %816, align 16
  %818 = getelementptr inbounds { double, double }, ptr %81, i32 0, i32 1
  %819 = load double, ptr %818, align 8
  invoke void @_ZN3JPH24SliderConstraintSettings13SetSliderAxisENS_4Vec3E(ptr noundef nonnull align 16 dereferenceable(208) %80, double %817, double %819)
          to label %820 unwind label %1116

820:                                              ; preds = %809
  %821 = getelementptr inbounds %"class.JPH::SliderConstraintSettings", ptr %80, i32 0, i32 10
  store float 0.000000e+00, ptr %821, align 16, !tbaa !38
  %822 = getelementptr inbounds %"class.JPH::SliderConstraintSettings", ptr %80, i32 0, i32 11
  store float 2.000000e+00, ptr %822, align 4, !tbaa !39
  %823 = getelementptr inbounds %class.Test, ptr %96, i32 0, i32 2
  %824 = load ptr, ptr %823, align 8, !tbaa !40
  %825 = load ptr, ptr %68, align 8, !tbaa !5
  %826 = load ptr, ptr %74, align 8, !tbaa !5
  %827 = invoke noundef ptr @_ZNK3JPH24SliderConstraintSettings6CreateERNS_4BodyES2_(ptr noundef nonnull align 16 dereferenceable(208) %80, ptr noundef nonnull align 16 dereferenceable(122) %825, ptr noundef nonnull align 16 dereferenceable(122) %826)
          to label %828 unwind label %1116

828:                                              ; preds = %820
  invoke void @_ZN3JPH13PhysicsSystem13AddConstraintEPNS_10ConstraintE(ptr noundef nonnull align 16 dereferenceable(1172) %824, ptr noundef %827)
          to label %829 unwind label %1116

829:                                              ; preds = %828
  call void @_ZN3JPH18ConstraintSettingsD2Ev(ptr noundef nonnull align 16 dereferenceable(208) %80) #9
  call void @llvm.lifetime.end.p0(i64 208, ptr %80) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %74) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %68) #9
  call void @llvm.lifetime.start.p0(i64 8, ptr %82) #9
  %830 = getelementptr inbounds %class.Test, ptr %96, i32 0, i32 3
  %831 = load ptr, ptr %830, align 8, !tbaa !15
  call void @llvm.lifetime.start.p0(i64 256, ptr %83) #9
  %832 = invoke noundef ptr @_ZN3JPH8BoxShapenwEm(i64 noundef 80)
          to label %833 unwind label %1123

833:                                              ; preds = %829
  %834 = invoke { double, double } @_ZN3JPH4Vec34sOneEv()
          to label %835 unwind label %1127

835:                                              ; preds = %833
  %836 = getelementptr inbounds %"class.JPH::Vec3", ptr %84, i32 0, i32 0
  %837 = getelementptr inbounds %union.anon, ptr %836, i32 0, i32 0
  %838 = getelementptr inbounds { double, double }, ptr %837, i32 0, i32 0
  %839 = extractvalue { double, double } %834, 0
  store double %839, ptr %838, align 16
  %840 = getelementptr inbounds { double, double }, ptr %837, i32 0, i32 1
  %841 = extractvalue { double, double } %834, 1
  store double %841, ptr %840, align 8
  %842 = getelementptr inbounds { double, double }, ptr %84, i32 0, i32 0
  %843 = load double, ptr %842, align 16
  %844 = getelementptr inbounds { double, double }, ptr %84, i32 0, i32 1
  %845 = load double, ptr %844, align 8
  invoke void @_ZN3JPH8BoxShapeC2ENS_4Vec3EfPKNS_15PhysicsMaterialE(ptr noundef nonnull align 16 dereferenceable(80) %832, double %843, double %845, float noundef 0x3FA99999A0000000, ptr noundef null)
          to label %846 unwind label %1127

846:                                              ; preds = %835
  invoke void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %85, float noundef 1.000000e+01, float noundef 9.000000e+00, float noundef 0.000000e+00)
          to label %847 unwind label %1123

847:                                              ; preds = %846
  %848 = invoke { double, double } @_ZN3JPH4Quat9sIdentityEv()
          to label %849 unwind label %1123

849:                                              ; preds = %847
  %850 = getelementptr inbounds %"class.JPH::Quat", ptr %86, i32 0, i32 0
  %851 = getelementptr inbounds %"class.JPH::Vec4", ptr %850, i32 0, i32 0
  %852 = getelementptr inbounds %union.anon.4, ptr %851, i32 0, i32 0
  %853 = getelementptr inbounds { double, double }, ptr %852, i32 0, i32 0
  %854 = extractvalue { double, double } %848, 0
  store double %854, ptr %853, align 16
  %855 = getelementptr inbounds { double, double }, ptr %852, i32 0, i32 1
  %856 = extractvalue { double, double } %848, 1
  store double %856, ptr %855, align 8
  %857 = getelementptr inbounds { double, double }, ptr %85, i32 0, i32 0
  %858 = load double, ptr %857, align 16
  %859 = getelementptr inbounds { double, double }, ptr %85, i32 0, i32 1
  %860 = load double, ptr %859, align 8
  %861 = getelementptr inbounds { double, double }, ptr %86, i32 0, i32 0
  %862 = load double, ptr %861, align 16
  %863 = getelementptr inbounds { double, double }, ptr %86, i32 0, i32 1
  %864 = load double, ptr %863, align 8
  invoke void @_ZN3JPH20BodyCreationSettingsC2EPKNS_5ShapeENS_4Vec3ENS_4QuatENS_11EMotionTypeEt(ptr noundef nonnull align 16 dereferenceable(256) %83, ptr noundef %832, double %858, double %860, double %862, double %864, i8 noundef zeroext 2, i16 noundef zeroext 1)
          to label %865 unwind label %1123

865:                                              ; preds = %849
  %866 = invoke noundef ptr @_ZN3JPH13BodyInterface10CreateBodyERKNS_20BodyCreationSettingsE(ptr noundef nonnull align 8 dereferenceable(24) %831, ptr noundef nonnull align 16 dereferenceable(256) %83)
          to label %867 unwind label %1131

867:                                              ; preds = %865
  call void @_ZN3JPH20BodyCreationSettingsD2Ev(ptr noundef nonnull align 16 dereferenceable(256) %83) #9
  call void @llvm.lifetime.end.p0(i64 256, ptr %83) #9
  store ptr %866, ptr %82, align 8, !tbaa !5
  %868 = load ptr, ptr %82, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 16, ptr %87) #9
  %869 = invoke noundef ptr @_ZNK3JPH3RefINS_16GroupFilterTableEEcvPS1_Ev(ptr noundef nonnull align 8 dereferenceable(8) %4)
          to label %870 unwind label %1136

870:                                              ; preds = %867
  %871 = load i32, ptr %8, align 4, !tbaa !9
  invoke void @_ZN3JPH14CollisionGroupC2EPKNS_11GroupFilterEjj(ptr noundef nonnull align 8 dereferenceable(16) %87, ptr noundef %869, i32 noundef %871, i32 noundef 0)
          to label %872 unwind label %1136

872:                                              ; preds = %870
  invoke void @_ZN3JPH4Body17SetCollisionGroupERKNS_14CollisionGroupE(ptr noundef nonnull align 16 dereferenceable(122) %868, ptr noundef nonnull align 8 dereferenceable(16) %87)
          to label %873 unwind label %1140

873:                                              ; preds = %872
  call void @_ZN3JPH14CollisionGroupD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %87) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %87) #9
  %874 = getelementptr inbounds %class.Test, ptr %96, i32 0, i32 3
  %875 = load ptr, ptr %874, align 8, !tbaa !15
  %876 = load ptr, ptr %82, align 8, !tbaa !5
  %877 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZNK3JPH4Body5GetIDEv(ptr noundef nonnull align 16 dereferenceable(122) %876)
          to label %878 unwind label %1145

878:                                              ; preds = %873
  invoke void @_ZN3JPH13BodyInterface7AddBodyERKNS_6BodyIDENS_11EActivationE(ptr noundef nonnull align 8 dereferenceable(24) %875, ptr noundef nonnull align 4 dereferenceable(4) %877, i32 noundef 0)
          to label %879 unwind label %1145

879:                                              ; preds = %878
  call void @llvm.lifetime.start.p0(i64 8, ptr %88) #9
  %880 = getelementptr inbounds %class.Test, ptr %96, i32 0, i32 3
  %881 = load ptr, ptr %880, align 8, !tbaa !15
  call void @llvm.lifetime.start.p0(i64 256, ptr %89) #9
  %882 = invoke noundef ptr @_ZN3JPH8BoxShapenwEm(i64 noundef 80)
          to label %883 unwind label %1149

883:                                              ; preds = %879
  %884 = invoke { double, double } @_ZN3JPH4Vec34sOneEv()
          to label %885 unwind label %1153

885:                                              ; preds = %883
  %886 = getelementptr inbounds %"class.JPH::Vec3", ptr %90, i32 0, i32 0
  %887 = getelementptr inbounds %union.anon, ptr %886, i32 0, i32 0
  %888 = getelementptr inbounds { double, double }, ptr %887, i32 0, i32 0
  %889 = extractvalue { double, double } %884, 0
  store double %889, ptr %888, align 16
  %890 = getelementptr inbounds { double, double }, ptr %887, i32 0, i32 1
  %891 = extractvalue { double, double } %884, 1
  store double %891, ptr %890, align 8
  %892 = getelementptr inbounds { double, double }, ptr %90, i32 0, i32 0
  %893 = load double, ptr %892, align 16
  %894 = getelementptr inbounds { double, double }, ptr %90, i32 0, i32 1
  %895 = load double, ptr %894, align 8
  invoke void @_ZN3JPH8BoxShapeC2ENS_4Vec3EfPKNS_15PhysicsMaterialE(ptr noundef nonnull align 16 dereferenceable(80) %882, double %893, double %895, float noundef 0x3FA99999A0000000, ptr noundef null)
          to label %896 unwind label %1153

896:                                              ; preds = %885
  invoke void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %91, float noundef 1.000000e+01, float noundef 3.000000e+00, float noundef 0.000000e+00)
          to label %897 unwind label %1149

897:                                              ; preds = %896
  %898 = invoke { double, double } @_ZN3JPH4Quat9sIdentityEv()
          to label %899 unwind label %1149

899:                                              ; preds = %897
  %900 = getelementptr inbounds %"class.JPH::Quat", ptr %92, i32 0, i32 0
  %901 = getelementptr inbounds %"class.JPH::Vec4", ptr %900, i32 0, i32 0
  %902 = getelementptr inbounds %union.anon.4, ptr %901, i32 0, i32 0
  %903 = getelementptr inbounds { double, double }, ptr %902, i32 0, i32 0
  %904 = extractvalue { double, double } %898, 0
  store double %904, ptr %903, align 16
  %905 = getelementptr inbounds { double, double }, ptr %902, i32 0, i32 1
  %906 = extractvalue { double, double } %898, 1
  store double %906, ptr %905, align 8
  %907 = getelementptr inbounds { double, double }, ptr %91, i32 0, i32 0
  %908 = load double, ptr %907, align 16
  %909 = getelementptr inbounds { double, double }, ptr %91, i32 0, i32 1
  %910 = load double, ptr %909, align 8
  %911 = getelementptr inbounds { double, double }, ptr %92, i32 0, i32 0
  %912 = load double, ptr %911, align 16
  %913 = getelementptr inbounds { double, double }, ptr %92, i32 0, i32 1
  %914 = load double, ptr %913, align 8
  invoke void @_ZN3JPH20BodyCreationSettingsC2EPKNS_5ShapeENS_4Vec3ENS_4QuatENS_11EMotionTypeEt(ptr noundef nonnull align 16 dereferenceable(256) %89, ptr noundef %882, double %908, double %910, double %912, double %914, i8 noundef zeroext 2, i16 noundef zeroext 1)
          to label %915 unwind label %1149

915:                                              ; preds = %899
  %916 = invoke noundef ptr @_ZN3JPH13BodyInterface10CreateBodyERKNS_20BodyCreationSettingsE(ptr noundef nonnull align 8 dereferenceable(24) %881, ptr noundef nonnull align 16 dereferenceable(256) %89)
          to label %917 unwind label %1157

917:                                              ; preds = %915
  call void @_ZN3JPH20BodyCreationSettingsD2Ev(ptr noundef nonnull align 16 dereferenceable(256) %89) #9
  call void @llvm.lifetime.end.p0(i64 256, ptr %89) #9
  store ptr %916, ptr %88, align 8, !tbaa !5
  %918 = load ptr, ptr %88, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 16, ptr %93) #9
  %919 = invoke noundef ptr @_ZNK3JPH3RefINS_16GroupFilterTableEEcvPS1_Ev(ptr noundef nonnull align 8 dereferenceable(8) %4)
          to label %920 unwind label %1162

920:                                              ; preds = %917
  %921 = load i32, ptr %8, align 4, !tbaa !9
  invoke void @_ZN3JPH14CollisionGroupC2EPKNS_11GroupFilterEjj(ptr noundef nonnull align 8 dereferenceable(16) %93, ptr noundef %919, i32 noundef %921, i32 noundef 1)
          to label %922 unwind label %1162

922:                                              ; preds = %920
  invoke void @_ZN3JPH4Body17SetCollisionGroupERKNS_14CollisionGroupE(ptr noundef nonnull align 16 dereferenceable(122) %918, ptr noundef nonnull align 8 dereferenceable(16) %93)
          to label %923 unwind label %1166

923:                                              ; preds = %922
  call void @_ZN3JPH14CollisionGroupD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %93) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %93) #9
  %924 = getelementptr inbounds %class.Test, ptr %96, i32 0, i32 3
  %925 = load ptr, ptr %924, align 8, !tbaa !15
  %926 = load ptr, ptr %88, align 8, !tbaa !5
  %927 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZNK3JPH4Body5GetIDEv(ptr noundef nonnull align 16 dereferenceable(122) %926)
          to label %928 unwind label %1171

928:                                              ; preds = %923
  invoke void @_ZN3JPH13BodyInterface7AddBodyERKNS_6BodyIDENS_11EActivationE(ptr noundef nonnull align 8 dereferenceable(24) %925, ptr noundef nonnull align 4 dereferenceable(4) %927, i32 noundef 0)
          to label %929 unwind label %1171

929:                                              ; preds = %928
  %930 = load i32, ptr %8, align 4, !tbaa !9
  %931 = add i32 %930, 1
  store i32 %931, ptr %8, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 208, ptr %94) #9
  invoke void @_ZN3JPH24SliderConstraintSettingsC2Ev(ptr noundef nonnull align 16 dereferenceable(208) %94)
          to label %932 unwind label %1175

932:                                              ; preds = %929
  %933 = getelementptr inbounds %"class.JPH::SliderConstraintSettings", ptr %94, i32 0, i32 2
  store i8 1, ptr %933, align 4, !tbaa !25
  %934 = invoke { double, double } @_ZN3JPH4Vec36sAxisYEv()
          to label %935 unwind label %1179

935:                                              ; preds = %932
  %936 = getelementptr inbounds %"class.JPH::Vec3", ptr %95, i32 0, i32 0
  %937 = getelementptr inbounds %union.anon, ptr %936, i32 0, i32 0
  %938 = getelementptr inbounds { double, double }, ptr %937, i32 0, i32 0
  %939 = extractvalue { double, double } %934, 0
  store double %939, ptr %938, align 16
  %940 = getelementptr inbounds { double, double }, ptr %937, i32 0, i32 1
  %941 = extractvalue { double, double } %934, 1
  store double %941, ptr %940, align 8
  %942 = getelementptr inbounds { double, double }, ptr %95, i32 0, i32 0
  %943 = load double, ptr %942, align 16
  %944 = getelementptr inbounds { double, double }, ptr %95, i32 0, i32 1
  %945 = load double, ptr %944, align 8
  invoke void @_ZN3JPH24SliderConstraintSettings13SetSliderAxisENS_4Vec3E(ptr noundef nonnull align 16 dereferenceable(208) %94, double %943, double %945)
          to label %946 unwind label %1179

946:                                              ; preds = %935
  %947 = getelementptr inbounds %"class.JPH::SliderConstraintSettings", ptr %94, i32 0, i32 10
  store float 0.000000e+00, ptr %947, align 16, !tbaa !38
  %948 = getelementptr inbounds %"class.JPH::SliderConstraintSettings", ptr %94, i32 0, i32 11
  store float 2.000000e+00, ptr %948, align 4, !tbaa !39
  %949 = getelementptr inbounds %"class.JPH::SliderConstraintSettings", ptr %94, i32 0, i32 12
  %950 = getelementptr inbounds %"class.JPH::SpringSettings", ptr %949, i32 0, i32 1
  store float 1.000000e+00, ptr %950, align 4, !tbaa !24
  %951 = getelementptr inbounds %"class.JPH::SliderConstraintSettings", ptr %94, i32 0, i32 12
  %952 = getelementptr inbounds %"class.JPH::SpringSettings", ptr %951, i32 0, i32 2
  store float 5.000000e-01, ptr %952, align 8, !tbaa !43
  %953 = getelementptr inbounds %class.Test, ptr %96, i32 0, i32 2
  %954 = load ptr, ptr %953, align 8, !tbaa !40
  %955 = load ptr, ptr %82, align 8, !tbaa !5
  %956 = load ptr, ptr %88, align 8, !tbaa !5
  %957 = invoke noundef ptr @_ZNK3JPH24SliderConstraintSettings6CreateERNS_4BodyES2_(ptr noundef nonnull align 16 dereferenceable(208) %94, ptr noundef nonnull align 16 dereferenceable(122) %955, ptr noundef nonnull align 16 dereferenceable(122) %956)
          to label %958 unwind label %1179

958:                                              ; preds = %946
  invoke void @_ZN3JPH13PhysicsSystem13AddConstraintEPNS_10ConstraintE(ptr noundef nonnull align 16 dereferenceable(1172) %954, ptr noundef %957)
          to label %959 unwind label %1179

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

960:                                              ; preds = %523, %521, %520, %503
  %961 = landingpad { ptr, i32 }
          cleanup
  %962 = extractvalue { ptr, i32 } %961, 0
  store ptr %962, ptr %5, align 8
  %963 = extractvalue { ptr, i32 } %961, 1
  store i32 %963, ptr %6, align 4
  br label %972

964:                                              ; preds = %509, %507
  %965 = landingpad { ptr, i32 }
          cleanup
  %966 = extractvalue { ptr, i32 } %965, 0
  store ptr %966, ptr %5, align 8
  %967 = extractvalue { ptr, i32 } %965, 1
  store i32 %967, ptr %6, align 4
  call void @_ZN3JPH8BoxShapedlEPv(ptr noundef %506) #9
  br label %972

968:                                              ; preds = %539
  %969 = landingpad { ptr, i32 }
          cleanup
  %970 = extractvalue { ptr, i32 } %969, 0
  store ptr %970, ptr %5, align 8
  %971 = extractvalue { ptr, i32 } %969, 1
  store i32 %971, ptr %6, align 4
  call void @_ZN3JPH20BodyCreationSettingsD2Ev(ptr noundef nonnull align 16 dereferenceable(256) %47) #9
  br label %972

972:                                              ; preds = %968, %964, %960
  call void @llvm.lifetime.end.p0(i64 256, ptr %47) #9
  br label %1059

973:                                              ; preds = %544, %541
  %974 = landingpad { ptr, i32 }
          cleanup
  %975 = extractvalue { ptr, i32 } %974, 0
  store ptr %975, ptr %5, align 8
  %976 = extractvalue { ptr, i32 } %974, 1
  store i32 %976, ptr %6, align 4
  br label %981

977:                                              ; preds = %546
  %978 = landingpad { ptr, i32 }
          cleanup
  %979 = extractvalue { ptr, i32 } %978, 0
  store ptr %979, ptr %5, align 8
  %980 = extractvalue { ptr, i32 } %978, 1
  store i32 %980, ptr %6, align 4
  call void @_ZN3JPH14CollisionGroupD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %51) #9
  br label %981

981:                                              ; preds = %977, %973
  call void @llvm.lifetime.end.p0(i64 16, ptr %51) #9
  br label %1059

982:                                              ; preds = %552, %547
  %983 = landingpad { ptr, i32 }
          cleanup
  %984 = extractvalue { ptr, i32 } %983, 0
  store ptr %984, ptr %5, align 8
  %985 = extractvalue { ptr, i32 } %983, 1
  store i32 %985, ptr %6, align 4
  br label %1059

986:                                              ; preds = %573, %571, %570, %553
  %987 = landingpad { ptr, i32 }
          cleanup
  %988 = extractvalue { ptr, i32 } %987, 0
  store ptr %988, ptr %5, align 8
  %989 = extractvalue { ptr, i32 } %987, 1
  store i32 %989, ptr %6, align 4
  br label %998

990:                                              ; preds = %559, %557
  %991 = landingpad { ptr, i32 }
          cleanup
  %992 = extractvalue { ptr, i32 } %991, 0
  store ptr %992, ptr %5, align 8
  %993 = extractvalue { ptr, i32 } %991, 1
  store i32 %993, ptr %6, align 4
  call void @_ZN3JPH8BoxShapedlEPv(ptr noundef %556) #9
  br label %998

994:                                              ; preds = %589
  %995 = landingpad { ptr, i32 }
          cleanup
  %996 = extractvalue { ptr, i32 } %995, 0
  store ptr %996, ptr %5, align 8
  %997 = extractvalue { ptr, i32 } %995, 1
  store i32 %997, ptr %6, align 4
  call void @_ZN3JPH20BodyCreationSettingsD2Ev(ptr noundef nonnull align 16 dereferenceable(256) %53) #9
  br label %998

998:                                              ; preds = %994, %990, %986
  call void @llvm.lifetime.end.p0(i64 256, ptr %53) #9
  br label %1058

999:                                              ; preds = %594, %591
  %1000 = landingpad { ptr, i32 }
          cleanup
  %1001 = extractvalue { ptr, i32 } %1000, 0
  store ptr %1001, ptr %5, align 8
  %1002 = extractvalue { ptr, i32 } %1000, 1
  store i32 %1002, ptr %6, align 4
  br label %1007

1003:                                             ; preds = %596
  %1004 = landingpad { ptr, i32 }
          cleanup
  %1005 = extractvalue { ptr, i32 } %1004, 0
  store ptr %1005, ptr %5, align 8
  %1006 = extractvalue { ptr, i32 } %1004, 1
  store i32 %1006, ptr %6, align 4
  call void @_ZN3JPH14CollisionGroupD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %57) #9
  br label %1007

1007:                                             ; preds = %1003, %999
  call void @llvm.lifetime.end.p0(i64 16, ptr %57) #9
  br label %1058

1008:                                             ; preds = %602, %597
  %1009 = landingpad { ptr, i32 }
          cleanup
  %1010 = extractvalue { ptr, i32 } %1009, 0
  store ptr %1010, ptr %5, align 8
  %1011 = extractvalue { ptr, i32 } %1009, 1
  store i32 %1011, ptr %6, align 4
  br label %1058

1012:                                             ; preds = %623, %621, %620, %603
  %1013 = landingpad { ptr, i32 }
          cleanup
  %1014 = extractvalue { ptr, i32 } %1013, 0
  store ptr %1014, ptr %5, align 8
  %1015 = extractvalue { ptr, i32 } %1013, 1
  store i32 %1015, ptr %6, align 4
  br label %1024

1016:                                             ; preds = %609, %607
  %1017 = landingpad { ptr, i32 }
          cleanup
  %1018 = extractvalue { ptr, i32 } %1017, 0
  store ptr %1018, ptr %5, align 8
  %1019 = extractvalue { ptr, i32 } %1017, 1
  store i32 %1019, ptr %6, align 4
  call void @_ZN3JPH8BoxShapedlEPv(ptr noundef %606) #9
  br label %1024

1020:                                             ; preds = %639
  %1021 = landingpad { ptr, i32 }
          cleanup
  %1022 = extractvalue { ptr, i32 } %1021, 0
  store ptr %1022, ptr %5, align 8
  %1023 = extractvalue { ptr, i32 } %1021, 1
  store i32 %1023, ptr %6, align 4
  call void @_ZN3JPH20BodyCreationSettingsD2Ev(ptr noundef nonnull align 16 dereferenceable(256) %59) #9
  br label %1024

1024:                                             ; preds = %1020, %1016, %1012
  call void @llvm.lifetime.end.p0(i64 256, ptr %59) #9
  br label %1057

1025:                                             ; preds = %644, %641
  %1026 = landingpad { ptr, i32 }
          cleanup
  %1027 = extractvalue { ptr, i32 } %1026, 0
  store ptr %1027, ptr %5, align 8
  %1028 = extractvalue { ptr, i32 } %1026, 1
  store i32 %1028, ptr %6, align 4
  br label %1033

1029:                                             ; preds = %646
  %1030 = landingpad { ptr, i32 }
          cleanup
  %1031 = extractvalue { ptr, i32 } %1030, 0
  store ptr %1031, ptr %5, align 8
  %1032 = extractvalue { ptr, i32 } %1030, 1
  store i32 %1032, ptr %6, align 4
  call void @_ZN3JPH14CollisionGroupD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %63) #9
  br label %1033

1033:                                             ; preds = %1029, %1025
  call void @llvm.lifetime.end.p0(i64 16, ptr %63) #9
  br label %1057

1034:                                             ; preds = %652, %647
  %1035 = landingpad { ptr, i32 }
          cleanup
  %1036 = extractvalue { ptr, i32 } %1035, 0
  store ptr %1036, ptr %5, align 8
  %1037 = extractvalue { ptr, i32 } %1035, 1
  store i32 %1037, ptr %6, align 4
  br label %1057

1038:                                             ; preds = %653
  %1039 = landingpad { ptr, i32 }
          cleanup
  %1040 = extractvalue { ptr, i32 } %1039, 0
  store ptr %1040, ptr %5, align 8
  %1041 = extractvalue { ptr, i32 } %1039, 1
  store i32 %1041, ptr %6, align 4
  br label %1056

1042:                                             ; preds = %678, %670, %659, %656
  %1043 = landingpad { ptr, i32 }
          cleanup
  %1044 = extractvalue { ptr, i32 } %1043, 0
  store ptr %1044, ptr %5, align 8
  %1045 = extractvalue { ptr, i32 } %1043, 1
  store i32 %1045, ptr %6, align 4
  br label %1055

1046:                                             ; preds = %679
  %1047 = landingpad { ptr, i32 }
          cleanup
  %1048 = extractvalue { ptr, i32 } %1047, 0
  store ptr %1048, ptr %5, align 8
  %1049 = extractvalue { ptr, i32 } %1047, 1
  store i32 %1049, ptr %6, align 4
  br label %1054

1050:                                             ; preds = %702, %694, %683, %680
  %1051 = landingpad { ptr, i32 }
          cleanup
  %1052 = extractvalue { ptr, i32 } %1051, 0
  store ptr %1052, ptr %5, align 8
  %1053 = extractvalue { ptr, i32 } %1051, 1
  store i32 %1053, ptr %6, align 4
  call void @_ZN3JPH18ConstraintSettingsD2Ev(ptr noundef nonnull align 16 dereferenceable(208) %66) #9
  br label %1054

1054:                                             ; preds = %1050, %1046
  call void @llvm.lifetime.end.p0(i64 208, ptr %66) #9
  br label %1055

1055:                                             ; preds = %1054, %1042
  call void @_ZN3JPH18ConstraintSettingsD2Ev(ptr noundef nonnull align 16 dereferenceable(208) %64) #9
  br label %1056

1056:                                             ; preds = %1055, %1038
  call void @llvm.lifetime.end.p0(i64 208, ptr %64) #9
  br label %1057

1057:                                             ; preds = %1056, %1034, %1033, %1024
  call void @llvm.lifetime.end.p0(i64 8, ptr %58) #9
  br label %1058

1058:                                             ; preds = %1057, %1008, %1007, %998
  call void @llvm.lifetime.end.p0(i64 8, ptr %52) #9
  br label %1059

1059:                                             ; preds = %1058, %982, %981, %972
  call void @llvm.lifetime.end.p0(i64 8, ptr %46) #9
  br label %1186

1060:                                             ; preds = %723, %721, %720, %703
  %1061 = landingpad { ptr, i32 }
          cleanup
  %1062 = extractvalue { ptr, i32 } %1061, 0
  store ptr %1062, ptr %5, align 8
  %1063 = extractvalue { ptr, i32 } %1061, 1
  store i32 %1063, ptr %6, align 4
  br label %1072

1064:                                             ; preds = %709, %707
  %1065 = landingpad { ptr, i32 }
          cleanup
  %1066 = extractvalue { ptr, i32 } %1065, 0
  store ptr %1066, ptr %5, align 8
  %1067 = extractvalue { ptr, i32 } %1065, 1
  store i32 %1067, ptr %6, align 4
  call void @_ZN3JPH8BoxShapedlEPv(ptr noundef %706) #9
  br label %1072

1068:                                             ; preds = %739
  %1069 = landingpad { ptr, i32 }
          cleanup
  %1070 = extractvalue { ptr, i32 } %1069, 0
  store ptr %1070, ptr %5, align 8
  %1071 = extractvalue { ptr, i32 } %1069, 1
  store i32 %1071, ptr %6, align 4
  call void @_ZN3JPH20BodyCreationSettingsD2Ev(ptr noundef nonnull align 16 dereferenceable(256) %69) #9
  br label %1072

1072:                                             ; preds = %1068, %1064, %1060
  call void @llvm.lifetime.end.p0(i64 256, ptr %69) #9
  br label %1122

1073:                                             ; preds = %744, %741
  %1074 = landingpad { ptr, i32 }
          cleanup
  %1075 = extractvalue { ptr, i32 } %1074, 0
  store ptr %1075, ptr %5, align 8
  %1076 = extractvalue { ptr, i32 } %1074, 1
  store i32 %1076, ptr %6, align 4
  br label %1081

1077:                                             ; preds = %746
  %1078 = landingpad { ptr, i32 }
          cleanup
  %1079 = extractvalue { ptr, i32 } %1078, 0
  store ptr %1079, ptr %5, align 8
  %1080 = extractvalue { ptr, i32 } %1078, 1
  store i32 %1080, ptr %6, align 4
  call void @_ZN3JPH14CollisionGroupD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %73) #9
  br label %1081

1081:                                             ; preds = %1077, %1073
  call void @llvm.lifetime.end.p0(i64 16, ptr %73) #9
  br label %1122

1082:                                             ; preds = %752, %747
  %1083 = landingpad { ptr, i32 }
          cleanup
  %1084 = extractvalue { ptr, i32 } %1083, 0
  store ptr %1084, ptr %5, align 8
  %1085 = extractvalue { ptr, i32 } %1083, 1
  store i32 %1085, ptr %6, align 4
  br label %1122

1086:                                             ; preds = %773, %771, %770, %753
  %1087 = landingpad { ptr, i32 }
          cleanup
  %1088 = extractvalue { ptr, i32 } %1087, 0
  store ptr %1088, ptr %5, align 8
  %1089 = extractvalue { ptr, i32 } %1087, 1
  store i32 %1089, ptr %6, align 4
  br label %1098

1090:                                             ; preds = %759, %757
  %1091 = landingpad { ptr, i32 }
          cleanup
  %1092 = extractvalue { ptr, i32 } %1091, 0
  store ptr %1092, ptr %5, align 8
  %1093 = extractvalue { ptr, i32 } %1091, 1
  store i32 %1093, ptr %6, align 4
  call void @_ZN3JPH8BoxShapedlEPv(ptr noundef %756) #9
  br label %1098

1094:                                             ; preds = %789
  %1095 = landingpad { ptr, i32 }
          cleanup
  %1096 = extractvalue { ptr, i32 } %1095, 0
  store ptr %1096, ptr %5, align 8
  %1097 = extractvalue { ptr, i32 } %1095, 1
  store i32 %1097, ptr %6, align 4
  call void @_ZN3JPH20BodyCreationSettingsD2Ev(ptr noundef nonnull align 16 dereferenceable(256) %75) #9
  br label %1098

1098:                                             ; preds = %1094, %1090, %1086
  call void @llvm.lifetime.end.p0(i64 256, ptr %75) #9
  br label %1121

1099:                                             ; preds = %794, %791
  %1100 = landingpad { ptr, i32 }
          cleanup
  %1101 = extractvalue { ptr, i32 } %1100, 0
  store ptr %1101, ptr %5, align 8
  %1102 = extractvalue { ptr, i32 } %1100, 1
  store i32 %1102, ptr %6, align 4
  br label %1107

1103:                                             ; preds = %796
  %1104 = landingpad { ptr, i32 }
          cleanup
  %1105 = extractvalue { ptr, i32 } %1104, 0
  store ptr %1105, ptr %5, align 8
  %1106 = extractvalue { ptr, i32 } %1104, 1
  store i32 %1106, ptr %6, align 4
  call void @_ZN3JPH14CollisionGroupD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %79) #9
  br label %1107

1107:                                             ; preds = %1103, %1099
  call void @llvm.lifetime.end.p0(i64 16, ptr %79) #9
  br label %1121

1108:                                             ; preds = %802, %797
  %1109 = landingpad { ptr, i32 }
          cleanup
  %1110 = extractvalue { ptr, i32 } %1109, 0
  store ptr %1110, ptr %5, align 8
  %1111 = extractvalue { ptr, i32 } %1109, 1
  store i32 %1111, ptr %6, align 4
  br label %1121

1112:                                             ; preds = %803
  %1113 = landingpad { ptr, i32 }
          cleanup
  %1114 = extractvalue { ptr, i32 } %1113, 0
  store ptr %1114, ptr %5, align 8
  %1115 = extractvalue { ptr, i32 } %1113, 1
  store i32 %1115, ptr %6, align 4
  br label %1120

1116:                                             ; preds = %828, %820, %809, %806
  %1117 = landingpad { ptr, i32 }
          cleanup
  %1118 = extractvalue { ptr, i32 } %1117, 0
  store ptr %1118, ptr %5, align 8
  %1119 = extractvalue { ptr, i32 } %1117, 1
  store i32 %1119, ptr %6, align 4
  call void @_ZN3JPH18ConstraintSettingsD2Ev(ptr noundef nonnull align 16 dereferenceable(208) %80) #9
  br label %1120

1120:                                             ; preds = %1116, %1112
  call void @llvm.lifetime.end.p0(i64 208, ptr %80) #9
  br label %1121

1121:                                             ; preds = %1120, %1108, %1107, %1098
  call void @llvm.lifetime.end.p0(i64 8, ptr %74) #9
  br label %1122

1122:                                             ; preds = %1121, %1082, %1081, %1072
  call void @llvm.lifetime.end.p0(i64 8, ptr %68) #9
  br label %1186

1123:                                             ; preds = %849, %847, %846, %829
  %1124 = landingpad { ptr, i32 }
          cleanup
  %1125 = extractvalue { ptr, i32 } %1124, 0
  store ptr %1125, ptr %5, align 8
  %1126 = extractvalue { ptr, i32 } %1124, 1
  store i32 %1126, ptr %6, align 4
  br label %1135

1127:                                             ; preds = %835, %833
  %1128 = landingpad { ptr, i32 }
          cleanup
  %1129 = extractvalue { ptr, i32 } %1128, 0
  store ptr %1129, ptr %5, align 8
  %1130 = extractvalue { ptr, i32 } %1128, 1
  store i32 %1130, ptr %6, align 4
  call void @_ZN3JPH8BoxShapedlEPv(ptr noundef %832) #9
  br label %1135

1131:                                             ; preds = %865
  %1132 = landingpad { ptr, i32 }
          cleanup
  %1133 = extractvalue { ptr, i32 } %1132, 0
  store ptr %1133, ptr %5, align 8
  %1134 = extractvalue { ptr, i32 } %1132, 1
  store i32 %1134, ptr %6, align 4
  call void @_ZN3JPH20BodyCreationSettingsD2Ev(ptr noundef nonnull align 16 dereferenceable(256) %83) #9
  br label %1135

1135:                                             ; preds = %1131, %1127, %1123
  call void @llvm.lifetime.end.p0(i64 256, ptr %83) #9
  br label %1185

1136:                                             ; preds = %870, %867
  %1137 = landingpad { ptr, i32 }
          cleanup
  %1138 = extractvalue { ptr, i32 } %1137, 0
  store ptr %1138, ptr %5, align 8
  %1139 = extractvalue { ptr, i32 } %1137, 1
  store i32 %1139, ptr %6, align 4
  br label %1144

1140:                                             ; preds = %872
  %1141 = landingpad { ptr, i32 }
          cleanup
  %1142 = extractvalue { ptr, i32 } %1141, 0
  store ptr %1142, ptr %5, align 8
  %1143 = extractvalue { ptr, i32 } %1141, 1
  store i32 %1143, ptr %6, align 4
  call void @_ZN3JPH14CollisionGroupD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %87) #9
  br label %1144

1144:                                             ; preds = %1140, %1136
  call void @llvm.lifetime.end.p0(i64 16, ptr %87) #9
  br label %1185

1145:                                             ; preds = %878, %873
  %1146 = landingpad { ptr, i32 }
          cleanup
  %1147 = extractvalue { ptr, i32 } %1146, 0
  store ptr %1147, ptr %5, align 8
  %1148 = extractvalue { ptr, i32 } %1146, 1
  store i32 %1148, ptr %6, align 4
  br label %1185

1149:                                             ; preds = %899, %897, %896, %879
  %1150 = landingpad { ptr, i32 }
          cleanup
  %1151 = extractvalue { ptr, i32 } %1150, 0
  store ptr %1151, ptr %5, align 8
  %1152 = extractvalue { ptr, i32 } %1150, 1
  store i32 %1152, ptr %6, align 4
  br label %1161

1153:                                             ; preds = %885, %883
  %1154 = landingpad { ptr, i32 }
          cleanup
  %1155 = extractvalue { ptr, i32 } %1154, 0
  store ptr %1155, ptr %5, align 8
  %1156 = extractvalue { ptr, i32 } %1154, 1
  store i32 %1156, ptr %6, align 4
  call void @_ZN3JPH8BoxShapedlEPv(ptr noundef %882) #9
  br label %1161

1157:                                             ; preds = %915
  %1158 = landingpad { ptr, i32 }
          cleanup
  %1159 = extractvalue { ptr, i32 } %1158, 0
  store ptr %1159, ptr %5, align 8
  %1160 = extractvalue { ptr, i32 } %1158, 1
  store i32 %1160, ptr %6, align 4
  call void @_ZN3JPH20BodyCreationSettingsD2Ev(ptr noundef nonnull align 16 dereferenceable(256) %89) #9
  br label %1161

1161:                                             ; preds = %1157, %1153, %1149
  call void @llvm.lifetime.end.p0(i64 256, ptr %89) #9
  br label %1184

1162:                                             ; preds = %920, %917
  %1163 = landingpad { ptr, i32 }
          cleanup
  %1164 = extractvalue { ptr, i32 } %1163, 0
  store ptr %1164, ptr %5, align 8
  %1165 = extractvalue { ptr, i32 } %1163, 1
  store i32 %1165, ptr %6, align 4
  br label %1170

1166:                                             ; preds = %922
  %1167 = landingpad { ptr, i32 }
          cleanup
  %1168 = extractvalue { ptr, i32 } %1167, 0
  store ptr %1168, ptr %5, align 8
  %1169 = extractvalue { ptr, i32 } %1167, 1
  store i32 %1169, ptr %6, align 4
  call void @_ZN3JPH14CollisionGroupD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %93) #9
  br label %1170

1170:                                             ; preds = %1166, %1162
  call void @llvm.lifetime.end.p0(i64 16, ptr %93) #9
  br label %1184

1171:                                             ; preds = %928, %923
  %1172 = landingpad { ptr, i32 }
          cleanup
  %1173 = extractvalue { ptr, i32 } %1172, 0
  store ptr %1173, ptr %5, align 8
  %1174 = extractvalue { ptr, i32 } %1172, 1
  store i32 %1174, ptr %6, align 4
  br label %1184

1175:                                             ; preds = %929
  %1176 = landingpad { ptr, i32 }
          cleanup
  %1177 = extractvalue { ptr, i32 } %1176, 0
  store ptr %1177, ptr %5, align 8
  %1178 = extractvalue { ptr, i32 } %1176, 1
  store i32 %1178, ptr %6, align 4
  br label %1183

1179:                                             ; preds = %958, %946, %935, %932
  %1180 = landingpad { ptr, i32 }
          cleanup
  %1181 = extractvalue { ptr, i32 } %1180, 0
  store ptr %1181, ptr %5, align 8
  %1182 = extractvalue { ptr, i32 } %1180, 1
  store i32 %1182, ptr %6, align 4
  call void @_ZN3JPH18ConstraintSettingsD2Ev(ptr noundef nonnull align 16 dereferenceable(208) %94) #9
  br label %1183

1183:                                             ; preds = %1179, %1175
  call void @llvm.lifetime.end.p0(i64 208, ptr %94) #9
  br label %1184

1184:                                             ; preds = %1183, %1171, %1170, %1161
  call void @llvm.lifetime.end.p0(i64 8, ptr %88) #9
  br label %1185

1185:                                             ; preds = %1184, %1145, %1144, %1135
  call void @llvm.lifetime.end.p0(i64 8, ptr %82) #9
  br label %1186

1186:                                             ; preds = %1185, %1122, %1059, %502
  call void @_ZN3JPH8RefConstINS_5ShapeEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %10) #9
  br label %1187

1187:                                             ; preds = %1186, %149, %145
  call void @llvm.lifetime.end.p0(i64 8, ptr %10) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %9) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %8) #9
  br label %1188

1188:                                             ; preds = %1187, %118
  call void @_ZN3JPH3RefINS_16GroupFilterTableEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %4) #9
  br label %1189

1189:                                             ; preds = %1188, %104
  call void @llvm.lifetime.end.p0(i64 8, ptr %4) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %3) #9
  br label %1190

1190:                                             ; preds = %1189
  %1191 = load ptr, ptr %5, align 8
  %1192 = load i32, ptr %6, align 4
  %1193 = insertvalue { ptr, i32 } poison, ptr %1191, 0
  %1194 = insertvalue { ptr, i32 } %1193, i32 %1192, 1
  resume { ptr, i32 } %1194
}

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: inlinehint mustprogress nounwind uwtable
declare dso_local noundef ptr @_ZNK3JPH3RefINS_16GroupFilterTableEEptEv(ptr noundef nonnull align 8 dereferenceable(8)) #6 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN3JPH16GroupFilterTable16DisableCollisionEjj(ptr noundef nonnull align 8 dereferenceable(40), i32 noundef, i32 noundef) #1 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) #7 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 #7 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)) #6 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 #6 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)) #6 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 #6 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)) #6 align 2

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNSt25uniform_real_distributionIfEC2Eff(ptr noundef nonnull align 4 dereferenceable(8), float noundef, float noundef) unnamed_addr #1 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) #7 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 } @_ZN3JPH4Vec36sAxisZEv() #3 align 2

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

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef float @_ZSt3absf(float noundef) #6

; Function Attrs: mustprogress uwtable
declare dso_local noundef float @_ZNSt25uniform_real_distributionIfEclISt26linear_congruential_engineImLm16807ELm0ELm2147483647EEEEfRT_(ptr noundef nonnull align 4 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8)) #1 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local { double, double } @_ZN3JPH4Quat7sRandomISt26linear_congruential_engineImLm16807ELm0ELm2147483647EEEES0_RT_(ptr noundef nonnull align 8 dereferenceable(8)) #5 align 2

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

; Function Attrs: alwaysinline mustprogress uwtable
declare dso_local { double, double } @_ZNK3JPH4QuatmlENS_4Vec3E(ptr noundef nonnull align 16 dereferenceable(16), double, double) #3 align 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: mustprogress uwtable
declare dso_local void @_ZN3JPH13PhysicsSystem13AddConstraintEPNS_10ConstraintE(ptr noundef nonnull align 16 dereferenceable(1172), ptr noundef) #1 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: inlinehint mustprogress nounwind uwtable
declare dso_local void @_ZN3JPH18ConstraintSettingsD2Ev(ptr noundef nonnull align 8 dereferenceable(40)) unnamed_addr #6 align 2

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

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local void @_ZN3JPH3RefINS_16GroupFilterTableEED2Ev(ptr noundef nonnull align 8 dereferenceable(8)) unnamed_addr #6 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 = { inlinehint mustprogress nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #7 = { 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 #8 = { nocallback nofree nounwind willreturn memory(argmem: readwrite) }
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, !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 = !{!"int", !7, i64 0}
!11 = distinct !{!11, !12}
!12 = !{!"llvm.loop.mustprogress"}
!13 = !{!14, !14, i64 0}
!14 = !{!"float", !7, i64 0}
!15 = !{!16, !6, i64 24}
!16 = !{!"_ZTS4Test", !6, i64 8, !6, i64 16, !6, i64 24, !6, i64 32, !6, i64 40, !17, i64 48, !18, i64 56}
!17 = !{!"bool", !7, i64 0}
!18 = !{!"_ZTSSt13unordered_mapIN3JPH6BodyIDENSt7__cxx1112basic_stringIcSt11char_traitsIcENS0_12STLAllocatorIcEEEESt4hashIS1_ESt8equal_toIS1_ESaISt4pairIKS1_S8_EEE", !19, i64 0}
!19 = !{!"_ZTSSt10_HashtableIN3JPH6BodyIDESt4pairIKS1_NSt7__cxx1112basic_stringIcSt11char_traitsIcENS0_12STLAllocatorIcEEEEESaISB_ENSt8__detail10_Select1stESt8equal_toIS1_ESt4hashIS1_ENSD_18_Mod_range_hashingENSD_20_Default_ranged_hashENSD_20_Prime_rehash_policyENSD_17_Hashtable_traitsILb1ELb0ELb1EEEE", !6, i64 0, !20, i64 8, !21, i64 16, !20, i64 24, !22, i64 32, !6, i64 48}
!20 = !{!"long", !7, i64 0}
!21 = !{!"_ZTSNSt8__detail15_Hash_node_baseE", !6, i64 0}
!22 = !{!"_ZTSNSt8__detail20_Prime_rehash_policyE", !14, i64 0, !20, i64 8}
!23 = !{i64 0, i64 16, !24}
!24 = !{!7, !7, i64 0}
!25 = !{!26, !17, i64 44}
!26 = !{!"_ZTSN3JPH24SliderConstraintSettingsE", !27, i64 0, !33, i64 40, !17, i64 44, !34, i64 48, !34, i64 64, !34, i64 80, !34, i64 96, !34, i64 112, !34, i64 128, !14, i64 144, !14, i64 148, !35, i64 152, !14, i64 164, !37, i64 168}
!27 = !{!"_ZTSN3JPH25TwoBodyConstraintSettingsE", !28, i64 0}
!28 = !{!"_ZTSN3JPH18ConstraintSettingsE", !29, i64 0, !30, i64 8, !17, i64 12, !10, i64 16, !10, i64 20, !10, i64 24, !14, i64 28, !20, i64 32}
!29 = !{!"_ZTSN3JPH18SerializableObjectE"}
!30 = !{!"_ZTSN3JPH9RefTargetINS_18ConstraintSettingsEEE", !31, i64 0}
!31 = !{!"_ZTSSt6atomicIjE", !32, i64 0}
!32 = !{!"_ZTSSt13__atomic_baseIjE", !10, i64 0}
!33 = !{!"_ZTSN3JPH16EConstraintSpaceE", !7, i64 0}
!34 = !{!"_ZTSN3JPH4Vec3E", !7, i64 0}
!35 = !{!"_ZTSN3JPH14SpringSettingsE", !36, i64 0, !7, i64 4, !14, i64 8}
!36 = !{!"_ZTSN3JPH11ESpringModeE", !7, i64 0}
!37 = !{!"_ZTSN3JPH13MotorSettingsE", !35, i64 0, !14, i64 12, !14, i64 16, !14, i64 20, !14, i64 24}
!38 = !{!26, !14, i64 144}
!39 = !{!26, !14, i64 148}
!40 = !{!16, !6, i64 16}
!41 = distinct !{!41, !12}
!42 = distinct !{!42, !12}
!43 = !{!26, !14, i64 160}


; 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.std::linear_congruential_engine" = type { i64 }
%"class.std::uniform_real_distribution" = type { %"struct.std::uniform_real_distribution<float>::param_type" }
%"struct.std::uniform_real_distribution<float>::param_type" = type { float, float }
%"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 @_ZN20SliderConstraintTest10InitializeEv(ptr noundef nonnull align 8 dereferenceable(112) %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.std::linear_congruential_engine", align 8
  %8 = alloca %"class.std::uniform_real_distribution", align 4
  %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::Quat", align 16
  %14 = alloca %"class.JPH::BodyCreationSettings", align 16
  %15 = alloca %"class.JPH::CollisionGroup", align 8
  %16 = alloca %"class.JPH::SliderConstraintSettings", align 16
  %17 = alloca %"class.JPH::BodyCreationSettings", align 16
  %18 = alloca %"class.JPH::Vec3", align 16
  %19 = alloca %"class.JPH::CollisionGroup", align 8
  %20 = alloca %"class.JPH::BodyCreationSettings", align 16
  %21 = alloca %"class.JPH::Vec3", align 16
  %22 = alloca %"class.JPH::CollisionGroup", align 8
  %23 = alloca %"class.JPH::BodyCreationSettings", align 16
  %24 = alloca %"class.JPH::Vec3", align 16
  %25 = alloca %"class.JPH::CollisionGroup", align 8
  %26 = alloca %"class.JPH::SliderConstraintSettings", align 16
  %27 = alloca %"class.JPH::SliderConstraintSettings", align 16
  %28 = alloca %"class.JPH::BodyCreationSettings", align 16
  %29 = alloca %"class.JPH::Vec3", align 16
  %30 = alloca %"class.JPH::CollisionGroup", align 8
  %31 = alloca %"class.JPH::BodyCreationSettings", align 16
  %32 = alloca %"class.JPH::Vec3", align 16
  %33 = alloca %"class.JPH::CollisionGroup", align 8
  %34 = alloca %"class.JPH::SliderConstraintSettings", align 16
  %35 = alloca %"class.JPH::BodyCreationSettings", align 16
  %36 = alloca %"class.JPH::Vec3", align 16
  %37 = alloca %"class.JPH::CollisionGroup", align 8
  %38 = alloca %"class.JPH::BodyCreationSettings", align 16
  %39 = alloca %"class.JPH::Vec3", align 16
  %40 = alloca %"class.JPH::CollisionGroup", align 8
  %41 = alloca %"class.JPH::SliderConstraintSettings", align 16
  %42 = 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) #8
  %43 = tail call noundef ptr @_ZN3JPH16GroupFilterTablenwEm(i64 noundef 40)
  invoke void @_ZN3JPH16GroupFilterTableC2Ej(ptr noundef nonnull align 8 dereferenceable(40) %43, i32 noundef 10)
          to label %44 unwind label %48

44:                                               ; preds = %1
  call void @_ZN3JPH3RefINS_16GroupFilterTableEEC2EPS1_(ptr noundef nonnull align 8 dereferenceable(8) %2, ptr noundef nonnull %43)
  br label %45

45:                                               ; preds = %50, %44
  %.0165 = phi i32 [ 0, %44 ], [ %52, %50 ]
  %exitcond.not = icmp eq i32 %.0165, 9
  br i1 %exitcond.not, label %46, label %50

46:                                               ; preds = %45
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %3) #8
  %47 = invoke noundef ptr @_ZN3JPH8BoxShapenwEm(i64 noundef 80)
          to label %55 unwind label %73

48:                                               ; preds = %1
  %49 = landingpad { ptr, i32 }
          cleanup
  tail call void @_ZN3JPH16GroupFilterTabledlEPv(ptr noundef %43) #8
  br label %578

50:                                               ; preds = %45
  %51 = call noundef ptr @_ZNK3JPH3RefINS_16GroupFilterTableEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %2)
  %52 = add nuw nsw i32 %.0165, 1
  invoke void @_ZN3JPH16GroupFilterTable16DisableCollisionEjj(ptr noundef nonnull align 8 dereferenceable(40) %51, i32 noundef %.0165, i32 noundef %52)
          to label %45 unwind label %53, !llvm.loop !5

53:                                               ; preds = %50
  %54 = landingpad { ptr, i32 }
          cleanup
  br label %577

55:                                               ; preds = %46
  %56 = invoke { double, double } @_ZN3JPH4Vec310sReplicateEf(float noundef 2.000000e+00)
          to label %57 unwind label %75

57:                                               ; preds = %55
  %58 = extractvalue { double, double } %56, 0
  %59 = extractvalue { double, double } %56, 1
  invoke void @_ZN3JPH8BoxShapeC2ENS_4Vec3EfPKNS_15PhysicsMaterialE(ptr noundef nonnull align 16 dereferenceable(80) %47, double %58, double %59, float noundef 0x3FA99999A0000000, ptr noundef null)
          to label %60 unwind label %75

60:                                               ; preds = %57
  invoke void @_ZN3JPH8RefConstINS_5ShapeEEC2EPKS1_(ptr noundef nonnull align 8 dereferenceable(8) %3, ptr noundef nonnull %47)
          to label %.preheader239 unwind label %73

.preheader239:                                    ; preds = %60
  %61 = getelementptr inbounds i8, ptr %0, i64 24
  %.sroa.290.0..sroa_idx = getelementptr inbounds i8, ptr %4, i64 8
  %62 = getelementptr inbounds i8, ptr %11, i64 8
  %63 = getelementptr inbounds i8, ptr %12, i64 8
  %64 = getelementptr inbounds i8, ptr %13, i64 8
  %65 = getelementptr inbounds i8, ptr %9, i64 8
  %66 = getelementptr inbounds i8, ptr %10, i64 8
  %67 = getelementptr inbounds i8, ptr %16, i64 44
  %68 = getelementptr inbounds i8, ptr %16, i64 144
  %69 = getelementptr inbounds i8, ptr %0, i64 16
  br label %77

70:                                               ; preds = %99
  %71 = load ptr, ptr %61, align 8, !tbaa !7
  call void @llvm.lifetime.start.p0(i64 256, ptr nonnull %17) #8
  %72 = invoke noundef ptr @_ZN3JPH8BoxShapenwEm(i64 noundef 80)
          to label %234 unwind label %456

73:                                               ; preds = %60, %46
  %74 = landingpad { ptr, i32 }
          cleanup
  br label %576

75:                                               ; preds = %57, %55
  %76 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3JPH8BoxShapedlEPv(ptr noundef %47) #8
  br label %576

77:                                               ; preds = %.preheader239, %99
  %78 = phi i1 [ true, %.preheader239 ], [ false, %99 ]
  %.0166264 = phi i32 [ 0, %.preheader239 ], [ 1, %99 ]
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %4) #8
  %79 = sub nsw i32 0, %.0166264
  %80 = sitofp i32 %79 to float
  %81 = fmul float %80, 2.000000e+01
  invoke void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %4, float noundef 0.000000e+00, float noundef 2.500000e+01, float noundef %81)
          to label %82 unwind label %100

82:                                               ; preds = %77
  %83 = load ptr, ptr %61, align 8, !tbaa !7
  call void @llvm.lifetime.start.p0(i64 256, ptr nonnull %5) #8
  %84 = call noundef ptr @_ZNK3JPH8RefConstINS_5ShapeEEcvPKS1_Ev(ptr noundef nonnull align 8 dereferenceable(8) %3)
  %.sroa.089.0.copyload = load double, ptr %4, align 16
  %.sroa.290.0.copyload = load double, ptr %.sroa.290.0..sroa_idx, align 8, !tbaa !19
  %85 = invoke { double, double } @_ZN3JPH4Quat9sIdentityEv()
          to label %86 unwind label %102

86:                                               ; preds = %82
  %87 = extractvalue { double, double } %85, 0
  %88 = extractvalue { double, double } %85, 1
  invoke void @_ZN3JPH20BodyCreationSettingsC2EPKNS_5ShapeENS_4Vec3ENS_4QuatENS_11EMotionTypeEt(ptr noundef nonnull align 16 dereferenceable(256) %5, ptr noundef %84, double %.sroa.089.0.copyload, double %.sroa.290.0.copyload, double %87, double %88, i8 noundef zeroext 0, i16 noundef zeroext 0)
          to label %89 unwind label %102

89:                                               ; preds = %86
  %90 = invoke noundef ptr @_ZN3JPH13BodyInterface10CreateBodyERKNS_20BodyCreationSettingsE(ptr noundef nonnull align 8 dereferenceable(24) %83, ptr noundef nonnull align 16 dereferenceable(256) %5)
          to label %91 unwind label %104

91:                                               ; preds = %89
  call void @_ZN3JPH20BodyCreationSettingsD2Ev(ptr noundef nonnull align 16 dereferenceable(256) %5) #8
  call void @llvm.lifetime.end.p0(i64 256, ptr nonnull %5) #8
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %6) #8
  %92 = 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 %92, i32 noundef %.0166264, i32 noundef 0)
          to label %93 unwind label %107

93:                                               ; preds = %91
  invoke void @_ZN3JPH4Body17SetCollisionGroupERKNS_14CollisionGroupE(ptr noundef nonnull align 16 dereferenceable(122) %90, ptr noundef nonnull align 8 dereferenceable(16) %6)
          to label %94 unwind label %109

94:                                               ; preds = %93
  call void @_ZN3JPH14CollisionGroupD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %6) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %6) #8
  %95 = load ptr, ptr %61, align 8, !tbaa !7
  %96 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK3JPH4Body5GetIDEv(ptr noundef nonnull align 16 dereferenceable(122) %90)
  invoke void @_ZN3JPH13BodyInterface7AddBodyERKNS_6BodyIDENS_11EActivationE(ptr noundef nonnull align 8 dereferenceable(24) %95, ptr noundef nonnull align 4 dereferenceable(4) %96, i32 noundef 1)
          to label %97 unwind label %112

97:                                               ; preds = %94
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %7) #8
  invoke void @_ZNSt26linear_congruential_engineImLm16807ELm0ELm2147483647EEC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %7)
          to label %98 unwind label %114

98:                                               ; preds = %97
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %8) #8
  invoke void @_ZNSt25uniform_real_distributionIfEC2Eff(ptr noundef nonnull align 4 dereferenceable(8) %8, float noundef -1.000000e+00, float noundef 1.000000e+00)
          to label %.preheader unwind label %116

99:                                               ; preds = %212
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %8) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %7) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %4) #8
  br i1 %78, label %77, label %70, !llvm.loop !20

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

102:                                              ; preds = %86, %82
  %103 = landingpad { ptr, i32 }
          cleanup
  br label %106

104:                                              ; preds = %89
  %105 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3JPH20BodyCreationSettingsD2Ev(ptr noundef nonnull align 16 dereferenceable(256) %5) #8
  br label %106

106:                                              ; preds = %104, %102
  %.pn212 = phi { ptr, i32 } [ %105, %104 ], [ %103, %102 ]
  call void @llvm.lifetime.end.p0(i64 256, ptr nonnull %5) #8
  br label %233

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

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

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

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

114:                                              ; preds = %97
  %115 = landingpad { ptr, i32 }
          cleanup
  br label %232

116:                                              ; preds = %98
  %117 = landingpad { ptr, i32 }
          cleanup
  br label %231

.preheader:                                       ; preds = %98, %212
  %.0168262 = phi ptr [ %199, %212 ], [ %90, %98 ]
  %.0169261 = phi i32 [ %213, %212 ], [ 1, %98 ]
  br i1 %78, label %118, label %144

118:                                              ; preds = %.preheader
  invoke void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %9, float noundef 4.000000e+00, float noundef 0.000000e+00, float noundef 0.000000e+00)
          to label %119 unwind label %138

119:                                              ; preds = %118
  %120 = load double, ptr %9, align 16
  %121 = load double, ptr %65, align 8
  %122 = invoke noundef nonnull align 16 dereferenceable(16) ptr @_ZN3JPH4Vec3pLES0_(ptr noundef nonnull align 16 dereferenceable(16) %4, double %120, double %121)
          to label %123 unwind label %138

123:                                              ; preds = %119
  %124 = invoke { double, double } @_ZN3JPH4Quat9sIdentityEv()
          to label %125 unwind label %140

125:                                              ; preds = %123
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %10) #8
  %126 = invoke { double, double } @_ZN3JPH4Vec36sAxisZEv()
          to label %127 unwind label %142

127:                                              ; preds = %125
  %128 = extractvalue { double, double } %126, 0
  %129 = extractvalue { double, double } %126, 1
  %130 = call noundef float @_ZN3JPH16DegreesToRadiansEf(float noundef 1.000000e+01)
  %131 = fneg float %130
  %132 = invoke { double, double } @_ZN3JPH4Quat9sRotationENS_4Vec3Ef(double %128, double %129, float noundef %131)
          to label %133 unwind label %142

133:                                              ; preds = %127
  %134 = extractvalue { double, double } %132, 0
  store double %134, ptr %10, align 16
  %135 = extractvalue { double, double } %132, 1
  store double %135, ptr %66, align 8
  %136 = invoke { double, double } @_ZNK3JPH4Quat11RotateAxisXEv(ptr noundef nonnull align 16 dereferenceable(16) %10)
          to label %137 unwind label %142

137:                                              ; preds = %133
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %10) #8
  br label %195

138:                                              ; preds = %153, %152, %150, %146, %144, %119, %118
  %139 = landingpad { ptr, i32 }
          cleanup
  br label %231

140:                                              ; preds = %123
  %141 = landingpad { ptr, i32 }
          cleanup
  br label %231

142:                                              ; preds = %133, %127, %125
  %143 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %10) #8
  br label %231

144:                                              ; preds = %.preheader
  %145 = invoke noundef float @_ZNSt25uniform_real_distributionIfEclISt26linear_congruential_engineImLm16807ELm0ELm2147483647EEEEfRT_(ptr noundef nonnull align 4 dereferenceable(8) %8, ptr noundef nonnull align 8 dereferenceable(8) %7)
          to label %146 unwind label %138

146:                                              ; preds = %144
  %147 = call noundef float @_ZSt3absf(float noundef %145)
  %148 = fadd float %147, 4.000000e+00
  %149 = invoke noundef float @_ZNSt25uniform_real_distributionIfEclISt26linear_congruential_engineImLm16807ELm0ELm2147483647EEEEfRT_(ptr noundef nonnull align 4 dereferenceable(8) %8, ptr noundef nonnull align 8 dereferenceable(8) %7)
          to label %150 unwind label %138

150:                                              ; preds = %146
  %151 = invoke noundef float @_ZNSt25uniform_real_distributionIfEclISt26linear_congruential_engineImLm16807ELm0ELm2147483647EEEEfRT_(ptr noundef nonnull align 4 dereferenceable(8) %8, ptr noundef nonnull align 8 dereferenceable(8) %7)
          to label %152 unwind label %138

152:                                              ; preds = %150
  invoke void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %11, float noundef %148, float noundef %149, float noundef %151)
          to label %153 unwind label %138

153:                                              ; preds = %152
  %154 = load double, ptr %11, align 16
  %155 = load double, ptr %62, align 8
  %156 = invoke noundef nonnull align 16 dereferenceable(16) ptr @_ZN3JPH4Vec3pLES0_(ptr noundef nonnull align 16 dereferenceable(16) %4, double %154, double %155)
          to label %157 unwind label %138

157:                                              ; preds = %153
  %158 = invoke { double, double } @_ZN3JPH4Quat7sRandomISt26linear_congruential_engineImLm16807ELm0ELm2147483647EEEES0_RT_(ptr noundef nonnull align 8 dereferenceable(8) %7)
          to label %159 unwind label %188

159:                                              ; preds = %157
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %12) #8
  %160 = invoke { double, double } @_ZN3JPH4Vec36sAxisYEv()
          to label %161 unwind label %190

161:                                              ; preds = %159
  %162 = invoke noundef float @_ZNSt25uniform_real_distributionIfEclISt26linear_congruential_engineImLm16807ELm0ELm2147483647EEEEfRT_(ptr noundef nonnull align 4 dereferenceable(8) %8, ptr noundef nonnull align 8 dereferenceable(8) %7)
          to label %163 unwind label %190

163:                                              ; preds = %161
  %164 = extractvalue { double, double } %160, 1
  %165 = extractvalue { double, double } %160, 0
  %166 = call noundef float @_ZN3JPH16DegreesToRadiansEf(float noundef 2.000000e+01)
  %167 = fmul float %162, %166
  %168 = invoke { double, double } @_ZN3JPH4Quat9sRotationENS_4Vec3Ef(double %165, double %164, float noundef %167)
          to label %169 unwind label %190

169:                                              ; preds = %163
  %170 = extractvalue { double, double } %168, 0
  store double %170, ptr %12, align 16
  %171 = extractvalue { double, double } %168, 1
  store double %171, ptr %63, align 8
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %13) #8
  %172 = invoke { double, double } @_ZN3JPH4Vec36sAxisZEv()
          to label %173 unwind label %192

173:                                              ; preds = %169
  %174 = extractvalue { double, double } %172, 0
  %175 = extractvalue { double, double } %172, 1
  %176 = call noundef float @_ZN3JPH16DegreesToRadiansEf(float noundef 1.000000e+01)
  %177 = fneg float %176
  %178 = invoke { double, double } @_ZN3JPH4Quat9sRotationENS_4Vec3Ef(double %174, double %175, float noundef %177)
          to label %179 unwind label %192

179:                                              ; preds = %173
  %180 = extractvalue { double, double } %178, 0
  store double %180, ptr %13, align 16
  %181 = extractvalue { double, double } %178, 1
  store double %181, ptr %64, align 8
  %182 = invoke { double, double } @_ZNK3JPH4Quat11RotateAxisXEv(ptr noundef nonnull align 16 dereferenceable(16) %13)
          to label %183 unwind label %192

183:                                              ; preds = %179
  %184 = extractvalue { double, double } %182, 0
  %185 = extractvalue { double, double } %182, 1
  %186 = invoke { double, double } @_ZNK3JPH4QuatmlENS_4Vec3E(ptr noundef nonnull align 16 dereferenceable(16) %12, double %184, double %185)
          to label %187 unwind label %192

187:                                              ; preds = %183
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %13) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %12) #8
  br label %195

188:                                              ; preds = %157
  %189 = landingpad { ptr, i32 }
          cleanup
  br label %231

190:                                              ; preds = %163, %161, %159
  %191 = landingpad { ptr, i32 }
          cleanup
  br label %194

192:                                              ; preds = %183, %179, %173, %169
  %193 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %13) #8
  br label %194

194:                                              ; preds = %192, %190
  %.pn216 = phi { ptr, i32 } [ %193, %192 ], [ %191, %190 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %12) #8
  br label %231

195:                                              ; preds = %187, %137
  %.pn218 = phi { double, double } [ %136, %137 ], [ %186, %187 ]
  %.pn220 = phi { double, double } [ %124, %137 ], [ %158, %187 ]
  %.sroa.683.0 = extractvalue { double, double } %.pn220, 1
  %.sroa.082.0 = extractvalue { double, double } %.pn220, 0
  %.sroa.6.0 = extractvalue { double, double } %.pn218, 1
  %.sroa.081.0 = extractvalue { double, double } %.pn218, 0
  %196 = load ptr, ptr %61, align 8, !tbaa !7
  call void @llvm.lifetime.start.p0(i64 256, ptr nonnull %14) #8
  %197 = call noundef ptr @_ZNK3JPH8RefConstINS_5ShapeEEcvPKS1_Ev(ptr noundef nonnull align 8 dereferenceable(8) %3)
  %.sroa.060.0.copyload = load double, ptr %4, align 16
  %.sroa.261.0.copyload = load double, ptr %.sroa.290.0..sroa_idx, align 8, !tbaa !19
  invoke void @_ZN3JPH20BodyCreationSettingsC2EPKNS_5ShapeENS_4Vec3ENS_4QuatENS_11EMotionTypeEt(ptr noundef nonnull align 16 dereferenceable(256) %14, ptr noundef %197, double %.sroa.060.0.copyload, double %.sroa.261.0.copyload, double %.sroa.082.0, double %.sroa.683.0, i8 noundef zeroext 2, i16 noundef zeroext 1)
          to label %198 unwind label %214

198:                                              ; preds = %195
  %199 = invoke noundef ptr @_ZN3JPH13BodyInterface10CreateBodyERKNS_20BodyCreationSettingsE(ptr noundef nonnull align 8 dereferenceable(24) %196, ptr noundef nonnull align 16 dereferenceable(256) %14)
          to label %200 unwind label %216

200:                                              ; preds = %198
  call void @_ZN3JPH20BodyCreationSettingsD2Ev(ptr noundef nonnull align 16 dereferenceable(256) %14) #8
  call void @llvm.lifetime.end.p0(i64 256, ptr nonnull %14) #8
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %15) #8
  %201 = 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) %15, ptr noundef %201, i32 noundef %.0166264, i32 noundef %.0169261)
          to label %202 unwind label %219

202:                                              ; preds = %200
  invoke void @_ZN3JPH4Body17SetCollisionGroupERKNS_14CollisionGroupE(ptr noundef nonnull align 16 dereferenceable(122) %199, ptr noundef nonnull align 8 dereferenceable(16) %15)
          to label %203 unwind label %221

203:                                              ; preds = %202
  call void @_ZN3JPH14CollisionGroupD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %15) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %15) #8
  %204 = load ptr, ptr %61, align 8, !tbaa !7
  %205 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK3JPH4Body5GetIDEv(ptr noundef nonnull align 16 dereferenceable(122) %199)
  invoke void @_ZN3JPH13BodyInterface7AddBodyERKNS_6BodyIDENS_11EActivationE(ptr noundef nonnull align 8 dereferenceable(24) %204, ptr noundef nonnull align 4 dereferenceable(4) %205, i32 noundef 0)
          to label %206 unwind label %224

206:                                              ; preds = %203
  call void @llvm.lifetime.start.p0(i64 208, ptr nonnull %16) #8
  invoke void @_ZN3JPH24SliderConstraintSettingsC2Ev(ptr noundef nonnull align 16 dereferenceable(208) %16)
          to label %207 unwind label %226

207:                                              ; preds = %206
  store i8 1, ptr %67, align 4, !tbaa !21
  invoke void @_ZN3JPH24SliderConstraintSettings13SetSliderAxisENS_4Vec3E(ptr noundef nonnull align 16 dereferenceable(208) %16, double %.sroa.081.0, double %.sroa.6.0)
          to label %208 unwind label %228

208:                                              ; preds = %207
  store <2 x float> <float -5.000000e+00, float 1.000000e+01>, ptr %68, align 16, !tbaa !35
  %209 = load ptr, ptr %69, align 8, !tbaa !36
  %210 = invoke noundef ptr @_ZNK3JPH24SliderConstraintSettings6CreateERNS_4BodyES2_(ptr noundef nonnull align 16 dereferenceable(208) %16, ptr noundef nonnull align 16 dereferenceable(122) %.0168262, ptr noundef nonnull align 16 dereferenceable(122) %199)
          to label %211 unwind label %228

211:                                              ; preds = %208
  invoke void @_ZN3JPH13PhysicsSystem13AddConstraintEPNS_10ConstraintE(ptr noundef nonnull align 16 dereferenceable(1172) %209, ptr noundef %210)
          to label %212 unwind label %228

212:                                              ; preds = %211
  call void @_ZN3JPH18ConstraintSettingsD2Ev(ptr noundef nonnull align 16 dereferenceable(208) %16) #8
  call void @llvm.lifetime.end.p0(i64 208, ptr nonnull %16) #8
  %213 = add nuw nsw i32 %.0169261, 1
  %exitcond286.not = icmp eq i32 %213, 10
  br i1 %exitcond286.not, label %99, label %.preheader, !llvm.loop !37

214:                                              ; preds = %195
  %215 = landingpad { ptr, i32 }
          cleanup
  br label %218

216:                                              ; preds = %198
  %217 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3JPH20BodyCreationSettingsD2Ev(ptr noundef nonnull align 16 dereferenceable(256) %14) #8
  br label %218

218:                                              ; preds = %216, %214
  %.pn222 = phi { ptr, i32 } [ %217, %216 ], [ %215, %214 ]
  call void @llvm.lifetime.end.p0(i64 256, ptr nonnull %14) #8
  br label %231

219:                                              ; preds = %200
  %220 = landingpad { ptr, i32 }
          cleanup
  br label %223

221:                                              ; preds = %202
  %222 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3JPH14CollisionGroupD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %15) #8
  br label %223

223:                                              ; preds = %221, %219
  %.pn224 = phi { ptr, i32 } [ %222, %221 ], [ %220, %219 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %15) #8
  br label %231

224:                                              ; preds = %203
  %225 = landingpad { ptr, i32 }
          cleanup
  br label %231

226:                                              ; preds = %206
  %227 = landingpad { ptr, i32 }
          cleanup
  br label %230

228:                                              ; preds = %211, %208, %207
  %229 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3JPH18ConstraintSettingsD2Ev(ptr noundef nonnull align 16 dereferenceable(208) %16) #8
  br label %230

230:                                              ; preds = %228, %226
  %.pn226 = phi { ptr, i32 } [ %229, %228 ], [ %227, %226 ]
  call void @llvm.lifetime.end.p0(i64 208, ptr nonnull %16) #8
  br label %231

231:                                              ; preds = %138, %140, %142, %188, %194, %230, %224, %223, %218, %116
  %.pn226.pn.pn.pn = phi { ptr, i32 } [ %117, %116 ], [ %143, %142 ], [ %141, %140 ], [ %139, %138 ], [ %.pn216, %194 ], [ %189, %188 ], [ %.pn226, %230 ], [ %225, %224 ], [ %.pn224, %223 ], [ %.pn222, %218 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %8) #8
  br label %232

232:                                              ; preds = %231, %114
  %.pn226.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn226.pn.pn.pn, %231 ], [ %115, %114 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %7) #8
  br label %233

233:                                              ; preds = %106, %111, %112, %232, %100
  %.pn226.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %101, %100 ], [ %.pn226.pn.pn.pn.pn, %232 ], [ %113, %112 ], [ %.pn214, %111 ], [ %.pn212, %106 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %4) #8
  br label %575

234:                                              ; preds = %70
  %235 = invoke { double, double } @_ZN3JPH4Vec310sReplicateEf(float noundef 0x3FB99999A0000000)
          to label %236 unwind label %458

236:                                              ; preds = %234
  %237 = extractvalue { double, double } %235, 0
  %238 = extractvalue { double, double } %235, 1
  invoke void @_ZN3JPH8BoxShapeC2ENS_4Vec3EfPKNS_15PhysicsMaterialE(ptr noundef nonnull align 16 dereferenceable(80) %72, double %237, double %238, float noundef 0x3FA99999A0000000, ptr noundef null)
          to label %239 unwind label %458

239:                                              ; preds = %236
  invoke void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %18, float noundef -5.000000e+00, float noundef 7.000000e+00, float noundef 0xC014CCCCC0000000)
          to label %240 unwind label %456

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

242:                                              ; preds = %240
  %243 = extractvalue { double, double } %241, 0
  %244 = extractvalue { double, double } %241, 1
  %245 = load double, ptr %18, align 16
  %246 = getelementptr inbounds i8, ptr %18, i64 8
  %247 = load double, ptr %246, align 8
  invoke void @_ZN3JPH20BodyCreationSettingsC2EPKNS_5ShapeENS_4Vec3ENS_4QuatENS_11EMotionTypeEt(ptr noundef nonnull align 16 dereferenceable(256) %17, ptr noundef nonnull %72, double %245, double %247, double %243, double %244, i8 noundef zeroext 2, i16 noundef zeroext 1)
          to label %248 unwind label %456

248:                                              ; preds = %242
  %249 = invoke noundef ptr @_ZN3JPH13BodyInterface10CreateBodyERKNS_20BodyCreationSettingsE(ptr noundef nonnull align 8 dereferenceable(24) %71, ptr noundef nonnull align 16 dereferenceable(256) %17)
          to label %250 unwind label %460

250:                                              ; preds = %248
  call void @_ZN3JPH20BodyCreationSettingsD2Ev(ptr noundef nonnull align 16 dereferenceable(256) %17) #8
  call void @llvm.lifetime.end.p0(i64 256, ptr nonnull %17) #8
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %19) #8
  %251 = 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) %19, ptr noundef %251, i32 noundef 2, i32 noundef 0)
          to label %252 unwind label %463

252:                                              ; preds = %250
  invoke void @_ZN3JPH4Body17SetCollisionGroupERKNS_14CollisionGroupE(ptr noundef nonnull align 16 dereferenceable(122) %249, ptr noundef nonnull align 8 dereferenceable(16) %19)
          to label %253 unwind label %465

253:                                              ; preds = %252
  call void @_ZN3JPH14CollisionGroupD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %19) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %19) #8
  %254 = load ptr, ptr %61, align 8, !tbaa !7
  %255 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK3JPH4Body5GetIDEv(ptr noundef nonnull align 16 dereferenceable(122) %249)
  invoke void @_ZN3JPH13BodyInterface7AddBodyERKNS_6BodyIDENS_11EActivationE(ptr noundef nonnull align 8 dereferenceable(24) %254, ptr noundef nonnull align 4 dereferenceable(4) %255, i32 noundef 0)
          to label %256 unwind label %468

256:                                              ; preds = %253
  %257 = load ptr, ptr %61, align 8, !tbaa !7
  call void @llvm.lifetime.start.p0(i64 256, ptr nonnull %20) #8
  %258 = invoke noundef ptr @_ZN3JPH8BoxShapenwEm(i64 noundef 80)
          to label %259 unwind label %470

259:                                              ; preds = %256
  %260 = invoke { double, double } @_ZN3JPH4Vec310sReplicateEf(float noundef 5.000000e+00)
          to label %261 unwind label %472

261:                                              ; preds = %259
  %262 = extractvalue { double, double } %260, 0
  %263 = extractvalue { double, double } %260, 1
  invoke void @_ZN3JPH8BoxShapeC2ENS_4Vec3EfPKNS_15PhysicsMaterialE(ptr noundef nonnull align 16 dereferenceable(80) %258, double %262, double %263, float noundef 0x3FA99999A0000000, ptr noundef null)
          to label %264 unwind label %472

264:                                              ; preds = %261
  invoke void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %21, float noundef -5.000000e+00, float noundef 7.000000e+00, float noundef 0.000000e+00)
          to label %265 unwind label %470

265:                                              ; preds = %264
  %266 = invoke { double, double } @_ZN3JPH4Quat9sIdentityEv()
          to label %267 unwind label %470

267:                                              ; preds = %265
  %268 = extractvalue { double, double } %266, 0
  %269 = extractvalue { double, double } %266, 1
  %270 = load double, ptr %21, align 16
  %271 = getelementptr inbounds i8, ptr %21, i64 8
  %272 = load double, ptr %271, align 8
  invoke void @_ZN3JPH20BodyCreationSettingsC2EPKNS_5ShapeENS_4Vec3ENS_4QuatENS_11EMotionTypeEt(ptr noundef nonnull align 16 dereferenceable(256) %20, ptr noundef nonnull %258, double %270, double %272, double %268, double %269, i8 noundef zeroext 2, i16 noundef zeroext 1)
          to label %273 unwind label %470

273:                                              ; preds = %267
  %274 = invoke noundef ptr @_ZN3JPH13BodyInterface10CreateBodyERKNS_20BodyCreationSettingsE(ptr noundef nonnull align 8 dereferenceable(24) %257, ptr noundef nonnull align 16 dereferenceable(256) %20)
          to label %275 unwind label %474

275:                                              ; preds = %273
  call void @_ZN3JPH20BodyCreationSettingsD2Ev(ptr noundef nonnull align 16 dereferenceable(256) %20) #8
  call void @llvm.lifetime.end.p0(i64 256, ptr nonnull %20) #8
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %22) #8
  %276 = 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) %22, ptr noundef %276, i32 noundef 2, i32 noundef 1)
          to label %277 unwind label %477

277:                                              ; preds = %275
  invoke void @_ZN3JPH4Body17SetCollisionGroupERKNS_14CollisionGroupE(ptr noundef nonnull align 16 dereferenceable(122) %274, ptr noundef nonnull align 8 dereferenceable(16) %22)
          to label %278 unwind label %479

278:                                              ; preds = %277
  call void @_ZN3JPH14CollisionGroupD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %22) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %22) #8
  %279 = load ptr, ptr %61, align 8, !tbaa !7
  %280 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK3JPH4Body5GetIDEv(ptr noundef nonnull align 16 dereferenceable(122) %274)
  invoke void @_ZN3JPH13BodyInterface7AddBodyERKNS_6BodyIDENS_11EActivationE(ptr noundef nonnull align 8 dereferenceable(24) %279, ptr noundef nonnull align 4 dereferenceable(4) %280, i32 noundef 0)
          to label %281 unwind label %482

281:                                              ; preds = %278
  %282 = load ptr, ptr %61, align 8, !tbaa !7
  call void @llvm.lifetime.start.p0(i64 256, ptr nonnull %23) #8
  %283 = invoke noundef ptr @_ZN3JPH8BoxShapenwEm(i64 noundef 80)
          to label %284 unwind label %484

284:                                              ; preds = %281
  %285 = invoke { double, double } @_ZN3JPH4Vec310sReplicateEf(float noundef 0x3FB99999A0000000)
          to label %286 unwind label %486

286:                                              ; preds = %284
  %287 = extractvalue { double, double } %285, 0
  %288 = extractvalue { double, double } %285, 1
  invoke void @_ZN3JPH8BoxShapeC2ENS_4Vec3EfPKNS_15PhysicsMaterialE(ptr noundef nonnull align 16 dereferenceable(80) %283, double %287, double %288, float noundef 0x3FA99999A0000000, ptr noundef null)
          to label %289 unwind label %486

289:                                              ; preds = %286
  invoke void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %24, float noundef -5.000000e+00, float noundef 7.000000e+00, float noundef 0x4014CCCCC0000000)
          to label %290 unwind label %484

290:                                              ; preds = %289
  %291 = invoke { double, double } @_ZN3JPH4Quat9sIdentityEv()
          to label %292 unwind label %484

292:                                              ; preds = %290
  %293 = extractvalue { double, double } %291, 0
  %294 = extractvalue { double, double } %291, 1
  %295 = load double, ptr %24, align 16
  %296 = getelementptr inbounds i8, ptr %24, i64 8
  %297 = load double, ptr %296, align 8
  invoke void @_ZN3JPH20BodyCreationSettingsC2EPKNS_5ShapeENS_4Vec3ENS_4QuatENS_11EMotionTypeEt(ptr noundef nonnull align 16 dereferenceable(256) %23, ptr noundef nonnull %283, double %295, double %297, double %293, double %294, i8 noundef zeroext 2, i16 noundef zeroext 1)
          to label %298 unwind label %484

298:                                              ; preds = %292
  %299 = invoke noundef ptr @_ZN3JPH13BodyInterface10CreateBodyERKNS_20BodyCreationSettingsE(ptr noundef nonnull align 8 dereferenceable(24) %282, ptr noundef nonnull align 16 dereferenceable(256) %23)
          to label %300 unwind label %488

300:                                              ; preds = %298
  call void @_ZN3JPH20BodyCreationSettingsD2Ev(ptr noundef nonnull align 16 dereferenceable(256) %23) #8
  call void @llvm.lifetime.end.p0(i64 256, ptr nonnull %23) #8
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %25) #8
  %301 = 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) %25, ptr noundef %301, i32 noundef 2, i32 noundef 2)
          to label %302 unwind label %491

302:                                              ; preds = %300
  invoke void @_ZN3JPH4Body17SetCollisionGroupERKNS_14CollisionGroupE(ptr noundef nonnull align 16 dereferenceable(122) %299, ptr noundef nonnull align 8 dereferenceable(16) %25)
          to label %303 unwind label %493

303:                                              ; preds = %302
  call void @_ZN3JPH14CollisionGroupD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %25) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %25) #8
  %304 = load ptr, ptr %61, align 8, !tbaa !7
  %305 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK3JPH4Body5GetIDEv(ptr noundef nonnull align 16 dereferenceable(122) %299)
  invoke void @_ZN3JPH13BodyInterface7AddBodyERKNS_6BodyIDENS_11EActivationE(ptr noundef nonnull align 8 dereferenceable(24) %304, ptr noundef nonnull align 4 dereferenceable(4) %305, i32 noundef 0)
          to label %306 unwind label %496

306:                                              ; preds = %303
  call void @llvm.lifetime.start.p0(i64 208, ptr nonnull %26) #8
  invoke void @_ZN3JPH24SliderConstraintSettingsC2Ev(ptr noundef nonnull align 16 dereferenceable(208) %26)
          to label %307 unwind label %498

307:                                              ; preds = %306
  %308 = getelementptr inbounds i8, ptr %26, i64 44
  store i8 1, ptr %308, align 4, !tbaa !21
  %309 = invoke { double, double } @_ZN3JPH4Vec36sAxisZEv()
          to label %310 unwind label %500

310:                                              ; preds = %307
  %311 = extractvalue { double, double } %309, 0
  %312 = extractvalue { double, double } %309, 1
  invoke void @_ZN3JPH24SliderConstraintSettings13SetSliderAxisENS_4Vec3E(ptr noundef nonnull align 16 dereferenceable(208) %26, double %311, double %312)
          to label %313 unwind label %500

313:                                              ; preds = %310
  %314 = getelementptr inbounds i8, ptr %26, i64 144
  store <2 x float> <float 0.000000e+00, float 1.000000e+00>, ptr %314, align 16, !tbaa !35
  %315 = load ptr, ptr %69, align 8, !tbaa !36
  %316 = invoke noundef ptr @_ZNK3JPH24SliderConstraintSettings6CreateERNS_4BodyES2_(ptr noundef nonnull align 16 dereferenceable(208) %26, ptr noundef nonnull align 16 dereferenceable(122) %249, ptr noundef nonnull align 16 dereferenceable(122) %274)
          to label %317 unwind label %500

317:                                              ; preds = %313
  invoke void @_ZN3JPH13PhysicsSystem13AddConstraintEPNS_10ConstraintE(ptr noundef nonnull align 16 dereferenceable(1172) %315, ptr noundef %316)
          to label %318 unwind label %500

318:                                              ; preds = %317
  call void @llvm.lifetime.start.p0(i64 208, ptr nonnull %27) #8
  invoke void @_ZN3JPH24SliderConstraintSettingsC2Ev(ptr noundef nonnull align 16 dereferenceable(208) %27)
          to label %319 unwind label %502

319:                                              ; preds = %318
  %320 = getelementptr inbounds i8, ptr %27, i64 44
  store i8 1, ptr %320, align 4, !tbaa !21
  %321 = invoke { double, double } @_ZN3JPH4Vec36sAxisZEv()
          to label %322 unwind label %504

322:                                              ; preds = %319
  %323 = extractvalue { double, double } %321, 0
  %324 = extractvalue { double, double } %321, 1
  invoke void @_ZN3JPH24SliderConstraintSettings13SetSliderAxisENS_4Vec3E(ptr noundef nonnull align 16 dereferenceable(208) %27, double %323, double %324)
          to label %325 unwind label %504

325:                                              ; preds = %322
  %326 = getelementptr inbounds i8, ptr %27, i64 144
  store <2 x float> <float 0.000000e+00, float 1.000000e+00>, ptr %326, align 16, !tbaa !35
  %327 = load ptr, ptr %69, align 8, !tbaa !36
  %328 = invoke noundef ptr @_ZNK3JPH24SliderConstraintSettings6CreateERNS_4BodyES2_(ptr noundef nonnull align 16 dereferenceable(208) %27, ptr noundef nonnull align 16 dereferenceable(122) %274, ptr noundef nonnull align 16 dereferenceable(122) %299)
          to label %329 unwind label %504

329:                                              ; preds = %325
  invoke void @_ZN3JPH13PhysicsSystem13AddConstraintEPNS_10ConstraintE(ptr noundef nonnull align 16 dereferenceable(1172) %327, ptr noundef %328)
          to label %330 unwind label %504

330:                                              ; preds = %329
  call void @_ZN3JPH18ConstraintSettingsD2Ev(ptr noundef nonnull align 16 dereferenceable(208) %27) #8
  call void @llvm.lifetime.end.p0(i64 208, ptr nonnull %27) #8
  call void @_ZN3JPH18ConstraintSettingsD2Ev(ptr noundef nonnull align 16 dereferenceable(208) %26) #8
  call void @llvm.lifetime.end.p0(i64 208, ptr nonnull %26) #8
  %331 = load ptr, ptr %61, align 8, !tbaa !7
  call void @llvm.lifetime.start.p0(i64 256, ptr nonnull %28) #8
  %332 = invoke noundef ptr @_ZN3JPH8BoxShapenwEm(i64 noundef 80)
          to label %333 unwind label %509

333:                                              ; preds = %330
  %334 = invoke { double, double } @_ZN3JPH4Vec34sOneEv()
          to label %335 unwind label %511

335:                                              ; preds = %333
  %336 = extractvalue { double, double } %334, 0
  %337 = extractvalue { double, double } %334, 1
  invoke void @_ZN3JPH8BoxShapeC2ENS_4Vec3EfPKNS_15PhysicsMaterialE(ptr noundef nonnull align 16 dereferenceable(80) %332, double %336, double %337, float noundef 0x3FA99999A0000000, ptr noundef null)
          to label %338 unwind label %511

338:                                              ; preds = %335
  invoke void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %29, float noundef 5.000000e+00, float noundef 9.000000e+00, float noundef 0.000000e+00)
          to label %339 unwind label %509

339:                                              ; preds = %338
  %340 = invoke { double, double } @_ZN3JPH4Quat9sIdentityEv()
          to label %341 unwind label %509

341:                                              ; preds = %339
  %342 = extractvalue { double, double } %340, 0
  %343 = extractvalue { double, double } %340, 1
  %344 = load double, ptr %29, align 16
  %345 = getelementptr inbounds i8, ptr %29, i64 8
  %346 = load double, ptr %345, align 8
  invoke void @_ZN3JPH20BodyCreationSettingsC2EPKNS_5ShapeENS_4Vec3ENS_4QuatENS_11EMotionTypeEt(ptr noundef nonnull align 16 dereferenceable(256) %28, ptr noundef nonnull %332, double %344, double %346, double %342, double %343, i8 noundef zeroext 2, i16 noundef zeroext 1)
          to label %347 unwind label %509

347:                                              ; preds = %341
  %348 = invoke noundef ptr @_ZN3JPH13BodyInterface10CreateBodyERKNS_20BodyCreationSettingsE(ptr noundef nonnull align 8 dereferenceable(24) %331, ptr noundef nonnull align 16 dereferenceable(256) %28)
          to label %349 unwind label %513

349:                                              ; preds = %347
  call void @_ZN3JPH20BodyCreationSettingsD2Ev(ptr noundef nonnull align 16 dereferenceable(256) %28) #8
  call void @llvm.lifetime.end.p0(i64 256, ptr nonnull %28) #8
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %30) #8
  %350 = 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) %30, ptr noundef %350, i32 noundef 3, i32 noundef 0)
          to label %351 unwind label %516

351:                                              ; preds = %349
  invoke void @_ZN3JPH4Body17SetCollisionGroupERKNS_14CollisionGroupE(ptr noundef nonnull align 16 dereferenceable(122) %348, ptr noundef nonnull align 8 dereferenceable(16) %30)
          to label %352 unwind label %518

352:                                              ; preds = %351
  call void @_ZN3JPH14CollisionGroupD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %30) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %30) #8
  %353 = load ptr, ptr %61, align 8, !tbaa !7
  %354 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK3JPH4Body5GetIDEv(ptr noundef nonnull align 16 dereferenceable(122) %348)
  invoke void @_ZN3JPH13BodyInterface7AddBodyERKNS_6BodyIDENS_11EActivationE(ptr noundef nonnull align 8 dereferenceable(24) %353, ptr noundef nonnull align 4 dereferenceable(4) %354, i32 noundef 0)
          to label %355 unwind label %521

355:                                              ; preds = %352
  %356 = load ptr, ptr %61, align 8, !tbaa !7
  call void @llvm.lifetime.start.p0(i64 256, ptr nonnull %31) #8
  %357 = invoke noundef ptr @_ZN3JPH8BoxShapenwEm(i64 noundef 80)
          to label %358 unwind label %523

358:                                              ; preds = %355
  %359 = invoke { double, double } @_ZN3JPH4Vec34sOneEv()
          to label %360 unwind label %525

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

363:                                              ; preds = %360
  invoke void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %32, float noundef 5.000000e+00, float noundef 3.000000e+00, float noundef 0.000000e+00)
          to label %364 unwind label %523

364:                                              ; preds = %363
  %365 = invoke { double, double } @_ZN3JPH4Quat9sIdentityEv()
          to label %366 unwind label %523

366:                                              ; preds = %364
  %367 = extractvalue { double, double } %365, 0
  %368 = extractvalue { double, double } %365, 1
  %369 = load double, ptr %32, align 16
  %370 = getelementptr inbounds i8, ptr %32, i64 8
  %371 = load double, ptr %370, align 8
  invoke void @_ZN3JPH20BodyCreationSettingsC2EPKNS_5ShapeENS_4Vec3ENS_4QuatENS_11EMotionTypeEt(ptr noundef nonnull align 16 dereferenceable(256) %31, ptr noundef nonnull %357, double %369, double %371, double %367, double %368, i8 noundef zeroext 2, i16 noundef zeroext 1)
          to label %372 unwind label %523

372:                                              ; preds = %366
  %373 = invoke noundef ptr @_ZN3JPH13BodyInterface10CreateBodyERKNS_20BodyCreationSettingsE(ptr noundef nonnull align 8 dereferenceable(24) %356, ptr noundef nonnull align 16 dereferenceable(256) %31)
          to label %374 unwind label %527

374:                                              ; preds = %372
  call void @_ZN3JPH20BodyCreationSettingsD2Ev(ptr noundef nonnull align 16 dereferenceable(256) %31) #8
  call void @llvm.lifetime.end.p0(i64 256, ptr nonnull %31) #8
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %33) #8
  %375 = 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) %33, ptr noundef %375, i32 noundef 3, i32 noundef 1)
          to label %376 unwind label %530

376:                                              ; preds = %374
  invoke void @_ZN3JPH4Body17SetCollisionGroupERKNS_14CollisionGroupE(ptr noundef nonnull align 16 dereferenceable(122) %373, ptr noundef nonnull align 8 dereferenceable(16) %33)
          to label %377 unwind label %532

377:                                              ; preds = %376
  call void @_ZN3JPH14CollisionGroupD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %33) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %33) #8
  %378 = load ptr, ptr %61, align 8, !tbaa !7
  %379 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK3JPH4Body5GetIDEv(ptr noundef nonnull align 16 dereferenceable(122) %373)
  invoke void @_ZN3JPH13BodyInterface7AddBodyERKNS_6BodyIDENS_11EActivationE(ptr noundef nonnull align 8 dereferenceable(24) %378, ptr noundef nonnull align 4 dereferenceable(4) %379, i32 noundef 0)
          to label %380 unwind label %535

380:                                              ; preds = %377
  call void @llvm.lifetime.start.p0(i64 208, ptr nonnull %34) #8
  invoke void @_ZN3JPH24SliderConstraintSettingsC2Ev(ptr noundef nonnull align 16 dereferenceable(208) %34)
          to label %381 unwind label %537

381:                                              ; preds = %380
  %382 = getelementptr inbounds i8, ptr %34, i64 44
  store i8 1, ptr %382, align 4, !tbaa !21
  %383 = invoke { double, double } @_ZN3JPH4Vec36sAxisYEv()
          to label %384 unwind label %539

384:                                              ; preds = %381
  %385 = extractvalue { double, double } %383, 0
  %386 = extractvalue { double, double } %383, 1
  invoke void @_ZN3JPH24SliderConstraintSettings13SetSliderAxisENS_4Vec3E(ptr noundef nonnull align 16 dereferenceable(208) %34, double %385, double %386)
          to label %387 unwind label %539

387:                                              ; preds = %384
  %388 = getelementptr inbounds i8, ptr %34, i64 144
  store <2 x float> <float 0.000000e+00, float 2.000000e+00>, ptr %388, align 16, !tbaa !35
  %389 = load ptr, ptr %69, align 8, !tbaa !36
  %390 = invoke noundef ptr @_ZNK3JPH24SliderConstraintSettings6CreateERNS_4BodyES2_(ptr noundef nonnull align 16 dereferenceable(208) %34, ptr noundef nonnull align 16 dereferenceable(122) %348, ptr noundef nonnull align 16 dereferenceable(122) %373)
          to label %391 unwind label %539

391:                                              ; preds = %387
  invoke void @_ZN3JPH13PhysicsSystem13AddConstraintEPNS_10ConstraintE(ptr noundef nonnull align 16 dereferenceable(1172) %389, ptr noundef %390)
          to label %392 unwind label %539

392:                                              ; preds = %391
  call void @_ZN3JPH18ConstraintSettingsD2Ev(ptr noundef nonnull align 16 dereferenceable(208) %34) #8
  call void @llvm.lifetime.end.p0(i64 208, ptr nonnull %34) #8
  %393 = load ptr, ptr %61, align 8, !tbaa !7
  call void @llvm.lifetime.start.p0(i64 256, ptr nonnull %35) #8
  %394 = invoke noundef ptr @_ZN3JPH8BoxShapenwEm(i64 noundef 80)
          to label %395 unwind label %542

395:                                              ; preds = %392
  %396 = invoke { double, double } @_ZN3JPH4Vec34sOneEv()
          to label %397 unwind label %544

397:                                              ; preds = %395
  %398 = extractvalue { double, double } %396, 0
  %399 = extractvalue { double, double } %396, 1
  invoke void @_ZN3JPH8BoxShapeC2ENS_4Vec3EfPKNS_15PhysicsMaterialE(ptr noundef nonnull align 16 dereferenceable(80) %394, double %398, double %399, float noundef 0x3FA99999A0000000, ptr noundef null)
          to label %400 unwind label %544

400:                                              ; preds = %397
  invoke void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %36, float noundef 1.000000e+01, float noundef 9.000000e+00, float noundef 0.000000e+00)
          to label %401 unwind label %542

401:                                              ; preds = %400
  %402 = invoke { double, double } @_ZN3JPH4Quat9sIdentityEv()
          to label %403 unwind label %542

403:                                              ; preds = %401
  %404 = extractvalue { double, double } %402, 0
  %405 = extractvalue { double, double } %402, 1
  %406 = load double, ptr %36, align 16
  %407 = getelementptr inbounds i8, ptr %36, i64 8
  %408 = load double, ptr %407, align 8
  invoke void @_ZN3JPH20BodyCreationSettingsC2EPKNS_5ShapeENS_4Vec3ENS_4QuatENS_11EMotionTypeEt(ptr noundef nonnull align 16 dereferenceable(256) %35, ptr noundef nonnull %394, double %406, double %408, double %404, double %405, i8 noundef zeroext 2, i16 noundef zeroext 1)
          to label %409 unwind label %542

409:                                              ; preds = %403
  %410 = invoke noundef ptr @_ZN3JPH13BodyInterface10CreateBodyERKNS_20BodyCreationSettingsE(ptr noundef nonnull align 8 dereferenceable(24) %393, ptr noundef nonnull align 16 dereferenceable(256) %35)
          to label %411 unwind label %546

411:                                              ; preds = %409
  call void @_ZN3JPH20BodyCreationSettingsD2Ev(ptr noundef nonnull align 16 dereferenceable(256) %35) #8
  call void @llvm.lifetime.end.p0(i64 256, ptr nonnull %35) #8
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %37) #8
  %412 = 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) %37, ptr noundef %412, i32 noundef 4, i32 noundef 0)
          to label %413 unwind label %549

413:                                              ; preds = %411
  invoke void @_ZN3JPH4Body17SetCollisionGroupERKNS_14CollisionGroupE(ptr noundef nonnull align 16 dereferenceable(122) %410, ptr noundef nonnull align 8 dereferenceable(16) %37)
          to label %414 unwind label %551

414:                                              ; preds = %413
  call void @_ZN3JPH14CollisionGroupD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %37) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %37) #8
  %415 = load ptr, ptr %61, align 8, !tbaa !7
  %416 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK3JPH4Body5GetIDEv(ptr noundef nonnull align 16 dereferenceable(122) %410)
  invoke void @_ZN3JPH13BodyInterface7AddBodyERKNS_6BodyIDENS_11EActivationE(ptr noundef nonnull align 8 dereferenceable(24) %415, ptr noundef nonnull align 4 dereferenceable(4) %416, i32 noundef 0)
          to label %417 unwind label %554

417:                                              ; preds = %414
  %418 = load ptr, ptr %61, align 8, !tbaa !7
  call void @llvm.lifetime.start.p0(i64 256, ptr nonnull %38) #8
  %419 = invoke noundef ptr @_ZN3JPH8BoxShapenwEm(i64 noundef 80)
          to label %420 unwind label %556

420:                                              ; preds = %417
  %421 = invoke { double, double } @_ZN3JPH4Vec34sOneEv()
          to label %422 unwind label %558

422:                                              ; preds = %420
  %423 = extractvalue { double, double } %421, 0
  %424 = extractvalue { double, double } %421, 1
  invoke void @_ZN3JPH8BoxShapeC2ENS_4Vec3EfPKNS_15PhysicsMaterialE(ptr noundef nonnull align 16 dereferenceable(80) %419, double %423, double %424, float noundef 0x3FA99999A0000000, ptr noundef null)
          to label %425 unwind label %558

425:                                              ; preds = %422
  invoke void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %39, float noundef 1.000000e+01, float noundef 3.000000e+00, float noundef 0.000000e+00)
          to label %426 unwind label %556

426:                                              ; preds = %425
  %427 = invoke { double, double } @_ZN3JPH4Quat9sIdentityEv()
          to label %428 unwind label %556

428:                                              ; preds = %426
  %429 = extractvalue { double, double } %427, 0
  %430 = extractvalue { double, double } %427, 1
  %431 = load double, ptr %39, align 16
  %432 = getelementptr inbounds i8, ptr %39, i64 8
  %433 = load double, ptr %432, align 8
  invoke void @_ZN3JPH20BodyCreationSettingsC2EPKNS_5ShapeENS_4Vec3ENS_4QuatENS_11EMotionTypeEt(ptr noundef nonnull align 16 dereferenceable(256) %38, ptr noundef nonnull %419, double %431, double %433, double %429, double %430, i8 noundef zeroext 2, i16 noundef zeroext 1)
          to label %434 unwind label %556

434:                                              ; preds = %428
  %435 = invoke noundef ptr @_ZN3JPH13BodyInterface10CreateBodyERKNS_20BodyCreationSettingsE(ptr noundef nonnull align 8 dereferenceable(24) %418, ptr noundef nonnull align 16 dereferenceable(256) %38)
          to label %436 unwind label %560

436:                                              ; preds = %434
  call void @_ZN3JPH20BodyCreationSettingsD2Ev(ptr noundef nonnull align 16 dereferenceable(256) %38) #8
  call void @llvm.lifetime.end.p0(i64 256, ptr nonnull %38) #8
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %40) #8
  %437 = 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) %40, ptr noundef %437, i32 noundef 4, i32 noundef 1)
          to label %438 unwind label %563

438:                                              ; preds = %436
  invoke void @_ZN3JPH4Body17SetCollisionGroupERKNS_14CollisionGroupE(ptr noundef nonnull align 16 dereferenceable(122) %435, ptr noundef nonnull align 8 dereferenceable(16) %40)
          to label %439 unwind label %565

439:                                              ; preds = %438
  call void @_ZN3JPH14CollisionGroupD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %40) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %40) #8
  %440 = load ptr, ptr %61, align 8, !tbaa !7
  %441 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK3JPH4Body5GetIDEv(ptr noundef nonnull align 16 dereferenceable(122) %435)
  invoke void @_ZN3JPH13BodyInterface7AddBodyERKNS_6BodyIDENS_11EActivationE(ptr noundef nonnull align 8 dereferenceable(24) %440, ptr noundef nonnull align 4 dereferenceable(4) %441, i32 noundef 0)
          to label %442 unwind label %568

442:                                              ; preds = %439
  call void @llvm.lifetime.start.p0(i64 208, ptr nonnull %41) #8
  invoke void @_ZN3JPH24SliderConstraintSettingsC2Ev(ptr noundef nonnull align 16 dereferenceable(208) %41)
          to label %443 unwind label %570

443:                                              ; preds = %442
  %444 = getelementptr inbounds i8, ptr %41, i64 44
  store i8 1, ptr %444, align 4, !tbaa !21
  %445 = invoke { double, double } @_ZN3JPH4Vec36sAxisYEv()
          to label %446 unwind label %572

446:                                              ; preds = %443
  %447 = extractvalue { double, double } %445, 0
  %448 = extractvalue { double, double } %445, 1
  invoke void @_ZN3JPH24SliderConstraintSettings13SetSliderAxisENS_4Vec3E(ptr noundef nonnull align 16 dereferenceable(208) %41, double %447, double %448)
          to label %449 unwind label %572

449:                                              ; preds = %446
  %450 = getelementptr inbounds i8, ptr %41, i64 144
  store <2 x float> <float 0.000000e+00, float 2.000000e+00>, ptr %450, align 16, !tbaa !35
  %451 = getelementptr inbounds i8, ptr %41, i64 156
  store <2 x float> <float 1.000000e+00, float 5.000000e-01>, ptr %451, align 4, !tbaa !19
  %452 = load ptr, ptr %69, align 8, !tbaa !36
  %453 = invoke noundef ptr @_ZNK3JPH24SliderConstraintSettings6CreateERNS_4BodyES2_(ptr noundef nonnull align 16 dereferenceable(208) %41, ptr noundef nonnull align 16 dereferenceable(122) %410, ptr noundef nonnull align 16 dereferenceable(122) %435)
          to label %454 unwind label %572

454:                                              ; preds = %449
  invoke void @_ZN3JPH13PhysicsSystem13AddConstraintEPNS_10ConstraintE(ptr noundef nonnull align 16 dereferenceable(1172) %452, ptr noundef %453)
          to label %455 unwind label %572

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

456:                                              ; preds = %242, %240, %239, %70
  %457 = landingpad { ptr, i32 }
          cleanup
  br label %462

458:                                              ; preds = %236, %234
  %459 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3JPH8BoxShapedlEPv(ptr noundef %72) #8
  br label %462

460:                                              ; preds = %248
  %461 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3JPH20BodyCreationSettingsD2Ev(ptr noundef nonnull align 16 dereferenceable(256) %17) #8
  br label %462

462:                                              ; preds = %460, %458, %456
  %.pn = phi { ptr, i32 } [ %461, %460 ], [ %457, %456 ], [ %459, %458 ]
  call void @llvm.lifetime.end.p0(i64 256, ptr nonnull %17) #8
  br label %575

463:                                              ; preds = %250
  %464 = landingpad { ptr, i32 }
          cleanup
  br label %467

465:                                              ; preds = %252
  %466 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3JPH14CollisionGroupD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %19) #8
  br label %467

467:                                              ; preds = %465, %463
  %.pn171 = phi { ptr, i32 } [ %466, %465 ], [ %464, %463 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %19) #8
  br label %575

468:                                              ; preds = %253
  %469 = landingpad { ptr, i32 }
          cleanup
  br label %575

470:                                              ; preds = %267, %265, %264, %256
  %471 = landingpad { ptr, i32 }
          cleanup
  br label %476

472:                                              ; preds = %261, %259
  %473 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3JPH8BoxShapedlEPv(ptr noundef %258) #8
  br label %476

474:                                              ; preds = %273
  %475 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3JPH20BodyCreationSettingsD2Ev(ptr noundef nonnull align 16 dereferenceable(256) %20) #8
  br label %476

476:                                              ; preds = %474, %472, %470
  %.pn173 = phi { ptr, i32 } [ %475, %474 ], [ %471, %470 ], [ %473, %472 ]
  call void @llvm.lifetime.end.p0(i64 256, ptr nonnull %20) #8
  br label %575

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

479:                                              ; preds = %277
  %480 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3JPH14CollisionGroupD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %22) #8
  br label %481

481:                                              ; preds = %479, %477
  %.pn175 = phi { ptr, i32 } [ %480, %479 ], [ %478, %477 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %22) #8
  br label %575

482:                                              ; preds = %278
  %483 = landingpad { ptr, i32 }
          cleanup
  br label %575

484:                                              ; preds = %292, %290, %289, %281
  %485 = landingpad { ptr, i32 }
          cleanup
  br label %490

486:                                              ; preds = %286, %284
  %487 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3JPH8BoxShapedlEPv(ptr noundef %283) #8
  br label %490

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

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

491:                                              ; preds = %300
  %492 = landingpad { ptr, i32 }
          cleanup
  br label %495

493:                                              ; preds = %302
  %494 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3JPH14CollisionGroupD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %25) #8
  br label %495

495:                                              ; preds = %493, %491
  %.pn179 = phi { ptr, i32 } [ %494, %493 ], [ %492, %491 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %25) #8
  br label %575

496:                                              ; preds = %303
  %497 = landingpad { ptr, i32 }
          cleanup
  br label %575

498:                                              ; preds = %306
  %499 = landingpad { ptr, i32 }
          cleanup
  br label %508

500:                                              ; preds = %317, %313, %310, %307
  %501 = landingpad { ptr, i32 }
          cleanup
  br label %507

502:                                              ; preds = %318
  %503 = landingpad { ptr, i32 }
          cleanup
  br label %506

504:                                              ; preds = %329, %325, %322, %319
  %505 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3JPH18ConstraintSettingsD2Ev(ptr noundef nonnull align 16 dereferenceable(208) %27) #8
  br label %506

506:                                              ; preds = %504, %502
  %.pn181 = phi { ptr, i32 } [ %505, %504 ], [ %503, %502 ]
  call void @llvm.lifetime.end.p0(i64 208, ptr nonnull %27) #8
  br label %507

507:                                              ; preds = %506, %500
  %.pn181.pn = phi { ptr, i32 } [ %.pn181, %506 ], [ %501, %500 ]
  call void @_ZN3JPH18ConstraintSettingsD2Ev(ptr noundef nonnull align 16 dereferenceable(208) %26) #8
  br label %508

508:                                              ; preds = %507, %498
  %.pn181.pn.pn = phi { ptr, i32 } [ %.pn181.pn, %507 ], [ %499, %498 ]
  call void @llvm.lifetime.end.p0(i64 208, ptr nonnull %26) #8
  br label %575

509:                                              ; preds = %341, %339, %338, %330
  %510 = landingpad { ptr, i32 }
          cleanup
  br label %515

511:                                              ; preds = %335, %333
  %512 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3JPH8BoxShapedlEPv(ptr noundef %332) #8
  br label %515

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

515:                                              ; preds = %513, %511, %509
  %.pn188 = phi { ptr, i32 } [ %514, %513 ], [ %510, %509 ], [ %512, %511 ]
  call void @llvm.lifetime.end.p0(i64 256, ptr nonnull %28) #8
  br label %575

516:                                              ; preds = %349
  %517 = landingpad { ptr, i32 }
          cleanup
  br label %520

518:                                              ; preds = %351
  %519 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3JPH14CollisionGroupD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %30) #8
  br label %520

520:                                              ; preds = %518, %516
  %.pn190 = phi { ptr, i32 } [ %519, %518 ], [ %517, %516 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %30) #8
  br label %575

521:                                              ; preds = %352
  %522 = landingpad { ptr, i32 }
          cleanup
  br label %575

523:                                              ; preds = %366, %364, %363, %355
  %524 = landingpad { ptr, i32 }
          cleanup
  br label %529

525:                                              ; preds = %360, %358
  %526 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3JPH8BoxShapedlEPv(ptr noundef %357) #8
  br label %529

527:                                              ; preds = %372
  %528 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3JPH20BodyCreationSettingsD2Ev(ptr noundef nonnull align 16 dereferenceable(256) %31) #8
  br label %529

529:                                              ; preds = %527, %525, %523
  %.pn192 = phi { ptr, i32 } [ %528, %527 ], [ %524, %523 ], [ %526, %525 ]
  call void @llvm.lifetime.end.p0(i64 256, ptr nonnull %31) #8
  br label %575

530:                                              ; preds = %374
  %531 = landingpad { ptr, i32 }
          cleanup
  br label %534

532:                                              ; preds = %376
  %533 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3JPH14CollisionGroupD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %33) #8
  br label %534

534:                                              ; preds = %532, %530
  %.pn194 = phi { ptr, i32 } [ %533, %532 ], [ %531, %530 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %33) #8
  br label %575

535:                                              ; preds = %377
  %536 = landingpad { ptr, i32 }
          cleanup
  br label %575

537:                                              ; preds = %380
  %538 = landingpad { ptr, i32 }
          cleanup
  br label %541

539:                                              ; preds = %391, %387, %384, %381
  %540 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3JPH18ConstraintSettingsD2Ev(ptr noundef nonnull align 16 dereferenceable(208) %34) #8
  br label %541

541:                                              ; preds = %539, %537
  %.pn196 = phi { ptr, i32 } [ %540, %539 ], [ %538, %537 ]
  call void @llvm.lifetime.end.p0(i64 208, ptr nonnull %34) #8
  br label %575

542:                                              ; preds = %403, %401, %400, %392
  %543 = landingpad { ptr, i32 }
          cleanup
  br label %548

544:                                              ; preds = %397, %395
  %545 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3JPH8BoxShapedlEPv(ptr noundef %394) #8
  br label %548

546:                                              ; preds = %409
  %547 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3JPH20BodyCreationSettingsD2Ev(ptr noundef nonnull align 16 dereferenceable(256) %35) #8
  br label %548

548:                                              ; preds = %546, %544, %542
  %.pn200 = phi { ptr, i32 } [ %547, %546 ], [ %543, %542 ], [ %545, %544 ]
  call void @llvm.lifetime.end.p0(i64 256, ptr nonnull %35) #8
  br label %575

549:                                              ; preds = %411
  %550 = landingpad { ptr, i32 }
          cleanup
  br label %553

551:                                              ; preds = %413
  %552 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3JPH14CollisionGroupD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %37) #8
  br label %553

553:                                              ; preds = %551, %549
  %.pn202 = phi { ptr, i32 } [ %552, %551 ], [ %550, %549 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %37) #8
  br label %575

554:                                              ; preds = %414
  %555 = landingpad { ptr, i32 }
          cleanup
  br label %575

556:                                              ; preds = %428, %426, %425, %417
  %557 = landingpad { ptr, i32 }
          cleanup
  br label %562

558:                                              ; preds = %422, %420
  %559 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3JPH8BoxShapedlEPv(ptr noundef %419) #8
  br label %562

560:                                              ; preds = %434
  %561 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3JPH20BodyCreationSettingsD2Ev(ptr noundef nonnull align 16 dereferenceable(256) %38) #8
  br label %562

562:                                              ; preds = %560, %558, %556
  %.pn204 = phi { ptr, i32 } [ %561, %560 ], [ %557, %556 ], [ %559, %558 ]
  call void @llvm.lifetime.end.p0(i64 256, ptr nonnull %38) #8
  br label %575

563:                                              ; preds = %436
  %564 = landingpad { ptr, i32 }
          cleanup
  br label %567

565:                                              ; preds = %438
  %566 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3JPH14CollisionGroupD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %40) #8
  br label %567

567:                                              ; preds = %565, %563
  %.pn206 = phi { ptr, i32 } [ %566, %565 ], [ %564, %563 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %40) #8
  br label %575

568:                                              ; preds = %439
  %569 = landingpad { ptr, i32 }
          cleanup
  br label %575

570:                                              ; preds = %442
  %571 = landingpad { ptr, i32 }
          cleanup
  br label %574

572:                                              ; preds = %454, %449, %446, %443
  %573 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3JPH18ConstraintSettingsD2Ev(ptr noundef nonnull align 16 dereferenceable(208) %41) #8
  br label %574

574:                                              ; preds = %572, %570
  %.pn208 = phi { ptr, i32 } [ %573, %572 ], [ %571, %570 ]
  call void @llvm.lifetime.end.p0(i64 208, ptr nonnull %41) #8
  br label %575

575:                                              ; preds = %548, %553, %554, %574, %568, %567, %562, %515, %520, %521, %541, %535, %534, %529, %462, %467, %468, %490, %495, %496, %508, %482, %481, %476, %233
  %.pn226.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn226.pn.pn.pn.pn.pn.pn, %233 ], [ %469, %468 ], [ %.pn171, %467 ], [ %.pn, %462 ], [ %483, %482 ], [ %.pn175, %481 ], [ %.pn173, %476 ], [ %.pn181.pn.pn, %508 ], [ %497, %496 ], [ %.pn179, %495 ], [ %.pn177, %490 ], [ %522, %521 ], [ %.pn190, %520 ], [ %.pn188, %515 ], [ %.pn196, %541 ], [ %536, %535 ], [ %.pn194, %534 ], [ %.pn192, %529 ], [ %555, %554 ], [ %.pn202, %553 ], [ %.pn200, %548 ], [ %.pn208, %574 ], [ %569, %568 ], [ %.pn206, %567 ], [ %.pn204, %562 ]
  call void @_ZN3JPH8RefConstINS_5ShapeEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %3) #8
  br label %576

576:                                              ; preds = %575, %75, %73
  %.pn226.pn.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn226.pn.pn.pn.pn.pn.pn.pn, %575 ], [ %74, %73 ], [ %76, %75 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %3) #8
  br label %577

577:                                              ; preds = %576, %53
  %.pn236 = phi { ptr, i32 } [ %54, %53 ], [ %.pn226.pn.pn.pn.pn.pn.pn.pn.pn, %576 ]
  call void @_ZN3JPH3RefINS_16GroupFilterTableEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %2) #8
  br label %578

578:                                              ; preds = %577, %48
  %.pn236.pn = phi { ptr, i32 } [ %.pn236, %577 ], [ %49, %48 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %2) #8
  resume { ptr, i32 } %.pn236.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: inlinehint mustprogress nounwind uwtable
declare dso_local noundef ptr @_ZNK3JPH3RefINS_16GroupFilterTableEEptEv(ptr noundef nonnull align 8 dereferenceable(8)) local_unnamed_addr #6 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN3JPH16GroupFilterTable16DisableCollisionEjj(ptr noundef nonnull align 8 dereferenceable(40), i32 noundef, i32 noundef) local_unnamed_addr #1 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 #7 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 #7 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 #6 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 #6 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 #6 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 #6 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 #6 align 2

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNSt25uniform_real_distributionIfEC2Eff(ptr noundef nonnull align 4 dereferenceable(8), float noundef, float noundef) unnamed_addr #1 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 #7 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 } @_ZN3JPH4Vec36sAxisZEv() local_unnamed_addr #3 align 2

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

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef float @_ZSt3absf(float noundef) local_unnamed_addr #6

; Function Attrs: mustprogress uwtable
declare dso_local noundef float @_ZNSt25uniform_real_distributionIfEclISt26linear_congruential_engineImLm16807ELm0ELm2147483647EEEEfRT_(ptr noundef nonnull align 4 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8)) local_unnamed_addr #1 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local { double, double } @_ZN3JPH4Quat7sRandomISt26linear_congruential_engineImLm16807ELm0ELm2147483647EEEES0_RT_(ptr noundef nonnull align 8 dereferenceable(8)) local_unnamed_addr #5 align 2

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

; Function Attrs: alwaysinline mustprogress uwtable
declare dso_local { double, double } @_ZNK3JPH4QuatmlENS_4Vec3E(ptr noundef nonnull align 16 dereferenceable(16), double, double) local_unnamed_addr #3 align 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: mustprogress uwtable
declare dso_local void @_ZN3JPH13PhysicsSystem13AddConstraintEPNS_10ConstraintE(ptr noundef nonnull align 16 dereferenceable(1172), ptr noundef) local_unnamed_addr #1 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: inlinehint mustprogress nounwind uwtable
declare dso_local void @_ZN3JPH18ConstraintSettingsD2Ev(ptr noundef nonnull align 8 dereferenceable(40)) unnamed_addr #6 align 2

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

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

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

attributes #0 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #1 = { mustprogress uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #2 = { "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 = { inlinehint mustprogress nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #7 = { 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 #8 = { 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 = distinct !{!5, !6}
!6 = !{!"llvm.loop.mustprogress"}
!7 = !{!8, !9, i64 24}
!8 = !{!"_ZTS4Test", !9, i64 8, !9, i64 16, !9, i64 24, !9, i64 32, !9, i64 40, !12, i64 48, !13, i64 56}
!9 = !{!"any pointer", !10, i64 0}
!10 = !{!"omnipotent char", !11, i64 0}
!11 = !{!"Simple C++ TBAA"}
!12 = !{!"bool", !10, i64 0}
!13 = !{!"_ZTSSt13unordered_mapIN3JPH6BodyIDENSt7__cxx1112basic_stringIcSt11char_traitsIcENS0_12STLAllocatorIcEEEESt4hashIS1_ESt8equal_toIS1_ESaISt4pairIKS1_S8_EEE", !14, i64 0}
!14 = !{!"_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", !9, i64 0, !15, i64 8, !16, i64 16, !15, i64 24, !17, i64 32, !9, i64 48}
!15 = !{!"long", !10, i64 0}
!16 = !{!"_ZTSNSt8__detail15_Hash_node_baseE", !9, i64 0}
!17 = !{!"_ZTSNSt8__detail20_Prime_rehash_policyE", !18, i64 0, !15, i64 8}
!18 = !{!"float", !10, i64 0}
!19 = !{!10, !10, i64 0}
!20 = distinct !{!20, !6}
!21 = !{!22, !12, i64 44}
!22 = !{!"_ZTSN3JPH24SliderConstraintSettingsE", !23, i64 0, !30, i64 40, !12, i64 44, !31, i64 48, !31, i64 64, !31, i64 80, !31, i64 96, !31, i64 112, !31, i64 128, !18, i64 144, !18, i64 148, !32, i64 152, !18, i64 164, !34, i64 168}
!23 = !{!"_ZTSN3JPH25TwoBodyConstraintSettingsE", !24, i64 0}
!24 = !{!"_ZTSN3JPH18ConstraintSettingsE", !25, i64 0, !26, i64 8, !12, i64 12, !29, i64 16, !29, i64 20, !29, i64 24, !18, i64 28, !15, i64 32}
!25 = !{!"_ZTSN3JPH18SerializableObjectE"}
!26 = !{!"_ZTSN3JPH9RefTargetINS_18ConstraintSettingsEEE", !27, i64 0}
!27 = !{!"_ZTSSt6atomicIjE", !28, i64 0}
!28 = !{!"_ZTSSt13__atomic_baseIjE", !29, i64 0}
!29 = !{!"int", !10, i64 0}
!30 = !{!"_ZTSN3JPH16EConstraintSpaceE", !10, i64 0}
!31 = !{!"_ZTSN3JPH4Vec3E", !10, i64 0}
!32 = !{!"_ZTSN3JPH14SpringSettingsE", !33, i64 0, !10, i64 4, !18, i64 8}
!33 = !{!"_ZTSN3JPH11ESpringModeE", !10, i64 0}
!34 = !{!"_ZTSN3JPH13MotorSettingsE", !32, i64 0, !18, i64 12, !18, i64 16, !18, i64 20, !18, i64 24}
!35 = !{!18, !18, i64 0}
!36 = !{!8, !9, i64 16}
!37 = distinct !{!37, !6}


; Effective O3 passes: ADCEPass,CorrelatedValuePropagationPass,EarlyCSEPass,GVNPass,GlobalOptPass,IPSCCPPass,IndVarSimplifyPass,InferAlignmentPass,InferFunctionAttrsPass,InstCombinePass,LCSSAPass,LICMPass,LoopRotatePass,LoopSimplifyPass,LoopUnrollPass,SLPVectorizerPass,SROAPass,SimplifyCFGPass,TailCallElimPass