; LLVM IR from jrouwe/JoltPhysics :: Samples/Tests/General/ConveyorBeltTest.ll (ZN16ConveyorBeltTest10InitializeEv)

; Unoptimized IR (clang -disable-llvm-passes):
target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-i128:128-f80:128-n8:16:32:64-S128"
target triple = "x86_64-unknown-linux-gnu"

%"class.JPH::BodyCreationSettings" = type { %"class.JPH::Vec3", %"class.JPH::Quat", %"class.JPH::Vec3", %"class.JPH::Vec3", i64, i16, %"class.JPH::CollisionGroup", i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, float, float, float, float, float, float, float, i32, i32, i8, float, %"class.JPH::MassProperties", %"class.JPH::RefConst.6", %"class.JPH::RefConst" }
%"class.JPH::Quat" = type { %"class.JPH::Vec4" }
%"class.JPH::Vec4" = type { %union.anon.4 }
%union.anon.4 = type { <4 x float> }
%"class.JPH::Vec3" = type { %union.anon }
%union.anon = type { <4 x float> }
%"class.JPH::CollisionGroup" = type { %"class.JPH::RefConst.5", i32, i32 }
%"class.JPH::RefConst.5" = type { ptr }
%"class.JPH::MassProperties" = type { float, %"class.JPH::Mat44" }
%"class.JPH::Mat44" = type { [4 x %"class.JPH::Vec4"] }
%"class.JPH::RefConst.6" = type { ptr }
%"class.JPH::RefConst" = type { ptr }
%"class.JPH::BodyID" = type { i32 }
%class.ConveyorBeltTest = type <{ %class.Test, %"class.JPH::ContactListener", %"class.JPH::Array", %"class.JPH::BodyID", [4 x i8] }>
%class.Test = type { ptr, ptr, ptr, ptr, ptr, ptr, i8, %"class.std::unordered_map" }
%"class.std::unordered_map" = type { %"class.std::_Hashtable" }
%"class.std::_Hashtable" = type { ptr, i64, %"struct.std::__detail::_Hash_node_base", i64, %"struct.std::__detail::_Prime_rehash_policy", ptr }
%"struct.std::__detail::_Hash_node_base" = type { ptr }
%"struct.std::__detail::_Prime_rehash_policy" = type { float, i64 }
%"class.JPH::ContactListener" = type { ptr }
%"class.JPH::Array" = type { i64, i64, ptr }

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

declare i32 @__gxx_personality_v0(...)

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

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN16ConveyorBeltTest10InitializeEv(ptr noundef nonnull align 8 dereferenceable(148) %0) unnamed_addr #1 align 2 personality ptr @__gxx_personality_v0 {
  %2 = alloca ptr, align 8
  %3 = alloca float, align 4
  %4 = alloca float, align 4
  %5 = alloca %"class.JPH::BodyCreationSettings", align 16
  %6 = alloca %"class.JPH::Vec3", align 16
  %7 = alloca ptr, align 8
  %8 = alloca i32, align 4
  %9 = alloca %"class.JPH::Vec3", align 16
  %10 = alloca %"class.JPH::Quat", align 16
  %11 = alloca i32, align 4
  %12 = alloca %"class.JPH::Quat", align 16
  %13 = alloca %"class.JPH::Quat", align 16
  %14 = alloca %"class.JPH::Vec3", align 16
  %15 = alloca %"class.JPH::Quat", align 16
  %16 = alloca %"class.JPH::Vec3", align 16
  %17 = alloca %"class.JPH::Vec3", align 16
  %18 = alloca %"class.JPH::Vec3", align 16
  %19 = alloca %"class.JPH::BodyID", align 4
  %20 = alloca %"class.JPH::BodyCreationSettings", align 16
  %21 = alloca %"class.JPH::Vec3", align 16
  %22 = alloca %"class.JPH::Vec3", align 16
  %23 = alloca %"class.JPH::Quat", align 16
  %24 = alloca i32, align 4
  %25 = alloca %"class.JPH::Vec3", align 16
  %26 = alloca float, align 4
  %27 = alloca float, align 4
  %28 = alloca %"class.JPH::BodyID", align 4
  %29 = alloca %"class.JPH::BodyCreationSettings", align 16
  %30 = alloca %"class.JPH::Vec3", align 16
  %31 = alloca %"class.JPH::Quat", align 16
  %32 = alloca %"class.JPH::Vec3", align 16
  %33 = alloca %"class.JPH::BodyID", align 4
  %34 = alloca %"class.JPH::BodyID", align 4
  %35 = alloca %"class.JPH::BodyCreationSettings", align 16
  %36 = alloca %"class.JPH::Vec3", align 16
  %37 = alloca %"class.JPH::Vec3", align 16
  %38 = alloca %"class.JPH::Quat", align 16
  %39 = alloca %"class.JPH::BodyID", align 4
  %40 = alloca %"class.JPH::Vec3", align 16
  %41 = alloca %"class.JPH::BodyID", align 4
  %42 = alloca %"class.JPH::BodyCreationSettings", align 16
  %43 = alloca %"class.JPH::Vec3", align 16
  %44 = alloca %"class.JPH::Vec3", align 16
  %45 = alloca %"class.JPH::Quat", align 16
  %46 = alloca %"class.JPH::BodyID", align 4
  %47 = alloca i32, align 4
  %48 = alloca %"class.JPH::Vec3", align 16
  %49 = alloca float, align 4
  %50 = alloca float, align 4
  %51 = alloca %"class.JPH::BodyID", align 4
  store ptr %0, ptr %2, align 8, !tbaa !5
  %52 = load ptr, ptr %2, align 8
  %53 = call noundef nonnull align 16 dereferenceable(122) ptr @_ZN4Test11CreateFloorEf(ptr noundef nonnull align 8 dereferenceable(112) %52, float noundef 2.000000e+02)
  call void @llvm.lifetime.start.p0(i64 4, ptr %3) #10
  store float 1.000000e+01, ptr %3, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %4) #10
  store float 5.000000e+01, ptr %4, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 256, ptr %5) #10
  %54 = call noundef ptr @_ZN3JPH8BoxShapenwEm(i64 noundef 80)
  invoke void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %6, float noundef 1.000000e+01, float noundef 0x3FB99999A0000000, float noundef 5.000000e+01)
          to label %55 unwind label %88

55:                                               ; preds = %1
  %56 = getelementptr inbounds { double, double }, ptr %6, i32 0, i32 0
  %57 = load double, ptr %56, align 16
  %58 = getelementptr inbounds { double, double }, ptr %6, i32 0, i32 1
  %59 = load double, ptr %58, align 8
  invoke void @_ZN3JPH8BoxShapeC2ENS_4Vec3EfPKNS_15PhysicsMaterialE(ptr noundef nonnull align 16 dereferenceable(80) %54, double %57, double %59, float noundef 0x3FA99999A0000000, ptr noundef null)
          to label %60 unwind label %88

60:                                               ; preds = %55
  %61 = call { double, double } @_ZN3JPH4Vec35sZeroEv()
  %62 = getelementptr inbounds %"class.JPH::Vec3", ptr %9, i32 0, i32 0
  %63 = getelementptr inbounds %union.anon, ptr %62, i32 0, i32 0
  %64 = getelementptr inbounds { double, double }, ptr %63, i32 0, i32 0
  %65 = extractvalue { double, double } %61, 0
  store double %65, ptr %64, align 16
  %66 = getelementptr inbounds { double, double }, ptr %63, i32 0, i32 1
  %67 = extractvalue { double, double } %61, 1
  store double %67, ptr %66, align 8
  %68 = call { double, double } @_ZN3JPH4Quat9sIdentityEv()
  %69 = getelementptr inbounds %"class.JPH::Quat", ptr %10, i32 0, i32 0
  %70 = getelementptr inbounds %"class.JPH::Vec4", ptr %69, i32 0, i32 0
  %71 = getelementptr inbounds %union.anon.4, ptr %70, i32 0, i32 0
  %72 = getelementptr inbounds { double, double }, ptr %71, i32 0, i32 0
  %73 = extractvalue { double, double } %68, 0
  store double %73, ptr %72, align 16
  %74 = getelementptr inbounds { double, double }, ptr %71, i32 0, i32 1
  %75 = extractvalue { double, double } %68, 1
  store double %75, ptr %74, align 8
  %76 = getelementptr inbounds { double, double }, ptr %9, i32 0, i32 0
  %77 = load double, ptr %76, align 16
  %78 = getelementptr inbounds { double, double }, ptr %9, i32 0, i32 1
  %79 = load double, ptr %78, align 8
  %80 = getelementptr inbounds { double, double }, ptr %10, i32 0, i32 0
  %81 = load double, ptr %80, align 16
  %82 = getelementptr inbounds { double, double }, ptr %10, i32 0, i32 1
  %83 = load double, ptr %82, align 8
  call void @_ZN3JPH20BodyCreationSettingsC2EPKNS_5ShapeENS_4Vec3ENS_4QuatENS_11EMotionTypeEt(ptr noundef nonnull align 16 dereferenceable(256) %5, ptr noundef %54, double %77, double %79, double %81, double %83, i8 noundef zeroext 0, i16 noundef zeroext 0)
  call void @llvm.lifetime.start.p0(i64 4, ptr %11) #10
  store i32 0, ptr %11, align 4, !tbaa !11
  br label %84

84:                                               ; preds = %181, %60
  %85 = load i32, ptr %11, align 4, !tbaa !11
  %86 = icmp slt i32 %85, 4
  br i1 %86, label %92, label %87

87:                                               ; preds = %84
  call void @llvm.lifetime.end.p0(i64 4, ptr %11) #10
  br label %197

88:                                               ; preds = %55, %1
  %89 = landingpad { ptr, i32 }
          cleanup
  %90 = extractvalue { ptr, i32 } %89, 0
  store ptr %90, ptr %7, align 8
  %91 = extractvalue { ptr, i32 } %89, 1
  store i32 %91, ptr %8, align 4
  call void @_ZN3JPH8BoxShapedlEPv(ptr noundef %54) #10
  br label %499

92:                                               ; preds = %84
  %93 = load i32, ptr %11, align 4, !tbaa !11
  %94 = add nsw i32 %93, 1
  %95 = sitofp i32 %94 to float
  %96 = fmul float 2.500000e-01, %95
  %97 = getelementptr inbounds %"class.JPH::BodyCreationSettings", ptr %5, i32 0, i32 17
  store float %96, ptr %97, align 4, !tbaa !13
  call void @llvm.lifetime.start.p0(i64 16, ptr %12) #10
  call void @llvm.lifetime.start.p0(i64 16, ptr %13) #10
  %98 = invoke { double, double } @_ZN3JPH4Vec36sAxisYEv()
          to label %99 unwind label %184

99:                                               ; preds = %92
  %100 = getelementptr inbounds %"class.JPH::Vec3", ptr %14, i32 0, i32 0
  %101 = getelementptr inbounds %union.anon, ptr %100, i32 0, i32 0
  %102 = getelementptr inbounds { double, double }, ptr %101, i32 0, i32 0
  %103 = extractvalue { double, double } %98, 0
  store double %103, ptr %102, align 16
  %104 = getelementptr inbounds { double, double }, ptr %101, i32 0, i32 1
  %105 = extractvalue { double, double } %98, 1
  store double %105, ptr %104, align 8
  %106 = load i32, ptr %11, align 4, !tbaa !11
  %107 = sitofp i32 %106 to float
  %108 = fmul float 0x3FF921FB60000000, %107
  %109 = getelementptr inbounds { double, double }, ptr %14, i32 0, i32 0
  %110 = load double, ptr %109, align 16
  %111 = getelementptr inbounds { double, double }, ptr %14, i32 0, i32 1
  %112 = load double, ptr %111, align 8
  %113 = invoke { double, double } @_ZN3JPH4Quat9sRotationENS_4Vec3Ef(double %110, double %112, float noundef %108)
          to label %114 unwind label %184

114:                                              ; preds = %99
  %115 = getelementptr inbounds %"class.JPH::Quat", ptr %13, i32 0, i32 0
  %116 = getelementptr inbounds %"class.JPH::Vec4", ptr %115, i32 0, i32 0
  %117 = getelementptr inbounds %union.anon.4, ptr %116, i32 0, i32 0
  %118 = getelementptr inbounds { double, double }, ptr %117, i32 0, i32 0
  %119 = extractvalue { double, double } %113, 0
  store double %119, ptr %118, align 16
  %120 = getelementptr inbounds { double, double }, ptr %117, i32 0, i32 1
  %121 = extractvalue { double, double } %113, 1
  store double %121, ptr %120, align 8
  %122 = invoke { double, double } @_ZN3JPH4Vec36sAxisXEv()
          to label %123 unwind label %184

123:                                              ; preds = %114
  %124 = getelementptr inbounds %"class.JPH::Vec3", ptr %16, i32 0, i32 0
  %125 = getelementptr inbounds %union.anon, ptr %124, i32 0, i32 0
  %126 = getelementptr inbounds { double, double }, ptr %125, i32 0, i32 0
  %127 = extractvalue { double, double } %122, 0
  store double %127, ptr %126, align 16
  %128 = getelementptr inbounds { double, double }, ptr %125, i32 0, i32 1
  %129 = extractvalue { double, double } %122, 1
  store double %129, ptr %128, align 8
  %130 = invoke noundef float @_ZN3JPH16DegreesToRadiansEf(float noundef 1.000000e+00)
          to label %131 unwind label %184

131:                                              ; preds = %123
  %132 = getelementptr inbounds { double, double }, ptr %16, i32 0, i32 0
  %133 = load double, ptr %132, align 16
  %134 = getelementptr inbounds { double, double }, ptr %16, i32 0, i32 1
  %135 = load double, ptr %134, align 8
  %136 = invoke { double, double } @_ZN3JPH4Quat9sRotationENS_4Vec3Ef(double %133, double %135, float noundef %130)
          to label %137 unwind label %184

137:                                              ; preds = %131
  %138 = getelementptr inbounds %"class.JPH::Quat", ptr %15, i32 0, i32 0
  %139 = getelementptr inbounds %"class.JPH::Vec4", ptr %138, i32 0, i32 0
  %140 = getelementptr inbounds %union.anon.4, ptr %139, i32 0, i32 0
  %141 = getelementptr inbounds { double, double }, ptr %140, i32 0, i32 0
  %142 = extractvalue { double, double } %136, 0
  store double %142, ptr %141, align 16
  %143 = getelementptr inbounds { double, double }, ptr %140, i32 0, i32 1
  %144 = extractvalue { double, double } %136, 1
  store double %144, ptr %143, align 8
  %145 = getelementptr inbounds { double, double }, ptr %15, i32 0, i32 0
  %146 = load double, ptr %145, align 16
  %147 = getelementptr inbounds { double, double }, ptr %15, i32 0, i32 1
  %148 = load double, ptr %147, align 8
  %149 = invoke { double, double } @_ZNK3JPH4QuatmlES0_(ptr noundef nonnull align 16 dereferenceable(16) %13, double %146, double %148)
          to label %150 unwind label %184

150:                                              ; preds = %137
  %151 = getelementptr inbounds %"class.JPH::Quat", ptr %12, i32 0, i32 0
  %152 = getelementptr inbounds %"class.JPH::Vec4", ptr %151, i32 0, i32 0
  %153 = getelementptr inbounds %union.anon.4, ptr %152, i32 0, i32 0
  %154 = getelementptr inbounds { double, double }, ptr %153, i32 0, i32 0
  %155 = extractvalue { double, double } %149, 0
  store double %155, ptr %154, align 16
  %156 = getelementptr inbounds { double, double }, ptr %153, i32 0, i32 1
  %157 = extractvalue { double, double } %149, 1
  store double %157, ptr %156, align 8
  %158 = getelementptr inbounds %"class.JPH::BodyCreationSettings", ptr %5, i32 0, i32 1
  call void @llvm.memcpy.p0.p0.i64(ptr align 16 %158, ptr align 16 %12, i64 16, i1 false), !tbaa.struct !31
  call void @llvm.lifetime.end.p0(i64 16, ptr %13) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr %12) #10
  call void @llvm.lifetime.start.p0(i64 16, ptr %17) #10
  %159 = getelementptr inbounds %"class.JPH::BodyCreationSettings", ptr %5, i32 0, i32 1
  invoke void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %18, float noundef 5.000000e+01, float noundef 6.000000e+00, float noundef 1.000000e+01)
          to label %160 unwind label %188

160:                                              ; preds = %150
  %161 = getelementptr inbounds { double, double }, ptr %18, i32 0, i32 0
  %162 = load double, ptr %161, align 16
  %163 = getelementptr inbounds { double, double }, ptr %18, i32 0, i32 1
  %164 = load double, ptr %163, align 8
  %165 = invoke { double, double } @_ZNK3JPH4QuatmlENS_4Vec3E(ptr noundef nonnull align 16 dereferenceable(16) %159, double %162, double %164)
          to label %166 unwind label %188

166:                                              ; preds = %160
  %167 = getelementptr inbounds %"class.JPH::Vec3", ptr %17, i32 0, i32 0
  %168 = getelementptr inbounds %union.anon, ptr %167, i32 0, i32 0
  %169 = getelementptr inbounds { double, double }, ptr %168, i32 0, i32 0
  %170 = extractvalue { double, double } %165, 0
  store double %170, ptr %169, align 16
  %171 = getelementptr inbounds { double, double }, ptr %168, i32 0, i32 1
  %172 = extractvalue { double, double } %165, 1
  store double %172, ptr %171, align 8
  %173 = getelementptr inbounds %"class.JPH::BodyCreationSettings", ptr %5, i32 0, i32 0
  call void @llvm.memcpy.p0.p0.i64(ptr align 16 %173, ptr align 16 %17, i64 16, i1 false), !tbaa.struct !31
  call void @llvm.lifetime.end.p0(i64 16, ptr %17) #10
  %174 = getelementptr inbounds %class.ConveyorBeltTest, ptr %52, i32 0, i32 2
  call void @llvm.lifetime.start.p0(i64 4, ptr %19) #10
  %175 = getelementptr inbounds %class.Test, ptr %52, i32 0, i32 3
  %176 = load ptr, ptr %175, align 8, !tbaa !33
  %177 = invoke i32 @_ZN3JPH13BodyInterface16CreateAndAddBodyERKNS_20BodyCreationSettingsENS_11EActivationE(ptr noundef nonnull align 8 dereferenceable(24) %176, ptr noundef nonnull align 16 dereferenceable(256) %5, i32 noundef 1)
          to label %178 unwind label %192

178:                                              ; preds = %166
  %179 = getelementptr inbounds %"class.JPH::BodyID", ptr %19, i32 0, i32 0
  store i32 %177, ptr %179, align 4
  invoke void @_ZN3JPH5ArrayINS_6BodyIDENS_12STLAllocatorIS1_EEE9push_backEOS1_(ptr noundef nonnull align 8 dereferenceable(24) %174, ptr noundef nonnull align 4 dereferenceable(4) %19)
          to label %180 unwind label %192

180:                                              ; preds = %178
  call void @llvm.lifetime.end.p0(i64 4, ptr %19) #10
  br label %181

181:                                              ; preds = %180
  %182 = load i32, ptr %11, align 4, !tbaa !11
  %183 = add nsw i32 %182, 1
  store i32 %183, ptr %11, align 4, !tbaa !11
  br label %84, !llvm.loop !39

184:                                              ; preds = %137, %131, %123, %114, %99, %92
  %185 = landingpad { ptr, i32 }
          cleanup
  %186 = extractvalue { ptr, i32 } %185, 0
  store ptr %186, ptr %7, align 8
  %187 = extractvalue { ptr, i32 } %185, 1
  store i32 %187, ptr %8, align 4
  call void @llvm.lifetime.end.p0(i64 16, ptr %13) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr %12) #10
  br label %196

188:                                              ; preds = %160, %150
  %189 = landingpad { ptr, i32 }
          cleanup
  %190 = extractvalue { ptr, i32 } %189, 0
  store ptr %190, ptr %7, align 8
  %191 = extractvalue { ptr, i32 } %189, 1
  store i32 %191, ptr %8, align 4
  call void @llvm.lifetime.end.p0(i64 16, ptr %17) #10
  br label %196

192:                                              ; preds = %178, %166
  %193 = landingpad { ptr, i32 }
          cleanup
  %194 = extractvalue { ptr, i32 } %193, 0
  store ptr %194, ptr %7, align 8
  %195 = extractvalue { ptr, i32 } %193, 1
  store i32 %195, ptr %8, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %19) #10
  br label %196

196:                                              ; preds = %192, %188, %184
  call void @llvm.lifetime.end.p0(i64 4, ptr %11) #10
  br label %498

197:                                              ; preds = %87
  call void @llvm.lifetime.start.p0(i64 256, ptr %20) #10
  %198 = invoke noundef ptr @_ZN3JPH8BoxShapenwEm(i64 noundef 80)
          to label %199 unwind label %243

199:                                              ; preds = %197
  %200 = invoke { double, double } @_ZN3JPH4Vec310sReplicateEf(float noundef 2.000000e+00)
          to label %201 unwind label %247

201:                                              ; preds = %199
  %202 = getelementptr inbounds %"class.JPH::Vec3", ptr %21, i32 0, i32 0
  %203 = getelementptr inbounds %union.anon, ptr %202, i32 0, i32 0
  %204 = getelementptr inbounds { double, double }, ptr %203, i32 0, i32 0
  %205 = extractvalue { double, double } %200, 0
  store double %205, ptr %204, align 16
  %206 = getelementptr inbounds { double, double }, ptr %203, i32 0, i32 1
  %207 = extractvalue { double, double } %200, 1
  store double %207, ptr %206, align 8
  %208 = getelementptr inbounds { double, double }, ptr %21, i32 0, i32 0
  %209 = load double, ptr %208, align 16
  %210 = getelementptr inbounds { double, double }, ptr %21, i32 0, i32 1
  %211 = load double, ptr %210, align 8
  invoke void @_ZN3JPH8BoxShapeC2ENS_4Vec3EfPKNS_15PhysicsMaterialE(ptr noundef nonnull align 16 dereferenceable(80) %198, double %209, double %211, float noundef 0x3FA99999A0000000, ptr noundef null)
          to label %212 unwind label %247

212:                                              ; preds = %201
  %213 = invoke { double, double } @_ZN3JPH4Vec35sZeroEv()
          to label %214 unwind label %243

214:                                              ; preds = %212
  %215 = getelementptr inbounds %"class.JPH::Vec3", ptr %22, i32 0, i32 0
  %216 = getelementptr inbounds %union.anon, ptr %215, i32 0, i32 0
  %217 = getelementptr inbounds { double, double }, ptr %216, i32 0, i32 0
  %218 = extractvalue { double, double } %213, 0
  store double %218, ptr %217, align 16
  %219 = getelementptr inbounds { double, double }, ptr %216, i32 0, i32 1
  %220 = extractvalue { double, double } %213, 1
  store double %220, ptr %219, align 8
  %221 = invoke { double, double } @_ZN3JPH4Quat9sIdentityEv()
          to label %222 unwind label %243

222:                                              ; preds = %214
  %223 = getelementptr inbounds %"class.JPH::Quat", ptr %23, i32 0, i32 0
  %224 = getelementptr inbounds %"class.JPH::Vec4", ptr %223, i32 0, i32 0
  %225 = getelementptr inbounds %union.anon.4, ptr %224, i32 0, i32 0
  %226 = getelementptr inbounds { double, double }, ptr %225, i32 0, i32 0
  %227 = extractvalue { double, double } %221, 0
  store double %227, ptr %226, align 16
  %228 = getelementptr inbounds { double, double }, ptr %225, i32 0, i32 1
  %229 = extractvalue { double, double } %221, 1
  store double %229, ptr %228, align 8
  %230 = getelementptr inbounds { double, double }, ptr %22, i32 0, i32 0
  %231 = load double, ptr %230, align 16
  %232 = getelementptr inbounds { double, double }, ptr %22, i32 0, i32 1
  %233 = load double, ptr %232, align 8
  %234 = getelementptr inbounds { double, double }, ptr %23, i32 0, i32 0
  %235 = load double, ptr %234, align 16
  %236 = getelementptr inbounds { double, double }, ptr %23, i32 0, i32 1
  %237 = load double, ptr %236, align 8
  invoke void @_ZN3JPH20BodyCreationSettingsC2EPKNS_5ShapeENS_4Vec3ENS_4QuatENS_11EMotionTypeEt(ptr noundef nonnull align 16 dereferenceable(256) %20, ptr noundef %198, double %231, double %233, double %235, double %237, i8 noundef zeroext 2, i16 noundef zeroext 1)
          to label %238 unwind label %243

238:                                              ; preds = %222
  call void @llvm.lifetime.start.p0(i64 4, ptr %24) #10
  store i32 0, ptr %24, align 4, !tbaa !11
  br label %239

239:                                              ; preds = %269, %238
  %240 = load i32, ptr %24, align 4, !tbaa !11
  %241 = icmp sle i32 %240, 10
  br i1 %241, label %251, label %242

242:                                              ; preds = %239
  call void @llvm.lifetime.end.p0(i64 4, ptr %24) #10
  br label %285

243:                                              ; preds = %222, %214, %212, %197
  %244 = landingpad { ptr, i32 }
          cleanup
  %245 = extractvalue { ptr, i32 } %244, 0
  store ptr %245, ptr %7, align 8
  %246 = extractvalue { ptr, i32 } %244, 1
  store i32 %246, ptr %8, align 4
  br label %497

247:                                              ; preds = %201, %199
  %248 = landingpad { ptr, i32 }
          cleanup
  %249 = extractvalue { ptr, i32 } %248, 0
  store ptr %249, ptr %7, align 8
  %250 = extractvalue { ptr, i32 } %248, 1
  store i32 %250, ptr %8, align 4
  call void @_ZN3JPH8BoxShapedlEPv(ptr noundef %198) #10
  br label %497

251:                                              ; preds = %239
  call void @llvm.lifetime.start.p0(i64 16, ptr %25) #10
  %252 = load i32, ptr %24, align 4, !tbaa !11
  %253 = sitofp i32 %252 to float
  %254 = call float @llvm.fmuladd.f32(float %253, float 1.000000e+01, float -5.000000e+01)
  invoke void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %25, float noundef %254, float noundef 1.000000e+01, float noundef -5.000000e+01)
          to label %255 unwind label %272

255:                                              ; preds = %251
  %256 = getelementptr inbounds %"class.JPH::BodyCreationSettings", ptr %20, i32 0, i32 0
  call void @llvm.memcpy.p0.p0.i64(ptr align 16 %256, ptr align 16 %25, i64 16, i1 false), !tbaa.struct !31
  call void @llvm.lifetime.end.p0(i64 16, ptr %25) #10
  call void @llvm.lifetime.start.p0(i64 4, ptr %26) #10
  store float 0.000000e+00, ptr %26, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %27) #10
  %257 = load i32, ptr %24, align 4, !tbaa !11
  %258 = sitofp i32 %257 to float
  %259 = call float @llvm.fmuladd.f32(float 0xBFB99999A0000000, float %258, float 1.000000e+00)
  store float %259, ptr %27, align 4, !tbaa !9
  %260 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3maxIfERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4) %26, ptr noundef nonnull align 4 dereferenceable(4) %27)
          to label %261 unwind label %276

261:                                              ; preds = %255
  %262 = load float, ptr %260, align 4, !tbaa !9
  %263 = getelementptr inbounds %"class.JPH::BodyCreationSettings", ptr %20, i32 0, i32 17
  store float %262, ptr %263, align 4, !tbaa !13
  call void @llvm.lifetime.end.p0(i64 4, ptr %27) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %26) #10
  %264 = getelementptr inbounds %class.Test, ptr %52, i32 0, i32 3
  %265 = load ptr, ptr %264, align 8, !tbaa !33
  %266 = invoke i32 @_ZN3JPH13BodyInterface16CreateAndAddBodyERKNS_20BodyCreationSettingsENS_11EActivationE(ptr noundef nonnull align 8 dereferenceable(24) %265, ptr noundef nonnull align 16 dereferenceable(256) %20, i32 noundef 0)
          to label %267 unwind label %280

267:                                              ; preds = %261
  %268 = getelementptr inbounds %"class.JPH::BodyID", ptr %28, i32 0, i32 0
  store i32 %266, ptr %268, align 4
  br label %269

269:                                              ; preds = %267
  %270 = load i32, ptr %24, align 4, !tbaa !11
  %271 = add nsw i32 %270, 1
  store i32 %271, ptr %24, align 4, !tbaa !11
  br label %239, !llvm.loop !41

272:                                              ; preds = %251
  %273 = landingpad { ptr, i32 }
          cleanup
  %274 = extractvalue { ptr, i32 } %273, 0
  store ptr %274, ptr %7, align 8
  %275 = extractvalue { ptr, i32 } %273, 1
  store i32 %275, ptr %8, align 4
  call void @llvm.lifetime.end.p0(i64 16, ptr %25) #10
  br label %284

276:                                              ; preds = %255
  %277 = landingpad { ptr, i32 }
          cleanup
  %278 = extractvalue { ptr, i32 } %277, 0
  store ptr %278, ptr %7, align 8
  %279 = extractvalue { ptr, i32 } %277, 1
  store i32 %279, ptr %8, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %27) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %26) #10
  br label %284

280:                                              ; preds = %261
  %281 = landingpad { ptr, i32 }
          cleanup
  %282 = extractvalue { ptr, i32 } %281, 0
  store ptr %282, ptr %7, align 8
  %283 = extractvalue { ptr, i32 } %281, 1
  store i32 %283, ptr %8, align 4
  br label %284

284:                                              ; preds = %280, %276, %272
  call void @llvm.lifetime.end.p0(i64 4, ptr %24) #10
  br label %496

285:                                              ; preds = %242
  call void @llvm.lifetime.start.p0(i64 256, ptr %29) #10
  %286 = invoke noundef ptr @_ZN3JPH13CylinderShapenwEm(i64 noundef 56)
          to label %287 unwind label %411

287:                                              ; preds = %285
  invoke void @_ZN3JPH13CylinderShapeC1EfffPKNS_15PhysicsMaterialE(ptr noundef nonnull align 8 dereferenceable(56) %286, float noundef 6.000000e+00, float noundef 1.000000e+00, float noundef 0x3FA99999A0000000, ptr noundef null)
          to label %288 unwind label %415

288:                                              ; preds = %287
  invoke void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %30, float noundef -2.500000e+01, float noundef 1.000000e+00, float noundef -2.000000e+01)
          to label %289 unwind label %411

289:                                              ; preds = %288
  %290 = invoke { double, double } @_ZN3JPH4Vec36sAxisZEv()
          to label %291 unwind label %411

291:                                              ; preds = %289
  %292 = getelementptr inbounds %"class.JPH::Vec3", ptr %32, i32 0, i32 0
  %293 = getelementptr inbounds %union.anon, ptr %292, i32 0, i32 0
  %294 = getelementptr inbounds { double, double }, ptr %293, i32 0, i32 0
  %295 = extractvalue { double, double } %290, 0
  store double %295, ptr %294, align 16
  %296 = getelementptr inbounds { double, double }, ptr %293, i32 0, i32 1
  %297 = extractvalue { double, double } %290, 1
  store double %297, ptr %296, align 8
  %298 = getelementptr inbounds { double, double }, ptr %32, i32 0, i32 0
  %299 = load double, ptr %298, align 16
  %300 = getelementptr inbounds { double, double }, ptr %32, i32 0, i32 1
  %301 = load double, ptr %300, align 8
  %302 = invoke { double, double } @_ZN3JPH4Quat9sRotationENS_4Vec3Ef(double %299, double %301, float noundef 0x3FF921FB60000000)
          to label %303 unwind label %411

303:                                              ; preds = %291
  %304 = getelementptr inbounds %"class.JPH::Quat", ptr %31, i32 0, i32 0
  %305 = getelementptr inbounds %"class.JPH::Vec4", ptr %304, i32 0, i32 0
  %306 = getelementptr inbounds %union.anon.4, ptr %305, i32 0, i32 0
  %307 = getelementptr inbounds { double, double }, ptr %306, i32 0, i32 0
  %308 = extractvalue { double, double } %302, 0
  store double %308, ptr %307, align 16
  %309 = getelementptr inbounds { double, double }, ptr %306, i32 0, i32 1
  %310 = extractvalue { double, double } %302, 1
  store double %310, ptr %309, align 8
  %311 = getelementptr inbounds { double, double }, ptr %30, i32 0, i32 0
  %312 = load double, ptr %311, align 16
  %313 = getelementptr inbounds { double, double }, ptr %30, i32 0, i32 1
  %314 = load double, ptr %313, align 8
  %315 = getelementptr inbounds { double, double }, ptr %31, i32 0, i32 0
  %316 = load double, ptr %315, align 16
  %317 = getelementptr inbounds { double, double }, ptr %31, i32 0, i32 1
  %318 = load double, ptr %317, align 8
  invoke void @_ZN3JPH20BodyCreationSettingsC2EPKNS_5ShapeENS_4Vec3ENS_4QuatENS_11EMotionTypeEt(ptr noundef nonnull align 16 dereferenceable(256) %29, ptr noundef %286, double %312, double %314, double %316, double %318, i8 noundef zeroext 2, i16 noundef zeroext 1)
          to label %319 unwind label %411

319:                                              ; preds = %303
  %320 = getelementptr inbounds %class.Test, ptr %52, i32 0, i32 3
  %321 = load ptr, ptr %320, align 8, !tbaa !33
  %322 = invoke i32 @_ZN3JPH13BodyInterface16CreateAndAddBodyERKNS_20BodyCreationSettingsENS_11EActivationE(ptr noundef nonnull align 8 dereferenceable(24) %321, ptr noundef nonnull align 16 dereferenceable(256) %29, i32 noundef 0)
          to label %323 unwind label %419

323:                                              ; preds = %319
  %324 = getelementptr inbounds %"class.JPH::BodyID", ptr %33, i32 0, i32 0
  store i32 %322, ptr %324, align 4
  %325 = getelementptr inbounds %"class.JPH::BodyCreationSettings", ptr %29, i32 0, i32 0
  invoke void @_ZN3JPH4Vec34SetZEf(ptr noundef nonnull align 16 dereferenceable(16) %325, float noundef 2.000000e+01)
          to label %326 unwind label %419

326:                                              ; preds = %323
  %327 = getelementptr inbounds %class.Test, ptr %52, i32 0, i32 3
  %328 = load ptr, ptr %327, align 8, !tbaa !33
  %329 = invoke i32 @_ZN3JPH13BodyInterface16CreateAndAddBodyERKNS_20BodyCreationSettingsENS_11EActivationE(ptr noundef nonnull align 8 dereferenceable(24) %328, ptr noundef nonnull align 16 dereferenceable(256) %29, i32 noundef 0)
          to label %330 unwind label %419

330:                                              ; preds = %326
  %331 = getelementptr inbounds %"class.JPH::BodyID", ptr %34, i32 0, i32 0
  store i32 %329, ptr %331, align 4
  call void @llvm.lifetime.start.p0(i64 256, ptr %35) #10
  %332 = invoke noundef ptr @_ZN3JPH8BoxShapenwEm(i64 noundef 80)
          to label %333 unwind label %423

333:                                              ; preds = %330
  invoke void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %36, float noundef 5.000000e+00, float noundef 0x3FB99999A0000000, float noundef 2.500000e+01)
          to label %334 unwind label %427

334:                                              ; preds = %333
  %335 = getelementptr inbounds { double, double }, ptr %36, i32 0, i32 0
  %336 = load double, ptr %335, align 16
  %337 = getelementptr inbounds { double, double }, ptr %36, i32 0, i32 1
  %338 = load double, ptr %337, align 8
  invoke void @_ZN3JPH8BoxShapeC2ENS_4Vec3EfPKNS_15PhysicsMaterialE(ptr noundef nonnull align 16 dereferenceable(80) %332, double %336, double %338, float noundef 0.000000e+00, ptr noundef null)
          to label %339 unwind label %427

339:                                              ; preds = %334
  invoke void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %37, float noundef -2.500000e+01, float noundef 3.000000e+00, float noundef 0.000000e+00)
          to label %340 unwind label %423

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

342:                                              ; preds = %340
  %343 = getelementptr inbounds %"class.JPH::Quat", ptr %38, i32 0, i32 0
  %344 = getelementptr inbounds %"class.JPH::Vec4", ptr %343, i32 0, i32 0
  %345 = getelementptr inbounds %union.anon.4, ptr %344, i32 0, i32 0
  %346 = getelementptr inbounds { double, double }, ptr %345, i32 0, i32 0
  %347 = extractvalue { double, double } %341, 0
  store double %347, ptr %346, align 16
  %348 = getelementptr inbounds { double, double }, ptr %345, i32 0, i32 1
  %349 = extractvalue { double, double } %341, 1
  store double %349, ptr %348, align 8
  %350 = getelementptr inbounds { double, double }, ptr %37, i32 0, i32 0
  %351 = load double, ptr %350, align 16
  %352 = getelementptr inbounds { double, double }, ptr %37, i32 0, i32 1
  %353 = load double, ptr %352, align 8
  %354 = getelementptr inbounds { double, double }, ptr %38, i32 0, i32 0
  %355 = load double, ptr %354, align 16
  %356 = getelementptr inbounds { double, double }, ptr %38, i32 0, i32 1
  %357 = load double, ptr %356, align 8
  invoke void @_ZN3JPH20BodyCreationSettingsC2EPKNS_5ShapeENS_4Vec3ENS_4QuatENS_11EMotionTypeEt(ptr noundef nonnull align 16 dereferenceable(256) %35, ptr noundef %332, double %351, double %353, double %355, double %357, i8 noundef zeroext 2, i16 noundef zeroext 1)
          to label %358 unwind label %423

358:                                              ; preds = %342
  %359 = getelementptr inbounds %class.ConveyorBeltTest, ptr %52, i32 0, i32 2
  call void @llvm.lifetime.start.p0(i64 4, ptr %39) #10
  %360 = getelementptr inbounds %class.Test, ptr %52, i32 0, i32 3
  %361 = load ptr, ptr %360, align 8, !tbaa !33
  %362 = invoke i32 @_ZN3JPH13BodyInterface16CreateAndAddBodyERKNS_20BodyCreationSettingsENS_11EActivationE(ptr noundef nonnull align 8 dereferenceable(24) %361, ptr noundef nonnull align 16 dereferenceable(256) %35, i32 noundef 0)
          to label %363 unwind label %431

363:                                              ; preds = %358
  %364 = getelementptr inbounds %"class.JPH::BodyID", ptr %39, i32 0, i32 0
  store i32 %362, ptr %364, align 4
  invoke void @_ZN3JPH5ArrayINS_6BodyIDENS_12STLAllocatorIS1_EEE9push_backEOS1_(ptr noundef nonnull align 8 dereferenceable(24) %359, ptr noundef nonnull align 4 dereferenceable(4) %39)
          to label %365 unwind label %431

365:                                              ; preds = %363
  call void @llvm.lifetime.end.p0(i64 4, ptr %39) #10
  call void @llvm.lifetime.start.p0(i64 16, ptr %40) #10
  invoke void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %40, float noundef -2.500000e+01, float noundef 6.000000e+00, float noundef 1.500000e+01)
          to label %366 unwind label %435

366:                                              ; preds = %365
  %367 = getelementptr inbounds %"class.JPH::BodyCreationSettings", ptr %20, i32 0, i32 0
  call void @llvm.memcpy.p0.p0.i64(ptr align 16 %367, ptr align 16 %40, i64 16, i1 false), !tbaa.struct !31
  call void @llvm.lifetime.end.p0(i64 16, ptr %40) #10
  %368 = getelementptr inbounds %"class.JPH::BodyCreationSettings", ptr %20, i32 0, i32 17
  store float 1.000000e+00, ptr %368, align 4, !tbaa !13
  %369 = getelementptr inbounds %class.Test, ptr %52, i32 0, i32 3
  %370 = load ptr, ptr %369, align 8, !tbaa !33
  %371 = invoke i32 @_ZN3JPH13BodyInterface16CreateAndAddBodyERKNS_20BodyCreationSettingsENS_11EActivationE(ptr noundef nonnull align 8 dereferenceable(24) %370, ptr noundef nonnull align 16 dereferenceable(256) %20, i32 noundef 0)
          to label %372 unwind label %439

372:                                              ; preds = %366
  %373 = getelementptr inbounds %"class.JPH::BodyID", ptr %41, i32 0, i32 0
  store i32 %371, ptr %373, align 4
  call void @llvm.lifetime.start.p0(i64 256, ptr %42) #10
  %374 = invoke noundef ptr @_ZN3JPH8BoxShapenwEm(i64 noundef 80)
          to label %375 unwind label %443

375:                                              ; preds = %372
  invoke void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %43, float noundef 2.000000e+01, float noundef 0x3FB99999A0000000, float noundef 2.000000e+01)
          to label %376 unwind label %447

376:                                              ; preds = %375
  %377 = getelementptr inbounds { double, double }, ptr %43, i32 0, i32 0
  %378 = load double, ptr %377, align 16
  %379 = getelementptr inbounds { double, double }, ptr %43, i32 0, i32 1
  %380 = load double, ptr %379, align 8
  invoke void @_ZN3JPH8BoxShapeC2ENS_4Vec3EfPKNS_15PhysicsMaterialE(ptr noundef nonnull align 16 dereferenceable(80) %374, double %378, double %380, float noundef 0.000000e+00, ptr noundef null)
          to label %381 unwind label %447

381:                                              ; preds = %376
  invoke void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %44, float noundef 1.000000e+01, float noundef 3.000000e+00, float noundef 0.000000e+00)
          to label %382 unwind label %443

382:                                              ; preds = %381
  %383 = invoke { double, double } @_ZN3JPH4Quat9sIdentityEv()
          to label %384 unwind label %443

384:                                              ; preds = %382
  %385 = getelementptr inbounds %"class.JPH::Quat", ptr %45, i32 0, i32 0
  %386 = getelementptr inbounds %"class.JPH::Vec4", ptr %385, i32 0, i32 0
  %387 = getelementptr inbounds %union.anon.4, ptr %386, i32 0, i32 0
  %388 = getelementptr inbounds { double, double }, ptr %387, i32 0, i32 0
  %389 = extractvalue { double, double } %383, 0
  store double %389, ptr %388, align 16
  %390 = getelementptr inbounds { double, double }, ptr %387, i32 0, i32 1
  %391 = extractvalue { double, double } %383, 1
  store double %391, ptr %390, align 8
  %392 = getelementptr inbounds { double, double }, ptr %44, i32 0, i32 0
  %393 = load double, ptr %392, align 16
  %394 = getelementptr inbounds { double, double }, ptr %44, i32 0, i32 1
  %395 = load double, ptr %394, align 8
  %396 = getelementptr inbounds { double, double }, ptr %45, i32 0, i32 0
  %397 = load double, ptr %396, align 16
  %398 = getelementptr inbounds { double, double }, ptr %45, i32 0, i32 1
  %399 = load double, ptr %398, align 8
  invoke void @_ZN3JPH20BodyCreationSettingsC2EPKNS_5ShapeENS_4Vec3ENS_4QuatENS_11EMotionTypeEt(ptr noundef nonnull align 16 dereferenceable(256) %42, ptr noundef %374, double %393, double %395, double %397, double %399, i8 noundef zeroext 0, i16 noundef zeroext 0)
          to label %400 unwind label %443

400:                                              ; preds = %384
  call void @llvm.lifetime.start.p0(i64 4, ptr %46) #10
  %401 = getelementptr inbounds %class.Test, ptr %52, i32 0, i32 3
  %402 = load ptr, ptr %401, align 8, !tbaa !33
  %403 = invoke i32 @_ZN3JPH13BodyInterface16CreateAndAddBodyERKNS_20BodyCreationSettingsENS_11EActivationE(ptr noundef nonnull align 8 dereferenceable(24) %402, ptr noundef nonnull align 16 dereferenceable(256) %42, i32 noundef 0)
          to label %404 unwind label %451

404:                                              ; preds = %400
  %405 = getelementptr inbounds %"class.JPH::BodyID", ptr %46, i32 0, i32 0
  store i32 %403, ptr %405, align 4
  %406 = getelementptr inbounds %class.ConveyorBeltTest, ptr %52, i32 0, i32 3
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %406, ptr align 4 %46, i64 4, i1 false), !tbaa.struct !42
  call void @llvm.lifetime.end.p0(i64 4, ptr %46) #10
  call void @llvm.lifetime.start.p0(i64 4, ptr %47) #10
  store i32 0, ptr %47, align 4, !tbaa !11
  br label %407

407:                                              ; preds = %473, %404
  %408 = load i32, ptr %47, align 4, !tbaa !11
  %409 = icmp sle i32 %408, 6
  br i1 %409, label %455, label %410

410:                                              ; preds = %407
  call void @llvm.lifetime.end.p0(i64 4, ptr %47) #10
  br label %489

411:                                              ; preds = %303, %291, %289, %288, %285
  %412 = landingpad { ptr, i32 }
          cleanup
  %413 = extractvalue { ptr, i32 } %412, 0
  store ptr %413, ptr %7, align 8
  %414 = extractvalue { ptr, i32 } %412, 1
  store i32 %414, ptr %8, align 4
  br label %495

415:                                              ; preds = %287
  %416 = landingpad { ptr, i32 }
          cleanup
  %417 = extractvalue { ptr, i32 } %416, 0
  store ptr %417, ptr %7, align 8
  %418 = extractvalue { ptr, i32 } %416, 1
  store i32 %418, ptr %8, align 4
  call void @_ZN3JPH13CylinderShapedlEPv(ptr noundef %286) #10
  br label %495

419:                                              ; preds = %326, %323, %319
  %420 = landingpad { ptr, i32 }
          cleanup
  %421 = extractvalue { ptr, i32 } %420, 0
  store ptr %421, ptr %7, align 8
  %422 = extractvalue { ptr, i32 } %420, 1
  store i32 %422, ptr %8, align 4
  br label %494

423:                                              ; preds = %342, %340, %339, %330
  %424 = landingpad { ptr, i32 }
          cleanup
  %425 = extractvalue { ptr, i32 } %424, 0
  store ptr %425, ptr %7, align 8
  %426 = extractvalue { ptr, i32 } %424, 1
  store i32 %426, ptr %8, align 4
  br label %493

427:                                              ; preds = %334, %333
  %428 = landingpad { ptr, i32 }
          cleanup
  %429 = extractvalue { ptr, i32 } %428, 0
  store ptr %429, ptr %7, align 8
  %430 = extractvalue { ptr, i32 } %428, 1
  store i32 %430, ptr %8, align 4
  call void @_ZN3JPH8BoxShapedlEPv(ptr noundef %332) #10
  br label %493

431:                                              ; preds = %363, %358
  %432 = landingpad { ptr, i32 }
          cleanup
  %433 = extractvalue { ptr, i32 } %432, 0
  store ptr %433, ptr %7, align 8
  %434 = extractvalue { ptr, i32 } %432, 1
  store i32 %434, ptr %8, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %39) #10
  br label %492

435:                                              ; preds = %365
  %436 = landingpad { ptr, i32 }
          cleanup
  %437 = extractvalue { ptr, i32 } %436, 0
  store ptr %437, ptr %7, align 8
  %438 = extractvalue { ptr, i32 } %436, 1
  store i32 %438, ptr %8, align 4
  call void @llvm.lifetime.end.p0(i64 16, ptr %40) #10
  br label %492

439:                                              ; preds = %366
  %440 = landingpad { ptr, i32 }
          cleanup
  %441 = extractvalue { ptr, i32 } %440, 0
  store ptr %441, ptr %7, align 8
  %442 = extractvalue { ptr, i32 } %440, 1
  store i32 %442, ptr %8, align 4
  br label %492

443:                                              ; preds = %384, %382, %381, %372
  %444 = landingpad { ptr, i32 }
          cleanup
  %445 = extractvalue { ptr, i32 } %444, 0
  store ptr %445, ptr %7, align 8
  %446 = extractvalue { ptr, i32 } %444, 1
  store i32 %446, ptr %8, align 4
  br label %491

447:                                              ; preds = %376, %375
  %448 = landingpad { ptr, i32 }
          cleanup
  %449 = extractvalue { ptr, i32 } %448, 0
  store ptr %449, ptr %7, align 8
  %450 = extractvalue { ptr, i32 } %448, 1
  store i32 %450, ptr %8, align 4
  call void @_ZN3JPH8BoxShapedlEPv(ptr noundef %374) #10
  br label %491

451:                                              ; preds = %400
  %452 = landingpad { ptr, i32 }
          cleanup
  %453 = extractvalue { ptr, i32 } %452, 0
  store ptr %453, ptr %7, align 8
  %454 = extractvalue { ptr, i32 } %452, 1
  store i32 %454, ptr %8, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %46) #10
  br label %490

455:                                              ; preds = %407
  call void @llvm.lifetime.start.p0(i64 16, ptr %48) #10
  %456 = load i32, ptr %47, align 4, !tbaa !11
  %457 = sitofp i32 %456 to float
  %458 = call float @llvm.fmuladd.f32(float 5.000000e+00, float %457, float -1.500000e+01)
  invoke void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %48, float noundef 1.000000e+01, float noundef 1.000000e+01, float noundef %458)
          to label %459 unwind label %476

459:                                              ; preds = %455
  %460 = getelementptr inbounds %"class.JPH::BodyCreationSettings", ptr %20, i32 0, i32 0
  call void @llvm.memcpy.p0.p0.i64(ptr align 16 %460, ptr align 16 %48, i64 16, i1 false), !tbaa.struct !31
  call void @llvm.lifetime.end.p0(i64 16, ptr %48) #10
  call void @llvm.lifetime.start.p0(i64 4, ptr %49) #10
  store float 0.000000e+00, ptr %49, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %50) #10
  %461 = load i32, ptr %47, align 4, !tbaa !11
  %462 = sitofp i32 %461 to float
  %463 = call float @llvm.fmuladd.f32(float 0xBFB99999A0000000, float %462, float 1.000000e+00)
  store float %463, ptr %50, align 4, !tbaa !9
  %464 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3maxIfERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4) %49, ptr noundef nonnull align 4 dereferenceable(4) %50)
          to label %465 unwind label %480

465:                                              ; preds = %459
  %466 = load float, ptr %464, align 4, !tbaa !9
  %467 = getelementptr inbounds %"class.JPH::BodyCreationSettings", ptr %20, i32 0, i32 17
  store float %466, ptr %467, align 4, !tbaa !13
  call void @llvm.lifetime.end.p0(i64 4, ptr %50) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %49) #10
  %468 = getelementptr inbounds %class.Test, ptr %52, i32 0, i32 3
  %469 = load ptr, ptr %468, align 8, !tbaa !33
  %470 = invoke i32 @_ZN3JPH13BodyInterface16CreateAndAddBodyERKNS_20BodyCreationSettingsENS_11EActivationE(ptr noundef nonnull align 8 dereferenceable(24) %469, ptr noundef nonnull align 16 dereferenceable(256) %20, i32 noundef 0)
          to label %471 unwind label %484

471:                                              ; preds = %465
  %472 = getelementptr inbounds %"class.JPH::BodyID", ptr %51, i32 0, i32 0
  store i32 %470, ptr %472, align 4
  br label %473

473:                                              ; preds = %471
  %474 = load i32, ptr %47, align 4, !tbaa !11
  %475 = add nsw i32 %474, 1
  store i32 %475, ptr %47, align 4, !tbaa !11
  br label %407, !llvm.loop !43

476:                                              ; preds = %455
  %477 = landingpad { ptr, i32 }
          cleanup
  %478 = extractvalue { ptr, i32 } %477, 0
  store ptr %478, ptr %7, align 8
  %479 = extractvalue { ptr, i32 } %477, 1
  store i32 %479, ptr %8, align 4
  call void @llvm.lifetime.end.p0(i64 16, ptr %48) #10
  br label %488

480:                                              ; preds = %459
  %481 = landingpad { ptr, i32 }
          cleanup
  %482 = extractvalue { ptr, i32 } %481, 0
  store ptr %482, ptr %7, align 8
  %483 = extractvalue { ptr, i32 } %481, 1
  store i32 %483, ptr %8, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %50) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %49) #10
  br label %488

484:                                              ; preds = %465
  %485 = landingpad { ptr, i32 }
          cleanup
  %486 = extractvalue { ptr, i32 } %485, 0
  store ptr %486, ptr %7, align 8
  %487 = extractvalue { ptr, i32 } %485, 1
  store i32 %487, ptr %8, align 4
  br label %488

488:                                              ; preds = %484, %480, %476
  call void @llvm.lifetime.end.p0(i64 4, ptr %47) #10
  br label %490

489:                                              ; preds = %410
  call void @_ZN3JPH20BodyCreationSettingsD2Ev(ptr noundef nonnull align 16 dereferenceable(256) %42) #10
  call void @llvm.lifetime.end.p0(i64 256, ptr %42) #10
  call void @_ZN3JPH20BodyCreationSettingsD2Ev(ptr noundef nonnull align 16 dereferenceable(256) %35) #10
  call void @llvm.lifetime.end.p0(i64 256, ptr %35) #10
  call void @_ZN3JPH20BodyCreationSettingsD2Ev(ptr noundef nonnull align 16 dereferenceable(256) %29) #10
  call void @llvm.lifetime.end.p0(i64 256, ptr %29) #10
  call void @_ZN3JPH20BodyCreationSettingsD2Ev(ptr noundef nonnull align 16 dereferenceable(256) %20) #10
  call void @llvm.lifetime.end.p0(i64 256, ptr %20) #10
  call void @_ZN3JPH20BodyCreationSettingsD2Ev(ptr noundef nonnull align 16 dereferenceable(256) %5) #10
  call void @llvm.lifetime.end.p0(i64 256, ptr %5) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %4) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %3) #10
  ret void

490:                                              ; preds = %488, %451
  call void @_ZN3JPH20BodyCreationSettingsD2Ev(ptr noundef nonnull align 16 dereferenceable(256) %42) #10
  br label %491

491:                                              ; preds = %490, %447, %443
  call void @llvm.lifetime.end.p0(i64 256, ptr %42) #10
  br label %492

492:                                              ; preds = %491, %439, %435, %431
  call void @_ZN3JPH20BodyCreationSettingsD2Ev(ptr noundef nonnull align 16 dereferenceable(256) %35) #10
  br label %493

493:                                              ; preds = %492, %427, %423
  call void @llvm.lifetime.end.p0(i64 256, ptr %35) #10
  br label %494

494:                                              ; preds = %493, %419
  call void @_ZN3JPH20BodyCreationSettingsD2Ev(ptr noundef nonnull align 16 dereferenceable(256) %29) #10
  br label %495

495:                                              ; preds = %494, %415, %411
  call void @llvm.lifetime.end.p0(i64 256, ptr %29) #10
  br label %496

496:                                              ; preds = %495, %284
  call void @_ZN3JPH20BodyCreationSettingsD2Ev(ptr noundef nonnull align 16 dereferenceable(256) %20) #10
  br label %497

497:                                              ; preds = %496, %247, %243
  call void @llvm.lifetime.end.p0(i64 256, ptr %20) #10
  br label %498

498:                                              ; preds = %497, %196
  call void @_ZN3JPH20BodyCreationSettingsD2Ev(ptr noundef nonnull align 16 dereferenceable(256) %5) #10
  br label %499

499:                                              ; preds = %498, %88
  call void @llvm.lifetime.end.p0(i64 256, ptr %5) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %4) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %3) #10
  br label %500

500:                                              ; preds = %499
  %501 = load ptr, ptr %7, align 8
  %502 = load i32, ptr %8, align 4
  %503 = insertvalue { ptr, i32 } poison, ptr %501, 0
  %504 = insertvalue { ptr, i32 } %503, i32 %502, 1
  resume { ptr, i32 } %504
}

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 @_ZN3JPH8BoxShapenwEm(i64 noundef) #3 align 2

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_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) #5 align 2

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

; 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: alwaysinline mustprogress uwtable
declare dso_local { double, double } @_ZN3JPH4Quat9sRotationENS_4Vec3Ef(double, double, float noundef) #3 align 2

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

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

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

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

; 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) #6

; 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 @_ZN3JPH5ArrayINS_6BodyIDENS_12STLAllocatorIS1_EEE9push_backEOS1_(ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 4 dereferenceable(4)) #7 align 2

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

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

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3maxIfERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4), ptr noundef nonnull align 4 dereferenceable(4)) #9

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

declare void @_ZN3JPH13CylinderShapeC1EfffPKNS_15PhysicsMaterialE(ptr noundef nonnull align 8 dereferenceable(56), float noundef, float noundef, float noundef, ptr noundef) unnamed_addr #2

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

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

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

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

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


; Optimized IR (opt -passes='default<O3>'):
target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-i128:128-f80:128-n8:16:32:64-S128"
target triple = "x86_64-unknown-linux-gnu"

%"class.JPH::BodyCreationSettings" = type { %"class.JPH::Vec3", %"class.JPH::Quat", %"class.JPH::Vec3", %"class.JPH::Vec3", i64, i16, %"class.JPH::CollisionGroup", i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, float, float, float, float, float, float, float, i32, i32, i8, float, %"class.JPH::MassProperties", %"class.JPH::RefConst.6", %"class.JPH::RefConst" }
%"class.JPH::Quat" = type { %"class.JPH::Vec4" }
%"class.JPH::Vec4" = type { %union.anon.4 }
%union.anon.4 = type { <4 x float> }
%"class.JPH::Vec3" = type { %union.anon }
%union.anon = type { <4 x float> }
%"class.JPH::CollisionGroup" = type { %"class.JPH::RefConst.5", i32, i32 }
%"class.JPH::RefConst.5" = type { ptr }
%"class.JPH::MassProperties" = type { float, %"class.JPH::Mat44" }
%"class.JPH::Mat44" = type { [4 x %"class.JPH::Vec4"] }
%"class.JPH::RefConst.6" = type { ptr }
%"class.JPH::RefConst" = type { ptr }
%"class.JPH::BodyID" = type { i32 }

; 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 @_ZN16ConveyorBeltTest10InitializeEv(ptr noundef nonnull align 8 dereferenceable(148) %0) unnamed_addr #1 align 2 personality ptr @__gxx_personality_v0 {
  %2 = alloca %"class.JPH::BodyCreationSettings", align 16
  %3 = alloca %"class.JPH::Vec3", align 16
  %4 = alloca %"class.JPH::Quat", align 16
  %5 = alloca %"class.JPH::Vec3", align 16
  %6 = alloca %"class.JPH::BodyID", align 4
  %7 = alloca %"class.JPH::BodyCreationSettings", align 16
  %8 = alloca %"class.JPH::Vec3", align 16
  %9 = alloca float, align 4
  %10 = alloca float, align 4
  %11 = alloca %"class.JPH::BodyCreationSettings", align 16
  %12 = alloca %"class.JPH::Vec3", align 16
  %13 = alloca %"class.JPH::BodyCreationSettings", align 16
  %14 = alloca %"class.JPH::Vec3", align 16
  %15 = alloca %"class.JPH::Vec3", align 16
  %16 = alloca %"class.JPH::BodyID", align 4
  %17 = alloca %"class.JPH::Vec3", align 16
  %18 = alloca %"class.JPH::BodyCreationSettings", align 16
  %19 = alloca %"class.JPH::Vec3", align 16
  %20 = alloca %"class.JPH::Vec3", align 16
  %21 = alloca %"class.JPH::Vec3", align 16
  %22 = alloca float, align 4
  %23 = alloca float, align 4
  %24 = tail call noundef nonnull align 16 dereferenceable(122) ptr @_ZN4Test11CreateFloorEf(ptr noundef nonnull align 8 dereferenceable(112) %0, float noundef 2.000000e+02)
  call void @llvm.lifetime.start.p0(i64 256, ptr nonnull %2) #9
  %25 = tail call noundef ptr @_ZN3JPH8BoxShapenwEm(i64 noundef 80)
  invoke void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %3, float noundef 1.000000e+01, float noundef 0x3FB99999A0000000, float noundef 5.000000e+01)
          to label %26 unwind label %44

26:                                               ; preds = %1
  %27 = load double, ptr %3, align 16
  %28 = getelementptr inbounds i8, ptr %3, i64 8
  %29 = load double, ptr %28, align 8
  invoke void @_ZN3JPH8BoxShapeC2ENS_4Vec3EfPKNS_15PhysicsMaterialE(ptr noundef nonnull align 16 dereferenceable(80) %25, double %27, double %29, float noundef 0x3FA99999A0000000, ptr noundef null)
          to label %30 unwind label %44

30:                                               ; preds = %26
  %31 = call { double, double } @_ZN3JPH4Vec35sZeroEv()
  %32 = extractvalue { double, double } %31, 0
  %33 = extractvalue { double, double } %31, 1
  %34 = call { double, double } @_ZN3JPH4Quat9sIdentityEv()
  %35 = extractvalue { double, double } %34, 0
  %36 = extractvalue { double, double } %34, 1
  call void @_ZN3JPH20BodyCreationSettingsC2EPKNS_5ShapeENS_4Vec3ENS_4QuatENS_11EMotionTypeEt(ptr noundef nonnull align 16 dereferenceable(256) %2, ptr noundef nonnull %25, double %32, double %33, double %35, double %36, i8 noundef zeroext 0, i16 noundef zeroext 0)
  %37 = getelementptr inbounds i8, ptr %2, i64 108
  %38 = getelementptr inbounds i8, ptr %4, i64 8
  %39 = getelementptr inbounds i8, ptr %2, i64 16
  %.sroa.534.0..sroa_idx = getelementptr inbounds i8, ptr %2, i64 24
  %40 = getelementptr inbounds i8, ptr %5, i64 8
  %.sroa.5.0..sroa_idx = getelementptr inbounds i8, ptr %2, i64 8
  %41 = getelementptr inbounds i8, ptr %0, i64 24
  %42 = getelementptr inbounds i8, ptr %0, i64 120
  store float 2.500000e-01, ptr %37, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %4) #9
  %43 = invoke { double, double } @_ZN3JPH4Vec36sAxisYEv()
          to label %46 unwind label %174

44:                                               ; preds = %26, %1
  %45 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3JPH8BoxShapedlEPv(ptr noundef %25) #9
  br label %412

46:                                               ; preds = %30
  %47 = extractvalue { double, double } %43, 0
  %48 = extractvalue { double, double } %43, 1
  %49 = invoke { double, double } @_ZN3JPH4Quat9sRotationENS_4Vec3Ef(double %47, double %48, float noundef 0.000000e+00)
          to label %50 unwind label %174

50:                                               ; preds = %46
  %51 = extractvalue { double, double } %49, 0
  store double %51, ptr %4, align 16
  %52 = extractvalue { double, double } %49, 1
  store double %52, ptr %38, align 8
  %53 = invoke { double, double } @_ZN3JPH4Vec36sAxisXEv()
          to label %54 unwind label %174

54:                                               ; preds = %50
  %55 = extractvalue { double, double } %53, 0
  %56 = extractvalue { double, double } %53, 1
  %57 = call noundef float @_ZN3JPH16DegreesToRadiansEf(float noundef 1.000000e+00)
  %58 = invoke { double, double } @_ZN3JPH4Quat9sRotationENS_4Vec3Ef(double %55, double %56, float noundef %57)
          to label %59 unwind label %174

59:                                               ; preds = %54
  %60 = extractvalue { double, double } %58, 0
  %61 = extractvalue { double, double } %58, 1
  %62 = invoke { double, double } @_ZNK3JPH4QuatmlES0_(ptr noundef nonnull align 16 dereferenceable(16) %4, double %60, double %61)
          to label %63 unwind label %174

63:                                               ; preds = %59
  %64 = extractvalue { double, double } %62, 0
  %65 = extractvalue { double, double } %62, 1
  store double %64, ptr %39, align 16
  store double %65, ptr %.sroa.534.0..sroa_idx, align 8, !tbaa !28
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %4) #9
  invoke void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %5, float noundef 5.000000e+01, float noundef 6.000000e+00, float noundef 1.000000e+01)
          to label %66 unwind label %176

66:                                               ; preds = %63
  %67 = load double, ptr %5, align 16
  %68 = load double, ptr %40, align 8
  %69 = invoke { double, double } @_ZNK3JPH4QuatmlENS_4Vec3E(ptr noundef nonnull align 16 dereferenceable(16) %39, double %67, double %68)
          to label %70 unwind label %176

70:                                               ; preds = %66
  %71 = extractvalue { double, double } %69, 0
  %72 = extractvalue { double, double } %69, 1
  store double %71, ptr %2, align 16
  store double %72, ptr %.sroa.5.0..sroa_idx, align 8, !tbaa !28
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %6) #9
  %73 = load ptr, ptr %41, align 8, !tbaa !29
  %74 = invoke i32 @_ZN3JPH13BodyInterface16CreateAndAddBodyERKNS_20BodyCreationSettingsENS_11EActivationE(ptr noundef nonnull align 8 dereferenceable(24) %73, ptr noundef nonnull align 16 dereferenceable(256) %2, i32 noundef 1)
          to label %75 unwind label %178

75:                                               ; preds = %70
  store i32 %74, ptr %6, align 4
  invoke void @_ZN3JPH5ArrayINS_6BodyIDENS_12STLAllocatorIS1_EEE9push_backEOS1_(ptr noundef nonnull align 8 dereferenceable(24) %42, ptr noundef nonnull align 4 dereferenceable(4) %6)
          to label %76 unwind label %178

76:                                               ; preds = %75
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %6) #9
  store float 5.000000e-01, ptr %37, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %4) #9
  %77 = invoke { double, double } @_ZN3JPH4Vec36sAxisYEv()
          to label %78 unwind label %174

78:                                               ; preds = %76
  %79 = extractvalue { double, double } %77, 0
  %80 = extractvalue { double, double } %77, 1
  %81 = invoke { double, double } @_ZN3JPH4Quat9sRotationENS_4Vec3Ef(double %79, double %80, float noundef 0x3FF921FB60000000)
          to label %82 unwind label %174

82:                                               ; preds = %78
  %83 = extractvalue { double, double } %81, 0
  store double %83, ptr %4, align 16
  %84 = extractvalue { double, double } %81, 1
  store double %84, ptr %38, align 8
  %85 = invoke { double, double } @_ZN3JPH4Vec36sAxisXEv()
          to label %86 unwind label %174

86:                                               ; preds = %82
  %87 = extractvalue { double, double } %85, 0
  %88 = extractvalue { double, double } %85, 1
  %89 = call noundef float @_ZN3JPH16DegreesToRadiansEf(float noundef 1.000000e+00)
  %90 = invoke { double, double } @_ZN3JPH4Quat9sRotationENS_4Vec3Ef(double %87, double %88, float noundef %89)
          to label %91 unwind label %174

91:                                               ; preds = %86
  %92 = extractvalue { double, double } %90, 0
  %93 = extractvalue { double, double } %90, 1
  %94 = invoke { double, double } @_ZNK3JPH4QuatmlES0_(ptr noundef nonnull align 16 dereferenceable(16) %4, double %92, double %93)
          to label %95 unwind label %174

95:                                               ; preds = %91
  %96 = extractvalue { double, double } %94, 0
  %97 = extractvalue { double, double } %94, 1
  store double %96, ptr %39, align 16
  store double %97, ptr %.sroa.534.0..sroa_idx, align 8, !tbaa !28
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %4) #9
  invoke void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %5, float noundef 5.000000e+01, float noundef 6.000000e+00, float noundef 1.000000e+01)
          to label %98 unwind label %176

98:                                               ; preds = %95
  %99 = load double, ptr %5, align 16
  %100 = load double, ptr %40, align 8
  %101 = invoke { double, double } @_ZNK3JPH4QuatmlENS_4Vec3E(ptr noundef nonnull align 16 dereferenceable(16) %39, double %99, double %100)
          to label %102 unwind label %176

102:                                              ; preds = %98
  %103 = extractvalue { double, double } %101, 0
  %104 = extractvalue { double, double } %101, 1
  store double %103, ptr %2, align 16
  store double %104, ptr %.sroa.5.0..sroa_idx, align 8, !tbaa !28
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %6) #9
  %105 = load ptr, ptr %41, align 8, !tbaa !29
  %106 = invoke i32 @_ZN3JPH13BodyInterface16CreateAndAddBodyERKNS_20BodyCreationSettingsENS_11EActivationE(ptr noundef nonnull align 8 dereferenceable(24) %105, ptr noundef nonnull align 16 dereferenceable(256) %2, i32 noundef 1)
          to label %107 unwind label %178

107:                                              ; preds = %102
  store i32 %106, ptr %6, align 4
  invoke void @_ZN3JPH5ArrayINS_6BodyIDENS_12STLAllocatorIS1_EEE9push_backEOS1_(ptr noundef nonnull align 8 dereferenceable(24) %42, ptr noundef nonnull align 4 dereferenceable(4) %6)
          to label %108 unwind label %178

108:                                              ; preds = %107
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %6) #9
  store float 7.500000e-01, ptr %37, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %4) #9
  %109 = invoke { double, double } @_ZN3JPH4Vec36sAxisYEv()
          to label %110 unwind label %174

110:                                              ; preds = %108
  %111 = extractvalue { double, double } %109, 0
  %112 = extractvalue { double, double } %109, 1
  %113 = invoke { double, double } @_ZN3JPH4Quat9sRotationENS_4Vec3Ef(double %111, double %112, float noundef 0x400921FB60000000)
          to label %114 unwind label %174

114:                                              ; preds = %110
  %115 = extractvalue { double, double } %113, 0
  store double %115, ptr %4, align 16
  %116 = extractvalue { double, double } %113, 1
  store double %116, ptr %38, align 8
  %117 = invoke { double, double } @_ZN3JPH4Vec36sAxisXEv()
          to label %118 unwind label %174

118:                                              ; preds = %114
  %119 = extractvalue { double, double } %117, 0
  %120 = extractvalue { double, double } %117, 1
  %121 = call noundef float @_ZN3JPH16DegreesToRadiansEf(float noundef 1.000000e+00)
  %122 = invoke { double, double } @_ZN3JPH4Quat9sRotationENS_4Vec3Ef(double %119, double %120, float noundef %121)
          to label %123 unwind label %174

123:                                              ; preds = %118
  %124 = extractvalue { double, double } %122, 0
  %125 = extractvalue { double, double } %122, 1
  %126 = invoke { double, double } @_ZNK3JPH4QuatmlES0_(ptr noundef nonnull align 16 dereferenceable(16) %4, double %124, double %125)
          to label %127 unwind label %174

127:                                              ; preds = %123
  %128 = extractvalue { double, double } %126, 0
  %129 = extractvalue { double, double } %126, 1
  store double %128, ptr %39, align 16
  store double %129, ptr %.sroa.534.0..sroa_idx, align 8, !tbaa !28
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %4) #9
  invoke void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %5, float noundef 5.000000e+01, float noundef 6.000000e+00, float noundef 1.000000e+01)
          to label %130 unwind label %176

130:                                              ; preds = %127
  %131 = load double, ptr %5, align 16
  %132 = load double, ptr %40, align 8
  %133 = invoke { double, double } @_ZNK3JPH4QuatmlENS_4Vec3E(ptr noundef nonnull align 16 dereferenceable(16) %39, double %131, double %132)
          to label %134 unwind label %176

134:                                              ; preds = %130
  %135 = extractvalue { double, double } %133, 0
  %136 = extractvalue { double, double } %133, 1
  store double %135, ptr %2, align 16
  store double %136, ptr %.sroa.5.0..sroa_idx, align 8, !tbaa !28
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %6) #9
  %137 = load ptr, ptr %41, align 8, !tbaa !29
  %138 = invoke i32 @_ZN3JPH13BodyInterface16CreateAndAddBodyERKNS_20BodyCreationSettingsENS_11EActivationE(ptr noundef nonnull align 8 dereferenceable(24) %137, ptr noundef nonnull align 16 dereferenceable(256) %2, i32 noundef 1)
          to label %139 unwind label %178

139:                                              ; preds = %134
  store i32 %138, ptr %6, align 4
  invoke void @_ZN3JPH5ArrayINS_6BodyIDENS_12STLAllocatorIS1_EEE9push_backEOS1_(ptr noundef nonnull align 8 dereferenceable(24) %42, ptr noundef nonnull align 4 dereferenceable(4) %6)
          to label %140 unwind label %178

140:                                              ; preds = %139
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %6) #9
  store float 1.000000e+00, ptr %37, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %4) #9
  %141 = invoke { double, double } @_ZN3JPH4Vec36sAxisYEv()
          to label %142 unwind label %174

142:                                              ; preds = %140
  %143 = extractvalue { double, double } %141, 0
  %144 = extractvalue { double, double } %141, 1
  %145 = invoke { double, double } @_ZN3JPH4Quat9sRotationENS_4Vec3Ef(double %143, double %144, float noundef 0x4012D97C80000000)
          to label %146 unwind label %174

146:                                              ; preds = %142
  %147 = extractvalue { double, double } %145, 0
  store double %147, ptr %4, align 16
  %148 = extractvalue { double, double } %145, 1
  store double %148, ptr %38, align 8
  %149 = invoke { double, double } @_ZN3JPH4Vec36sAxisXEv()
          to label %150 unwind label %174

150:                                              ; preds = %146
  %151 = extractvalue { double, double } %149, 0
  %152 = extractvalue { double, double } %149, 1
  %153 = call noundef float @_ZN3JPH16DegreesToRadiansEf(float noundef 1.000000e+00)
  %154 = invoke { double, double } @_ZN3JPH4Quat9sRotationENS_4Vec3Ef(double %151, double %152, float noundef %153)
          to label %155 unwind label %174

155:                                              ; preds = %150
  %156 = extractvalue { double, double } %154, 0
  %157 = extractvalue { double, double } %154, 1
  %158 = invoke { double, double } @_ZNK3JPH4QuatmlES0_(ptr noundef nonnull align 16 dereferenceable(16) %4, double %156, double %157)
          to label %159 unwind label %174

159:                                              ; preds = %155
  %160 = extractvalue { double, double } %158, 0
  %161 = extractvalue { double, double } %158, 1
  store double %160, ptr %39, align 16
  store double %161, ptr %.sroa.534.0..sroa_idx, align 8, !tbaa !28
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %4) #9
  invoke void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %5, float noundef 5.000000e+01, float noundef 6.000000e+00, float noundef 1.000000e+01)
          to label %162 unwind label %176

162:                                              ; preds = %159
  %163 = load double, ptr %5, align 16
  %164 = load double, ptr %40, align 8
  %165 = invoke { double, double } @_ZNK3JPH4QuatmlENS_4Vec3E(ptr noundef nonnull align 16 dereferenceable(16) %39, double %163, double %164)
          to label %166 unwind label %176

166:                                              ; preds = %162
  %167 = extractvalue { double, double } %165, 0
  %168 = extractvalue { double, double } %165, 1
  store double %167, ptr %2, align 16
  store double %168, ptr %.sroa.5.0..sroa_idx, align 8, !tbaa !28
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %6) #9
  %169 = load ptr, ptr %41, align 8, !tbaa !29
  %170 = invoke i32 @_ZN3JPH13BodyInterface16CreateAndAddBodyERKNS_20BodyCreationSettingsENS_11EActivationE(ptr noundef nonnull align 8 dereferenceable(24) %169, ptr noundef nonnull align 16 dereferenceable(256) %2, i32 noundef 1)
          to label %171 unwind label %178

171:                                              ; preds = %166
  store i32 %170, ptr %6, align 4
  invoke void @_ZN3JPH5ArrayINS_6BodyIDENS_12STLAllocatorIS1_EEE9push_backEOS1_(ptr noundef nonnull align 8 dereferenceable(24) %42, ptr noundef nonnull align 4 dereferenceable(4) %6)
          to label %172 unwind label %178

172:                                              ; preds = %171
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %6) #9
  call void @llvm.lifetime.start.p0(i64 256, ptr nonnull %7) #9
  %173 = invoke noundef ptr @_ZN3JPH8BoxShapenwEm(i64 noundef 80)
          to label %180 unwind label %195

174:                                              ; preds = %155, %150, %146, %142, %140, %123, %118, %114, %110, %108, %91, %86, %82, %78, %76, %59, %54, %50, %46, %30
  %175 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %4) #9
  br label %411

176:                                              ; preds = %162, %159, %130, %127, %98, %95, %66, %63
  %177 = landingpad { ptr, i32 }
          cleanup
  br label %411

178:                                              ; preds = %171, %166, %139, %134, %107, %102, %75, %70
  %179 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %6) #9
  br label %411

180:                                              ; preds = %172
  %181 = invoke { double, double } @_ZN3JPH4Vec310sReplicateEf(float noundef 2.000000e+00)
          to label %182 unwind label %197

182:                                              ; preds = %180
  %183 = extractvalue { double, double } %181, 0
  %184 = extractvalue { double, double } %181, 1
  invoke void @_ZN3JPH8BoxShapeC2ENS_4Vec3EfPKNS_15PhysicsMaterialE(ptr noundef nonnull align 16 dereferenceable(80) %173, double %183, double %184, float noundef 0x3FA99999A0000000, ptr noundef null)
          to label %185 unwind label %197

185:                                              ; preds = %182
  %186 = invoke { double, double } @_ZN3JPH4Vec35sZeroEv()
          to label %187 unwind label %195

187:                                              ; preds = %185
  %188 = invoke { double, double } @_ZN3JPH4Quat9sIdentityEv()
          to label %189 unwind label %195

189:                                              ; preds = %187
  %190 = extractvalue { double, double } %186, 1
  %191 = extractvalue { double, double } %186, 0
  %192 = extractvalue { double, double } %188, 0
  %193 = extractvalue { double, double } %188, 1
  invoke void @_ZN3JPH20BodyCreationSettingsC2EPKNS_5ShapeENS_4Vec3ENS_4QuatENS_11EMotionTypeEt(ptr noundef nonnull align 16 dereferenceable(256) %7, ptr noundef nonnull %173, double %191, double %190, double %192, double %193, i8 noundef zeroext 2, i16 noundef zeroext 1)
          to label %.preheader unwind label %195

.preheader:                                       ; preds = %189
  %194 = getelementptr inbounds i8, ptr %7, i64 108
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %8) #9
  invoke void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %8, float noundef -5.000000e+01, float noundef 1.000000e+01, float noundef -5.000000e+01)
          to label %199 unwind label %266

195:                                              ; preds = %189, %187, %185, %172
  %196 = landingpad { ptr, i32 }
          cleanup
  br label %410

197:                                              ; preds = %182, %180
  %198 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3JPH8BoxShapedlEPv(ptr noundef %173) #9
  br label %410

199:                                              ; preds = %.preheader
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 16 dereferenceable(16) %7, ptr noundef nonnull align 16 dereferenceable(16) %8, i64 16, i1 false), !tbaa.struct !35
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %8) #9
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %9) #9
  store float 0.000000e+00, ptr %9, align 4, !tbaa !36
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %10) #9
  store float 1.000000e+00, ptr %10, align 4, !tbaa !36
  %200 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3maxIfERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4) %9, ptr noundef nonnull align 4 dereferenceable(4) %10)
  %201 = load float, ptr %200, align 4, !tbaa !36
  store float %201, ptr %194, align 4, !tbaa !5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %10) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %9) #9
  %202 = load ptr, ptr %41, align 8, !tbaa !29
  %203 = invoke i32 @_ZN3JPH13BodyInterface16CreateAndAddBodyERKNS_20BodyCreationSettingsENS_11EActivationE(ptr noundef nonnull align 8 dereferenceable(24) %202, ptr noundef nonnull align 16 dereferenceable(256) %7, i32 noundef 0)
          to label %204 unwind label %268

204:                                              ; preds = %199
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %8) #9
  invoke void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %8, float noundef -4.000000e+01, float noundef 1.000000e+01, float noundef -5.000000e+01)
          to label %205 unwind label %266

205:                                              ; preds = %204
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 16 dereferenceable(16) %7, ptr noundef nonnull align 16 dereferenceable(16) %8, i64 16, i1 false), !tbaa.struct !35
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %8) #9
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %9) #9
  store float 0.000000e+00, ptr %9, align 4, !tbaa !36
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %10) #9
  store float 0x3FECCCCCC0000000, ptr %10, align 4, !tbaa !36
  %206 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3maxIfERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4) %9, ptr noundef nonnull align 4 dereferenceable(4) %10)
  %207 = load float, ptr %206, align 4, !tbaa !36
  store float %207, ptr %194, align 4, !tbaa !5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %10) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %9) #9
  %208 = load ptr, ptr %41, align 8, !tbaa !29
  %209 = invoke i32 @_ZN3JPH13BodyInterface16CreateAndAddBodyERKNS_20BodyCreationSettingsENS_11EActivationE(ptr noundef nonnull align 8 dereferenceable(24) %208, ptr noundef nonnull align 16 dereferenceable(256) %7, i32 noundef 0)
          to label %210 unwind label %268

210:                                              ; preds = %205
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %8) #9
  invoke void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %8, float noundef -3.000000e+01, float noundef 1.000000e+01, float noundef -5.000000e+01)
          to label %211 unwind label %266

211:                                              ; preds = %210
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 16 dereferenceable(16) %7, ptr noundef nonnull align 16 dereferenceable(16) %8, i64 16, i1 false), !tbaa.struct !35
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %8) #9
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %9) #9
  store float 0.000000e+00, ptr %9, align 4, !tbaa !36
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %10) #9
  store float 0x3FE99999A0000000, ptr %10, align 4, !tbaa !36
  %212 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3maxIfERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4) %9, ptr noundef nonnull align 4 dereferenceable(4) %10)
  %213 = load float, ptr %212, align 4, !tbaa !36
  store float %213, ptr %194, align 4, !tbaa !5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %10) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %9) #9
  %214 = load ptr, ptr %41, align 8, !tbaa !29
  %215 = invoke i32 @_ZN3JPH13BodyInterface16CreateAndAddBodyERKNS_20BodyCreationSettingsENS_11EActivationE(ptr noundef nonnull align 8 dereferenceable(24) %214, ptr noundef nonnull align 16 dereferenceable(256) %7, i32 noundef 0)
          to label %216 unwind label %268

216:                                              ; preds = %211
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %8) #9
  invoke void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %8, float noundef -2.000000e+01, float noundef 1.000000e+01, float noundef -5.000000e+01)
          to label %217 unwind label %266

217:                                              ; preds = %216
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 16 dereferenceable(16) %7, ptr noundef nonnull align 16 dereferenceable(16) %8, i64 16, i1 false), !tbaa.struct !35
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %8) #9
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %9) #9
  store float 0.000000e+00, ptr %9, align 4, !tbaa !36
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %10) #9
  store float 0x3FE6666660000000, ptr %10, align 4, !tbaa !36
  %218 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3maxIfERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4) %9, ptr noundef nonnull align 4 dereferenceable(4) %10)
  %219 = load float, ptr %218, align 4, !tbaa !36
  store float %219, ptr %194, align 4, !tbaa !5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %10) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %9) #9
  %220 = load ptr, ptr %41, align 8, !tbaa !29
  %221 = invoke i32 @_ZN3JPH13BodyInterface16CreateAndAddBodyERKNS_20BodyCreationSettingsENS_11EActivationE(ptr noundef nonnull align 8 dereferenceable(24) %220, ptr noundef nonnull align 16 dereferenceable(256) %7, i32 noundef 0)
          to label %222 unwind label %268

222:                                              ; preds = %217
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %8) #9
  invoke void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %8, float noundef -1.000000e+01, float noundef 1.000000e+01, float noundef -5.000000e+01)
          to label %223 unwind label %266

223:                                              ; preds = %222
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 16 dereferenceable(16) %7, ptr noundef nonnull align 16 dereferenceable(16) %8, i64 16, i1 false), !tbaa.struct !35
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %8) #9
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %9) #9
  store float 0.000000e+00, ptr %9, align 4, !tbaa !36
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %10) #9
  store float 0x3FE3333340000000, ptr %10, align 4, !tbaa !36
  %224 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3maxIfERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4) %9, ptr noundef nonnull align 4 dereferenceable(4) %10)
  %225 = load float, ptr %224, align 4, !tbaa !36
  store float %225, ptr %194, align 4, !tbaa !5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %10) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %9) #9
  %226 = load ptr, ptr %41, align 8, !tbaa !29
  %227 = invoke i32 @_ZN3JPH13BodyInterface16CreateAndAddBodyERKNS_20BodyCreationSettingsENS_11EActivationE(ptr noundef nonnull align 8 dereferenceable(24) %226, ptr noundef nonnull align 16 dereferenceable(256) %7, i32 noundef 0)
          to label %228 unwind label %268

228:                                              ; preds = %223
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %8) #9
  invoke void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %8, float noundef 0.000000e+00, float noundef 1.000000e+01, float noundef -5.000000e+01)
          to label %229 unwind label %266

229:                                              ; preds = %228
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 16 dereferenceable(16) %7, ptr noundef nonnull align 16 dereferenceable(16) %8, i64 16, i1 false), !tbaa.struct !35
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %8) #9
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %9) #9
  store float 0.000000e+00, ptr %9, align 4, !tbaa !36
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %10) #9
  store float 5.000000e-01, ptr %10, align 4, !tbaa !36
  %230 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3maxIfERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4) %9, ptr noundef nonnull align 4 dereferenceable(4) %10)
  %231 = load float, ptr %230, align 4, !tbaa !36
  store float %231, ptr %194, align 4, !tbaa !5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %10) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %9) #9
  %232 = load ptr, ptr %41, align 8, !tbaa !29
  %233 = invoke i32 @_ZN3JPH13BodyInterface16CreateAndAddBodyERKNS_20BodyCreationSettingsENS_11EActivationE(ptr noundef nonnull align 8 dereferenceable(24) %232, ptr noundef nonnull align 16 dereferenceable(256) %7, i32 noundef 0)
          to label %234 unwind label %268

234:                                              ; preds = %229
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %8) #9
  invoke void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %8, float noundef 1.000000e+01, float noundef 1.000000e+01, float noundef -5.000000e+01)
          to label %235 unwind label %266

235:                                              ; preds = %234
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 16 dereferenceable(16) %7, ptr noundef nonnull align 16 dereferenceable(16) %8, i64 16, i1 false), !tbaa.struct !35
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %8) #9
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %9) #9
  store float 0.000000e+00, ptr %9, align 4, !tbaa !36
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %10) #9
  store float 0x3FD9999980000000, ptr %10, align 4, !tbaa !36
  %236 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3maxIfERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4) %9, ptr noundef nonnull align 4 dereferenceable(4) %10)
  %237 = load float, ptr %236, align 4, !tbaa !36
  store float %237, ptr %194, align 4, !tbaa !5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %10) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %9) #9
  %238 = load ptr, ptr %41, align 8, !tbaa !29
  %239 = invoke i32 @_ZN3JPH13BodyInterface16CreateAndAddBodyERKNS_20BodyCreationSettingsENS_11EActivationE(ptr noundef nonnull align 8 dereferenceable(24) %238, ptr noundef nonnull align 16 dereferenceable(256) %7, i32 noundef 0)
          to label %240 unwind label %268

240:                                              ; preds = %235
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %8) #9
  invoke void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %8, float noundef 2.000000e+01, float noundef 1.000000e+01, float noundef -5.000000e+01)
          to label %241 unwind label %266

241:                                              ; preds = %240
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 16 dereferenceable(16) %7, ptr noundef nonnull align 16 dereferenceable(16) %8, i64 16, i1 false), !tbaa.struct !35
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %8) #9
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %9) #9
  store float 0.000000e+00, ptr %9, align 4, !tbaa !36
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %10) #9
  store float 0x3FD3333320000000, ptr %10, align 4, !tbaa !36
  %242 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3maxIfERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4) %9, ptr noundef nonnull align 4 dereferenceable(4) %10)
  %243 = load float, ptr %242, align 4, !tbaa !36
  store float %243, ptr %194, align 4, !tbaa !5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %10) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %9) #9
  %244 = load ptr, ptr %41, align 8, !tbaa !29
  %245 = invoke i32 @_ZN3JPH13BodyInterface16CreateAndAddBodyERKNS_20BodyCreationSettingsENS_11EActivationE(ptr noundef nonnull align 8 dereferenceable(24) %244, ptr noundef nonnull align 16 dereferenceable(256) %7, i32 noundef 0)
          to label %246 unwind label %268

246:                                              ; preds = %241
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %8) #9
  invoke void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %8, float noundef 3.000000e+01, float noundef 1.000000e+01, float noundef -5.000000e+01)
          to label %247 unwind label %266

247:                                              ; preds = %246
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 16 dereferenceable(16) %7, ptr noundef nonnull align 16 dereferenceable(16) %8, i64 16, i1 false), !tbaa.struct !35
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %8) #9
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %9) #9
  store float 0.000000e+00, ptr %9, align 4, !tbaa !36
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %10) #9
  store float 0x3FC9999980000000, ptr %10, align 4, !tbaa !36
  %248 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3maxIfERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4) %9, ptr noundef nonnull align 4 dereferenceable(4) %10)
  %249 = load float, ptr %248, align 4, !tbaa !36
  store float %249, ptr %194, align 4, !tbaa !5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %10) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %9) #9
  %250 = load ptr, ptr %41, align 8, !tbaa !29
  %251 = invoke i32 @_ZN3JPH13BodyInterface16CreateAndAddBodyERKNS_20BodyCreationSettingsENS_11EActivationE(ptr noundef nonnull align 8 dereferenceable(24) %250, ptr noundef nonnull align 16 dereferenceable(256) %7, i32 noundef 0)
          to label %252 unwind label %268

252:                                              ; preds = %247
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %8) #9
  invoke void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %8, float noundef 4.000000e+01, float noundef 1.000000e+01, float noundef -5.000000e+01)
          to label %253 unwind label %266

253:                                              ; preds = %252
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 16 dereferenceable(16) %7, ptr noundef nonnull align 16 dereferenceable(16) %8, i64 16, i1 false), !tbaa.struct !35
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %8) #9
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %9) #9
  store float 0.000000e+00, ptr %9, align 4, !tbaa !36
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %10) #9
  store float 0x3FB9999960000000, ptr %10, align 4, !tbaa !36
  %254 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3maxIfERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4) %9, ptr noundef nonnull align 4 dereferenceable(4) %10)
  %255 = load float, ptr %254, align 4, !tbaa !36
  store float %255, ptr %194, align 4, !tbaa !5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %10) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %9) #9
  %256 = load ptr, ptr %41, align 8, !tbaa !29
  %257 = invoke i32 @_ZN3JPH13BodyInterface16CreateAndAddBodyERKNS_20BodyCreationSettingsENS_11EActivationE(ptr noundef nonnull align 8 dereferenceable(24) %256, ptr noundef nonnull align 16 dereferenceable(256) %7, i32 noundef 0)
          to label %258 unwind label %268

258:                                              ; preds = %253
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %8) #9
  invoke void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %8, float noundef 5.000000e+01, float noundef 1.000000e+01, float noundef -5.000000e+01)
          to label %259 unwind label %266

259:                                              ; preds = %258
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 16 dereferenceable(16) %7, ptr noundef nonnull align 16 dereferenceable(16) %8, i64 16, i1 false), !tbaa.struct !35
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %8) #9
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %9) #9
  store float 0.000000e+00, ptr %9, align 4, !tbaa !36
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %10) #9
  store float 0xBE50000000000000, ptr %10, align 4, !tbaa !36
  %260 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3maxIfERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4) %9, ptr noundef nonnull align 4 dereferenceable(4) %10)
  %261 = load float, ptr %260, align 4, !tbaa !36
  store float %261, ptr %194, align 4, !tbaa !5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %10) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %9) #9
  %262 = load ptr, ptr %41, align 8, !tbaa !29
  %263 = invoke i32 @_ZN3JPH13BodyInterface16CreateAndAddBodyERKNS_20BodyCreationSettingsENS_11EActivationE(ptr noundef nonnull align 8 dereferenceable(24) %262, ptr noundef nonnull align 16 dereferenceable(256) %7, i32 noundef 0)
          to label %264 unwind label %268

264:                                              ; preds = %259
  call void @llvm.lifetime.start.p0(i64 256, ptr nonnull %11) #9
  %265 = invoke noundef ptr @_ZN3JPH13CylinderShapenwEm(i64 noundef 56)
          to label %270 unwind label %335

266:                                              ; preds = %258, %252, %246, %240, %234, %228, %222, %216, %210, %204, %.preheader
  %267 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %8) #9
  br label %409

268:                                              ; preds = %259, %253, %247, %241, %235, %229, %223, %217, %211, %205, %199
  %269 = landingpad { ptr, i32 }
          cleanup
  br label %409

270:                                              ; preds = %264
  invoke void @_ZN3JPH13CylinderShapeC1EfffPKNS_15PhysicsMaterialE(ptr noundef nonnull align 8 dereferenceable(56) %265, float noundef 6.000000e+00, float noundef 1.000000e+00, float noundef 0x3FA99999A0000000, ptr noundef null)
          to label %271 unwind label %337

271:                                              ; preds = %270
  invoke void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %12, float noundef -2.500000e+01, float noundef 1.000000e+00, float noundef -2.000000e+01)
          to label %272 unwind label %335

272:                                              ; preds = %271
  %273 = invoke { double, double } @_ZN3JPH4Vec36sAxisZEv()
          to label %274 unwind label %335

274:                                              ; preds = %272
  %275 = extractvalue { double, double } %273, 0
  %276 = extractvalue { double, double } %273, 1
  %277 = invoke { double, double } @_ZN3JPH4Quat9sRotationENS_4Vec3Ef(double %275, double %276, float noundef 0x3FF921FB60000000)
          to label %278 unwind label %335

278:                                              ; preds = %274
  %279 = extractvalue { double, double } %277, 0
  %280 = extractvalue { double, double } %277, 1
  %281 = load double, ptr %12, align 16
  %282 = getelementptr inbounds i8, ptr %12, i64 8
  %283 = load double, ptr %282, align 8
  invoke void @_ZN3JPH20BodyCreationSettingsC2EPKNS_5ShapeENS_4Vec3ENS_4QuatENS_11EMotionTypeEt(ptr noundef nonnull align 16 dereferenceable(256) %11, ptr noundef nonnull %265, double %281, double %283, double %279, double %280, i8 noundef zeroext 2, i16 noundef zeroext 1)
          to label %284 unwind label %335

284:                                              ; preds = %278
  %285 = load ptr, ptr %41, align 8, !tbaa !29
  %286 = invoke i32 @_ZN3JPH13BodyInterface16CreateAndAddBodyERKNS_20BodyCreationSettingsENS_11EActivationE(ptr noundef nonnull align 8 dereferenceable(24) %285, ptr noundef nonnull align 16 dereferenceable(256) %11, i32 noundef 0)
          to label %287 unwind label %339

287:                                              ; preds = %284
  call void @_ZN3JPH4Vec34SetZEf(ptr noundef nonnull align 16 dereferenceable(16) %11, float noundef 2.000000e+01)
  %288 = load ptr, ptr %41, align 8, !tbaa !29
  %289 = invoke i32 @_ZN3JPH13BodyInterface16CreateAndAddBodyERKNS_20BodyCreationSettingsENS_11EActivationE(ptr noundef nonnull align 8 dereferenceable(24) %288, ptr noundef nonnull align 16 dereferenceable(256) %11, i32 noundef 0)
          to label %290 unwind label %339

290:                                              ; preds = %287
  call void @llvm.lifetime.start.p0(i64 256, ptr nonnull %13) #9
  %291 = invoke noundef ptr @_ZN3JPH8BoxShapenwEm(i64 noundef 80)
          to label %292 unwind label %341

292:                                              ; preds = %290
  invoke void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %14, float noundef 5.000000e+00, float noundef 0x3FB99999A0000000, float noundef 2.500000e+01)
          to label %293 unwind label %343

293:                                              ; preds = %292
  %294 = load double, ptr %14, align 16
  %295 = getelementptr inbounds i8, ptr %14, i64 8
  %296 = load double, ptr %295, align 8
  invoke void @_ZN3JPH8BoxShapeC2ENS_4Vec3EfPKNS_15PhysicsMaterialE(ptr noundef nonnull align 16 dereferenceable(80) %291, double %294, double %296, float noundef 0.000000e+00, ptr noundef null)
          to label %297 unwind label %343

297:                                              ; preds = %293
  invoke void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %15, float noundef -2.500000e+01, float noundef 3.000000e+00, float noundef 0.000000e+00)
          to label %298 unwind label %341

298:                                              ; preds = %297
  %299 = invoke { double, double } @_ZN3JPH4Quat9sIdentityEv()
          to label %300 unwind label %341

300:                                              ; preds = %298
  %301 = extractvalue { double, double } %299, 0
  %302 = extractvalue { double, double } %299, 1
  %303 = load double, ptr %15, align 16
  %304 = getelementptr inbounds i8, ptr %15, i64 8
  %305 = load double, ptr %304, align 8
  invoke void @_ZN3JPH20BodyCreationSettingsC2EPKNS_5ShapeENS_4Vec3ENS_4QuatENS_11EMotionTypeEt(ptr noundef nonnull align 16 dereferenceable(256) %13, ptr noundef nonnull %291, double %303, double %305, double %301, double %302, i8 noundef zeroext 2, i16 noundef zeroext 1)
          to label %306 unwind label %341

306:                                              ; preds = %300
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %16) #9
  %307 = load ptr, ptr %41, align 8, !tbaa !29
  %308 = invoke i32 @_ZN3JPH13BodyInterface16CreateAndAddBodyERKNS_20BodyCreationSettingsENS_11EActivationE(ptr noundef nonnull align 8 dereferenceable(24) %307, ptr noundef nonnull align 16 dereferenceable(256) %13, i32 noundef 0)
          to label %309 unwind label %345

309:                                              ; preds = %306
  store i32 %308, ptr %16, align 4
  invoke void @_ZN3JPH5ArrayINS_6BodyIDENS_12STLAllocatorIS1_EEE9push_backEOS1_(ptr noundef nonnull align 8 dereferenceable(24) %42, ptr noundef nonnull align 4 dereferenceable(4) %16)
          to label %310 unwind label %345

310:                                              ; preds = %309
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %16) #9
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %17) #9
  invoke void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %17, float noundef -2.500000e+01, float noundef 6.000000e+00, float noundef 1.500000e+01)
          to label %311 unwind label %347

311:                                              ; preds = %310
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 16 dereferenceable(16) %7, ptr noundef nonnull align 16 dereferenceable(16) %17, i64 16, i1 false), !tbaa.struct !35
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %17) #9
  store float 1.000000e+00, ptr %194, align 4, !tbaa !5
  %312 = load ptr, ptr %41, align 8, !tbaa !29
  %313 = invoke i32 @_ZN3JPH13BodyInterface16CreateAndAddBodyERKNS_20BodyCreationSettingsENS_11EActivationE(ptr noundef nonnull align 8 dereferenceable(24) %312, ptr noundef nonnull align 16 dereferenceable(256) %7, i32 noundef 0)
          to label %314 unwind label %349

314:                                              ; preds = %311
  call void @llvm.lifetime.start.p0(i64 256, ptr nonnull %18) #9
  %315 = invoke noundef ptr @_ZN3JPH8BoxShapenwEm(i64 noundef 80)
          to label %316 unwind label %351

316:                                              ; preds = %314
  invoke void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %19, float noundef 2.000000e+01, float noundef 0x3FB99999A0000000, float noundef 2.000000e+01)
          to label %317 unwind label %353

317:                                              ; preds = %316
  %318 = load double, ptr %19, align 16
  %319 = getelementptr inbounds i8, ptr %19, i64 8
  %320 = load double, ptr %319, align 8
  invoke void @_ZN3JPH8BoxShapeC2ENS_4Vec3EfPKNS_15PhysicsMaterialE(ptr noundef nonnull align 16 dereferenceable(80) %315, double %318, double %320, float noundef 0.000000e+00, ptr noundef null)
          to label %321 unwind label %353

321:                                              ; preds = %317
  invoke void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %20, float noundef 1.000000e+01, float noundef 3.000000e+00, float noundef 0.000000e+00)
          to label %322 unwind label %351

322:                                              ; preds = %321
  %323 = invoke { double, double } @_ZN3JPH4Quat9sIdentityEv()
          to label %324 unwind label %351

324:                                              ; preds = %322
  %325 = extractvalue { double, double } %323, 0
  %326 = extractvalue { double, double } %323, 1
  %327 = load double, ptr %20, align 16
  %328 = getelementptr inbounds i8, ptr %20, i64 8
  %329 = load double, ptr %328, align 8
  invoke void @_ZN3JPH20BodyCreationSettingsC2EPKNS_5ShapeENS_4Vec3ENS_4QuatENS_11EMotionTypeEt(ptr noundef nonnull align 16 dereferenceable(256) %18, ptr noundef nonnull %315, double %327, double %329, double %325, double %326, i8 noundef zeroext 0, i16 noundef zeroext 0)
          to label %330 unwind label %351

330:                                              ; preds = %324
  %331 = load ptr, ptr %41, align 8, !tbaa !29
  %332 = invoke i32 @_ZN3JPH13BodyInterface16CreateAndAddBodyERKNS_20BodyCreationSettingsENS_11EActivationE(ptr noundef nonnull align 8 dereferenceable(24) %331, ptr noundef nonnull align 16 dereferenceable(256) %18, i32 noundef 0)
          to label %333 unwind label %355

333:                                              ; preds = %330
  %334 = getelementptr inbounds i8, ptr %0, i64 144
  store i32 %332, ptr %334, align 8, !tbaa !37
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %21) #9
  invoke void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %21, float noundef 1.000000e+01, float noundef 1.000000e+01, float noundef -1.500000e+01)
          to label %357 unwind label %399

335:                                              ; preds = %278, %274, %272, %271, %264
  %336 = landingpad { ptr, i32 }
          cleanup
  br label %408

337:                                              ; preds = %270
  %338 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3JPH13CylinderShapedlEPv(ptr noundef %265) #9
  br label %408

339:                                              ; preds = %287, %284
  %340 = landingpad { ptr, i32 }
          cleanup
  br label %407

341:                                              ; preds = %300, %298, %297, %290
  %342 = landingpad { ptr, i32 }
          cleanup
  br label %406

343:                                              ; preds = %293, %292
  %344 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3JPH8BoxShapedlEPv(ptr noundef %291) #9
  br label %406

345:                                              ; preds = %309, %306
  %346 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %16) #9
  br label %405

347:                                              ; preds = %310
  %348 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %17) #9
  br label %405

349:                                              ; preds = %311
  %350 = landingpad { ptr, i32 }
          cleanup
  br label %405

351:                                              ; preds = %324, %322, %321, %314
  %352 = landingpad { ptr, i32 }
          cleanup
  br label %404

353:                                              ; preds = %317, %316
  %354 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3JPH8BoxShapedlEPv(ptr noundef %315) #9
  br label %404

355:                                              ; preds = %330
  %356 = landingpad { ptr, i32 }
          cleanup
  br label %403

357:                                              ; preds = %333
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 16 dereferenceable(16) %7, ptr noundef nonnull align 16 dereferenceable(16) %21, i64 16, i1 false), !tbaa.struct !35
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %21) #9
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %22) #9
  store float 0.000000e+00, ptr %22, align 4, !tbaa !36
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %23) #9
  store float 1.000000e+00, ptr %23, align 4, !tbaa !36
  %358 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3maxIfERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4) %22, ptr noundef nonnull align 4 dereferenceable(4) %23)
  %359 = load float, ptr %358, align 4, !tbaa !36
  store float %359, ptr %194, align 4, !tbaa !5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %23) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %22) #9
  %360 = load ptr, ptr %41, align 8, !tbaa !29
  %361 = invoke i32 @_ZN3JPH13BodyInterface16CreateAndAddBodyERKNS_20BodyCreationSettingsENS_11EActivationE(ptr noundef nonnull align 8 dereferenceable(24) %360, ptr noundef nonnull align 16 dereferenceable(256) %7, i32 noundef 0)
          to label %362 unwind label %401

362:                                              ; preds = %357
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %21) #9
  invoke void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %21, float noundef 1.000000e+01, float noundef 1.000000e+01, float noundef -1.000000e+01)
          to label %363 unwind label %399

363:                                              ; preds = %362
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 16 dereferenceable(16) %7, ptr noundef nonnull align 16 dereferenceable(16) %21, i64 16, i1 false), !tbaa.struct !35
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %21) #9
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %22) #9
  store float 0.000000e+00, ptr %22, align 4, !tbaa !36
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %23) #9
  store float 0x3FECCCCCC0000000, ptr %23, align 4, !tbaa !36
  %364 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3maxIfERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4) %22, ptr noundef nonnull align 4 dereferenceable(4) %23)
  %365 = load float, ptr %364, align 4, !tbaa !36
  store float %365, ptr %194, align 4, !tbaa !5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %23) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %22) #9
  %366 = load ptr, ptr %41, align 8, !tbaa !29
  %367 = invoke i32 @_ZN3JPH13BodyInterface16CreateAndAddBodyERKNS_20BodyCreationSettingsENS_11EActivationE(ptr noundef nonnull align 8 dereferenceable(24) %366, ptr noundef nonnull align 16 dereferenceable(256) %7, i32 noundef 0)
          to label %368 unwind label %401

368:                                              ; preds = %363
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %21) #9
  invoke void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %21, float noundef 1.000000e+01, float noundef 1.000000e+01, float noundef -5.000000e+00)
          to label %369 unwind label %399

369:                                              ; preds = %368
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 16 dereferenceable(16) %7, ptr noundef nonnull align 16 dereferenceable(16) %21, i64 16, i1 false), !tbaa.struct !35
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %21) #9
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %22) #9
  store float 0.000000e+00, ptr %22, align 4, !tbaa !36
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %23) #9
  store float 0x3FE99999A0000000, ptr %23, align 4, !tbaa !36
  %370 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3maxIfERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4) %22, ptr noundef nonnull align 4 dereferenceable(4) %23)
  %371 = load float, ptr %370, align 4, !tbaa !36
  store float %371, ptr %194, align 4, !tbaa !5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %23) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %22) #9
  %372 = load ptr, ptr %41, align 8, !tbaa !29
  %373 = invoke i32 @_ZN3JPH13BodyInterface16CreateAndAddBodyERKNS_20BodyCreationSettingsENS_11EActivationE(ptr noundef nonnull align 8 dereferenceable(24) %372, ptr noundef nonnull align 16 dereferenceable(256) %7, i32 noundef 0)
          to label %374 unwind label %401

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

375:                                              ; preds = %374
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 16 dereferenceable(16) %7, ptr noundef nonnull align 16 dereferenceable(16) %21, i64 16, i1 false), !tbaa.struct !35
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %21) #9
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %22) #9
  store float 0.000000e+00, ptr %22, align 4, !tbaa !36
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %23) #9
  store float 0x3FE6666660000000, ptr %23, align 4, !tbaa !36
  %376 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3maxIfERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4) %22, ptr noundef nonnull align 4 dereferenceable(4) %23)
  %377 = load float, ptr %376, align 4, !tbaa !36
  store float %377, ptr %194, align 4, !tbaa !5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %23) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %22) #9
  %378 = load ptr, ptr %41, align 8, !tbaa !29
  %379 = invoke i32 @_ZN3JPH13BodyInterface16CreateAndAddBodyERKNS_20BodyCreationSettingsENS_11EActivationE(ptr noundef nonnull align 8 dereferenceable(24) %378, ptr noundef nonnull align 16 dereferenceable(256) %7, i32 noundef 0)
          to label %380 unwind label %401

380:                                              ; preds = %375
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %21) #9
  invoke void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %21, float noundef 1.000000e+01, float noundef 1.000000e+01, float noundef 5.000000e+00)
          to label %381 unwind label %399

381:                                              ; preds = %380
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 16 dereferenceable(16) %7, ptr noundef nonnull align 16 dereferenceable(16) %21, i64 16, i1 false), !tbaa.struct !35
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %21) #9
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %22) #9
  store float 0.000000e+00, ptr %22, align 4, !tbaa !36
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %23) #9
  store float 0x3FE3333340000000, ptr %23, align 4, !tbaa !36
  %382 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3maxIfERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4) %22, ptr noundef nonnull align 4 dereferenceable(4) %23)
  %383 = load float, ptr %382, align 4, !tbaa !36
  store float %383, ptr %194, align 4, !tbaa !5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %23) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %22) #9
  %384 = load ptr, ptr %41, align 8, !tbaa !29
  %385 = invoke i32 @_ZN3JPH13BodyInterface16CreateAndAddBodyERKNS_20BodyCreationSettingsENS_11EActivationE(ptr noundef nonnull align 8 dereferenceable(24) %384, ptr noundef nonnull align 16 dereferenceable(256) %7, i32 noundef 0)
          to label %386 unwind label %401

386:                                              ; preds = %381
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %21) #9
  invoke void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %21, float noundef 1.000000e+01, float noundef 1.000000e+01, float noundef 1.000000e+01)
          to label %387 unwind label %399

387:                                              ; preds = %386
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 16 dereferenceable(16) %7, ptr noundef nonnull align 16 dereferenceable(16) %21, i64 16, i1 false), !tbaa.struct !35
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %21) #9
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %22) #9
  store float 0.000000e+00, ptr %22, align 4, !tbaa !36
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %23) #9
  store float 5.000000e-01, ptr %23, align 4, !tbaa !36
  %388 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3maxIfERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4) %22, ptr noundef nonnull align 4 dereferenceable(4) %23)
  %389 = load float, ptr %388, align 4, !tbaa !36
  store float %389, ptr %194, align 4, !tbaa !5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %23) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %22) #9
  %390 = load ptr, ptr %41, align 8, !tbaa !29
  %391 = invoke i32 @_ZN3JPH13BodyInterface16CreateAndAddBodyERKNS_20BodyCreationSettingsENS_11EActivationE(ptr noundef nonnull align 8 dereferenceable(24) %390, ptr noundef nonnull align 16 dereferenceable(256) %7, i32 noundef 0)
          to label %392 unwind label %401

392:                                              ; preds = %387
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %21) #9
  invoke void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %21, float noundef 1.000000e+01, float noundef 1.000000e+01, float noundef 1.500000e+01)
          to label %393 unwind label %399

393:                                              ; preds = %392
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 16 dereferenceable(16) %7, ptr noundef nonnull align 16 dereferenceable(16) %21, i64 16, i1 false), !tbaa.struct !35
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %21) #9
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %22) #9
  store float 0.000000e+00, ptr %22, align 4, !tbaa !36
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %23) #9
  store float 0x3FD9999980000000, ptr %23, align 4, !tbaa !36
  %394 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3maxIfERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4) %22, ptr noundef nonnull align 4 dereferenceable(4) %23)
  %395 = load float, ptr %394, align 4, !tbaa !36
  store float %395, ptr %194, align 4, !tbaa !5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %23) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %22) #9
  %396 = load ptr, ptr %41, align 8, !tbaa !29
  %397 = invoke i32 @_ZN3JPH13BodyInterface16CreateAndAddBodyERKNS_20BodyCreationSettingsENS_11EActivationE(ptr noundef nonnull align 8 dereferenceable(24) %396, ptr noundef nonnull align 16 dereferenceable(256) %7, i32 noundef 0)
          to label %398 unwind label %401

398:                                              ; preds = %393
  call void @_ZN3JPH20BodyCreationSettingsD2Ev(ptr noundef nonnull align 16 dereferenceable(256) %18) #9
  call void @llvm.lifetime.end.p0(i64 256, ptr nonnull %18) #9
  call void @_ZN3JPH20BodyCreationSettingsD2Ev(ptr noundef nonnull align 16 dereferenceable(256) %13) #9
  call void @llvm.lifetime.end.p0(i64 256, ptr nonnull %13) #9
  call void @_ZN3JPH20BodyCreationSettingsD2Ev(ptr noundef nonnull align 16 dereferenceable(256) %11) #9
  call void @llvm.lifetime.end.p0(i64 256, ptr nonnull %11) #9
  call void @_ZN3JPH20BodyCreationSettingsD2Ev(ptr noundef nonnull align 16 dereferenceable(256) %7) #9
  call void @llvm.lifetime.end.p0(i64 256, ptr nonnull %7) #9
  call void @_ZN3JPH20BodyCreationSettingsD2Ev(ptr noundef nonnull align 16 dereferenceable(256) %2) #9
  call void @llvm.lifetime.end.p0(i64 256, ptr nonnull %2) #9
  ret void

399:                                              ; preds = %392, %386, %380, %374, %368, %362, %333
  %400 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %21) #9
  br label %403

401:                                              ; preds = %393, %387, %381, %375, %369, %363, %357
  %402 = landingpad { ptr, i32 }
          cleanup
  br label %403

403:                                              ; preds = %399, %401, %355
  %.pn.pn = phi { ptr, i32 } [ %356, %355 ], [ %402, %401 ], [ %400, %399 ]
  call void @_ZN3JPH20BodyCreationSettingsD2Ev(ptr noundef nonnull align 16 dereferenceable(256) %18) #9
  br label %404

404:                                              ; preds = %403, %353, %351
  %.pn.pn.pn = phi { ptr, i32 } [ %.pn.pn, %403 ], [ %352, %351 ], [ %354, %353 ]
  call void @llvm.lifetime.end.p0(i64 256, ptr nonnull %18) #9
  br label %405

405:                                              ; preds = %404, %349, %347, %345
  %.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn.pn.pn, %404 ], [ %350, %349 ], [ %348, %347 ], [ %346, %345 ]
  call void @_ZN3JPH20BodyCreationSettingsD2Ev(ptr noundef nonnull align 16 dereferenceable(256) %13) #9
  br label %406

406:                                              ; preds = %405, %343, %341
  %.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn.pn.pn.pn, %405 ], [ %342, %341 ], [ %344, %343 ]
  call void @llvm.lifetime.end.p0(i64 256, ptr nonnull %13) #9
  br label %407

407:                                              ; preds = %406, %339
  %.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn.pn.pn.pn.pn, %406 ], [ %340, %339 ]
  call void @_ZN3JPH20BodyCreationSettingsD2Ev(ptr noundef nonnull align 16 dereferenceable(256) %11) #9
  br label %408

408:                                              ; preds = %407, %337, %335
  %.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn.pn.pn.pn.pn.pn, %407 ], [ %336, %335 ], [ %338, %337 ]
  call void @llvm.lifetime.end.p0(i64 256, ptr nonnull %11) #9
  br label %409

409:                                              ; preds = %266, %268, %408
  %.pn68.pn = phi { ptr, i32 } [ %.pn.pn.pn.pn.pn.pn.pn, %408 ], [ %269, %268 ], [ %267, %266 ]
  call void @_ZN3JPH20BodyCreationSettingsD2Ev(ptr noundef nonnull align 16 dereferenceable(256) %7) #9
  br label %410

410:                                              ; preds = %409, %197, %195
  %.pn68.pn.pn = phi { ptr, i32 } [ %.pn68.pn, %409 ], [ %196, %195 ], [ %198, %197 ]
  call void @llvm.lifetime.end.p0(i64 256, ptr nonnull %7) #9
  br label %411

411:                                              ; preds = %174, %176, %178, %410
  %.pn72.pn = phi { ptr, i32 } [ %.pn68.pn.pn, %410 ], [ %179, %178 ], [ %177, %176 ], [ %175, %174 ]
  call void @_ZN3JPH20BodyCreationSettingsD2Ev(ptr noundef nonnull align 16 dereferenceable(256) %2) #9
  br label %412

412:                                              ; preds = %411, %44
  %.pn72.pn.pn = phi { ptr, i32 } [ %.pn72.pn, %411 ], [ %45, %44 ]
  call void @llvm.lifetime.end.p0(i64 256, ptr nonnull %2) #9
  resume { ptr, i32 } %.pn72.pn.pn
}

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_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 #5 align 2

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

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

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

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

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

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

; 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 @_ZN3JPH5ArrayINS_6BodyIDENS_12STLAllocatorIS1_EEE9push_backEOS1_(ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 4 dereferenceable(4)) local_unnamed_addr #7 align 2

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

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

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

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

declare void @_ZN3JPH13CylinderShapeC1EfffPKNS_15PhysicsMaterialE(ptr noundef nonnull align 8 dereferenceable(56), float noundef, float noundef, float noundef, ptr noundef) unnamed_addr #2

; Function Attrs: alwaysinline mustprogress nounwind uwtable
declare dso_local void @_ZN3JPH13CylinderShapedlEPv(ptr noundef) local_unnamed_addr #5 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 void @_ZN3JPH4Vec34SetZEf(ptr noundef nonnull align 16 dereferenceable(16), float noundef) local_unnamed_addr #5 align 2

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

attributes #0 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #1 = { mustprogress uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #2 = { "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #3 = { alwaysinline mustprogress uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #4 = { alwaysinline mustprogress uwtable "min-legal-vector-width"="128" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #5 = { alwaysinline mustprogress nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #6 = { mustprogress nocallback nofree nounwind willreturn memory(argmem: readwrite) }
attributes #7 = { 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 #8 = { inlinehint mustprogress nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #9 = { 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, !22, i64 108}
!6 = !{!"_ZTSN3JPH20BodyCreationSettingsE", !7, i64 0, !10, i64 16, !7, i64 32, !7, i64 48, !12, i64 64, !13, i64 72, !14, i64 80, !18, i64 96, !19, i64 97, !20, i64 98, !20, i64 99, !20, i64 100, !20, i64 101, !20, i64 102, !21, i64 103, !20, i64 104, !20, i64 105, !22, i64 108, !22, i64 112, !22, i64 116, !22, i64 120, !22, i64 124, !22, i64 128, !22, i64 132, !17, i64 136, !17, i64 140, !23, i64 144, !22, i64 148, !24, i64 160, !26, i64 240, !27, i64 248}
!7 = !{!"_ZTSN3JPH4Vec3E", !8, i64 0}
!8 = !{!"omnipotent char", !9, i64 0}
!9 = !{!"Simple C++ TBAA"}
!10 = !{!"_ZTSN3JPH4QuatE", !11, i64 0}
!11 = !{!"_ZTSN3JPH4Vec4E", !8, i64 0}
!12 = !{!"long", !8, i64 0}
!13 = !{!"short", !8, i64 0}
!14 = !{!"_ZTSN3JPH14CollisionGroupE", !15, i64 0, !17, i64 8, !17, i64 12}
!15 = !{!"_ZTSN3JPH8RefConstINS_11GroupFilterEEE", !16, i64 0}
!16 = !{!"any pointer", !8, i64 0}
!17 = !{!"int", !8, i64 0}
!18 = !{!"_ZTSN3JPH11EMotionTypeE", !8, i64 0}
!19 = !{!"_ZTSN3JPH12EAllowedDOFsE", !8, i64 0}
!20 = !{!"bool", !8, i64 0}
!21 = !{!"_ZTSN3JPH14EMotionQualityE", !8, i64 0}
!22 = !{!"float", !8, i64 0}
!23 = !{!"_ZTSN3JPH23EOverrideMassPropertiesE", !8, i64 0}
!24 = !{!"_ZTSN3JPH14MassPropertiesE", !22, i64 0, !25, i64 16}
!25 = !{!"_ZTSN3JPH5Mat44E", !8, i64 0}
!26 = !{!"_ZTSN3JPH8RefConstINS_13ShapeSettingsEEE", !16, i64 0}
!27 = !{!"_ZTSN3JPH8RefConstINS_5ShapeEEE", !16, i64 0}
!28 = !{!8, !8, i64 0}
!29 = !{!30, !16, i64 24}
!30 = !{!"_ZTS4Test", !16, i64 8, !16, i64 16, !16, i64 24, !16, i64 32, !16, i64 40, !20, i64 48, !31, i64 56}
!31 = !{!"_ZTSSt13unordered_mapIN3JPH6BodyIDENSt7__cxx1112basic_stringIcSt11char_traitsIcENS0_12STLAllocatorIcEEEESt4hashIS1_ESt8equal_toIS1_ESaISt4pairIKS1_S8_EEE", !32, i64 0}
!32 = !{!"_ZTSSt10_HashtableIN3JPH6BodyIDESt4pairIKS1_NSt7__cxx1112basic_stringIcSt11char_traitsIcENS0_12STLAllocatorIcEEEEESaISB_ENSt8__detail10_Select1stESt8equal_toIS1_ESt4hashIS1_ENSD_18_Mod_range_hashingENSD_20_Default_ranged_hashENSD_20_Prime_rehash_policyENSD_17_Hashtable_traitsILb1ELb0ELb1EEEE", !16, i64 0, !12, i64 8, !33, i64 16, !12, i64 24, !34, i64 32, !16, i64 48}
!33 = !{!"_ZTSNSt8__detail15_Hash_node_baseE", !16, i64 0}
!34 = !{!"_ZTSNSt8__detail20_Prime_rehash_policyE", !22, i64 0, !12, i64 8}
!35 = !{i64 0, i64 16, !28}
!36 = !{!22, !22, i64 0}
!37 = !{!17, !17, i64 0}


; Effective O3 passes: EarlyCSEPass,GVNPass,GlobalOptPass,IndVarSimplifyPass,InferFunctionAttrsPass,InstCombinePass,LICMPass,LoopRotatePass,LoopSimplifyPass,SROAPass,SimplifyCFGPass,TailCallElimPass