; LLVM IR from jrouwe/JoltPhysics :: Samples/Tests/Shapes/ConvexHullShapeTest.ll (ZN19ConvexHullShapeTest10InitializeEv)

; 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::Array" = type { i64, i64, ptr }
%"class.JPH::Vec3" = type { %union.anon }
%union.anon = type { <4 x float> }
%"class.JPH::BodyCreationSettings" = type { %"class.JPH::Vec3", %"class.JPH::Quat", %"class.JPH::Vec3", %"class.JPH::Vec3", i64, i16, %"class.JPH::CollisionGroup", i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, float, float, float, float, float, float, float, i32, i32, i8, float, %"class.JPH::MassProperties", %"class.JPH::RefConst.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::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.std::linear_congruential_engine" = type { i64 }
%"class.std::uniform_real_distribution" = type { %"struct.std::uniform_real_distribution<float>::param_type" }
%"struct.std::uniform_real_distribution<float>::param_type" = type { float, float }
%"class.JPH::Ref.14" = type { ptr }
%class.Test = type { ptr, ptr, ptr, ptr, ptr, ptr, i8, %"class.std::unordered_map" }
%"class.std::unordered_map" = type { %"class.std::_Hashtable" }
%"class.std::_Hashtable" = type { ptr, i64, %"struct.std::__detail::_Hash_node_base", i64, %"struct.std::__detail::_Prime_rehash_policy", ptr }
%"struct.std::__detail::_Hash_node_base" = type { ptr }
%"struct.std::__detail::_Prime_rehash_policy" = type { float, i64 }

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

declare i32 @__gxx_personality_v0(...)

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

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

96:                                               ; preds = %1
  invoke void @_ZN3JPH5ArrayINS_4Vec3ENS_12STLAllocatorIS1_EEE9push_backEOS1_(ptr noundef nonnull align 8 dereferenceable(24) %3, ptr noundef nonnull align 16 dereferenceable(16) %4)
          to label %97 unwind label %178

97:                                               ; preds = %96
  call void @llvm.lifetime.end.p0(i64 16, ptr %4) #11
  call void @llvm.lifetime.start.p0(i64 16, ptr %7) #11
  invoke void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %7, float noundef 0.000000e+00, float noundef 0.000000e+00, float noundef 5.000000e+00)
          to label %98 unwind label %182

98:                                               ; preds = %97
  invoke void @_ZN3JPH5ArrayINS_4Vec3ENS_12STLAllocatorIS1_EEE9push_backEOS1_(ptr noundef nonnull align 8 dereferenceable(24) %3, ptr noundef nonnull align 16 dereferenceable(16) %7)
          to label %99 unwind label %182

99:                                               ; preds = %98
  call void @llvm.lifetime.end.p0(i64 16, ptr %7) #11
  call void @llvm.lifetime.start.p0(i64 16, ptr %8) #11
  invoke void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %8, float noundef 5.000000e+00, float noundef 0.000000e+00, float noundef -5.000000e+00)
          to label %100 unwind label %186

100:                                              ; preds = %99
  invoke void @_ZN3JPH5ArrayINS_4Vec3ENS_12STLAllocatorIS1_EEE9push_backEOS1_(ptr noundef nonnull align 8 dereferenceable(24) %3, ptr noundef nonnull align 16 dereferenceable(16) %8)
          to label %101 unwind label %186

101:                                              ; preds = %100
  call void @llvm.lifetime.end.p0(i64 16, ptr %8) #11
  call void @llvm.lifetime.start.p0(i64 16, ptr %9) #11
  invoke void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %9, float noundef 0.000000e+00, float noundef -5.000000e+00, float noundef 0.000000e+00)
          to label %102 unwind label %190

102:                                              ; preds = %101
  invoke void @_ZN3JPH5ArrayINS_4Vec3ENS_12STLAllocatorIS1_EEE9push_backEOS1_(ptr noundef nonnull align 8 dereferenceable(24) %3, ptr noundef nonnull align 16 dereferenceable(16) %9)
          to label %103 unwind label %190

103:                                              ; preds = %102
  call void @llvm.lifetime.end.p0(i64 16, ptr %9) #11
  %104 = getelementptr inbounds %class.Test, ptr %94, i32 0, i32 3
  %105 = load ptr, ptr %104, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 256, ptr %10) #11
  %106 = invoke noundef ptr @_ZN3JPH23ConvexHullShapeSettingsnwEm(i64 noundef 120)
          to label %107 unwind label %194

107:                                              ; preds = %103
  invoke void @_ZN3JPH23ConvexHullShapeSettingsC2ERKNS_5ArrayINS_4Vec3ENS_12STLAllocatorIS2_EEEEfPKNS_15PhysicsMaterialE(ptr noundef nonnull align 8 dereferenceable(120) %106, ptr noundef nonnull align 8 dereferenceable(24) %3, float noundef 0x3FA99999A0000000, ptr noundef null)
          to label %108 unwind label %198

108:                                              ; preds = %107
  invoke void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %11, float noundef 0.000000e+00, float noundef 1.000000e+01, float noundef 0.000000e+00)
          to label %109 unwind label %194

109:                                              ; preds = %108
  %110 = invoke { double, double } @_ZN3JPH4Quat9sIdentityEv()
          to label %111 unwind label %194

111:                                              ; preds = %109
  %112 = getelementptr inbounds %"class.JPH::Quat", ptr %12, i32 0, i32 0
  %113 = getelementptr inbounds %"class.JPH::Vec4", ptr %112, i32 0, i32 0
  %114 = getelementptr inbounds %union.anon.4, ptr %113, i32 0, i32 0
  %115 = getelementptr inbounds { double, double }, ptr %114, i32 0, i32 0
  %116 = extractvalue { double, double } %110, 0
  store double %116, ptr %115, align 16
  %117 = getelementptr inbounds { double, double }, ptr %114, i32 0, i32 1
  %118 = extractvalue { double, double } %110, 1
  store double %118, ptr %117, align 8
  %119 = getelementptr inbounds { double, double }, ptr %11, i32 0, i32 0
  %120 = load double, ptr %119, align 16
  %121 = getelementptr inbounds { double, double }, ptr %11, i32 0, i32 1
  %122 = load double, ptr %121, align 8
  %123 = getelementptr inbounds { double, double }, ptr %12, i32 0, i32 0
  %124 = load double, ptr %123, align 16
  %125 = getelementptr inbounds { double, double }, ptr %12, i32 0, i32 1
  %126 = load double, ptr %125, align 8
  invoke void @_ZN3JPH20BodyCreationSettingsC2EPKNS_13ShapeSettingsENS_4Vec3ENS_4QuatENS_11EMotionTypeEt(ptr noundef nonnull align 16 dereferenceable(256) %10, ptr noundef %106, double %120, double %122, double %124, double %126, i8 noundef zeroext 2, i16 noundef zeroext 1)
          to label %127 unwind label %194

127:                                              ; preds = %111
  %128 = invoke i32 @_ZN3JPH13BodyInterface16CreateAndAddBodyERKNS_20BodyCreationSettingsENS_11EActivationE(ptr noundef nonnull align 8 dereferenceable(24) %105, ptr noundef nonnull align 16 dereferenceable(256) %10, i32 noundef 0)
          to label %129 unwind label %202

129:                                              ; preds = %127
  %130 = getelementptr inbounds %"class.JPH::BodyID", ptr %13, i32 0, i32 0
  store i32 %128, ptr %130, align 4
  call void @_ZN3JPH20BodyCreationSettingsD2Ev(ptr noundef nonnull align 16 dereferenceable(256) %10) #11
  call void @llvm.lifetime.end.p0(i64 256, ptr %10) #11
  call void @llvm.lifetime.start.p0(i64 24, ptr %14) #11
  call void @_ZN3JPH5ArrayINS_4Vec3ENS_12STLAllocatorIS1_EEEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %14) #11
  call void @llvm.lifetime.start.p0(i64 16, ptr %15) #11
  invoke void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %15, float noundef 5.000000e+00, float noundef 5.000000e+00, float noundef 5.000000e+00)
          to label %131 unwind label %207

131:                                              ; preds = %129
  invoke void @_ZN3JPH5ArrayINS_4Vec3ENS_12STLAllocatorIS1_EEE9push_backEOS1_(ptr noundef nonnull align 8 dereferenceable(24) %14, ptr noundef nonnull align 16 dereferenceable(16) %15)
          to label %132 unwind label %207

132:                                              ; preds = %131
  call void @llvm.lifetime.end.p0(i64 16, ptr %15) #11
  call void @llvm.lifetime.start.p0(i64 16, ptr %16) #11
  invoke void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %16, float noundef -5.000000e+00, float noundef 5.000000e+00, float noundef 5.000000e+00)
          to label %133 unwind label %211

133:                                              ; preds = %132
  invoke void @_ZN3JPH5ArrayINS_4Vec3ENS_12STLAllocatorIS1_EEE9push_backEOS1_(ptr noundef nonnull align 8 dereferenceable(24) %14, ptr noundef nonnull align 16 dereferenceable(16) %16)
          to label %134 unwind label %211

134:                                              ; preds = %133
  call void @llvm.lifetime.end.p0(i64 16, ptr %16) #11
  call void @llvm.lifetime.start.p0(i64 16, ptr %17) #11
  invoke void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %17, float noundef 5.000000e+00, float noundef -5.000000e+00, float noundef 5.000000e+00)
          to label %135 unwind label %215

135:                                              ; preds = %134
  invoke void @_ZN3JPH5ArrayINS_4Vec3ENS_12STLAllocatorIS1_EEE9push_backEOS1_(ptr noundef nonnull align 8 dereferenceable(24) %14, ptr noundef nonnull align 16 dereferenceable(16) %17)
          to label %136 unwind label %215

136:                                              ; preds = %135
  call void @llvm.lifetime.end.p0(i64 16, ptr %17) #11
  call void @llvm.lifetime.start.p0(i64 16, ptr %18) #11
  invoke void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %18, float noundef -5.000000e+00, float noundef -5.000000e+00, float noundef 5.000000e+00)
          to label %137 unwind label %219

137:                                              ; preds = %136
  invoke void @_ZN3JPH5ArrayINS_4Vec3ENS_12STLAllocatorIS1_EEE9push_backEOS1_(ptr noundef nonnull align 8 dereferenceable(24) %14, ptr noundef nonnull align 16 dereferenceable(16) %18)
          to label %138 unwind label %219

138:                                              ; preds = %137
  call void @llvm.lifetime.end.p0(i64 16, ptr %18) #11
  call void @llvm.lifetime.start.p0(i64 16, ptr %19) #11
  invoke void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %19, float noundef 5.000000e+00, float noundef 5.000000e+00, float noundef -5.000000e+00)
          to label %139 unwind label %223

139:                                              ; preds = %138
  invoke void @_ZN3JPH5ArrayINS_4Vec3ENS_12STLAllocatorIS1_EEE9push_backEOS1_(ptr noundef nonnull align 8 dereferenceable(24) %14, ptr noundef nonnull align 16 dereferenceable(16) %19)
          to label %140 unwind label %223

140:                                              ; preds = %139
  call void @llvm.lifetime.end.p0(i64 16, ptr %19) #11
  call void @llvm.lifetime.start.p0(i64 16, ptr %20) #11
  invoke void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %20, float noundef -5.000000e+00, float noundef 5.000000e+00, float noundef -5.000000e+00)
          to label %141 unwind label %227

141:                                              ; preds = %140
  invoke void @_ZN3JPH5ArrayINS_4Vec3ENS_12STLAllocatorIS1_EEE9push_backEOS1_(ptr noundef nonnull align 8 dereferenceable(24) %14, ptr noundef nonnull align 16 dereferenceable(16) %20)
          to label %142 unwind label %227

142:                                              ; preds = %141
  call void @llvm.lifetime.end.p0(i64 16, ptr %20) #11
  call void @llvm.lifetime.start.p0(i64 16, ptr %21) #11
  invoke void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %21, float noundef 5.000000e+00, float noundef -5.000000e+00, float noundef -5.000000e+00)
          to label %143 unwind label %231

143:                                              ; preds = %142
  invoke void @_ZN3JPH5ArrayINS_4Vec3ENS_12STLAllocatorIS1_EEE9push_backEOS1_(ptr noundef nonnull align 8 dereferenceable(24) %14, ptr noundef nonnull align 16 dereferenceable(16) %21)
          to label %144 unwind label %231

144:                                              ; preds = %143
  call void @llvm.lifetime.end.p0(i64 16, ptr %21) #11
  call void @llvm.lifetime.start.p0(i64 16, ptr %22) #11
  invoke void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %22, float noundef -5.000000e+00, float noundef -5.000000e+00, float noundef -5.000000e+00)
          to label %145 unwind label %235

145:                                              ; preds = %144
  invoke void @_ZN3JPH5ArrayINS_4Vec3ENS_12STLAllocatorIS1_EEE9push_backEOS1_(ptr noundef nonnull align 8 dereferenceable(24) %14, ptr noundef nonnull align 16 dereferenceable(16) %22)
          to label %146 unwind label %235

146:                                              ; preds = %145
  call void @llvm.lifetime.end.p0(i64 16, ptr %22) #11
  %147 = getelementptr inbounds %class.Test, ptr %94, i32 0, i32 3
  %148 = load ptr, ptr %147, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 256, ptr %23) #11
  %149 = invoke noundef ptr @_ZN3JPH23ConvexHullShapeSettingsnwEm(i64 noundef 120)
          to label %150 unwind label %239

150:                                              ; preds = %146
  invoke void @_ZN3JPH23ConvexHullShapeSettingsC2ERKNS_5ArrayINS_4Vec3ENS_12STLAllocatorIS2_EEEEfPKNS_15PhysicsMaterialE(ptr noundef nonnull align 8 dereferenceable(120) %149, ptr noundef nonnull align 8 dereferenceable(24) %14, float noundef 0x3FA99999A0000000, ptr noundef null)
          to label %151 unwind label %243

151:                                              ; preds = %150
  invoke void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %24, float noundef 2.000000e+01, float noundef 1.000000e+01, float noundef 0.000000e+00)
          to label %152 unwind label %239

152:                                              ; preds = %151
  %153 = invoke { double, double } @_ZN3JPH4Quat9sIdentityEv()
          to label %154 unwind label %239

154:                                              ; preds = %152
  %155 = getelementptr inbounds %"class.JPH::Quat", ptr %25, i32 0, i32 0
  %156 = getelementptr inbounds %"class.JPH::Vec4", ptr %155, i32 0, i32 0
  %157 = getelementptr inbounds %union.anon.4, ptr %156, i32 0, i32 0
  %158 = getelementptr inbounds { double, double }, ptr %157, i32 0, i32 0
  %159 = extractvalue { double, double } %153, 0
  store double %159, ptr %158, align 16
  %160 = getelementptr inbounds { double, double }, ptr %157, i32 0, i32 1
  %161 = extractvalue { double, double } %153, 1
  store double %161, ptr %160, align 8
  %162 = getelementptr inbounds { double, double }, ptr %24, i32 0, i32 0
  %163 = load double, ptr %162, align 16
  %164 = getelementptr inbounds { double, double }, ptr %24, i32 0, i32 1
  %165 = load double, ptr %164, align 8
  %166 = getelementptr inbounds { double, double }, ptr %25, i32 0, i32 0
  %167 = load double, ptr %166, align 16
  %168 = getelementptr inbounds { double, double }, ptr %25, i32 0, i32 1
  %169 = load double, ptr %168, align 8
  invoke void @_ZN3JPH20BodyCreationSettingsC2EPKNS_13ShapeSettingsENS_4Vec3ENS_4QuatENS_11EMotionTypeEt(ptr noundef nonnull align 16 dereferenceable(256) %23, ptr noundef %149, double %163, double %165, double %167, double %169, i8 noundef zeroext 2, i16 noundef zeroext 1)
          to label %170 unwind label %239

170:                                              ; preds = %154
  %171 = invoke i32 @_ZN3JPH13BodyInterface16CreateAndAddBodyERKNS_20BodyCreationSettingsENS_11EActivationE(ptr noundef nonnull align 8 dereferenceable(24) %148, ptr noundef nonnull align 16 dereferenceable(256) %23, i32 noundef 0)
          to label %172 unwind label %247

172:                                              ; preds = %170
  %173 = getelementptr inbounds %"class.JPH::BodyID", ptr %26, i32 0, i32 0
  store i32 %171, ptr %173, align 4
  call void @_ZN3JPH20BodyCreationSettingsD2Ev(ptr noundef nonnull align 16 dereferenceable(256) %23) #11
  call void @llvm.lifetime.end.p0(i64 256, ptr %23) #11
  call void @llvm.lifetime.start.p0(i64 24, ptr %27) #11
  call void @_ZN3JPH5ArrayINS_4Vec3ENS_12STLAllocatorIS1_EEEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %27) #11
  call void @llvm.lifetime.start.p0(i64 4, ptr %28) #11
  store float 0.000000e+00, ptr %28, align 4, !tbaa !18
  br label %174

174:                                              ; preds = %289, %172
  %175 = load float, ptr %28, align 4, !tbaa !18
  %176 = fcmp ole float %175, 0x400921FB60000000
  br i1 %176, label %252, label %177

177:                                              ; preds = %174
  store i32 2, ptr %29, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %28) #11
  br label %292

178:                                              ; preds = %96, %1
  %179 = landingpad { ptr, i32 }
          cleanup
  %180 = extractvalue { ptr, i32 } %179, 0
  store ptr %180, ptr %5, align 8
  %181 = extractvalue { ptr, i32 } %179, 1
  store i32 %181, ptr %6, align 4
  call void @llvm.lifetime.end.p0(i64 16, ptr %4) #11
  br label %805

182:                                              ; preds = %98, %97
  %183 = landingpad { ptr, i32 }
          cleanup
  %184 = extractvalue { ptr, i32 } %183, 0
  store ptr %184, ptr %5, align 8
  %185 = extractvalue { ptr, i32 } %183, 1
  store i32 %185, ptr %6, align 4
  call void @llvm.lifetime.end.p0(i64 16, ptr %7) #11
  br label %805

186:                                              ; preds = %100, %99
  %187 = landingpad { ptr, i32 }
          cleanup
  %188 = extractvalue { ptr, i32 } %187, 0
  store ptr %188, ptr %5, align 8
  %189 = extractvalue { ptr, i32 } %187, 1
  store i32 %189, ptr %6, align 4
  call void @llvm.lifetime.end.p0(i64 16, ptr %8) #11
  br label %805

190:                                              ; preds = %102, %101
  %191 = landingpad { ptr, i32 }
          cleanup
  %192 = extractvalue { ptr, i32 } %191, 0
  store ptr %192, ptr %5, align 8
  %193 = extractvalue { ptr, i32 } %191, 1
  store i32 %193, ptr %6, align 4
  call void @llvm.lifetime.end.p0(i64 16, ptr %9) #11
  br label %805

194:                                              ; preds = %111, %109, %108, %103
  %195 = landingpad { ptr, i32 }
          cleanup
  %196 = extractvalue { ptr, i32 } %195, 0
  store ptr %196, ptr %5, align 8
  %197 = extractvalue { ptr, i32 } %195, 1
  store i32 %197, ptr %6, align 4
  br label %206

198:                                              ; preds = %107
  %199 = landingpad { ptr, i32 }
          cleanup
  %200 = extractvalue { ptr, i32 } %199, 0
  store ptr %200, ptr %5, align 8
  %201 = extractvalue { ptr, i32 } %199, 1
  store i32 %201, ptr %6, align 4
  call void @_ZN3JPH23ConvexHullShapeSettingsdlEPv(ptr noundef %106) #11
  br label %206

202:                                              ; preds = %127
  %203 = landingpad { ptr, i32 }
          cleanup
  %204 = extractvalue { ptr, i32 } %203, 0
  store ptr %204, ptr %5, align 8
  %205 = extractvalue { ptr, i32 } %203, 1
  store i32 %205, ptr %6, align 4
  call void @_ZN3JPH20BodyCreationSettingsD2Ev(ptr noundef nonnull align 16 dereferenceable(256) %10) #11
  br label %206

206:                                              ; preds = %202, %198, %194
  call void @llvm.lifetime.end.p0(i64 256, ptr %10) #11
  br label %805

207:                                              ; preds = %131, %129
  %208 = landingpad { ptr, i32 }
          cleanup
  %209 = extractvalue { ptr, i32 } %208, 0
  store ptr %209, ptr %5, align 8
  %210 = extractvalue { ptr, i32 } %208, 1
  store i32 %210, ptr %6, align 4
  call void @llvm.lifetime.end.p0(i64 16, ptr %15) #11
  br label %804

211:                                              ; preds = %133, %132
  %212 = landingpad { ptr, i32 }
          cleanup
  %213 = extractvalue { ptr, i32 } %212, 0
  store ptr %213, ptr %5, align 8
  %214 = extractvalue { ptr, i32 } %212, 1
  store i32 %214, ptr %6, align 4
  call void @llvm.lifetime.end.p0(i64 16, ptr %16) #11
  br label %804

215:                                              ; preds = %135, %134
  %216 = landingpad { ptr, i32 }
          cleanup
  %217 = extractvalue { ptr, i32 } %216, 0
  store ptr %217, ptr %5, align 8
  %218 = extractvalue { ptr, i32 } %216, 1
  store i32 %218, ptr %6, align 4
  call void @llvm.lifetime.end.p0(i64 16, ptr %17) #11
  br label %804

219:                                              ; preds = %137, %136
  %220 = landingpad { ptr, i32 }
          cleanup
  %221 = extractvalue { ptr, i32 } %220, 0
  store ptr %221, ptr %5, align 8
  %222 = extractvalue { ptr, i32 } %220, 1
  store i32 %222, ptr %6, align 4
  call void @llvm.lifetime.end.p0(i64 16, ptr %18) #11
  br label %804

223:                                              ; preds = %139, %138
  %224 = landingpad { ptr, i32 }
          cleanup
  %225 = extractvalue { ptr, i32 } %224, 0
  store ptr %225, ptr %5, align 8
  %226 = extractvalue { ptr, i32 } %224, 1
  store i32 %226, ptr %6, align 4
  call void @llvm.lifetime.end.p0(i64 16, ptr %19) #11
  br label %804

227:                                              ; preds = %141, %140
  %228 = landingpad { ptr, i32 }
          cleanup
  %229 = extractvalue { ptr, i32 } %228, 0
  store ptr %229, ptr %5, align 8
  %230 = extractvalue { ptr, i32 } %228, 1
  store i32 %230, ptr %6, align 4
  call void @llvm.lifetime.end.p0(i64 16, ptr %20) #11
  br label %804

231:                                              ; preds = %143, %142
  %232 = landingpad { ptr, i32 }
          cleanup
  %233 = extractvalue { ptr, i32 } %232, 0
  store ptr %233, ptr %5, align 8
  %234 = extractvalue { ptr, i32 } %232, 1
  store i32 %234, ptr %6, align 4
  call void @llvm.lifetime.end.p0(i64 16, ptr %21) #11
  br label %804

235:                                              ; preds = %145, %144
  %236 = landingpad { ptr, i32 }
          cleanup
  %237 = extractvalue { ptr, i32 } %236, 0
  store ptr %237, ptr %5, align 8
  %238 = extractvalue { ptr, i32 } %236, 1
  store i32 %238, ptr %6, align 4
  call void @llvm.lifetime.end.p0(i64 16, ptr %22) #11
  br label %804

239:                                              ; preds = %154, %152, %151, %146
  %240 = landingpad { ptr, i32 }
          cleanup
  %241 = extractvalue { ptr, i32 } %240, 0
  store ptr %241, ptr %5, align 8
  %242 = extractvalue { ptr, i32 } %240, 1
  store i32 %242, ptr %6, align 4
  br label %251

243:                                              ; preds = %150
  %244 = landingpad { ptr, i32 }
          cleanup
  %245 = extractvalue { ptr, i32 } %244, 0
  store ptr %245, ptr %5, align 8
  %246 = extractvalue { ptr, i32 } %244, 1
  store i32 %246, ptr %6, align 4
  call void @_ZN3JPH23ConvexHullShapeSettingsdlEPv(ptr noundef %149) #11
  br label %251

247:                                              ; preds = %170
  %248 = landingpad { ptr, i32 }
          cleanup
  %249 = extractvalue { ptr, i32 } %248, 0
  store ptr %249, ptr %5, align 8
  %250 = extractvalue { ptr, i32 } %248, 1
  store i32 %250, ptr %6, align 4
  call void @_ZN3JPH20BodyCreationSettingsD2Ev(ptr noundef nonnull align 16 dereferenceable(256) %23) #11
  br label %251

251:                                              ; preds = %247, %243, %239
  call void @llvm.lifetime.end.p0(i64 256, ptr %23) #11
  br label %804

252:                                              ; preds = %174
  call void @llvm.lifetime.start.p0(i64 4, ptr %30) #11
  store float 0.000000e+00, ptr %30, align 4, !tbaa !18
  br label %253

253:                                              ; preds = %281, %252
  %254 = load float, ptr %30, align 4, !tbaa !18
  %255 = fcmp ole float %254, 0x401921FB60000000
  br i1 %255, label %257, label %256

256:                                              ; preds = %253
  store i32 5, ptr %29, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %30) #11
  br label %288

257:                                              ; preds = %253
  call void @llvm.lifetime.start.p0(i64 16, ptr %31) #11
  %258 = load float, ptr %28, align 4, !tbaa !18
  %259 = load float, ptr %30, align 4, !tbaa !18
  %260 = invoke { double, double } @_ZN3JPH4Vec314sUnitSphericalEff(float noundef %258, float noundef %259)
          to label %261 unwind label %284

261:                                              ; preds = %257
  %262 = getelementptr inbounds %"class.JPH::Vec3", ptr %32, i32 0, i32 0
  %263 = getelementptr inbounds %union.anon, ptr %262, i32 0, i32 0
  %264 = getelementptr inbounds { double, double }, ptr %263, i32 0, i32 0
  %265 = extractvalue { double, double } %260, 0
  store double %265, ptr %264, align 16
  %266 = getelementptr inbounds { double, double }, ptr %263, i32 0, i32 1
  %267 = extractvalue { double, double } %260, 1
  store double %267, ptr %266, align 8
  %268 = getelementptr inbounds { double, double }, ptr %32, i32 0, i32 0
  %269 = load double, ptr %268, align 16
  %270 = getelementptr inbounds { double, double }, ptr %32, i32 0, i32 1
  %271 = load double, ptr %270, align 8
  %272 = invoke { double, double } @_ZN3JPHmlEfNS_4Vec3E(float noundef 5.000000e+00, double %269, double %271)
          to label %273 unwind label %284

273:                                              ; preds = %261
  %274 = getelementptr inbounds %"class.JPH::Vec3", ptr %31, i32 0, i32 0
  %275 = getelementptr inbounds %union.anon, ptr %274, i32 0, i32 0
  %276 = getelementptr inbounds { double, double }, ptr %275, i32 0, i32 0
  %277 = extractvalue { double, double } %272, 0
  store double %277, ptr %276, align 16
  %278 = getelementptr inbounds { double, double }, ptr %275, i32 0, i32 1
  %279 = extractvalue { double, double } %272, 1
  store double %279, ptr %278, align 8
  invoke void @_ZN3JPH5ArrayINS_4Vec3ENS_12STLAllocatorIS1_EEE9push_backEOS1_(ptr noundef nonnull align 8 dereferenceable(24) %27, ptr noundef nonnull align 16 dereferenceable(16) %31)
          to label %280 unwind label %284

280:                                              ; preds = %273
  call void @llvm.lifetime.end.p0(i64 16, ptr %31) #11
  br label %281

281:                                              ; preds = %280
  %282 = load float, ptr %30, align 4, !tbaa !18
  %283 = fadd float %282, 0x3FD41B2F80000000
  store float %283, ptr %30, align 4, !tbaa !18
  br label %253, !llvm.loop !19

284:                                              ; preds = %273, %261, %257
  %285 = landingpad { ptr, i32 }
          cleanup
  %286 = extractvalue { ptr, i32 } %285, 0
  store ptr %286, ptr %5, align 8
  %287 = extractvalue { ptr, i32 } %285, 1
  store i32 %287, ptr %6, align 4
  call void @llvm.lifetime.end.p0(i64 16, ptr %31) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr %30) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr %28) #11
  br label %803

288:                                              ; preds = %256
  br label %289

289:                                              ; preds = %288
  %290 = load float, ptr %28, align 4, !tbaa !18
  %291 = fadd float %290, 0x3FC41B2F80000000
  store float %291, ptr %28, align 4, !tbaa !18
  br label %174, !llvm.loop !21

292:                                              ; preds = %177
  %293 = getelementptr inbounds %class.Test, ptr %94, i32 0, i32 3
  %294 = load ptr, ptr %293, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 256, ptr %33) #11
  %295 = invoke noundef ptr @_ZN3JPH23ConvexHullShapeSettingsnwEm(i64 noundef 120)
          to label %296 unwind label %324

296:                                              ; preds = %292
  invoke void @_ZN3JPH23ConvexHullShapeSettingsC2ERKNS_5ArrayINS_4Vec3ENS_12STLAllocatorIS2_EEEEfPKNS_15PhysicsMaterialE(ptr noundef nonnull align 8 dereferenceable(120) %295, ptr noundef nonnull align 8 dereferenceable(24) %27, float noundef 0x3FA99999A0000000, ptr noundef null)
          to label %297 unwind label %328

297:                                              ; preds = %296
  invoke void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %34, float noundef 4.000000e+01, float noundef 1.000000e+01, float noundef 0.000000e+00)
          to label %298 unwind label %324

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

300:                                              ; preds = %298
  %301 = getelementptr inbounds %"class.JPH::Quat", ptr %35, i32 0, i32 0
  %302 = getelementptr inbounds %"class.JPH::Vec4", ptr %301, i32 0, i32 0
  %303 = getelementptr inbounds %union.anon.4, ptr %302, i32 0, i32 0
  %304 = getelementptr inbounds { double, double }, ptr %303, i32 0, i32 0
  %305 = extractvalue { double, double } %299, 0
  store double %305, ptr %304, align 16
  %306 = getelementptr inbounds { double, double }, ptr %303, i32 0, i32 1
  %307 = extractvalue { double, double } %299, 1
  store double %307, ptr %306, align 8
  %308 = getelementptr inbounds { double, double }, ptr %34, i32 0, i32 0
  %309 = load double, ptr %308, align 16
  %310 = getelementptr inbounds { double, double }, ptr %34, i32 0, i32 1
  %311 = load double, ptr %310, align 8
  %312 = getelementptr inbounds { double, double }, ptr %35, i32 0, i32 0
  %313 = load double, ptr %312, align 16
  %314 = getelementptr inbounds { double, double }, ptr %35, i32 0, i32 1
  %315 = load double, ptr %314, align 8
  invoke void @_ZN3JPH20BodyCreationSettingsC2EPKNS_13ShapeSettingsENS_4Vec3ENS_4QuatENS_11EMotionTypeEt(ptr noundef nonnull align 16 dereferenceable(256) %33, ptr noundef %295, double %309, double %311, double %313, double %315, i8 noundef zeroext 2, i16 noundef zeroext 1)
          to label %316 unwind label %324

316:                                              ; preds = %300
  %317 = invoke i32 @_ZN3JPH13BodyInterface16CreateAndAddBodyERKNS_20BodyCreationSettingsENS_11EActivationE(ptr noundef nonnull align 8 dereferenceable(24) %294, ptr noundef nonnull align 16 dereferenceable(256) %33, i32 noundef 0)
          to label %318 unwind label %332

318:                                              ; preds = %316
  %319 = getelementptr inbounds %"class.JPH::BodyID", ptr %36, i32 0, i32 0
  store i32 %317, ptr %319, align 4
  call void @_ZN3JPH20BodyCreationSettingsD2Ev(ptr noundef nonnull align 16 dereferenceable(256) %33) #11
  call void @llvm.lifetime.end.p0(i64 256, ptr %33) #11
  call void @llvm.lifetime.start.p0(i64 24, ptr %37) #11
  call void @_ZN3JPH5ArrayINS_4Vec3ENS_12STLAllocatorIS1_EEEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %37) #11
  call void @llvm.lifetime.start.p0(i64 4, ptr %38) #11
  store float 0.000000e+00, ptr %38, align 4, !tbaa !18
  br label %320

320:                                              ; preds = %378, %318
  %321 = load float, ptr %38, align 4, !tbaa !18
  %322 = fcmp ole float %321, 0x401921FB60000000
  br i1 %322, label %337, label %323

323:                                              ; preds = %320
  store i32 8, ptr %29, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %38) #11
  br label %390

324:                                              ; preds = %300, %298, %297, %292
  %325 = landingpad { ptr, i32 }
          cleanup
  %326 = extractvalue { ptr, i32 } %325, 0
  store ptr %326, ptr %5, align 8
  %327 = extractvalue { ptr, i32 } %325, 1
  store i32 %327, ptr %6, align 4
  br label %336

328:                                              ; preds = %296
  %329 = landingpad { ptr, i32 }
          cleanup
  %330 = extractvalue { ptr, i32 } %329, 0
  store ptr %330, ptr %5, align 8
  %331 = extractvalue { ptr, i32 } %329, 1
  store i32 %331, ptr %6, align 4
  call void @_ZN3JPH23ConvexHullShapeSettingsdlEPv(ptr noundef %295) #11
  br label %336

332:                                              ; preds = %316
  %333 = landingpad { ptr, i32 }
          cleanup
  %334 = extractvalue { ptr, i32 } %333, 0
  store ptr %334, ptr %5, align 8
  %335 = extractvalue { ptr, i32 } %333, 1
  store i32 %335, ptr %6, align 4
  call void @_ZN3JPH20BodyCreationSettingsD2Ev(ptr noundef nonnull align 16 dereferenceable(256) %33) #11
  br label %336

336:                                              ; preds = %332, %328, %324
  call void @llvm.lifetime.end.p0(i64 256, ptr %33) #11
  br label %803

337:                                              ; preds = %320
  call void @llvm.lifetime.start.p0(i64 16, ptr %39) #11
  %338 = load float, ptr %38, align 4, !tbaa !18
  %339 = invoke noundef float @_ZN3JPH3SinEf(float noundef %338)
          to label %340 unwind label %381

340:                                              ; preds = %337
  %341 = load float, ptr %38, align 4, !tbaa !18
  %342 = invoke noundef float @_ZN3JPH3CosEf(float noundef %341)
          to label %343 unwind label %381

343:                                              ; preds = %340
  invoke void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %40, float noundef 0xBFB99999A0000000, float noundef %339, float noundef %342)
          to label %344 unwind label %381

344:                                              ; preds = %343
  %345 = getelementptr inbounds { double, double }, ptr %40, i32 0, i32 0
  %346 = load double, ptr %345, align 16
  %347 = getelementptr inbounds { double, double }, ptr %40, i32 0, i32 1
  %348 = load double, ptr %347, align 8
  %349 = invoke { double, double } @_ZN3JPHmlEfNS_4Vec3E(float noundef 4.000000e+00, double %346, double %348)
          to label %350 unwind label %381

350:                                              ; preds = %344
  %351 = getelementptr inbounds %"class.JPH::Vec3", ptr %39, i32 0, i32 0
  %352 = getelementptr inbounds %union.anon, ptr %351, i32 0, i32 0
  %353 = getelementptr inbounds { double, double }, ptr %352, i32 0, i32 0
  %354 = extractvalue { double, double } %349, 0
  store double %354, ptr %353, align 16
  %355 = getelementptr inbounds { double, double }, ptr %352, i32 0, i32 1
  %356 = extractvalue { double, double } %349, 1
  store double %356, ptr %355, align 8
  invoke void @_ZN3JPH5ArrayINS_4Vec3ENS_12STLAllocatorIS1_EEE9push_backEOS1_(ptr noundef nonnull align 8 dereferenceable(24) %37, ptr noundef nonnull align 16 dereferenceable(16) %39)
          to label %357 unwind label %381

357:                                              ; preds = %350
  call void @llvm.lifetime.end.p0(i64 16, ptr %39) #11
  call void @llvm.lifetime.start.p0(i64 16, ptr %41) #11
  %358 = load float, ptr %38, align 4, !tbaa !18
  %359 = invoke noundef float @_ZN3JPH3SinEf(float noundef %358)
          to label %360 unwind label %385

360:                                              ; preds = %357
  %361 = load float, ptr %38, align 4, !tbaa !18
  %362 = invoke noundef float @_ZN3JPH3CosEf(float noundef %361)
          to label %363 unwind label %385

363:                                              ; preds = %360
  invoke void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %42, float noundef 0x3FB99999A0000000, float noundef %359, float noundef %362)
          to label %364 unwind label %385

364:                                              ; preds = %363
  %365 = getelementptr inbounds { double, double }, ptr %42, i32 0, i32 0
  %366 = load double, ptr %365, align 16
  %367 = getelementptr inbounds { double, double }, ptr %42, i32 0, i32 1
  %368 = load double, ptr %367, align 8
  %369 = invoke { double, double } @_ZN3JPHmlEfNS_4Vec3E(float noundef 4.500000e+00, double %366, double %368)
          to label %370 unwind label %385

370:                                              ; preds = %364
  %371 = getelementptr inbounds %"class.JPH::Vec3", ptr %41, i32 0, i32 0
  %372 = getelementptr inbounds %union.anon, ptr %371, i32 0, i32 0
  %373 = getelementptr inbounds { double, double }, ptr %372, i32 0, i32 0
  %374 = extractvalue { double, double } %369, 0
  store double %374, ptr %373, align 16
  %375 = getelementptr inbounds { double, double }, ptr %372, i32 0, i32 1
  %376 = extractvalue { double, double } %369, 1
  store double %376, ptr %375, align 8
  invoke void @_ZN3JPH5ArrayINS_4Vec3ENS_12STLAllocatorIS1_EEE9push_backEOS1_(ptr noundef nonnull align 8 dereferenceable(24) %37, ptr noundef nonnull align 16 dereferenceable(16) %41)
          to label %377 unwind label %385

377:                                              ; preds = %370
  call void @llvm.lifetime.end.p0(i64 16, ptr %41) #11
  br label %378

378:                                              ; preds = %377
  %379 = load float, ptr %38, align 4, !tbaa !18
  %380 = fadd float %379, 0x3F9921FB60000000
  store float %380, ptr %38, align 4, !tbaa !18
  br label %320, !llvm.loop !22

381:                                              ; preds = %350, %344, %343, %340, %337
  %382 = landingpad { ptr, i32 }
          cleanup
  %383 = extractvalue { ptr, i32 } %382, 0
  store ptr %383, ptr %5, align 8
  %384 = extractvalue { ptr, i32 } %382, 1
  store i32 %384, ptr %6, align 4
  call void @llvm.lifetime.end.p0(i64 16, ptr %39) #11
  br label %389

385:                                              ; preds = %370, %364, %363, %360, %357
  %386 = landingpad { ptr, i32 }
          cleanup
  %387 = extractvalue { ptr, i32 } %386, 0
  store ptr %387, ptr %5, align 8
  %388 = extractvalue { ptr, i32 } %386, 1
  store i32 %388, ptr %6, align 4
  call void @llvm.lifetime.end.p0(i64 16, ptr %41) #11
  br label %389

389:                                              ; preds = %385, %381
  call void @llvm.lifetime.end.p0(i64 4, ptr %38) #11
  br label %802

390:                                              ; preds = %323
  %391 = getelementptr inbounds %class.Test, ptr %94, i32 0, i32 3
  %392 = load ptr, ptr %391, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 256, ptr %43) #11
  %393 = invoke noundef ptr @_ZN3JPH23ConvexHullShapeSettingsnwEm(i64 noundef 120)
          to label %394 unwind label %491

394:                                              ; preds = %390
  invoke void @_ZN3JPH23ConvexHullShapeSettingsC2ERKNS_5ArrayINS_4Vec3ENS_12STLAllocatorIS2_EEEEfPKNS_15PhysicsMaterialE(ptr noundef nonnull align 8 dereferenceable(120) %393, ptr noundef nonnull align 8 dereferenceable(24) %37, float noundef 0x3FA99999A0000000, ptr noundef null)
          to label %395 unwind label %495

395:                                              ; preds = %394
  invoke void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %44, float noundef 6.000000e+01, float noundef 1.000000e+01, float noundef 0.000000e+00)
          to label %396 unwind label %491

396:                                              ; preds = %395
  %397 = invoke { double, double } @_ZN3JPH4Quat9sIdentityEv()
          to label %398 unwind label %491

398:                                              ; preds = %396
  %399 = getelementptr inbounds %"class.JPH::Quat", ptr %45, i32 0, i32 0
  %400 = getelementptr inbounds %"class.JPH::Vec4", ptr %399, i32 0, i32 0
  %401 = getelementptr inbounds %union.anon.4, ptr %400, i32 0, i32 0
  %402 = getelementptr inbounds { double, double }, ptr %401, i32 0, i32 0
  %403 = extractvalue { double, double } %397, 0
  store double %403, ptr %402, align 16
  %404 = getelementptr inbounds { double, double }, ptr %401, i32 0, i32 1
  %405 = extractvalue { double, double } %397, 1
  store double %405, ptr %404, align 8
  %406 = getelementptr inbounds { double, double }, ptr %44, i32 0, i32 0
  %407 = load double, ptr %406, align 16
  %408 = getelementptr inbounds { double, double }, ptr %44, i32 0, i32 1
  %409 = load double, ptr %408, align 8
  %410 = getelementptr inbounds { double, double }, ptr %45, i32 0, i32 0
  %411 = load double, ptr %410, align 16
  %412 = getelementptr inbounds { double, double }, ptr %45, i32 0, i32 1
  %413 = load double, ptr %412, align 8
  invoke void @_ZN3JPH20BodyCreationSettingsC2EPKNS_13ShapeSettingsENS_4Vec3ENS_4QuatENS_11EMotionTypeEt(ptr noundef nonnull align 16 dereferenceable(256) %43, ptr noundef %393, double %407, double %409, double %411, double %413, i8 noundef zeroext 2, i16 noundef zeroext 1)
          to label %414 unwind label %491

414:                                              ; preds = %398
  %415 = invoke i32 @_ZN3JPH13BodyInterface16CreateAndAddBodyERKNS_20BodyCreationSettingsENS_11EActivationE(ptr noundef nonnull align 8 dereferenceable(24) %392, ptr noundef nonnull align 16 dereferenceable(256) %43, i32 noundef 0)
          to label %416 unwind label %499

416:                                              ; preds = %414
  %417 = getelementptr inbounds %"class.JPH::BodyID", ptr %46, i32 0, i32 0
  store i32 %415, ptr %417, align 4
  call void @_ZN3JPH20BodyCreationSettingsD2Ev(ptr noundef nonnull align 16 dereferenceable(256) %43) #11
  call void @llvm.lifetime.end.p0(i64 256, ptr %43) #11
  call void @llvm.lifetime.start.p0(i64 24, ptr %47) #11
  call void @_ZN3JPH5ArrayINS_4Vec3ENS_12STLAllocatorIS1_EEEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %47) #11
  call void @llvm.lifetime.start.p0(i64 16, ptr %48) #11
  invoke void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %48, float noundef 0x3FF0B013A0000000, float noundef 0x4012BDC3E0000000, float noundef 0x3FEB7BB980000000)
          to label %418 unwind label %504

418:                                              ; preds = %416
  invoke void @_ZN3JPH5ArrayINS_4Vec3ENS_12STLAllocatorIS1_EEE9push_backEOS1_(ptr noundef nonnull align 8 dereferenceable(24) %47, ptr noundef nonnull align 16 dereferenceable(16) %48)
          to label %419 unwind label %504

419:                                              ; preds = %418
  call void @llvm.lifetime.end.p0(i64 16, ptr %48) #11
  call void @llvm.lifetime.start.p0(i64 16, ptr %49) #11
  invoke void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %49, float noundef 0xBFF01EE240000000, float noundef 0x40128EB340000000, float noundef 0xBFEEB0A8E0000000)
          to label %420 unwind label %508

420:                                              ; preds = %419
  invoke void @_ZN3JPH5ArrayINS_4Vec3ENS_12STLAllocatorIS1_EEE9push_backEOS1_(ptr noundef nonnull align 8 dereferenceable(24) %47, ptr noundef nonnull align 16 dereferenceable(16) %49)
          to label %421 unwind label %508

421:                                              ; preds = %420
  call void @llvm.lifetime.end.p0(i64 16, ptr %49) #11
  call void @llvm.lifetime.start.p0(i64 16, ptr %50) #11
  invoke void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %50, float noundef 0xBFF04C40E0000000, float noundef 0x4012E24440000000, float noundef 0x3FEB136D80000000)
          to label %422 unwind label %512

422:                                              ; preds = %421
  invoke void @_ZN3JPH5ArrayINS_4Vec3ENS_12STLAllocatorIS1_EEE9push_backEOS1_(ptr noundef nonnull align 8 dereferenceable(24) %47, ptr noundef nonnull align 16 dereferenceable(16) %50)
          to label %423 unwind label %512

423:                                              ; preds = %422
  call void @llvm.lifetime.end.p0(i64 16, ptr %50) #11
  call void @llvm.lifetime.start.p0(i64 16, ptr %51) #11
  invoke void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %51, float noundef 0xC0030A2880000000, float noundef 0x3FF435B6E0000000, float noundef 0xBFF1C257C0000000)
          to label %424 unwind label %516

424:                                              ; preds = %423
  invoke void @_ZN3JPH5ArrayINS_4Vec3ENS_12STLAllocatorIS1_EEE9push_backEOS1_(ptr noundef nonnull align 8 dereferenceable(24) %47, ptr noundef nonnull align 16 dereferenceable(16) %51)
          to label %425 unwind label %516

425:                                              ; preds = %424
  call void @llvm.lifetime.end.p0(i64 16, ptr %51) #11
  call void @llvm.lifetime.start.p0(i64 16, ptr %52) #11
  invoke void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %52, float noundef 0x3FCB48FD60000000, float noundef 0x3F9456EC00000000, float noundef 0xBFFB4EF380000000)
          to label %426 unwind label %520

426:                                              ; preds = %425
  invoke void @_ZN3JPH5ArrayINS_4Vec3ENS_12STLAllocatorIS1_EEE9push_backEOS1_(ptr noundef nonnull align 8 dereferenceable(24) %47, ptr noundef nonnull align 16 dereferenceable(16) %52)
          to label %427 unwind label %520

427:                                              ; preds = %426
  call void @llvm.lifetime.end.p0(i64 16, ptr %52) #11
  call void @llvm.lifetime.start.p0(i64 16, ptr %53) #11
  invoke void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %53, float noundef 0xC0022F05A0000000, float noundef 0xBFECC49E40000000, float noundef 0xBFDE443540000000)
          to label %428 unwind label %524

428:                                              ; preds = %427
  invoke void @_ZN3JPH5ArrayINS_4Vec3ENS_12STLAllocatorIS1_EEE9push_backEOS1_(ptr noundef nonnull align 8 dereferenceable(24) %47, ptr noundef nonnull align 16 dereferenceable(16) %53)
          to label %429 unwind label %524

429:                                              ; preds = %428
  call void @llvm.lifetime.end.p0(i64 16, ptr %53) #11
  call void @llvm.lifetime.start.p0(i64 16, ptr %54) #11
  invoke void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %54, float noundef 0xBFFD9CCDE0000000, float noundef 0xBFF4086360000000, float noundef 0x4003631EC0000000)
          to label %430 unwind label %528

430:                                              ; preds = %429
  invoke void @_ZN3JPH5ArrayINS_4Vec3ENS_12STLAllocatorIS1_EEE9push_backEOS1_(ptr noundef nonnull align 8 dereferenceable(24) %47, ptr noundef nonnull align 16 dereferenceable(16) %54)
          to label %431 unwind label %528

431:                                              ; preds = %430
  call void @llvm.lifetime.end.p0(i64 16, ptr %54) #11
  call void @llvm.lifetime.start.p0(i64 16, ptr %55) #11
  invoke void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %55, float noundef 0x3FFE96DF60000000, float noundef 0xBFF4086360000000, float noundef 0x4003631EC0000000)
          to label %432 unwind label %532

432:                                              ; preds = %431
  invoke void @_ZN3JPH5ArrayINS_4Vec3ENS_12STLAllocatorIS1_EEE9push_backEOS1_(ptr noundef nonnull align 8 dereferenceable(24) %47, ptr noundef nonnull align 16 dereferenceable(16) %55)
          to label %433 unwind label %532

433:                                              ; preds = %432
  call void @llvm.lifetime.end.p0(i64 16, ptr %55) #11
  call void @llvm.lifetime.start.p0(i64 16, ptr %56) #11
  invoke void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %56, float noundef 0xC00605BB20000000, float noundef 0x400A006740000000, float noundef 0x3FFABA9340000000)
          to label %434 unwind label %536

434:                                              ; preds = %433
  invoke void @_ZN3JPH5ArrayINS_4Vec3ENS_12STLAllocatorIS1_EEE9push_backEOS1_(ptr noundef nonnull align 8 dereferenceable(24) %47, ptr noundef nonnull align 16 dereferenceable(16) %56)
          to label %435 unwind label %536

435:                                              ; preds = %434
  call void @llvm.lifetime.end.p0(i64 16, ptr %56) #11
  call void @llvm.lifetime.start.p0(i64 16, ptr %57) #11
  invoke void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %57, float noundef 0xBFB1DD8C40000000, float noundef 0xC0064EAA80000000, float noundef 0xBFDB024640000000)
          to label %436 unwind label %540

436:                                              ; preds = %435
  invoke void @_ZN3JPH5ArrayINS_4Vec3ENS_12STLAllocatorIS1_EEE9push_backEOS1_(ptr noundef nonnull align 8 dereferenceable(24) %47, ptr noundef nonnull align 16 dereferenceable(16) %57)
          to label %437 unwind label %540

437:                                              ; preds = %436
  call void @llvm.lifetime.end.p0(i64 16, ptr %57) #11
  call void @llvm.lifetime.start.p0(i64 16, ptr %58) #11
  invoke void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %58, float noundef 0x40021CE5A0000000, float noundef 0xBFED626640000000, float noundef 0xBFDF9C6E00000000)
          to label %438 unwind label %544

438:                                              ; preds = %437
  invoke void @_ZN3JPH5ArrayINS_4Vec3ENS_12STLAllocatorIS1_EEE9push_backEOS1_(ptr noundef nonnull align 8 dereferenceable(24) %47, ptr noundef nonnull align 16 dereferenceable(16) %58)
          to label %439 unwind label %544

439:                                              ; preds = %438
  call void @llvm.lifetime.end.p0(i64 16, ptr %58) #11
  call void @llvm.lifetime.start.p0(i64 16, ptr %59) #11
  invoke void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %59, float noundef 0x3FE881A9C0000000, float noundef 0xC006906780000000, float noundef 0x3FFE937A80000000)
          to label %440 unwind label %548

440:                                              ; preds = %439
  invoke void @_ZN3JPH5ArrayINS_4Vec3ENS_12STLAllocatorIS1_EEE9push_backEOS1_(ptr noundef nonnull align 8 dereferenceable(24) %47, ptr noundef nonnull align 16 dereferenceable(16) %59)
          to label %441 unwind label %548

441:                                              ; preds = %440
  call void @llvm.lifetime.end.p0(i64 16, ptr %59) #11
  call void @llvm.lifetime.start.p0(i64 16, ptr %60) #11
  invoke void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %60, float noundef 0x4002AA8440000000, float noundef 0x3FF4434C80000000, float noundef 0xBFF3026140000000)
          to label %442 unwind label %552

442:                                              ; preds = %441
  invoke void @_ZN3JPH5ArrayINS_4Vec3ENS_12STLAllocatorIS1_EEE9push_backEOS1_(ptr noundef nonnull align 8 dereferenceable(24) %47, ptr noundef nonnull align 16 dereferenceable(16) %60)
          to label %443 unwind label %552

443:                                              ; preds = %442
  call void @llvm.lifetime.end.p0(i64 16, ptr %60) #11
  call void @llvm.lifetime.start.p0(i64 16, ptr %61) #11
  invoke void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %61, float noundef 0xBFE2EECC00000000, float noundef 0x40023A4520000000, float noundef 0xBFFE054480000000)
          to label %444 unwind label %556

444:                                              ; preds = %443
  invoke void @_ZN3JPH5ArrayINS_4Vec3ENS_12STLAllocatorIS1_EEE9push_backEOS1_(ptr noundef nonnull align 8 dereferenceable(24) %47, ptr noundef nonnull align 16 dereferenceable(16) %61)
          to label %445 unwind label %556

445:                                              ; preds = %444
  call void @llvm.lifetime.end.p0(i64 16, ptr %61) #11
  call void @llvm.lifetime.start.p0(i64 16, ptr %62) #11
  invoke void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %62, float noundef 0xC001C587A0000000, float noundef 0x4008594680000000, float noundef 0x3FCE0BEB80000000)
          to label %446 unwind label %560

446:                                              ; preds = %445
  invoke void @_ZN3JPH5ArrayINS_4Vec3ENS_12STLAllocatorIS1_EEE9push_backEOS1_(ptr noundef nonnull align 8 dereferenceable(24) %47, ptr noundef nonnull align 16 dereferenceable(16) %62)
          to label %447 unwind label %560

447:                                              ; preds = %446
  call void @llvm.lifetime.end.p0(i64 16, ptr %62) #11
  call void @llvm.lifetime.start.p0(i64 16, ptr %63) #11
  invoke void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %63, float noundef 0xBFF01EE240000000, float noundef 0x4011905AE0000000, float noundef 0xBFF47206C0000000)
          to label %448 unwind label %564

448:                                              ; preds = %447
  invoke void @_ZN3JPH5ArrayINS_4Vec3ENS_12STLAllocatorIS1_EEE9push_backEOS1_(ptr noundef nonnull align 8 dereferenceable(24) %47, ptr noundef nonnull align 16 dereferenceable(16) %63)
          to label %449 unwind label %564

449:                                              ; preds = %448
  call void @llvm.lifetime.end.p0(i64 16, ptr %63) #11
  call void @llvm.lifetime.start.p0(i64 16, ptr %64) #11
  invoke void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %64, float noundef 0x3FEFDBC660000000, float noundef 0x401196E0C0000000, float noundef 0xBFF476CCC0000000)
          to label %450 unwind label %568

450:                                              ; preds = %449
  invoke void @_ZN3JPH5ArrayINS_4Vec3ENS_12STLAllocatorIS1_EEE9push_backEOS1_(ptr noundef nonnull align 8 dereferenceable(24) %47, ptr noundef nonnull align 16 dereferenceable(16) %64)
          to label %451 unwind label %568

451:                                              ; preds = %450
  call void @llvm.lifetime.end.p0(i64 16, ptr %64) #11
  call void @llvm.lifetime.start.p0(i64 16, ptr %65) #11
  invoke void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %65, float noundef 0x3FEFDBC660000000, float noundef 0x4012953900000000, float noundef 0xBFEEBA34E0000000)
          to label %452 unwind label %572

452:                                              ; preds = %451
  invoke void @_ZN3JPH5ArrayINS_4Vec3ENS_12STLAllocatorIS1_EEE9push_backEOS1_(ptr noundef nonnull align 8 dereferenceable(24) %47, ptr noundef nonnull align 16 dereferenceable(16) %65)
          to label %453 unwind label %572

453:                                              ; preds = %452
  call void @llvm.lifetime.end.p0(i64 16, ptr %65) #11
  call void @llvm.lifetime.start.p0(i64 16, ptr %66) #11
  invoke void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %66, float noundef 0x4005F651E0000000, float noundef 0x400884F2C0000000, float noundef 0x3FFC6C7580000000)
          to label %454 unwind label %576

454:                                              ; preds = %453
  invoke void @_ZN3JPH5ArrayINS_4Vec3ENS_12STLAllocatorIS1_EEE9push_backEOS1_(ptr noundef nonnull align 8 dereferenceable(24) %47, ptr noundef nonnull align 16 dereferenceable(16) %66)
          to label %455 unwind label %576

455:                                              ; preds = %454
  call void @llvm.lifetime.end.p0(i64 16, ptr %66) #11
  call void @llvm.lifetime.start.p0(i64 16, ptr %67) #11
  invoke void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %67, float noundef 0xBFF87FEB00000000, float noundef 0xC001731D80000000, float noundef 0x4002857480000000)
          to label %456 unwind label %580

456:                                              ; preds = %455
  invoke void @_ZN3JPH5ArrayINS_4Vec3ENS_12STLAllocatorIS1_EEE9push_backEOS1_(ptr noundef nonnull align 8 dereferenceable(24) %47, ptr noundef nonnull align 16 dereferenceable(16) %67)
          to label %457 unwind label %580

457:                                              ; preds = %456
  call void @llvm.lifetime.end.p0(i64 16, ptr %67) #11
  %458 = getelementptr inbounds %class.Test, ptr %94, i32 0, i32 3
  %459 = load ptr, ptr %458, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 256, ptr %68) #11
  %460 = invoke noundef ptr @_ZN3JPH23ConvexHullShapeSettingsnwEm(i64 noundef 120)
          to label %461 unwind label %584

461:                                              ; preds = %457
  invoke void @_ZN3JPH23ConvexHullShapeSettingsC2ERKNS_5ArrayINS_4Vec3ENS_12STLAllocatorIS2_EEEEfPKNS_15PhysicsMaterialE(ptr noundef nonnull align 8 dereferenceable(120) %460, ptr noundef nonnull align 8 dereferenceable(24) %47, float noundef 0x3FA99999A0000000, ptr noundef null)
          to label %462 unwind label %588

462:                                              ; preds = %461
  invoke void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %69, float noundef 8.000000e+01, float noundef 1.000000e+01, float noundef 0.000000e+00)
          to label %463 unwind label %584

463:                                              ; preds = %462
  %464 = invoke { double, double } @_ZN3JPH4Quat9sIdentityEv()
          to label %465 unwind label %584

465:                                              ; preds = %463
  %466 = getelementptr inbounds %"class.JPH::Quat", ptr %70, i32 0, i32 0
  %467 = getelementptr inbounds %"class.JPH::Vec4", ptr %466, i32 0, i32 0
  %468 = getelementptr inbounds %union.anon.4, ptr %467, i32 0, i32 0
  %469 = getelementptr inbounds { double, double }, ptr %468, i32 0, i32 0
  %470 = extractvalue { double, double } %464, 0
  store double %470, ptr %469, align 16
  %471 = getelementptr inbounds { double, double }, ptr %468, i32 0, i32 1
  %472 = extractvalue { double, double } %464, 1
  store double %472, ptr %471, align 8
  %473 = getelementptr inbounds { double, double }, ptr %69, i32 0, i32 0
  %474 = load double, ptr %473, align 16
  %475 = getelementptr inbounds { double, double }, ptr %69, i32 0, i32 1
  %476 = load double, ptr %475, align 8
  %477 = getelementptr inbounds { double, double }, ptr %70, i32 0, i32 0
  %478 = load double, ptr %477, align 16
  %479 = getelementptr inbounds { double, double }, ptr %70, i32 0, i32 1
  %480 = load double, ptr %479, align 8
  invoke void @_ZN3JPH20BodyCreationSettingsC2EPKNS_13ShapeSettingsENS_4Vec3ENS_4QuatENS_11EMotionTypeEt(ptr noundef nonnull align 16 dereferenceable(256) %68, ptr noundef %460, double %474, double %476, double %478, double %480, i8 noundef zeroext 2, i16 noundef zeroext 1)
          to label %481 unwind label %584

481:                                              ; preds = %465
  %482 = invoke i32 @_ZN3JPH13BodyInterface16CreateAndAddBodyERKNS_20BodyCreationSettingsENS_11EActivationE(ptr noundef nonnull align 8 dereferenceable(24) %459, ptr noundef nonnull align 16 dereferenceable(256) %68, i32 noundef 0)
          to label %483 unwind label %592

483:                                              ; preds = %481
  %484 = getelementptr inbounds %"class.JPH::BodyID", ptr %71, i32 0, i32 0
  store i32 %482, ptr %484, align 4
  call void @_ZN3JPH20BodyCreationSettingsD2Ev(ptr noundef nonnull align 16 dereferenceable(256) %68) #11
  call void @llvm.lifetime.end.p0(i64 256, ptr %68) #11
  call void @llvm.lifetime.start.p0(i64 8, ptr %72) #11
  invoke void @_ZNSt26linear_congruential_engineImLm16807ELm0ELm2147483647EEC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %72)
          to label %485 unwind label %597

485:                                              ; preds = %483
  call void @llvm.lifetime.start.p0(i64 8, ptr %73) #11
  invoke void @_ZNSt25uniform_real_distributionIfEC2Eff(ptr noundef nonnull align 4 dereferenceable(8) %73, float noundef 0x3FB99999A0000000, float noundef 1.000000e+01)
          to label %486 unwind label %601

486:                                              ; preds = %485
  call void @llvm.lifetime.start.p0(i64 4, ptr %74) #11
  store i32 0, ptr %74, align 4, !tbaa !23
  br label %487

487:                                              ; preds = %672, %486
  %488 = load i32, ptr %74, align 4, !tbaa !23
  %489 = icmp slt i32 %488, 10
  br i1 %489, label %605, label %490

490:                                              ; preds = %487
  store i32 11, ptr %29, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %74) #11
  br label %689

491:                                              ; preds = %398, %396, %395, %390
  %492 = landingpad { ptr, i32 }
          cleanup
  %493 = extractvalue { ptr, i32 } %492, 0
  store ptr %493, ptr %5, align 8
  %494 = extractvalue { ptr, i32 } %492, 1
  store i32 %494, ptr %6, align 4
  br label %503

495:                                              ; preds = %394
  %496 = landingpad { ptr, i32 }
          cleanup
  %497 = extractvalue { ptr, i32 } %496, 0
  store ptr %497, ptr %5, align 8
  %498 = extractvalue { ptr, i32 } %496, 1
  store i32 %498, ptr %6, align 4
  call void @_ZN3JPH23ConvexHullShapeSettingsdlEPv(ptr noundef %393) #11
  br label %503

499:                                              ; preds = %414
  %500 = landingpad { ptr, i32 }
          cleanup
  %501 = extractvalue { ptr, i32 } %500, 0
  store ptr %501, ptr %5, align 8
  %502 = extractvalue { ptr, i32 } %500, 1
  store i32 %502, ptr %6, align 4
  call void @_ZN3JPH20BodyCreationSettingsD2Ev(ptr noundef nonnull align 16 dereferenceable(256) %43) #11
  br label %503

503:                                              ; preds = %499, %495, %491
  call void @llvm.lifetime.end.p0(i64 256, ptr %43) #11
  br label %802

504:                                              ; preds = %418, %416
  %505 = landingpad { ptr, i32 }
          cleanup
  %506 = extractvalue { ptr, i32 } %505, 0
  store ptr %506, ptr %5, align 8
  %507 = extractvalue { ptr, i32 } %505, 1
  store i32 %507, ptr %6, align 4
  call void @llvm.lifetime.end.p0(i64 16, ptr %48) #11
  br label %801

508:                                              ; preds = %420, %419
  %509 = landingpad { ptr, i32 }
          cleanup
  %510 = extractvalue { ptr, i32 } %509, 0
  store ptr %510, ptr %5, align 8
  %511 = extractvalue { ptr, i32 } %509, 1
  store i32 %511, ptr %6, align 4
  call void @llvm.lifetime.end.p0(i64 16, ptr %49) #11
  br label %801

512:                                              ; preds = %422, %421
  %513 = landingpad { ptr, i32 }
          cleanup
  %514 = extractvalue { ptr, i32 } %513, 0
  store ptr %514, ptr %5, align 8
  %515 = extractvalue { ptr, i32 } %513, 1
  store i32 %515, ptr %6, align 4
  call void @llvm.lifetime.end.p0(i64 16, ptr %50) #11
  br label %801

516:                                              ; preds = %424, %423
  %517 = landingpad { ptr, i32 }
          cleanup
  %518 = extractvalue { ptr, i32 } %517, 0
  store ptr %518, ptr %5, align 8
  %519 = extractvalue { ptr, i32 } %517, 1
  store i32 %519, ptr %6, align 4
  call void @llvm.lifetime.end.p0(i64 16, ptr %51) #11
  br label %801

520:                                              ; preds = %426, %425
  %521 = landingpad { ptr, i32 }
          cleanup
  %522 = extractvalue { ptr, i32 } %521, 0
  store ptr %522, ptr %5, align 8
  %523 = extractvalue { ptr, i32 } %521, 1
  store i32 %523, ptr %6, align 4
  call void @llvm.lifetime.end.p0(i64 16, ptr %52) #11
  br label %801

524:                                              ; preds = %428, %427
  %525 = landingpad { ptr, i32 }
          cleanup
  %526 = extractvalue { ptr, i32 } %525, 0
  store ptr %526, ptr %5, align 8
  %527 = extractvalue { ptr, i32 } %525, 1
  store i32 %527, ptr %6, align 4
  call void @llvm.lifetime.end.p0(i64 16, ptr %53) #11
  br label %801

528:                                              ; preds = %430, %429
  %529 = landingpad { ptr, i32 }
          cleanup
  %530 = extractvalue { ptr, i32 } %529, 0
  store ptr %530, ptr %5, align 8
  %531 = extractvalue { ptr, i32 } %529, 1
  store i32 %531, ptr %6, align 4
  call void @llvm.lifetime.end.p0(i64 16, ptr %54) #11
  br label %801

532:                                              ; preds = %432, %431
  %533 = landingpad { ptr, i32 }
          cleanup
  %534 = extractvalue { ptr, i32 } %533, 0
  store ptr %534, ptr %5, align 8
  %535 = extractvalue { ptr, i32 } %533, 1
  store i32 %535, ptr %6, align 4
  call void @llvm.lifetime.end.p0(i64 16, ptr %55) #11
  br label %801

536:                                              ; preds = %434, %433
  %537 = landingpad { ptr, i32 }
          cleanup
  %538 = extractvalue { ptr, i32 } %537, 0
  store ptr %538, ptr %5, align 8
  %539 = extractvalue { ptr, i32 } %537, 1
  store i32 %539, ptr %6, align 4
  call void @llvm.lifetime.end.p0(i64 16, ptr %56) #11
  br label %801

540:                                              ; preds = %436, %435
  %541 = landingpad { ptr, i32 }
          cleanup
  %542 = extractvalue { ptr, i32 } %541, 0
  store ptr %542, ptr %5, align 8
  %543 = extractvalue { ptr, i32 } %541, 1
  store i32 %543, ptr %6, align 4
  call void @llvm.lifetime.end.p0(i64 16, ptr %57) #11
  br label %801

544:                                              ; preds = %438, %437
  %545 = landingpad { ptr, i32 }
          cleanup
  %546 = extractvalue { ptr, i32 } %545, 0
  store ptr %546, ptr %5, align 8
  %547 = extractvalue { ptr, i32 } %545, 1
  store i32 %547, ptr %6, align 4
  call void @llvm.lifetime.end.p0(i64 16, ptr %58) #11
  br label %801

548:                                              ; preds = %440, %439
  %549 = landingpad { ptr, i32 }
          cleanup
  %550 = extractvalue { ptr, i32 } %549, 0
  store ptr %550, ptr %5, align 8
  %551 = extractvalue { ptr, i32 } %549, 1
  store i32 %551, ptr %6, align 4
  call void @llvm.lifetime.end.p0(i64 16, ptr %59) #11
  br label %801

552:                                              ; preds = %442, %441
  %553 = landingpad { ptr, i32 }
          cleanup
  %554 = extractvalue { ptr, i32 } %553, 0
  store ptr %554, ptr %5, align 8
  %555 = extractvalue { ptr, i32 } %553, 1
  store i32 %555, ptr %6, align 4
  call void @llvm.lifetime.end.p0(i64 16, ptr %60) #11
  br label %801

556:                                              ; preds = %444, %443
  %557 = landingpad { ptr, i32 }
          cleanup
  %558 = extractvalue { ptr, i32 } %557, 0
  store ptr %558, ptr %5, align 8
  %559 = extractvalue { ptr, i32 } %557, 1
  store i32 %559, ptr %6, align 4
  call void @llvm.lifetime.end.p0(i64 16, ptr %61) #11
  br label %801

560:                                              ; preds = %446, %445
  %561 = landingpad { ptr, i32 }
          cleanup
  %562 = extractvalue { ptr, i32 } %561, 0
  store ptr %562, ptr %5, align 8
  %563 = extractvalue { ptr, i32 } %561, 1
  store i32 %563, ptr %6, align 4
  call void @llvm.lifetime.end.p0(i64 16, ptr %62) #11
  br label %801

564:                                              ; preds = %448, %447
  %565 = landingpad { ptr, i32 }
          cleanup
  %566 = extractvalue { ptr, i32 } %565, 0
  store ptr %566, ptr %5, align 8
  %567 = extractvalue { ptr, i32 } %565, 1
  store i32 %567, ptr %6, align 4
  call void @llvm.lifetime.end.p0(i64 16, ptr %63) #11
  br label %801

568:                                              ; preds = %450, %449
  %569 = landingpad { ptr, i32 }
          cleanup
  %570 = extractvalue { ptr, i32 } %569, 0
  store ptr %570, ptr %5, align 8
  %571 = extractvalue { ptr, i32 } %569, 1
  store i32 %571, ptr %6, align 4
  call void @llvm.lifetime.end.p0(i64 16, ptr %64) #11
  br label %801

572:                                              ; preds = %452, %451
  %573 = landingpad { ptr, i32 }
          cleanup
  %574 = extractvalue { ptr, i32 } %573, 0
  store ptr %574, ptr %5, align 8
  %575 = extractvalue { ptr, i32 } %573, 1
  store i32 %575, ptr %6, align 4
  call void @llvm.lifetime.end.p0(i64 16, ptr %65) #11
  br label %801

576:                                              ; preds = %454, %453
  %577 = landingpad { ptr, i32 }
          cleanup
  %578 = extractvalue { ptr, i32 } %577, 0
  store ptr %578, ptr %5, align 8
  %579 = extractvalue { ptr, i32 } %577, 1
  store i32 %579, ptr %6, align 4
  call void @llvm.lifetime.end.p0(i64 16, ptr %66) #11
  br label %801

580:                                              ; preds = %456, %455
  %581 = landingpad { ptr, i32 }
          cleanup
  %582 = extractvalue { ptr, i32 } %581, 0
  store ptr %582, ptr %5, align 8
  %583 = extractvalue { ptr, i32 } %581, 1
  store i32 %583, ptr %6, align 4
  call void @llvm.lifetime.end.p0(i64 16, ptr %67) #11
  br label %801

584:                                              ; preds = %465, %463, %462, %457
  %585 = landingpad { ptr, i32 }
          cleanup
  %586 = extractvalue { ptr, i32 } %585, 0
  store ptr %586, ptr %5, align 8
  %587 = extractvalue { ptr, i32 } %585, 1
  store i32 %587, ptr %6, align 4
  br label %596

588:                                              ; preds = %461
  %589 = landingpad { ptr, i32 }
          cleanup
  %590 = extractvalue { ptr, i32 } %589, 0
  store ptr %590, ptr %5, align 8
  %591 = extractvalue { ptr, i32 } %589, 1
  store i32 %591, ptr %6, align 4
  call void @_ZN3JPH23ConvexHullShapeSettingsdlEPv(ptr noundef %460) #11
  br label %596

592:                                              ; preds = %481
  %593 = landingpad { ptr, i32 }
          cleanup
  %594 = extractvalue { ptr, i32 } %593, 0
  store ptr %594, ptr %5, align 8
  %595 = extractvalue { ptr, i32 } %593, 1
  store i32 %595, ptr %6, align 4
  call void @_ZN3JPH20BodyCreationSettingsD2Ev(ptr noundef nonnull align 16 dereferenceable(256) %68) #11
  br label %596

596:                                              ; preds = %592, %588, %584
  call void @llvm.lifetime.end.p0(i64 256, ptr %68) #11
  br label %801

597:                                              ; preds = %483
  %598 = landingpad { ptr, i32 }
          cleanup
  %599 = extractvalue { ptr, i32 } %598, 0
  store ptr %599, ptr %5, align 8
  %600 = extractvalue { ptr, i32 } %598, 1
  store i32 %600, ptr %6, align 4
  br label %800

601:                                              ; preds = %485
  %602 = landingpad { ptr, i32 }
          cleanup
  %603 = extractvalue { ptr, i32 } %602, 0
  store ptr %603, ptr %5, align 8
  %604 = extractvalue { ptr, i32 } %602, 1
  store i32 %604, ptr %6, align 4
  br label %799

605:                                              ; preds = %487
  call void @llvm.lifetime.start.p0(i64 24, ptr %75) #11
  call void @_ZN3JPH5ArrayINS_4Vec3ENS_12STLAllocatorIS1_EEEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %75) #11
  call void @llvm.lifetime.start.p0(i64 4, ptr %76) #11
  store i32 0, ptr %76, align 4, !tbaa !23
  br label %606

606:                                              ; preds = %634, %605
  %607 = load i32, ptr %76, align 4, !tbaa !23
  %608 = icmp slt i32 %607, 20
  br i1 %608, label %610, label %609

609:                                              ; preds = %606
  store i32 14, ptr %29, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %76) #11
  br label %641

610:                                              ; preds = %606
  call void @llvm.lifetime.start.p0(i64 16, ptr %77) #11
  %611 = invoke noundef float @_ZNSt25uniform_real_distributionIfEclISt26linear_congruential_engineImLm16807ELm0ELm2147483647EEEEfRT_(ptr noundef nonnull align 4 dereferenceable(8) %73, ptr noundef nonnull align 8 dereferenceable(8) %72)
          to label %612 unwind label %637

612:                                              ; preds = %610
  %613 = invoke { double, double } @_ZN3JPH4Vec37sRandomISt26linear_congruential_engineImLm16807ELm0ELm2147483647EEEES0_RT_(ptr noundef nonnull align 8 dereferenceable(8) %72)
          to label %614 unwind label %637

614:                                              ; preds = %612
  %615 = getelementptr inbounds %"class.JPH::Vec3", ptr %78, i32 0, i32 0
  %616 = getelementptr inbounds %union.anon, ptr %615, i32 0, i32 0
  %617 = getelementptr inbounds { double, double }, ptr %616, i32 0, i32 0
  %618 = extractvalue { double, double } %613, 0
  store double %618, ptr %617, align 16
  %619 = getelementptr inbounds { double, double }, ptr %616, i32 0, i32 1
  %620 = extractvalue { double, double } %613, 1
  store double %620, ptr %619, align 8
  %621 = getelementptr inbounds { double, double }, ptr %78, i32 0, i32 0
  %622 = load double, ptr %621, align 16
  %623 = getelementptr inbounds { double, double }, ptr %78, i32 0, i32 1
  %624 = load double, ptr %623, align 8
  %625 = invoke { double, double } @_ZN3JPHmlEfNS_4Vec3E(float noundef %611, double %622, double %624)
          to label %626 unwind label %637

626:                                              ; preds = %614
  %627 = getelementptr inbounds %"class.JPH::Vec3", ptr %77, i32 0, i32 0
  %628 = getelementptr inbounds %union.anon, ptr %627, i32 0, i32 0
  %629 = getelementptr inbounds { double, double }, ptr %628, i32 0, i32 0
  %630 = extractvalue { double, double } %625, 0
  store double %630, ptr %629, align 16
  %631 = getelementptr inbounds { double, double }, ptr %628, i32 0, i32 1
  %632 = extractvalue { double, double } %625, 1
  store double %632, ptr %631, align 8
  invoke void @_ZN3JPH5ArrayINS_4Vec3ENS_12STLAllocatorIS1_EEE9push_backEOS1_(ptr noundef nonnull align 8 dereferenceable(24) %75, ptr noundef nonnull align 16 dereferenceable(16) %77)
          to label %633 unwind label %637

633:                                              ; preds = %626
  call void @llvm.lifetime.end.p0(i64 16, ptr %77) #11
  br label %634

634:                                              ; preds = %633
  %635 = load i32, ptr %76, align 4, !tbaa !23
  %636 = add nsw i32 %635, 1
  store i32 %636, ptr %76, align 4, !tbaa !23
  br label %606, !llvm.loop !25

637:                                              ; preds = %626, %614, %612, %610
  %638 = landingpad { ptr, i32 }
          cleanup
  %639 = extractvalue { ptr, i32 } %638, 0
  store ptr %639, ptr %5, align 8
  %640 = extractvalue { ptr, i32 } %638, 1
  store i32 %640, ptr %6, align 4
  call void @llvm.lifetime.end.p0(i64 16, ptr %77) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr %76) #11
  br label %688

641:                                              ; preds = %609
  %642 = getelementptr inbounds %class.Test, ptr %94, i32 0, i32 3
  %643 = load ptr, ptr %642, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 256, ptr %79) #11
  %644 = invoke noundef ptr @_ZN3JPH23ConvexHullShapeSettingsnwEm(i64 noundef 120)
          to label %645 unwind label %675

645:                                              ; preds = %641
  invoke void @_ZN3JPH23ConvexHullShapeSettingsC2ERKNS_5ArrayINS_4Vec3ENS_12STLAllocatorIS2_EEEEfPKNS_15PhysicsMaterialE(ptr noundef nonnull align 8 dereferenceable(120) %644, ptr noundef nonnull align 8 dereferenceable(24) %75, float noundef 0x3FA99999A0000000, ptr noundef null)
          to label %646 unwind label %679

646:                                              ; preds = %645
  %647 = load i32, ptr %74, align 4, !tbaa !23
  %648 = sitofp i32 %647 to float
  %649 = call float @llvm.fmuladd.f32(float %648, float 1.800000e+01, float -9.000000e+01)
  invoke void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %80, float noundef %649, float noundef 1.000000e+01, float noundef 2.000000e+01)
          to label %650 unwind label %675

650:                                              ; preds = %646
  %651 = invoke { double, double } @_ZN3JPH4Quat9sIdentityEv()
          to label %652 unwind label %675

652:                                              ; preds = %650
  %653 = getelementptr inbounds %"class.JPH::Quat", ptr %81, i32 0, i32 0
  %654 = getelementptr inbounds %"class.JPH::Vec4", ptr %653, i32 0, i32 0
  %655 = getelementptr inbounds %union.anon.4, ptr %654, i32 0, i32 0
  %656 = getelementptr inbounds { double, double }, ptr %655, i32 0, i32 0
  %657 = extractvalue { double, double } %651, 0
  store double %657, ptr %656, align 16
  %658 = getelementptr inbounds { double, double }, ptr %655, i32 0, i32 1
  %659 = extractvalue { double, double } %651, 1
  store double %659, ptr %658, align 8
  %660 = getelementptr inbounds { double, double }, ptr %80, i32 0, i32 0
  %661 = load double, ptr %660, align 16
  %662 = getelementptr inbounds { double, double }, ptr %80, i32 0, i32 1
  %663 = load double, ptr %662, align 8
  %664 = getelementptr inbounds { double, double }, ptr %81, i32 0, i32 0
  %665 = load double, ptr %664, align 16
  %666 = getelementptr inbounds { double, double }, ptr %81, i32 0, i32 1
  %667 = load double, ptr %666, align 8
  invoke void @_ZN3JPH20BodyCreationSettingsC2EPKNS_13ShapeSettingsENS_4Vec3ENS_4QuatENS_11EMotionTypeEt(ptr noundef nonnull align 16 dereferenceable(256) %79, ptr noundef %644, double %661, double %663, double %665, double %667, i8 noundef zeroext 2, i16 noundef zeroext 1)
          to label %668 unwind label %675

668:                                              ; preds = %652
  %669 = invoke i32 @_ZN3JPH13BodyInterface16CreateAndAddBodyERKNS_20BodyCreationSettingsENS_11EActivationE(ptr noundef nonnull align 8 dereferenceable(24) %643, ptr noundef nonnull align 16 dereferenceable(256) %79, i32 noundef 0)
          to label %670 unwind label %683

670:                                              ; preds = %668
  %671 = getelementptr inbounds %"class.JPH::BodyID", ptr %82, i32 0, i32 0
  store i32 %669, ptr %671, align 4
  call void @_ZN3JPH20BodyCreationSettingsD2Ev(ptr noundef nonnull align 16 dereferenceable(256) %79) #11
  call void @llvm.lifetime.end.p0(i64 256, ptr %79) #11
  call void @_ZN3JPH5ArrayINS_4Vec3ENS_12STLAllocatorIS1_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %75) #11
  call void @llvm.lifetime.end.p0(i64 24, ptr %75) #11
  br label %672

672:                                              ; preds = %670
  %673 = load i32, ptr %74, align 4, !tbaa !23
  %674 = add nsw i32 %673, 1
  store i32 %674, ptr %74, align 4, !tbaa !23
  br label %487, !llvm.loop !26

675:                                              ; preds = %652, %650, %646, %641
  %676 = landingpad { ptr, i32 }
          cleanup
  %677 = extractvalue { ptr, i32 } %676, 0
  store ptr %677, ptr %5, align 8
  %678 = extractvalue { ptr, i32 } %676, 1
  store i32 %678, ptr %6, align 4
  br label %687

679:                                              ; preds = %645
  %680 = landingpad { ptr, i32 }
          cleanup
  %681 = extractvalue { ptr, i32 } %680, 0
  store ptr %681, ptr %5, align 8
  %682 = extractvalue { ptr, i32 } %680, 1
  store i32 %682, ptr %6, align 4
  call void @_ZN3JPH23ConvexHullShapeSettingsdlEPv(ptr noundef %644) #11
  br label %687

683:                                              ; preds = %668
  %684 = landingpad { ptr, i32 }
          cleanup
  %685 = extractvalue { ptr, i32 } %684, 0
  store ptr %685, ptr %5, align 8
  %686 = extractvalue { ptr, i32 } %684, 1
  store i32 %686, ptr %6, align 4
  call void @_ZN3JPH20BodyCreationSettingsD2Ev(ptr noundef nonnull align 16 dereferenceable(256) %79) #11
  br label %687

687:                                              ; preds = %683, %679, %675
  call void @llvm.lifetime.end.p0(i64 256, ptr %79) #11
  br label %688

688:                                              ; preds = %687, %637
  call void @_ZN3JPH5ArrayINS_4Vec3ENS_12STLAllocatorIS1_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %75) #11
  call void @llvm.lifetime.end.p0(i64 24, ptr %75) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr %74) #11
  br label %799

689:                                              ; preds = %490
  call void @llvm.lifetime.start.p0(i64 4, ptr %83) #11
  store i32 0, ptr %83, align 4, !tbaa !23
  br label %690

690:                                              ; preds = %771, %689
  %691 = load i32, ptr %83, align 4, !tbaa !23
  %692 = icmp slt i32 %691, 10
  br i1 %692, label %694, label %693

693:                                              ; preds = %690
  store i32 17, ptr %29, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %83) #11
  br label %798

694:                                              ; preds = %690
  call void @llvm.lifetime.start.p0(i64 24, ptr %84) #11
  call void @_ZN3JPH5ArrayINS_4Vec3ENS_12STLAllocatorIS1_EEEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %84) #11
  call void @llvm.lifetime.start.p0(i64 4, ptr %85) #11
  store i32 0, ptr %85, align 4, !tbaa !23
  br label %695

695:                                              ; preds = %724, %694
  %696 = load i32, ptr %85, align 4, !tbaa !23
  %697 = icmp slt i32 %696, 20
  br i1 %697, label %699, label %698

698:                                              ; preds = %695
  store i32 20, ptr %29, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %85) #11
  br label %731

699:                                              ; preds = %695
  call void @llvm.lifetime.start.p0(i64 16, ptr %86) #11
  %700 = invoke noundef float @_ZNSt25uniform_real_distributionIfEclISt26linear_congruential_engineImLm16807ELm0ELm2147483647EEEEfRT_(ptr noundef nonnull align 4 dereferenceable(8) %73, ptr noundef nonnull align 8 dereferenceable(8) %72)
          to label %701 unwind label %727

701:                                              ; preds = %699
  %702 = invoke { double, double } @_ZN3JPH4Vec37sRandomISt26linear_congruential_engineImLm16807ELm0ELm2147483647EEEES0_RT_(ptr noundef nonnull align 8 dereferenceable(8) %72)
          to label %703 unwind label %727

703:                                              ; preds = %701
  %704 = getelementptr inbounds %"class.JPH::Vec3", ptr %87, i32 0, i32 0
  %705 = getelementptr inbounds %union.anon, ptr %704, i32 0, i32 0
  %706 = getelementptr inbounds { double, double }, ptr %705, i32 0, i32 0
  %707 = extractvalue { double, double } %702, 0
  store double %707, ptr %706, align 16
  %708 = getelementptr inbounds { double, double }, ptr %705, i32 0, i32 1
  %709 = extractvalue { double, double } %702, 1
  store double %709, ptr %708, align 8
  %710 = getelementptr inbounds { double, double }, ptr %87, i32 0, i32 0
  %711 = load double, ptr %710, align 16
  %712 = getelementptr inbounds { double, double }, ptr %87, i32 0, i32 1
  %713 = load double, ptr %712, align 8
  %714 = invoke { double, double } @_ZN3JPHmlEfNS_4Vec3E(float noundef %700, double %711, double %713)
          to label %715 unwind label %727

715:                                              ; preds = %703
  %716 = getelementptr inbounds %"class.JPH::Vec3", ptr %86, i32 0, i32 0
  %717 = getelementptr inbounds %union.anon, ptr %716, i32 0, i32 0
  %718 = getelementptr inbounds { double, double }, ptr %717, i32 0, i32 0
  %719 = extractvalue { double, double } %714, 0
  store double %719, ptr %718, align 16
  %720 = getelementptr inbounds { double, double }, ptr %717, i32 0, i32 1
  %721 = extractvalue { double, double } %714, 1
  store double %721, ptr %720, align 8
  invoke void @_ZN3JPH4Vec34SetZEf(ptr noundef nonnull align 16 dereferenceable(16) %86, float noundef 0.000000e+00)
          to label %722 unwind label %727

722:                                              ; preds = %715
  invoke void @_ZN3JPH5ArrayINS_4Vec3ENS_12STLAllocatorIS1_EEE9push_backERKS1_(ptr noundef nonnull align 8 dereferenceable(24) %84, ptr noundef nonnull align 16 dereferenceable(16) %86)
          to label %723 unwind label %727

723:                                              ; preds = %722
  call void @llvm.lifetime.end.p0(i64 16, ptr %86) #11
  br label %724

724:                                              ; preds = %723
  %725 = load i32, ptr %85, align 4, !tbaa !23
  %726 = add nsw i32 %725, 1
  store i32 %726, ptr %85, align 4, !tbaa !23
  br label %695, !llvm.loop !27

727:                                              ; preds = %722, %715, %703, %701, %699
  %728 = landingpad { ptr, i32 }
          cleanup
  %729 = extractvalue { ptr, i32 } %728, 0
  store ptr %729, ptr %5, align 8
  %730 = extractvalue { ptr, i32 } %728, 1
  store i32 %730, ptr %6, align 4
  call void @llvm.lifetime.end.p0(i64 16, ptr %86) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr %85) #11
  br label %797

731:                                              ; preds = %698
  call void @llvm.lifetime.start.p0(i64 8, ptr %88) #11
  %732 = invoke noundef ptr @_ZN3JPH23ConvexHullShapeSettingsnwEm(i64 noundef 120)
          to label %733 unwind label %774

733:                                              ; preds = %731
  invoke void @_ZN3JPH23ConvexHullShapeSettingsC2ERKNS_5ArrayINS_4Vec3ENS_12STLAllocatorIS2_EEEEfPKNS_15PhysicsMaterialE(ptr noundef nonnull align 8 dereferenceable(120) %732, ptr noundef nonnull align 8 dereferenceable(24) %84, float noundef 0.000000e+00, ptr noundef null)
          to label %734 unwind label %778

734:                                              ; preds = %733
  invoke void @_ZN3JPH3RefINS_13ShapeSettingsEEC2EPS1_(ptr noundef nonnull align 8 dereferenceable(8) %88, ptr noundef %732)
          to label %735 unwind label %774

735:                                              ; preds = %734
  call void @llvm.lifetime.start.p0(i64 256, ptr %89) #11
  %736 = invoke noundef ptr @_ZNK3JPH3RefINS_13ShapeSettingsEEcvPS1_Ev(ptr noundef nonnull align 8 dereferenceable(8) %88)
          to label %737 unwind label %782

737:                                              ; preds = %735
  %738 = load i32, ptr %83, align 4, !tbaa !23
  %739 = sitofp i32 %738 to float
  %740 = call float @llvm.fmuladd.f32(float %739, float 1.800000e+01, float -9.000000e+01)
  invoke void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %90, float noundef %740, float noundef 1.000000e+01, float noundef 4.000000e+01)
          to label %741 unwind label %782

741:                                              ; preds = %737
  %742 = invoke { double, double } @_ZN3JPH4Quat9sIdentityEv()
          to label %743 unwind label %782

743:                                              ; preds = %741
  %744 = getelementptr inbounds %"class.JPH::Quat", ptr %91, i32 0, i32 0
  %745 = getelementptr inbounds %"class.JPH::Vec4", ptr %744, i32 0, i32 0
  %746 = getelementptr inbounds %union.anon.4, ptr %745, i32 0, i32 0
  %747 = getelementptr inbounds { double, double }, ptr %746, i32 0, i32 0
  %748 = extractvalue { double, double } %742, 0
  store double %748, ptr %747, align 16
  %749 = getelementptr inbounds { double, double }, ptr %746, i32 0, i32 1
  %750 = extractvalue { double, double } %742, 1
  store double %750, ptr %749, align 8
  %751 = getelementptr inbounds { double, double }, ptr %90, i32 0, i32 0
  %752 = load double, ptr %751, align 16
  %753 = getelementptr inbounds { double, double }, ptr %90, i32 0, i32 1
  %754 = load double, ptr %753, align 8
  %755 = getelementptr inbounds { double, double }, ptr %91, i32 0, i32 0
  %756 = load double, ptr %755, align 16
  %757 = getelementptr inbounds { double, double }, ptr %91, i32 0, i32 1
  %758 = load double, ptr %757, align 8
  invoke void @_ZN3JPH20BodyCreationSettingsC2EPKNS_13ShapeSettingsENS_4Vec3ENS_4QuatENS_11EMotionTypeEt(ptr noundef nonnull align 16 dereferenceable(256) %89, ptr noundef %736, double %752, double %754, double %756, double %758, i8 noundef zeroext 2, i16 noundef zeroext 1)
          to label %759 unwind label %782

759:                                              ; preds = %743
  %760 = getelementptr inbounds %"class.JPH::BodyCreationSettings", ptr %89, i32 0, i32 26
  store i8 2, ptr %760, align 16, !tbaa !28
  %761 = getelementptr inbounds %"class.JPH::BodyCreationSettings", ptr %89, i32 0, i32 28
  %762 = getelementptr inbounds %"class.JPH::MassProperties", ptr %761, i32 0, i32 0
  store float 1.000000e+00, ptr %762, align 16, !tbaa !44
  call void @llvm.lifetime.start.p0(i64 64, ptr %92) #11
  invoke void @_ZN3JPH5Mat449sIdentityEv(ptr dead_on_unwind writable sret(%"class.JPH::Mat44") align 16 %92)
          to label %763 unwind label %786

763:                                              ; preds = %759
  %764 = getelementptr inbounds %"class.JPH::BodyCreationSettings", ptr %89, i32 0, i32 28
  %765 = getelementptr inbounds %"class.JPH::MassProperties", ptr %764, i32 0, i32 1
  call void @llvm.memcpy.p0.p0.i64(ptr align 16 %765, ptr align 16 %92, i64 64, i1 false), !tbaa.struct !45
  call void @llvm.lifetime.end.p0(i64 64, ptr %92) #11
  %766 = getelementptr inbounds %class.Test, ptr %94, i32 0, i32 3
  %767 = load ptr, ptr %766, align 8, !tbaa !9
  %768 = invoke i32 @_ZN3JPH13BodyInterface16CreateAndAddBodyERKNS_20BodyCreationSettingsENS_11EActivationE(ptr noundef nonnull align 8 dereferenceable(24) %767, ptr noundef nonnull align 16 dereferenceable(256) %89, i32 noundef 0)
          to label %769 unwind label %790

769:                                              ; preds = %763
  %770 = getelementptr inbounds %"class.JPH::BodyID", ptr %93, i32 0, i32 0
  store i32 %768, ptr %770, align 4
  call void @_ZN3JPH20BodyCreationSettingsD2Ev(ptr noundef nonnull align 16 dereferenceable(256) %89) #11
  call void @llvm.lifetime.end.p0(i64 256, ptr %89) #11
  call void @_ZN3JPH3RefINS_13ShapeSettingsEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %88) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %88) #11
  call void @_ZN3JPH5ArrayINS_4Vec3ENS_12STLAllocatorIS1_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %84) #11
  call void @llvm.lifetime.end.p0(i64 24, ptr %84) #11
  br label %771

771:                                              ; preds = %769
  %772 = load i32, ptr %83, align 4, !tbaa !23
  %773 = add nsw i32 %772, 1
  store i32 %773, ptr %83, align 4, !tbaa !23
  br label %690, !llvm.loop !47

774:                                              ; preds = %734, %731
  %775 = landingpad { ptr, i32 }
          cleanup
  %776 = extractvalue { ptr, i32 } %775, 0
  store ptr %776, ptr %5, align 8
  %777 = extractvalue { ptr, i32 } %775, 1
  store i32 %777, ptr %6, align 4
  br label %796

778:                                              ; preds = %733
  %779 = landingpad { ptr, i32 }
          cleanup
  %780 = extractvalue { ptr, i32 } %779, 0
  store ptr %780, ptr %5, align 8
  %781 = extractvalue { ptr, i32 } %779, 1
  store i32 %781, ptr %6, align 4
  call void @_ZN3JPH23ConvexHullShapeSettingsdlEPv(ptr noundef %732) #11
  br label %796

782:                                              ; preds = %743, %741, %737, %735
  %783 = landingpad { ptr, i32 }
          cleanup
  %784 = extractvalue { ptr, i32 } %783, 0
  store ptr %784, ptr %5, align 8
  %785 = extractvalue { ptr, i32 } %783, 1
  store i32 %785, ptr %6, align 4
  br label %795

786:                                              ; preds = %759
  %787 = landingpad { ptr, i32 }
          cleanup
  %788 = extractvalue { ptr, i32 } %787, 0
  store ptr %788, ptr %5, align 8
  %789 = extractvalue { ptr, i32 } %787, 1
  store i32 %789, ptr %6, align 4
  call void @llvm.lifetime.end.p0(i64 64, ptr %92) #11
  br label %794

790:                                              ; preds = %763
  %791 = landingpad { ptr, i32 }
          cleanup
  %792 = extractvalue { ptr, i32 } %791, 0
  store ptr %792, ptr %5, align 8
  %793 = extractvalue { ptr, i32 } %791, 1
  store i32 %793, ptr %6, align 4
  br label %794

794:                                              ; preds = %790, %786
  call void @_ZN3JPH20BodyCreationSettingsD2Ev(ptr noundef nonnull align 16 dereferenceable(256) %89) #11
  br label %795

795:                                              ; preds = %794, %782
  call void @llvm.lifetime.end.p0(i64 256, ptr %89) #11
  call void @_ZN3JPH3RefINS_13ShapeSettingsEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %88) #11
  br label %796

796:                                              ; preds = %795, %778, %774
  call void @llvm.lifetime.end.p0(i64 8, ptr %88) #11
  br label %797

797:                                              ; preds = %796, %727
  call void @_ZN3JPH5ArrayINS_4Vec3ENS_12STLAllocatorIS1_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %84) #11
  call void @llvm.lifetime.end.p0(i64 24, ptr %84) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr %83) #11
  br label %799

798:                                              ; preds = %693
  call void @llvm.lifetime.end.p0(i64 8, ptr %73) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %72) #11
  call void @_ZN3JPH5ArrayINS_4Vec3ENS_12STLAllocatorIS1_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %47) #11
  call void @llvm.lifetime.end.p0(i64 24, ptr %47) #11
  call void @_ZN3JPH5ArrayINS_4Vec3ENS_12STLAllocatorIS1_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %37) #11
  call void @llvm.lifetime.end.p0(i64 24, ptr %37) #11
  call void @_ZN3JPH5ArrayINS_4Vec3ENS_12STLAllocatorIS1_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %27) #11
  call void @llvm.lifetime.end.p0(i64 24, ptr %27) #11
  call void @_ZN3JPH5ArrayINS_4Vec3ENS_12STLAllocatorIS1_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %14) #11
  call void @llvm.lifetime.end.p0(i64 24, ptr %14) #11
  call void @_ZN3JPH5ArrayINS_4Vec3ENS_12STLAllocatorIS1_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %3) #11
  call void @llvm.lifetime.end.p0(i64 24, ptr %3) #11
  ret void

799:                                              ; preds = %797, %688, %601
  call void @llvm.lifetime.end.p0(i64 8, ptr %73) #11
  br label %800

800:                                              ; preds = %799, %597
  call void @llvm.lifetime.end.p0(i64 8, ptr %72) #11
  br label %801

801:                                              ; preds = %800, %596, %580, %576, %572, %568, %564, %560, %556, %552, %548, %544, %540, %536, %532, %528, %524, %520, %516, %512, %508, %504
  call void @_ZN3JPH5ArrayINS_4Vec3ENS_12STLAllocatorIS1_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %47) #11
  call void @llvm.lifetime.end.p0(i64 24, ptr %47) #11
  br label %802

802:                                              ; preds = %801, %503, %389
  call void @_ZN3JPH5ArrayINS_4Vec3ENS_12STLAllocatorIS1_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %37) #11
  call void @llvm.lifetime.end.p0(i64 24, ptr %37) #11
  br label %803

803:                                              ; preds = %802, %336, %284
  call void @_ZN3JPH5ArrayINS_4Vec3ENS_12STLAllocatorIS1_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %27) #11
  call void @llvm.lifetime.end.p0(i64 24, ptr %27) #11
  br label %804

804:                                              ; preds = %803, %251, %235, %231, %227, %223, %219, %215, %211, %207
  call void @_ZN3JPH5ArrayINS_4Vec3ENS_12STLAllocatorIS1_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %14) #11
  call void @llvm.lifetime.end.p0(i64 24, ptr %14) #11
  br label %805

805:                                              ; preds = %804, %206, %190, %186, %182, %178
  call void @_ZN3JPH5ArrayINS_4Vec3ENS_12STLAllocatorIS1_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %3) #11
  call void @llvm.lifetime.end.p0(i64 24, ptr %3) #11
  br label %806

806:                                              ; preds = %805
  %807 = load ptr, ptr %5, align 8
  %808 = load i32, ptr %6, align 4
  %809 = insertvalue { ptr, i32 } poison, ptr %807, 0
  %810 = insertvalue { ptr, i32 } %809, i32 %808, 1
  resume { ptr, i32 } %810
}

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

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

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

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

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

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

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

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

; Function Attrs: alwaysinline mustprogress uwtable
declare dso_local { double, double } @_ZN3JPHmlEfNS_4Vec3E(float noundef, double, double) #5

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

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

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

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

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

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

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

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

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

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZN3JPH5ArrayINS_4Vec3ENS_12STLAllocatorIS1_EEE9push_backERKS1_(ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 16 dereferenceable(16)) #4 align 2

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

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

; Function Attrs: alwaysinline mustprogress uwtable
declare dso_local void @_ZN3JPH5Mat449sIdentityEv(ptr dead_on_unwind noalias writable sret(%"class.JPH::Mat44") align 16) #6 align 2

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

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

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

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

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


; 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::Array" = type { i64, i64, ptr }
%"class.JPH::Vec3" = type { %union.anon }
%union.anon = type { <4 x float> }
%"class.JPH::BodyCreationSettings" = type { %"class.JPH::Vec3", %"class.JPH::Quat", %"class.JPH::Vec3", %"class.JPH::Vec3", i64, i16, %"class.JPH::CollisionGroup", i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, float, float, float, float, float, float, float, i32, i32, i8, float, %"class.JPH::MassProperties", %"class.JPH::RefConst.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::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.std::linear_congruential_engine" = type { i64 }
%"class.std::uniform_real_distribution" = type { %"struct.std::uniform_real_distribution<float>::param_type" }
%"struct.std::uniform_real_distribution<float>::param_type" = type { float, float }
%"class.JPH::Ref.14" = type { ptr }

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

declare i32 @__gxx_personality_v0(...)

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

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN19ConvexHullShapeTest10InitializeEv(ptr noundef nonnull align 8 dereferenceable(112) %0) unnamed_addr #1 align 2 personality ptr @__gxx_personality_v0 {
  %2 = alloca %"class.JPH::Array", align 8
  %3 = alloca %"class.JPH::Vec3", align 16
  %4 = alloca %"class.JPH::Vec3", align 16
  %5 = alloca %"class.JPH::Vec3", align 16
  %6 = alloca %"class.JPH::Vec3", align 16
  %7 = alloca %"class.JPH::BodyCreationSettings", align 16
  %8 = alloca %"class.JPH::Vec3", align 16
  %9 = alloca %"class.JPH::Array", align 8
  %10 = alloca %"class.JPH::Vec3", align 16
  %11 = alloca %"class.JPH::Vec3", align 16
  %12 = alloca %"class.JPH::Vec3", align 16
  %13 = alloca %"class.JPH::Vec3", align 16
  %14 = alloca %"class.JPH::Vec3", align 16
  %15 = alloca %"class.JPH::Vec3", align 16
  %16 = alloca %"class.JPH::Vec3", align 16
  %17 = alloca %"class.JPH::Vec3", align 16
  %18 = alloca %"class.JPH::BodyCreationSettings", align 16
  %19 = alloca %"class.JPH::Vec3", align 16
  %20 = alloca %"class.JPH::Array", align 8
  %21 = alloca %"class.JPH::Vec3", align 16
  %22 = alloca %"class.JPH::BodyCreationSettings", align 16
  %23 = alloca %"class.JPH::Vec3", align 16
  %24 = alloca %"class.JPH::Array", align 8
  %25 = alloca %"class.JPH::Vec3", align 16
  %26 = alloca %"class.JPH::Vec3", align 16
  %27 = alloca %"class.JPH::Vec3", align 16
  %28 = alloca %"class.JPH::Vec3", align 16
  %29 = alloca %"class.JPH::BodyCreationSettings", align 16
  %30 = alloca %"class.JPH::Vec3", align 16
  %31 = alloca %"class.JPH::Array", align 8
  %32 = alloca %"class.JPH::Vec3", align 16
  %33 = alloca %"class.JPH::Vec3", align 16
  %34 = alloca %"class.JPH::Vec3", align 16
  %35 = alloca %"class.JPH::Vec3", align 16
  %36 = alloca %"class.JPH::Vec3", align 16
  %37 = alloca %"class.JPH::Vec3", align 16
  %38 = alloca %"class.JPH::Vec3", align 16
  %39 = alloca %"class.JPH::Vec3", align 16
  %40 = alloca %"class.JPH::Vec3", align 16
  %41 = alloca %"class.JPH::Vec3", align 16
  %42 = alloca %"class.JPH::Vec3", align 16
  %43 = alloca %"class.JPH::Vec3", align 16
  %44 = alloca %"class.JPH::Vec3", align 16
  %45 = alloca %"class.JPH::Vec3", align 16
  %46 = alloca %"class.JPH::Vec3", align 16
  %47 = alloca %"class.JPH::Vec3", align 16
  %48 = alloca %"class.JPH::Vec3", align 16
  %49 = alloca %"class.JPH::Vec3", align 16
  %50 = alloca %"class.JPH::Vec3", align 16
  %51 = alloca %"class.JPH::Vec3", align 16
  %52 = alloca %"class.JPH::BodyCreationSettings", align 16
  %53 = alloca %"class.JPH::Vec3", align 16
  %54 = alloca %"class.std::linear_congruential_engine", align 8
  %55 = alloca %"class.std::uniform_real_distribution", align 4
  %56 = alloca %"class.JPH::Array", align 8
  %57 = alloca %"class.JPH::Vec3", align 16
  %58 = alloca %"class.JPH::BodyCreationSettings", align 16
  %59 = alloca %"class.JPH::Vec3", align 16
  %60 = alloca %"class.JPH::Array", align 8
  %61 = alloca %"class.JPH::Vec3", align 16
  %62 = alloca %"class.JPH::Ref.14", align 8
  %63 = alloca %"class.JPH::BodyCreationSettings", align 16
  %64 = alloca %"class.JPH::Vec3", align 16
  %65 = alloca %"class.JPH::Mat44", align 16
  %66 = 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 24, ptr nonnull %2) #11
  call void @_ZN3JPH5ArrayINS_4Vec3ENS_12STLAllocatorIS1_EEEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %2) #11
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %3) #11
  invoke void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %3, float noundef -5.000000e+00, float noundef 0.000000e+00, float noundef -5.000000e+00)
          to label %67 unwind label %127

67:                                               ; preds = %1
  invoke void @_ZN3JPH5ArrayINS_4Vec3ENS_12STLAllocatorIS1_EEE9push_backEOS1_(ptr noundef nonnull align 8 dereferenceable(24) %2, ptr noundef nonnull align 16 dereferenceable(16) %3)
          to label %68 unwind label %127

68:                                               ; preds = %67
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %3) #11
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %4) #11
  invoke void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %4, float noundef 0.000000e+00, float noundef 0.000000e+00, float noundef 5.000000e+00)
          to label %69 unwind label %129

69:                                               ; preds = %68
  invoke void @_ZN3JPH5ArrayINS_4Vec3ENS_12STLAllocatorIS1_EEE9push_backEOS1_(ptr noundef nonnull align 8 dereferenceable(24) %2, ptr noundef nonnull align 16 dereferenceable(16) %4)
          to label %70 unwind label %129

70:                                               ; preds = %69
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %4) #11
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %5) #11
  invoke void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %5, float noundef 5.000000e+00, float noundef 0.000000e+00, float noundef -5.000000e+00)
          to label %71 unwind label %131

71:                                               ; preds = %70
  invoke void @_ZN3JPH5ArrayINS_4Vec3ENS_12STLAllocatorIS1_EEE9push_backEOS1_(ptr noundef nonnull align 8 dereferenceable(24) %2, ptr noundef nonnull align 16 dereferenceable(16) %5)
          to label %72 unwind label %131

72:                                               ; preds = %71
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %5) #11
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %6) #11
  invoke void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %6, float noundef 0.000000e+00, float noundef -5.000000e+00, float noundef 0.000000e+00)
          to label %73 unwind label %133

73:                                               ; preds = %72
  invoke void @_ZN3JPH5ArrayINS_4Vec3ENS_12STLAllocatorIS1_EEE9push_backEOS1_(ptr noundef nonnull align 8 dereferenceable(24) %2, ptr noundef nonnull align 16 dereferenceable(16) %6)
          to label %74 unwind label %133

74:                                               ; preds = %73
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %6) #11
  %75 = getelementptr inbounds i8, ptr %0, i64 24
  %76 = load ptr, ptr %75, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 256, ptr nonnull %7) #11
  %77 = invoke noundef ptr @_ZN3JPH23ConvexHullShapeSettingsnwEm(i64 noundef 120)
          to label %78 unwind label %135

78:                                               ; preds = %74
  invoke void @_ZN3JPH23ConvexHullShapeSettingsC2ERKNS_5ArrayINS_4Vec3ENS_12STLAllocatorIS2_EEEEfPKNS_15PhysicsMaterialE(ptr noundef nonnull align 8 dereferenceable(120) %77, ptr noundef nonnull align 8 dereferenceable(24) %2, float noundef 0x3FA99999A0000000, ptr noundef null)
          to label %79 unwind label %137

79:                                               ; preds = %78
  invoke void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %8, float noundef 0.000000e+00, float noundef 1.000000e+01, float noundef 0.000000e+00)
          to label %80 unwind label %135

80:                                               ; preds = %79
  %81 = invoke { double, double } @_ZN3JPH4Quat9sIdentityEv()
          to label %82 unwind label %135

82:                                               ; preds = %80
  %83 = extractvalue { double, double } %81, 0
  %84 = extractvalue { double, double } %81, 1
  %85 = load double, ptr %8, align 16
  %86 = getelementptr inbounds i8, ptr %8, i64 8
  %87 = load double, ptr %86, align 8
  invoke void @_ZN3JPH20BodyCreationSettingsC2EPKNS_13ShapeSettingsENS_4Vec3ENS_4QuatENS_11EMotionTypeEt(ptr noundef nonnull align 16 dereferenceable(256) %7, ptr noundef nonnull %77, double %85, double %87, double %83, double %84, i8 noundef zeroext 2, i16 noundef zeroext 1)
          to label %88 unwind label %135

88:                                               ; preds = %82
  %89 = invoke i32 @_ZN3JPH13BodyInterface16CreateAndAddBodyERKNS_20BodyCreationSettingsENS_11EActivationE(ptr noundef nonnull align 8 dereferenceable(24) %76, ptr noundef nonnull align 16 dereferenceable(256) %7, i32 noundef 0)
          to label %90 unwind label %139

90:                                               ; preds = %88
  call void @_ZN3JPH20BodyCreationSettingsD2Ev(ptr noundef nonnull align 16 dereferenceable(256) %7) #11
  call void @llvm.lifetime.end.p0(i64 256, ptr nonnull %7) #11
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %9) #11
  call void @_ZN3JPH5ArrayINS_4Vec3ENS_12STLAllocatorIS1_EEEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %9) #11
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %10) #11
  invoke void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %10, float noundef 5.000000e+00, float noundef 5.000000e+00, float noundef 5.000000e+00)
          to label %91 unwind label %142

91:                                               ; preds = %90
  invoke void @_ZN3JPH5ArrayINS_4Vec3ENS_12STLAllocatorIS1_EEE9push_backEOS1_(ptr noundef nonnull align 8 dereferenceable(24) %9, ptr noundef nonnull align 16 dereferenceable(16) %10)
          to label %92 unwind label %142

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

93:                                               ; preds = %92
  invoke void @_ZN3JPH5ArrayINS_4Vec3ENS_12STLAllocatorIS1_EEE9push_backEOS1_(ptr noundef nonnull align 8 dereferenceable(24) %9, ptr noundef nonnull align 16 dereferenceable(16) %11)
          to label %94 unwind label %144

94:                                               ; preds = %93
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %11) #11
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %12) #11
  invoke void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %12, float noundef 5.000000e+00, float noundef -5.000000e+00, float noundef 5.000000e+00)
          to label %95 unwind label %146

95:                                               ; preds = %94
  invoke void @_ZN3JPH5ArrayINS_4Vec3ENS_12STLAllocatorIS1_EEE9push_backEOS1_(ptr noundef nonnull align 8 dereferenceable(24) %9, ptr noundef nonnull align 16 dereferenceable(16) %12)
          to label %96 unwind label %146

96:                                               ; preds = %95
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %12) #11
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %13) #11
  invoke void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %13, float noundef -5.000000e+00, float noundef -5.000000e+00, float noundef 5.000000e+00)
          to label %97 unwind label %148

97:                                               ; preds = %96
  invoke void @_ZN3JPH5ArrayINS_4Vec3ENS_12STLAllocatorIS1_EEE9push_backEOS1_(ptr noundef nonnull align 8 dereferenceable(24) %9, ptr noundef nonnull align 16 dereferenceable(16) %13)
          to label %98 unwind label %148

98:                                               ; preds = %97
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %13) #11
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %14) #11
  invoke void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %14, float noundef 5.000000e+00, float noundef 5.000000e+00, float noundef -5.000000e+00)
          to label %99 unwind label %150

99:                                               ; preds = %98
  invoke void @_ZN3JPH5ArrayINS_4Vec3ENS_12STLAllocatorIS1_EEE9push_backEOS1_(ptr noundef nonnull align 8 dereferenceable(24) %9, ptr noundef nonnull align 16 dereferenceable(16) %14)
          to label %100 unwind label %150

100:                                              ; preds = %99
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %14) #11
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %15) #11
  invoke void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %15, float noundef -5.000000e+00, float noundef 5.000000e+00, float noundef -5.000000e+00)
          to label %101 unwind label %152

101:                                              ; preds = %100
  invoke void @_ZN3JPH5ArrayINS_4Vec3ENS_12STLAllocatorIS1_EEE9push_backEOS1_(ptr noundef nonnull align 8 dereferenceable(24) %9, ptr noundef nonnull align 16 dereferenceable(16) %15)
          to label %102 unwind label %152

102:                                              ; preds = %101
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %15) #11
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %16) #11
  invoke void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %16, float noundef 5.000000e+00, float noundef -5.000000e+00, float noundef -5.000000e+00)
          to label %103 unwind label %154

103:                                              ; preds = %102
  invoke void @_ZN3JPH5ArrayINS_4Vec3ENS_12STLAllocatorIS1_EEE9push_backEOS1_(ptr noundef nonnull align 8 dereferenceable(24) %9, ptr noundef nonnull align 16 dereferenceable(16) %16)
          to label %104 unwind label %154

104:                                              ; preds = %103
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %16) #11
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %17) #11
  invoke void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %17, float noundef -5.000000e+00, float noundef -5.000000e+00, float noundef -5.000000e+00)
          to label %105 unwind label %156

105:                                              ; preds = %104
  invoke void @_ZN3JPH5ArrayINS_4Vec3ENS_12STLAllocatorIS1_EEE9push_backEOS1_(ptr noundef nonnull align 8 dereferenceable(24) %9, ptr noundef nonnull align 16 dereferenceable(16) %17)
          to label %106 unwind label %156

106:                                              ; preds = %105
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %17) #11
  %107 = load ptr, ptr %75, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 256, ptr nonnull %18) #11
  %108 = invoke noundef ptr @_ZN3JPH23ConvexHullShapeSettingsnwEm(i64 noundef 120)
          to label %109 unwind label %158

109:                                              ; preds = %106
  invoke void @_ZN3JPH23ConvexHullShapeSettingsC2ERKNS_5ArrayINS_4Vec3ENS_12STLAllocatorIS2_EEEEfPKNS_15PhysicsMaterialE(ptr noundef nonnull align 8 dereferenceable(120) %108, ptr noundef nonnull align 8 dereferenceable(24) %9, float noundef 0x3FA99999A0000000, ptr noundef null)
          to label %110 unwind label %160

110:                                              ; preds = %109
  invoke void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %19, float noundef 2.000000e+01, float noundef 1.000000e+01, float noundef 0.000000e+00)
          to label %111 unwind label %158

111:                                              ; preds = %110
  %112 = invoke { double, double } @_ZN3JPH4Quat9sIdentityEv()
          to label %113 unwind label %158

113:                                              ; preds = %111
  %114 = extractvalue { double, double } %112, 0
  %115 = extractvalue { double, double } %112, 1
  %116 = load double, ptr %19, align 16
  %117 = getelementptr inbounds i8, ptr %19, i64 8
  %118 = load double, ptr %117, align 8
  invoke void @_ZN3JPH20BodyCreationSettingsC2EPKNS_13ShapeSettingsENS_4Vec3ENS_4QuatENS_11EMotionTypeEt(ptr noundef nonnull align 16 dereferenceable(256) %18, ptr noundef nonnull %108, double %116, double %118, double %114, double %115, i8 noundef zeroext 2, i16 noundef zeroext 1)
          to label %119 unwind label %158

119:                                              ; preds = %113
  %120 = invoke i32 @_ZN3JPH13BodyInterface16CreateAndAddBodyERKNS_20BodyCreationSettingsENS_11EActivationE(ptr noundef nonnull align 8 dereferenceable(24) %107, ptr noundef nonnull align 16 dereferenceable(256) %18, i32 noundef 0)
          to label %121 unwind label %162

121:                                              ; preds = %119
  call void @_ZN3JPH20BodyCreationSettingsD2Ev(ptr noundef nonnull align 16 dereferenceable(256) %18) #11
  call void @llvm.lifetime.end.p0(i64 256, ptr nonnull %18) #11
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %20) #11
  call void @_ZN3JPH5ArrayINS_4Vec3ENS_12STLAllocatorIS1_EEEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %20) #11
  %122 = getelementptr inbounds i8, ptr %21, i64 8
  br label %.preheader105

.preheader105:                                    ; preds = %121, %343
  %.068112 = phi float [ 0.000000e+00, %121 ], [ %344, %343 ]
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %21) #11
  %123 = invoke { double, double } @_ZN3JPH4Vec314sUnitSphericalEff(float noundef %.068112, float noundef 0.000000e+00)
          to label %165 unwind label %346

124:                                              ; preds = %343
  %125 = load ptr, ptr %75, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 256, ptr nonnull %22) #11
  %126 = invoke noundef ptr @_ZN3JPH23ConvexHullShapeSettingsnwEm(i64 noundef 120)
          to label %348 unwind label %368

127:                                              ; preds = %67, %1
  %128 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %3) #11
  br label %640

129:                                              ; preds = %69, %68
  %130 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %4) #11
  br label %640

131:                                              ; preds = %71, %70
  %132 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %5) #11
  br label %640

133:                                              ; preds = %73, %72
  %134 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %6) #11
  br label %640

135:                                              ; preds = %82, %80, %79, %74
  %136 = landingpad { ptr, i32 }
          cleanup
  br label %141

137:                                              ; preds = %78
  %138 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3JPH23ConvexHullShapeSettingsdlEPv(ptr noundef %77) #11
  br label %141

139:                                              ; preds = %88
  %140 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3JPH20BodyCreationSettingsD2Ev(ptr noundef nonnull align 16 dereferenceable(256) %7) #11
  br label %141

141:                                              ; preds = %139, %137, %135
  %.pn = phi { ptr, i32 } [ %140, %139 ], [ %136, %135 ], [ %138, %137 ]
  call void @llvm.lifetime.end.p0(i64 256, ptr nonnull %7) #11
  br label %640

142:                                              ; preds = %91, %90
  %143 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %10) #11
  br label %639

144:                                              ; preds = %93, %92
  %145 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %11) #11
  br label %639

146:                                              ; preds = %95, %94
  %147 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %12) #11
  br label %639

148:                                              ; preds = %97, %96
  %149 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %13) #11
  br label %639

150:                                              ; preds = %99, %98
  %151 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %14) #11
  br label %639

152:                                              ; preds = %101, %100
  %153 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %15) #11
  br label %639

154:                                              ; preds = %103, %102
  %155 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %16) #11
  br label %639

156:                                              ; preds = %105, %104
  %157 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %17) #11
  br label %639

158:                                              ; preds = %113, %111, %110, %106
  %159 = landingpad { ptr, i32 }
          cleanup
  br label %164

160:                                              ; preds = %109
  %161 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3JPH23ConvexHullShapeSettingsdlEPv(ptr noundef %108) #11
  br label %164

162:                                              ; preds = %119
  %163 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3JPH20BodyCreationSettingsD2Ev(ptr noundef nonnull align 16 dereferenceable(256) %18) #11
  br label %164

164:                                              ; preds = %162, %160, %158
  %.pn76 = phi { ptr, i32 } [ %163, %162 ], [ %159, %158 ], [ %161, %160 ]
  call void @llvm.lifetime.end.p0(i64 256, ptr nonnull %18) #11
  br label %639

165:                                              ; preds = %.preheader105
  %166 = extractvalue { double, double } %123, 0
  %167 = extractvalue { double, double } %123, 1
  %168 = invoke { double, double } @_ZN3JPHmlEfNS_4Vec3E(float noundef 5.000000e+00, double %166, double %167)
          to label %169 unwind label %346

169:                                              ; preds = %165
  %170 = extractvalue { double, double } %168, 0
  store double %170, ptr %21, align 16
  %171 = extractvalue { double, double } %168, 1
  store double %171, ptr %122, align 8
  invoke void @_ZN3JPH5ArrayINS_4Vec3ENS_12STLAllocatorIS1_EEE9push_backEOS1_(ptr noundef nonnull align 8 dereferenceable(24) %20, ptr noundef nonnull align 16 dereferenceable(16) %21)
          to label %172 unwind label %346

172:                                              ; preds = %169
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %21) #11
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %21) #11
  %173 = invoke { double, double } @_ZN3JPH4Vec314sUnitSphericalEff(float noundef %.068112, float noundef 0x3FD41B2F80000000)
          to label %174 unwind label %346

174:                                              ; preds = %172
  %175 = extractvalue { double, double } %173, 0
  %176 = extractvalue { double, double } %173, 1
  %177 = invoke { double, double } @_ZN3JPHmlEfNS_4Vec3E(float noundef 5.000000e+00, double %175, double %176)
          to label %178 unwind label %346

178:                                              ; preds = %174
  %179 = extractvalue { double, double } %177, 0
  store double %179, ptr %21, align 16
  %180 = extractvalue { double, double } %177, 1
  store double %180, ptr %122, align 8
  invoke void @_ZN3JPH5ArrayINS_4Vec3ENS_12STLAllocatorIS1_EEE9push_backEOS1_(ptr noundef nonnull align 8 dereferenceable(24) %20, ptr noundef nonnull align 16 dereferenceable(16) %21)
          to label %181 unwind label %346

181:                                              ; preds = %178
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %21) #11
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %21) #11
  %182 = invoke { double, double } @_ZN3JPH4Vec314sUnitSphericalEff(float noundef %.068112, float noundef 0x3FE41B2F80000000)
          to label %183 unwind label %346

183:                                              ; preds = %181
  %184 = extractvalue { double, double } %182, 0
  %185 = extractvalue { double, double } %182, 1
  %186 = invoke { double, double } @_ZN3JPHmlEfNS_4Vec3E(float noundef 5.000000e+00, double %184, double %185)
          to label %187 unwind label %346

187:                                              ; preds = %183
  %188 = extractvalue { double, double } %186, 0
  store double %188, ptr %21, align 16
  %189 = extractvalue { double, double } %186, 1
  store double %189, ptr %122, align 8
  invoke void @_ZN3JPH5ArrayINS_4Vec3ENS_12STLAllocatorIS1_EEE9push_backEOS1_(ptr noundef nonnull align 8 dereferenceable(24) %20, ptr noundef nonnull align 16 dereferenceable(16) %21)
          to label %190 unwind label %346

190:                                              ; preds = %187
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %21) #11
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %21) #11
  %191 = invoke { double, double } @_ZN3JPH4Vec314sUnitSphericalEff(float noundef %.068112, float noundef 0x3FEE28C740000000)
          to label %192 unwind label %346

192:                                              ; preds = %190
  %193 = extractvalue { double, double } %191, 0
  %194 = extractvalue { double, double } %191, 1
  %195 = invoke { double, double } @_ZN3JPHmlEfNS_4Vec3E(float noundef 5.000000e+00, double %193, double %194)
          to label %196 unwind label %346

196:                                              ; preds = %192
  %197 = extractvalue { double, double } %195, 0
  store double %197, ptr %21, align 16
  %198 = extractvalue { double, double } %195, 1
  store double %198, ptr %122, align 8
  invoke void @_ZN3JPH5ArrayINS_4Vec3ENS_12STLAllocatorIS1_EEE9push_backEOS1_(ptr noundef nonnull align 8 dereferenceable(24) %20, ptr noundef nonnull align 16 dereferenceable(16) %21)
          to label %199 unwind label %346

199:                                              ; preds = %196
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %21) #11
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %21) #11
  %200 = invoke { double, double } @_ZN3JPH4Vec314sUnitSphericalEff(float noundef %.068112, float noundef 0x3FF41B2F80000000)
          to label %201 unwind label %346

201:                                              ; preds = %199
  %202 = extractvalue { double, double } %200, 0
  %203 = extractvalue { double, double } %200, 1
  %204 = invoke { double, double } @_ZN3JPHmlEfNS_4Vec3E(float noundef 5.000000e+00, double %202, double %203)
          to label %205 unwind label %346

205:                                              ; preds = %201
  %206 = extractvalue { double, double } %204, 0
  store double %206, ptr %21, align 16
  %207 = extractvalue { double, double } %204, 1
  store double %207, ptr %122, align 8
  invoke void @_ZN3JPH5ArrayINS_4Vec3ENS_12STLAllocatorIS1_EEE9push_backEOS1_(ptr noundef nonnull align 8 dereferenceable(24) %20, ptr noundef nonnull align 16 dereferenceable(16) %21)
          to label %208 unwind label %346

208:                                              ; preds = %205
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %21) #11
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %21) #11
  %209 = invoke { double, double } @_ZN3JPH4Vec314sUnitSphericalEff(float noundef %.068112, float noundef 0x3FF921FB60000000)
          to label %210 unwind label %346

210:                                              ; preds = %208
  %211 = extractvalue { double, double } %209, 0
  %212 = extractvalue { double, double } %209, 1
  %213 = invoke { double, double } @_ZN3JPHmlEfNS_4Vec3E(float noundef 5.000000e+00, double %211, double %212)
          to label %214 unwind label %346

214:                                              ; preds = %210
  %215 = extractvalue { double, double } %213, 0
  store double %215, ptr %21, align 16
  %216 = extractvalue { double, double } %213, 1
  store double %216, ptr %122, align 8
  invoke void @_ZN3JPH5ArrayINS_4Vec3ENS_12STLAllocatorIS1_EEE9push_backEOS1_(ptr noundef nonnull align 8 dereferenceable(24) %20, ptr noundef nonnull align 16 dereferenceable(16) %21)
          to label %217 unwind label %346

217:                                              ; preds = %214
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %21) #11
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %21) #11
  %218 = invoke { double, double } @_ZN3JPH4Vec314sUnitSphericalEff(float noundef %.068112, float noundef 0x3FFE28C740000000)
          to label %219 unwind label %346

219:                                              ; preds = %217
  %220 = extractvalue { double, double } %218, 0
  %221 = extractvalue { double, double } %218, 1
  %222 = invoke { double, double } @_ZN3JPHmlEfNS_4Vec3E(float noundef 5.000000e+00, double %220, double %221)
          to label %223 unwind label %346

223:                                              ; preds = %219
  %224 = extractvalue { double, double } %222, 0
  store double %224, ptr %21, align 16
  %225 = extractvalue { double, double } %222, 1
  store double %225, ptr %122, align 8
  invoke void @_ZN3JPH5ArrayINS_4Vec3ENS_12STLAllocatorIS1_EEE9push_backEOS1_(ptr noundef nonnull align 8 dereferenceable(24) %20, ptr noundef nonnull align 16 dereferenceable(16) %21)
          to label %226 unwind label %346

226:                                              ; preds = %223
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %21) #11
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %21) #11
  %227 = invoke { double, double } @_ZN3JPH4Vec314sUnitSphericalEff(float noundef %.068112, float noundef 0x400197C980000000)
          to label %228 unwind label %346

228:                                              ; preds = %226
  %229 = extractvalue { double, double } %227, 0
  %230 = extractvalue { double, double } %227, 1
  %231 = invoke { double, double } @_ZN3JPHmlEfNS_4Vec3E(float noundef 5.000000e+00, double %229, double %230)
          to label %232 unwind label %346

232:                                              ; preds = %228
  %233 = extractvalue { double, double } %231, 0
  store double %233, ptr %21, align 16
  %234 = extractvalue { double, double } %231, 1
  store double %234, ptr %122, align 8
  invoke void @_ZN3JPH5ArrayINS_4Vec3ENS_12STLAllocatorIS1_EEE9push_backEOS1_(ptr noundef nonnull align 8 dereferenceable(24) %20, ptr noundef nonnull align 16 dereferenceable(16) %21)
          to label %235 unwind label %346

235:                                              ; preds = %232
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %21) #11
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %21) #11
  %236 = invoke { double, double } @_ZN3JPH4Vec314sUnitSphericalEff(float noundef %.068112, float noundef 0x40041B2F80000000)
          to label %237 unwind label %346

237:                                              ; preds = %235
  %238 = extractvalue { double, double } %236, 0
  %239 = extractvalue { double, double } %236, 1
  %240 = invoke { double, double } @_ZN3JPHmlEfNS_4Vec3E(float noundef 5.000000e+00, double %238, double %239)
          to label %241 unwind label %346

241:                                              ; preds = %237
  %242 = extractvalue { double, double } %240, 0
  store double %242, ptr %21, align 16
  %243 = extractvalue { double, double } %240, 1
  store double %243, ptr %122, align 8
  invoke void @_ZN3JPH5ArrayINS_4Vec3ENS_12STLAllocatorIS1_EEE9push_backEOS1_(ptr noundef nonnull align 8 dereferenceable(24) %20, ptr noundef nonnull align 16 dereferenceable(16) %21)
          to label %244 unwind label %346

244:                                              ; preds = %241
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %21) #11
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %21) #11
  %245 = invoke { double, double } @_ZN3JPH4Vec314sUnitSphericalEff(float noundef %.068112, float noundef 0x40069E9580000000)
          to label %246 unwind label %346

246:                                              ; preds = %244
  %247 = extractvalue { double, double } %245, 0
  %248 = extractvalue { double, double } %245, 1
  %249 = invoke { double, double } @_ZN3JPHmlEfNS_4Vec3E(float noundef 5.000000e+00, double %247, double %248)
          to label %250 unwind label %346

250:                                              ; preds = %246
  %251 = extractvalue { double, double } %249, 0
  store double %251, ptr %21, align 16
  %252 = extractvalue { double, double } %249, 1
  store double %252, ptr %122, align 8
  invoke void @_ZN3JPH5ArrayINS_4Vec3ENS_12STLAllocatorIS1_EEE9push_backEOS1_(ptr noundef nonnull align 8 dereferenceable(24) %20, ptr noundef nonnull align 16 dereferenceable(16) %21)
          to label %253 unwind label %346

253:                                              ; preds = %250
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %21) #11
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %21) #11
  %254 = invoke { double, double } @_ZN3JPH4Vec314sUnitSphericalEff(float noundef %.068112, float noundef 0x400921FB80000000)
          to label %255 unwind label %346

255:                                              ; preds = %253
  %256 = extractvalue { double, double } %254, 0
  %257 = extractvalue { double, double } %254, 1
  %258 = invoke { double, double } @_ZN3JPHmlEfNS_4Vec3E(float noundef 5.000000e+00, double %256, double %257)
          to label %259 unwind label %346

259:                                              ; preds = %255
  %260 = extractvalue { double, double } %258, 0
  store double %260, ptr %21, align 16
  %261 = extractvalue { double, double } %258, 1
  store double %261, ptr %122, align 8
  invoke void @_ZN3JPH5ArrayINS_4Vec3ENS_12STLAllocatorIS1_EEE9push_backEOS1_(ptr noundef nonnull align 8 dereferenceable(24) %20, ptr noundef nonnull align 16 dereferenceable(16) %21)
          to label %262 unwind label %346

262:                                              ; preds = %259
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %21) #11
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %21) #11
  %263 = invoke { double, double } @_ZN3JPH4Vec314sUnitSphericalEff(float noundef %.068112, float noundef 0x400BA56180000000)
          to label %264 unwind label %346

264:                                              ; preds = %262
  %265 = extractvalue { double, double } %263, 0
  %266 = extractvalue { double, double } %263, 1
  %267 = invoke { double, double } @_ZN3JPHmlEfNS_4Vec3E(float noundef 5.000000e+00, double %265, double %266)
          to label %268 unwind label %346

268:                                              ; preds = %264
  %269 = extractvalue { double, double } %267, 0
  store double %269, ptr %21, align 16
  %270 = extractvalue { double, double } %267, 1
  store double %270, ptr %122, align 8
  invoke void @_ZN3JPH5ArrayINS_4Vec3ENS_12STLAllocatorIS1_EEE9push_backEOS1_(ptr noundef nonnull align 8 dereferenceable(24) %20, ptr noundef nonnull align 16 dereferenceable(16) %21)
          to label %271 unwind label %346

271:                                              ; preds = %268
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %21) #11
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %21) #11
  %272 = invoke { double, double } @_ZN3JPH4Vec314sUnitSphericalEff(float noundef %.068112, float noundef 0x400E28C780000000)
          to label %273 unwind label %346

273:                                              ; preds = %271
  %274 = extractvalue { double, double } %272, 0
  %275 = extractvalue { double, double } %272, 1
  %276 = invoke { double, double } @_ZN3JPHmlEfNS_4Vec3E(float noundef 5.000000e+00, double %274, double %275)
          to label %277 unwind label %346

277:                                              ; preds = %273
  %278 = extractvalue { double, double } %276, 0
  store double %278, ptr %21, align 16
  %279 = extractvalue { double, double } %276, 1
  store double %279, ptr %122, align 8
  invoke void @_ZN3JPH5ArrayINS_4Vec3ENS_12STLAllocatorIS1_EEE9push_backEOS1_(ptr noundef nonnull align 8 dereferenceable(24) %20, ptr noundef nonnull align 16 dereferenceable(16) %21)
          to label %280 unwind label %346

280:                                              ; preds = %277
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %21) #11
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %21) #11
  %281 = invoke { double, double } @_ZN3JPH4Vec314sUnitSphericalEff(float noundef %.068112, float noundef 0x40105616C0000000)
          to label %282 unwind label %346

282:                                              ; preds = %280
  %283 = extractvalue { double, double } %281, 0
  %284 = extractvalue { double, double } %281, 1
  %285 = invoke { double, double } @_ZN3JPHmlEfNS_4Vec3E(float noundef 5.000000e+00, double %283, double %284)
          to label %286 unwind label %346

286:                                              ; preds = %282
  %287 = extractvalue { double, double } %285, 0
  store double %287, ptr %21, align 16
  %288 = extractvalue { double, double } %285, 1
  store double %288, ptr %122, align 8
  invoke void @_ZN3JPH5ArrayINS_4Vec3ENS_12STLAllocatorIS1_EEE9push_backEOS1_(ptr noundef nonnull align 8 dereferenceable(24) %20, ptr noundef nonnull align 16 dereferenceable(16) %21)
          to label %289 unwind label %346

289:                                              ; preds = %286
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %21) #11
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %21) #11
  %290 = invoke { double, double } @_ZN3JPH4Vec314sUnitSphericalEff(float noundef %.068112, float noundef 0x401197C9C0000000)
          to label %291 unwind label %346

291:                                              ; preds = %289
  %292 = extractvalue { double, double } %290, 0
  %293 = extractvalue { double, double } %290, 1
  %294 = invoke { double, double } @_ZN3JPHmlEfNS_4Vec3E(float noundef 5.000000e+00, double %292, double %293)
          to label %295 unwind label %346

295:                                              ; preds = %291
  %296 = extractvalue { double, double } %294, 0
  store double %296, ptr %21, align 16
  %297 = extractvalue { double, double } %294, 1
  store double %297, ptr %122, align 8
  invoke void @_ZN3JPH5ArrayINS_4Vec3ENS_12STLAllocatorIS1_EEE9push_backEOS1_(ptr noundef nonnull align 8 dereferenceable(24) %20, ptr noundef nonnull align 16 dereferenceable(16) %21)
          to label %298 unwind label %346

298:                                              ; preds = %295
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %21) #11
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %21) #11
  %299 = invoke { double, double } @_ZN3JPH4Vec314sUnitSphericalEff(float noundef %.068112, float noundef 0x4012D97CC0000000)
          to label %300 unwind label %346

300:                                              ; preds = %298
  %301 = extractvalue { double, double } %299, 0
  %302 = extractvalue { double, double } %299, 1
  %303 = invoke { double, double } @_ZN3JPHmlEfNS_4Vec3E(float noundef 5.000000e+00, double %301, double %302)
          to label %304 unwind label %346

304:                                              ; preds = %300
  %305 = extractvalue { double, double } %303, 0
  store double %305, ptr %21, align 16
  %306 = extractvalue { double, double } %303, 1
  store double %306, ptr %122, align 8
  invoke void @_ZN3JPH5ArrayINS_4Vec3ENS_12STLAllocatorIS1_EEE9push_backEOS1_(ptr noundef nonnull align 8 dereferenceable(24) %20, ptr noundef nonnull align 16 dereferenceable(16) %21)
          to label %307 unwind label %346

307:                                              ; preds = %304
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %21) #11
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %21) #11
  %308 = invoke { double, double } @_ZN3JPH4Vec314sUnitSphericalEff(float noundef %.068112, float noundef 0x40141B2FC0000000)
          to label %309 unwind label %346

309:                                              ; preds = %307
  %310 = extractvalue { double, double } %308, 0
  %311 = extractvalue { double, double } %308, 1
  %312 = invoke { double, double } @_ZN3JPHmlEfNS_4Vec3E(float noundef 5.000000e+00, double %310, double %311)
          to label %313 unwind label %346

313:                                              ; preds = %309
  %314 = extractvalue { double, double } %312, 0
  store double %314, ptr %21, align 16
  %315 = extractvalue { double, double } %312, 1
  store double %315, ptr %122, align 8
  invoke void @_ZN3JPH5ArrayINS_4Vec3ENS_12STLAllocatorIS1_EEE9push_backEOS1_(ptr noundef nonnull align 8 dereferenceable(24) %20, ptr noundef nonnull align 16 dereferenceable(16) %21)
          to label %316 unwind label %346

316:                                              ; preds = %313
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %21) #11
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %21) #11
  %317 = invoke { double, double } @_ZN3JPH4Vec314sUnitSphericalEff(float noundef %.068112, float noundef 0x40155CE2C0000000)
          to label %318 unwind label %346

318:                                              ; preds = %316
  %319 = extractvalue { double, double } %317, 0
  %320 = extractvalue { double, double } %317, 1
  %321 = invoke { double, double } @_ZN3JPHmlEfNS_4Vec3E(float noundef 5.000000e+00, double %319, double %320)
          to label %322 unwind label %346

322:                                              ; preds = %318
  %323 = extractvalue { double, double } %321, 0
  store double %323, ptr %21, align 16
  %324 = extractvalue { double, double } %321, 1
  store double %324, ptr %122, align 8
  invoke void @_ZN3JPH5ArrayINS_4Vec3ENS_12STLAllocatorIS1_EEE9push_backEOS1_(ptr noundef nonnull align 8 dereferenceable(24) %20, ptr noundef nonnull align 16 dereferenceable(16) %21)
          to label %325 unwind label %346

325:                                              ; preds = %322
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %21) #11
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %21) #11
  %326 = invoke { double, double } @_ZN3JPH4Vec314sUnitSphericalEff(float noundef %.068112, float noundef 0x40169E95C0000000)
          to label %327 unwind label %346

327:                                              ; preds = %325
  %328 = extractvalue { double, double } %326, 0
  %329 = extractvalue { double, double } %326, 1
  %330 = invoke { double, double } @_ZN3JPHmlEfNS_4Vec3E(float noundef 5.000000e+00, double %328, double %329)
          to label %331 unwind label %346

331:                                              ; preds = %327
  %332 = extractvalue { double, double } %330, 0
  store double %332, ptr %21, align 16
  %333 = extractvalue { double, double } %330, 1
  store double %333, ptr %122, align 8
  invoke void @_ZN3JPH5ArrayINS_4Vec3ENS_12STLAllocatorIS1_EEE9push_backEOS1_(ptr noundef nonnull align 8 dereferenceable(24) %20, ptr noundef nonnull align 16 dereferenceable(16) %21)
          to label %334 unwind label %346

334:                                              ; preds = %331
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %21) #11
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %21) #11
  %335 = invoke { double, double } @_ZN3JPH4Vec314sUnitSphericalEff(float noundef %.068112, float noundef 0x4017E048C0000000)
          to label %336 unwind label %346

336:                                              ; preds = %334
  %337 = extractvalue { double, double } %335, 0
  %338 = extractvalue { double, double } %335, 1
  %339 = invoke { double, double } @_ZN3JPHmlEfNS_4Vec3E(float noundef 5.000000e+00, double %337, double %338)
          to label %340 unwind label %346

340:                                              ; preds = %336
  %341 = extractvalue { double, double } %339, 0
  store double %341, ptr %21, align 16
  %342 = extractvalue { double, double } %339, 1
  store double %342, ptr %122, align 8
  invoke void @_ZN3JPH5ArrayINS_4Vec3ENS_12STLAllocatorIS1_EEE9push_backEOS1_(ptr noundef nonnull align 8 dereferenceable(24) %20, ptr noundef nonnull align 16 dereferenceable(16) %21)
          to label %343 unwind label %346

343:                                              ; preds = %340
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %21) #11
  %344 = fadd float %.068112, 0x3FC41B2F80000000
  %345 = fcmp ugt float %344, 0x400921FB60000000
  br i1 %345, label %124, label %.preheader105, !llvm.loop !17

346:                                              ; preds = %340, %336, %334, %331, %327, %325, %322, %318, %316, %313, %309, %307, %304, %300, %298, %295, %291, %289, %286, %282, %280, %277, %273, %271, %268, %264, %262, %259, %255, %253, %250, %246, %244, %241, %237, %235, %232, %228, %226, %223, %219, %217, %214, %210, %208, %205, %201, %199, %196, %192, %190, %187, %183, %181, %178, %174, %172, %169, %165, %.preheader105
  %347 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %21) #11
  br label %638

348:                                              ; preds = %124
  invoke void @_ZN3JPH23ConvexHullShapeSettingsC2ERKNS_5ArrayINS_4Vec3ENS_12STLAllocatorIS2_EEEEfPKNS_15PhysicsMaterialE(ptr noundef nonnull align 8 dereferenceable(120) %126, ptr noundef nonnull align 8 dereferenceable(24) %20, float noundef 0x3FA99999A0000000, ptr noundef null)
          to label %349 unwind label %370

349:                                              ; preds = %348
  invoke void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %23, float noundef 4.000000e+01, float noundef 1.000000e+01, float noundef 0.000000e+00)
          to label %350 unwind label %368

350:                                              ; preds = %349
  %351 = invoke { double, double } @_ZN3JPH4Quat9sIdentityEv()
          to label %352 unwind label %368

352:                                              ; preds = %350
  %353 = extractvalue { double, double } %351, 0
  %354 = extractvalue { double, double } %351, 1
  %355 = load double, ptr %23, align 16
  %356 = getelementptr inbounds i8, ptr %23, i64 8
  %357 = load double, ptr %356, align 8
  invoke void @_ZN3JPH20BodyCreationSettingsC2EPKNS_13ShapeSettingsENS_4Vec3ENS_4QuatENS_11EMotionTypeEt(ptr noundef nonnull align 16 dereferenceable(256) %22, ptr noundef nonnull %126, double %355, double %357, double %353, double %354, i8 noundef zeroext 2, i16 noundef zeroext 1)
          to label %358 unwind label %368

358:                                              ; preds = %352
  %359 = invoke i32 @_ZN3JPH13BodyInterface16CreateAndAddBodyERKNS_20BodyCreationSettingsENS_11EActivationE(ptr noundef nonnull align 8 dereferenceable(24) %125, ptr noundef nonnull align 16 dereferenceable(256) %22, i32 noundef 0)
          to label %360 unwind label %372

360:                                              ; preds = %358
  call void @_ZN3JPH20BodyCreationSettingsD2Ev(ptr noundef nonnull align 16 dereferenceable(256) %22) #11
  call void @llvm.lifetime.end.p0(i64 256, ptr nonnull %22) #11
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %24) #11
  call void @_ZN3JPH5ArrayINS_4Vec3ENS_12STLAllocatorIS1_EEEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %24) #11
  %361 = getelementptr inbounds i8, ptr %26, i64 8
  %362 = getelementptr inbounds i8, ptr %25, i64 8
  %363 = getelementptr inbounds i8, ptr %28, i64 8
  %364 = getelementptr inbounds i8, ptr %27, i64 8
  br label %375

365:                                              ; preds = %399
  %366 = load ptr, ptr %75, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 256, ptr nonnull %29) #11
  %367 = invoke noundef ptr @_ZN3JPH23ConvexHullShapeSettingsnwEm(i64 noundef 120)
          to label %406 unwind label %482

368:                                              ; preds = %352, %350, %349, %124
  %369 = landingpad { ptr, i32 }
          cleanup
  br label %374

370:                                              ; preds = %348
  %371 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3JPH23ConvexHullShapeSettingsdlEPv(ptr noundef %126) #11
  br label %374

372:                                              ; preds = %358
  %373 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3JPH20BodyCreationSettingsD2Ev(ptr noundef nonnull align 16 dereferenceable(256) %22) #11
  br label %374

374:                                              ; preds = %372, %370, %368
  %.pn78 = phi { ptr, i32 } [ %373, %372 ], [ %369, %368 ], [ %371, %370 ]
  call void @llvm.lifetime.end.p0(i64 256, ptr nonnull %22) #11
  br label %638

375:                                              ; preds = %360, %399
  %.072113 = phi float [ 0.000000e+00, %360 ], [ %400, %399 ]
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %25) #11
  %376 = invoke noundef float @_ZN3JPH3SinEf(float noundef %.072113)
          to label %377 unwind label %402

377:                                              ; preds = %375
  %378 = invoke noundef float @_ZN3JPH3CosEf(float noundef %.072113)
          to label %379 unwind label %402

379:                                              ; preds = %377
  invoke void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %26, float noundef 0xBFB99999A0000000, float noundef %376, float noundef %378)
          to label %380 unwind label %402

380:                                              ; preds = %379
  %381 = load double, ptr %26, align 16
  %382 = load double, ptr %361, align 8
  %383 = invoke { double, double } @_ZN3JPHmlEfNS_4Vec3E(float noundef 4.000000e+00, double %381, double %382)
          to label %384 unwind label %402

384:                                              ; preds = %380
  %385 = extractvalue { double, double } %383, 0
  store double %385, ptr %25, align 16
  %386 = extractvalue { double, double } %383, 1
  store double %386, ptr %362, align 8
  invoke void @_ZN3JPH5ArrayINS_4Vec3ENS_12STLAllocatorIS1_EEE9push_backEOS1_(ptr noundef nonnull align 8 dereferenceable(24) %24, ptr noundef nonnull align 16 dereferenceable(16) %25)
          to label %387 unwind label %402

387:                                              ; preds = %384
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %25) #11
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %27) #11
  %388 = invoke noundef float @_ZN3JPH3SinEf(float noundef %.072113)
          to label %389 unwind label %404

389:                                              ; preds = %387
  %390 = invoke noundef float @_ZN3JPH3CosEf(float noundef %.072113)
          to label %391 unwind label %404

391:                                              ; preds = %389
  invoke void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %28, float noundef 0x3FB99999A0000000, float noundef %388, float noundef %390)
          to label %392 unwind label %404

392:                                              ; preds = %391
  %393 = load double, ptr %28, align 16
  %394 = load double, ptr %363, align 8
  %395 = invoke { double, double } @_ZN3JPHmlEfNS_4Vec3E(float noundef 4.500000e+00, double %393, double %394)
          to label %396 unwind label %404

396:                                              ; preds = %392
  %397 = extractvalue { double, double } %395, 0
  store double %397, ptr %27, align 16
  %398 = extractvalue { double, double } %395, 1
  store double %398, ptr %364, align 8
  invoke void @_ZN3JPH5ArrayINS_4Vec3ENS_12STLAllocatorIS1_EEE9push_backEOS1_(ptr noundef nonnull align 8 dereferenceable(24) %24, ptr noundef nonnull align 16 dereferenceable(16) %27)
          to label %399 unwind label %404

399:                                              ; preds = %396
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %27) #11
  %400 = fadd float %.072113, 0x3F9921FB60000000
  %401 = fcmp ugt float %400, 0x401921FB60000000
  br i1 %401, label %365, label %375, !llvm.loop !19

402:                                              ; preds = %384, %380, %379, %377, %375
  %403 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %25) #11
  br label %637

404:                                              ; preds = %396, %392, %391, %389, %387
  %405 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %27) #11
  br label %637

406:                                              ; preds = %365
  invoke void @_ZN3JPH23ConvexHullShapeSettingsC2ERKNS_5ArrayINS_4Vec3ENS_12STLAllocatorIS2_EEEEfPKNS_15PhysicsMaterialE(ptr noundef nonnull align 8 dereferenceable(120) %367, ptr noundef nonnull align 8 dereferenceable(24) %24, float noundef 0x3FA99999A0000000, ptr noundef null)
          to label %407 unwind label %484

407:                                              ; preds = %406
  invoke void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %30, float noundef 6.000000e+01, float noundef 1.000000e+01, float noundef 0.000000e+00)
          to label %408 unwind label %482

408:                                              ; preds = %407
  %409 = invoke { double, double } @_ZN3JPH4Quat9sIdentityEv()
          to label %410 unwind label %482

410:                                              ; preds = %408
  %411 = extractvalue { double, double } %409, 0
  %412 = extractvalue { double, double } %409, 1
  %413 = load double, ptr %30, align 16
  %414 = getelementptr inbounds i8, ptr %30, i64 8
  %415 = load double, ptr %414, align 8
  invoke void @_ZN3JPH20BodyCreationSettingsC2EPKNS_13ShapeSettingsENS_4Vec3ENS_4QuatENS_11EMotionTypeEt(ptr noundef nonnull align 16 dereferenceable(256) %29, ptr noundef nonnull %367, double %413, double %415, double %411, double %412, i8 noundef zeroext 2, i16 noundef zeroext 1)
          to label %416 unwind label %482

416:                                              ; preds = %410
  %417 = invoke i32 @_ZN3JPH13BodyInterface16CreateAndAddBodyERKNS_20BodyCreationSettingsENS_11EActivationE(ptr noundef nonnull align 8 dereferenceable(24) %366, ptr noundef nonnull align 16 dereferenceable(256) %29, i32 noundef 0)
          to label %418 unwind label %486

418:                                              ; preds = %416
  call void @_ZN3JPH20BodyCreationSettingsD2Ev(ptr noundef nonnull align 16 dereferenceable(256) %29) #11
  call void @llvm.lifetime.end.p0(i64 256, ptr nonnull %29) #11
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %31) #11
  call void @_ZN3JPH5ArrayINS_4Vec3ENS_12STLAllocatorIS1_EEEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %31) #11
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %32) #11
  invoke void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %32, float noundef 0x3FF0B013A0000000, float noundef 0x4012BDC3E0000000, float noundef 0x3FEB7BB980000000)
          to label %419 unwind label %489

419:                                              ; preds = %418
  invoke void @_ZN3JPH5ArrayINS_4Vec3ENS_12STLAllocatorIS1_EEE9push_backEOS1_(ptr noundef nonnull align 8 dereferenceable(24) %31, ptr noundef nonnull align 16 dereferenceable(16) %32)
          to label %420 unwind label %489

420:                                              ; preds = %419
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %32) #11
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %33) #11
  invoke void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %33, float noundef 0xBFF01EE240000000, float noundef 0x40128EB340000000, float noundef 0xBFEEB0A8E0000000)
          to label %421 unwind label %491

421:                                              ; preds = %420
  invoke void @_ZN3JPH5ArrayINS_4Vec3ENS_12STLAllocatorIS1_EEE9push_backEOS1_(ptr noundef nonnull align 8 dereferenceable(24) %31, ptr noundef nonnull align 16 dereferenceable(16) %33)
          to label %422 unwind label %491

422:                                              ; preds = %421
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %33) #11
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %34) #11
  invoke void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %34, float noundef 0xBFF04C40E0000000, float noundef 0x4012E24440000000, float noundef 0x3FEB136D80000000)
          to label %423 unwind label %493

423:                                              ; preds = %422
  invoke void @_ZN3JPH5ArrayINS_4Vec3ENS_12STLAllocatorIS1_EEE9push_backEOS1_(ptr noundef nonnull align 8 dereferenceable(24) %31, ptr noundef nonnull align 16 dereferenceable(16) %34)
          to label %424 unwind label %493

424:                                              ; preds = %423
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %34) #11
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %35) #11
  invoke void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %35, float noundef 0xC0030A2880000000, float noundef 0x3FF435B6E0000000, float noundef 0xBFF1C257C0000000)
          to label %425 unwind label %495

425:                                              ; preds = %424
  invoke void @_ZN3JPH5ArrayINS_4Vec3ENS_12STLAllocatorIS1_EEE9push_backEOS1_(ptr noundef nonnull align 8 dereferenceable(24) %31, ptr noundef nonnull align 16 dereferenceable(16) %35)
          to label %426 unwind label %495

426:                                              ; preds = %425
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %35) #11
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %36) #11
  invoke void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %36, float noundef 0x3FCB48FD60000000, float noundef 0x3F9456EC00000000, float noundef 0xBFFB4EF380000000)
          to label %427 unwind label %497

427:                                              ; preds = %426
  invoke void @_ZN3JPH5ArrayINS_4Vec3ENS_12STLAllocatorIS1_EEE9push_backEOS1_(ptr noundef nonnull align 8 dereferenceable(24) %31, ptr noundef nonnull align 16 dereferenceable(16) %36)
          to label %428 unwind label %497

428:                                              ; preds = %427
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %36) #11
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %37) #11
  invoke void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %37, float noundef 0xC0022F05A0000000, float noundef 0xBFECC49E40000000, float noundef 0xBFDE443540000000)
          to label %429 unwind label %499

429:                                              ; preds = %428
  invoke void @_ZN3JPH5ArrayINS_4Vec3ENS_12STLAllocatorIS1_EEE9push_backEOS1_(ptr noundef nonnull align 8 dereferenceable(24) %31, ptr noundef nonnull align 16 dereferenceable(16) %37)
          to label %430 unwind label %499

430:                                              ; preds = %429
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %37) #11
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %38) #11
  invoke void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %38, float noundef 0xBFFD9CCDE0000000, float noundef 0xBFF4086360000000, float noundef 0x4003631EC0000000)
          to label %431 unwind label %501

431:                                              ; preds = %430
  invoke void @_ZN3JPH5ArrayINS_4Vec3ENS_12STLAllocatorIS1_EEE9push_backEOS1_(ptr noundef nonnull align 8 dereferenceable(24) %31, ptr noundef nonnull align 16 dereferenceable(16) %38)
          to label %432 unwind label %501

432:                                              ; preds = %431
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %38) #11
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %39) #11
  invoke void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %39, float noundef 0x3FFE96DF60000000, float noundef 0xBFF4086360000000, float noundef 0x4003631EC0000000)
          to label %433 unwind label %503

433:                                              ; preds = %432
  invoke void @_ZN3JPH5ArrayINS_4Vec3ENS_12STLAllocatorIS1_EEE9push_backEOS1_(ptr noundef nonnull align 8 dereferenceable(24) %31, ptr noundef nonnull align 16 dereferenceable(16) %39)
          to label %434 unwind label %503

434:                                              ; preds = %433
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %39) #11
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %40) #11
  invoke void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %40, float noundef 0xC00605BB20000000, float noundef 0x400A006740000000, float noundef 0x3FFABA9340000000)
          to label %435 unwind label %505

435:                                              ; preds = %434
  invoke void @_ZN3JPH5ArrayINS_4Vec3ENS_12STLAllocatorIS1_EEE9push_backEOS1_(ptr noundef nonnull align 8 dereferenceable(24) %31, ptr noundef nonnull align 16 dereferenceable(16) %40)
          to label %436 unwind label %505

436:                                              ; preds = %435
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %40) #11
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %41) #11
  invoke void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %41, float noundef 0xBFB1DD8C40000000, float noundef 0xC0064EAA80000000, float noundef 0xBFDB024640000000)
          to label %437 unwind label %507

437:                                              ; preds = %436
  invoke void @_ZN3JPH5ArrayINS_4Vec3ENS_12STLAllocatorIS1_EEE9push_backEOS1_(ptr noundef nonnull align 8 dereferenceable(24) %31, ptr noundef nonnull align 16 dereferenceable(16) %41)
          to label %438 unwind label %507

438:                                              ; preds = %437
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %41) #11
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %42) #11
  invoke void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %42, float noundef 0x40021CE5A0000000, float noundef 0xBFED626640000000, float noundef 0xBFDF9C6E00000000)
          to label %439 unwind label %509

439:                                              ; preds = %438
  invoke void @_ZN3JPH5ArrayINS_4Vec3ENS_12STLAllocatorIS1_EEE9push_backEOS1_(ptr noundef nonnull align 8 dereferenceable(24) %31, ptr noundef nonnull align 16 dereferenceable(16) %42)
          to label %440 unwind label %509

440:                                              ; preds = %439
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %42) #11
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %43) #11
  invoke void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %43, float noundef 0x3FE881A9C0000000, float noundef 0xC006906780000000, float noundef 0x3FFE937A80000000)
          to label %441 unwind label %511

441:                                              ; preds = %440
  invoke void @_ZN3JPH5ArrayINS_4Vec3ENS_12STLAllocatorIS1_EEE9push_backEOS1_(ptr noundef nonnull align 8 dereferenceable(24) %31, ptr noundef nonnull align 16 dereferenceable(16) %43)
          to label %442 unwind label %511

442:                                              ; preds = %441
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %43) #11
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %44) #11
  invoke void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %44, float noundef 0x4002AA8440000000, float noundef 0x3FF4434C80000000, float noundef 0xBFF3026140000000)
          to label %443 unwind label %513

443:                                              ; preds = %442
  invoke void @_ZN3JPH5ArrayINS_4Vec3ENS_12STLAllocatorIS1_EEE9push_backEOS1_(ptr noundef nonnull align 8 dereferenceable(24) %31, ptr noundef nonnull align 16 dereferenceable(16) %44)
          to label %444 unwind label %513

444:                                              ; preds = %443
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %44) #11
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %45) #11
  invoke void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %45, float noundef 0xBFE2EECC00000000, float noundef 0x40023A4520000000, float noundef 0xBFFE054480000000)
          to label %445 unwind label %515

445:                                              ; preds = %444
  invoke void @_ZN3JPH5ArrayINS_4Vec3ENS_12STLAllocatorIS1_EEE9push_backEOS1_(ptr noundef nonnull align 8 dereferenceable(24) %31, ptr noundef nonnull align 16 dereferenceable(16) %45)
          to label %446 unwind label %515

446:                                              ; preds = %445
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %45) #11
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %46) #11
  invoke void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %46, float noundef 0xC001C587A0000000, float noundef 0x4008594680000000, float noundef 0x3FCE0BEB80000000)
          to label %447 unwind label %517

447:                                              ; preds = %446
  invoke void @_ZN3JPH5ArrayINS_4Vec3ENS_12STLAllocatorIS1_EEE9push_backEOS1_(ptr noundef nonnull align 8 dereferenceable(24) %31, ptr noundef nonnull align 16 dereferenceable(16) %46)
          to label %448 unwind label %517

448:                                              ; preds = %447
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %46) #11
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %47) #11
  invoke void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %47, float noundef 0xBFF01EE240000000, float noundef 0x4011905AE0000000, float noundef 0xBFF47206C0000000)
          to label %449 unwind label %519

449:                                              ; preds = %448
  invoke void @_ZN3JPH5ArrayINS_4Vec3ENS_12STLAllocatorIS1_EEE9push_backEOS1_(ptr noundef nonnull align 8 dereferenceable(24) %31, ptr noundef nonnull align 16 dereferenceable(16) %47)
          to label %450 unwind label %519

450:                                              ; preds = %449
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %47) #11
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %48) #11
  invoke void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %48, float noundef 0x3FEFDBC660000000, float noundef 0x401196E0C0000000, float noundef 0xBFF476CCC0000000)
          to label %451 unwind label %521

451:                                              ; preds = %450
  invoke void @_ZN3JPH5ArrayINS_4Vec3ENS_12STLAllocatorIS1_EEE9push_backEOS1_(ptr noundef nonnull align 8 dereferenceable(24) %31, ptr noundef nonnull align 16 dereferenceable(16) %48)
          to label %452 unwind label %521

452:                                              ; preds = %451
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %48) #11
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %49) #11
  invoke void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %49, float noundef 0x3FEFDBC660000000, float noundef 0x4012953900000000, float noundef 0xBFEEBA34E0000000)
          to label %453 unwind label %523

453:                                              ; preds = %452
  invoke void @_ZN3JPH5ArrayINS_4Vec3ENS_12STLAllocatorIS1_EEE9push_backEOS1_(ptr noundef nonnull align 8 dereferenceable(24) %31, ptr noundef nonnull align 16 dereferenceable(16) %49)
          to label %454 unwind label %523

454:                                              ; preds = %453
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %49) #11
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %50) #11
  invoke void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %50, float noundef 0x4005F651E0000000, float noundef 0x400884F2C0000000, float noundef 0x3FFC6C7580000000)
          to label %455 unwind label %525

455:                                              ; preds = %454
  invoke void @_ZN3JPH5ArrayINS_4Vec3ENS_12STLAllocatorIS1_EEE9push_backEOS1_(ptr noundef nonnull align 8 dereferenceable(24) %31, ptr noundef nonnull align 16 dereferenceable(16) %50)
          to label %456 unwind label %525

456:                                              ; preds = %455
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %50) #11
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %51) #11
  invoke void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %51, float noundef 0xBFF87FEB00000000, float noundef 0xC001731D80000000, float noundef 0x4002857480000000)
          to label %457 unwind label %527

457:                                              ; preds = %456
  invoke void @_ZN3JPH5ArrayINS_4Vec3ENS_12STLAllocatorIS1_EEE9push_backEOS1_(ptr noundef nonnull align 8 dereferenceable(24) %31, ptr noundef nonnull align 16 dereferenceable(16) %51)
          to label %458 unwind label %527

458:                                              ; preds = %457
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %51) #11
  %459 = load ptr, ptr %75, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 256, ptr nonnull %52) #11
  %460 = invoke noundef ptr @_ZN3JPH23ConvexHullShapeSettingsnwEm(i64 noundef 120)
          to label %461 unwind label %529

461:                                              ; preds = %458
  invoke void @_ZN3JPH23ConvexHullShapeSettingsC2ERKNS_5ArrayINS_4Vec3ENS_12STLAllocatorIS2_EEEEfPKNS_15PhysicsMaterialE(ptr noundef nonnull align 8 dereferenceable(120) %460, ptr noundef nonnull align 8 dereferenceable(24) %31, float noundef 0x3FA99999A0000000, ptr noundef null)
          to label %462 unwind label %531

462:                                              ; preds = %461
  invoke void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %53, float noundef 8.000000e+01, float noundef 1.000000e+01, float noundef 0.000000e+00)
          to label %463 unwind label %529

463:                                              ; preds = %462
  %464 = invoke { double, double } @_ZN3JPH4Quat9sIdentityEv()
          to label %465 unwind label %529

465:                                              ; preds = %463
  %466 = extractvalue { double, double } %464, 0
  %467 = extractvalue { double, double } %464, 1
  %468 = load double, ptr %53, align 16
  %469 = getelementptr inbounds i8, ptr %53, i64 8
  %470 = load double, ptr %469, align 8
  invoke void @_ZN3JPH20BodyCreationSettingsC2EPKNS_13ShapeSettingsENS_4Vec3ENS_4QuatENS_11EMotionTypeEt(ptr noundef nonnull align 16 dereferenceable(256) %52, ptr noundef nonnull %460, double %468, double %470, double %466, double %467, i8 noundef zeroext 2, i16 noundef zeroext 1)
          to label %471 unwind label %529

471:                                              ; preds = %465
  %472 = invoke i32 @_ZN3JPH13BodyInterface16CreateAndAddBodyERKNS_20BodyCreationSettingsENS_11EActivationE(ptr noundef nonnull align 8 dereferenceable(24) %459, ptr noundef nonnull align 16 dereferenceable(256) %52, i32 noundef 0)
          to label %473 unwind label %533

473:                                              ; preds = %471
  call void @_ZN3JPH20BodyCreationSettingsD2Ev(ptr noundef nonnull align 16 dereferenceable(256) %52) #11
  call void @llvm.lifetime.end.p0(i64 256, ptr nonnull %52) #11
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %54) #11
  invoke void @_ZNSt26linear_congruential_engineImLm16807ELm0ELm2147483647EEC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %54)
          to label %474 unwind label %536

474:                                              ; preds = %473
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %55) #11
  invoke void @_ZNSt25uniform_real_distributionIfEC2Eff(ptr noundef nonnull align 4 dereferenceable(8) %55, float noundef 0x3FB99999A0000000, float noundef 1.000000e+01)
          to label %.preheader104 unwind label %538

.preheader104:                                    ; preds = %474
  %475 = getelementptr inbounds i8, ptr %57, i64 8
  %476 = getelementptr inbounds i8, ptr %59, i64 8
  br label %540

.preheader:                                       ; preds = %572
  %477 = getelementptr inbounds i8, ptr %61, i64 8
  %478 = getelementptr inbounds i8, ptr %64, i64 8
  %479 = getelementptr inbounds i8, ptr %63, i64 144
  %480 = getelementptr inbounds i8, ptr %63, i64 160
  %481 = getelementptr inbounds i8, ptr %63, i64 176
  br label %583

482:                                              ; preds = %410, %408, %407, %365
  %483 = landingpad { ptr, i32 }
          cleanup
  br label %488

484:                                              ; preds = %406
  %485 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3JPH23ConvexHullShapeSettingsdlEPv(ptr noundef %367) #11
  br label %488

486:                                              ; preds = %416
  %487 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3JPH20BodyCreationSettingsD2Ev(ptr noundef nonnull align 16 dereferenceable(256) %29) #11
  br label %488

488:                                              ; preds = %486, %484, %482
  %.pn80 = phi { ptr, i32 } [ %487, %486 ], [ %483, %482 ], [ %485, %484 ]
  call void @llvm.lifetime.end.p0(i64 256, ptr nonnull %29) #11
  br label %637

489:                                              ; preds = %419, %418
  %490 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %32) #11
  br label %636

491:                                              ; preds = %421, %420
  %492 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %33) #11
  br label %636

493:                                              ; preds = %423, %422
  %494 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %34) #11
  br label %636

495:                                              ; preds = %425, %424
  %496 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %35) #11
  br label %636

497:                                              ; preds = %427, %426
  %498 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %36) #11
  br label %636

499:                                              ; preds = %429, %428
  %500 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %37) #11
  br label %636

501:                                              ; preds = %431, %430
  %502 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %38) #11
  br label %636

503:                                              ; preds = %433, %432
  %504 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %39) #11
  br label %636

505:                                              ; preds = %435, %434
  %506 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %40) #11
  br label %636

507:                                              ; preds = %437, %436
  %508 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %41) #11
  br label %636

509:                                              ; preds = %439, %438
  %510 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %42) #11
  br label %636

511:                                              ; preds = %441, %440
  %512 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %43) #11
  br label %636

513:                                              ; preds = %443, %442
  %514 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %44) #11
  br label %636

515:                                              ; preds = %445, %444
  %516 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %45) #11
  br label %636

517:                                              ; preds = %447, %446
  %518 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %46) #11
  br label %636

519:                                              ; preds = %449, %448
  %520 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %47) #11
  br label %636

521:                                              ; preds = %451, %450
  %522 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %48) #11
  br label %636

523:                                              ; preds = %453, %452
  %524 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %49) #11
  br label %636

525:                                              ; preds = %455, %454
  %526 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %50) #11
  br label %636

527:                                              ; preds = %457, %456
  %528 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %51) #11
  br label %636

529:                                              ; preds = %465, %463, %462, %458
  %530 = landingpad { ptr, i32 }
          cleanup
  br label %535

531:                                              ; preds = %461
  %532 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3JPH23ConvexHullShapeSettingsdlEPv(ptr noundef %460) #11
  br label %535

533:                                              ; preds = %471
  %534 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3JPH20BodyCreationSettingsD2Ev(ptr noundef nonnull align 16 dereferenceable(256) %52) #11
  br label %535

535:                                              ; preds = %533, %531, %529
  %.pn82 = phi { ptr, i32 } [ %534, %533 ], [ %530, %529 ], [ %532, %531 ]
  call void @llvm.lifetime.end.p0(i64 256, ptr nonnull %52) #11
  br label %636

536:                                              ; preds = %473
  %537 = landingpad { ptr, i32 }
          cleanup
  br label %635

538:                                              ; preds = %474
  %539 = landingpad { ptr, i32 }
          cleanup
  br label %634

540:                                              ; preds = %.preheader104, %572
  %.073115 = phi i32 [ 0, %.preheader104 ], [ %573, %572 ]
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %56) #11
  call void @_ZN3JPH5ArrayINS_4Vec3ENS_12STLAllocatorIS1_EEEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %56) #11
  br label %544

541:                                              ; preds = %555
  %542 = load ptr, ptr %75, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 256, ptr nonnull %58) #11
  %543 = invoke noundef ptr @_ZN3JPH23ConvexHullShapeSettingsnwEm(i64 noundef 120)
          to label %559 unwind label %574

544:                                              ; preds = %540, %555
  %.074114 = phi i32 [ 0, %540 ], [ %556, %555 ]
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %57) #11
  %545 = invoke noundef float @_ZNSt25uniform_real_distributionIfEclISt26linear_congruential_engineImLm16807ELm0ELm2147483647EEEEfRT_(ptr noundef nonnull align 4 dereferenceable(8) %55, ptr noundef nonnull align 8 dereferenceable(8) %54)
          to label %546 unwind label %557

546:                                              ; preds = %544
  %547 = invoke { double, double } @_ZN3JPH4Vec37sRandomISt26linear_congruential_engineImLm16807ELm0ELm2147483647EEEES0_RT_(ptr noundef nonnull align 8 dereferenceable(8) %54)
          to label %548 unwind label %557

548:                                              ; preds = %546
  %549 = extractvalue { double, double } %547, 0
  %550 = extractvalue { double, double } %547, 1
  %551 = invoke { double, double } @_ZN3JPHmlEfNS_4Vec3E(float noundef %545, double %549, double %550)
          to label %552 unwind label %557

552:                                              ; preds = %548
  %553 = extractvalue { double, double } %551, 0
  store double %553, ptr %57, align 16
  %554 = extractvalue { double, double } %551, 1
  store double %554, ptr %475, align 8
  invoke void @_ZN3JPH5ArrayINS_4Vec3ENS_12STLAllocatorIS1_EEE9push_backEOS1_(ptr noundef nonnull align 8 dereferenceable(24) %56, ptr noundef nonnull align 16 dereferenceable(16) %57)
          to label %555 unwind label %557

555:                                              ; preds = %552
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %57) #11
  %556 = add nuw nsw i32 %.074114, 1
  %exitcond.not = icmp eq i32 %556, 20
  br i1 %exitcond.not, label %541, label %544, !llvm.loop !20

557:                                              ; preds = %552, %548, %546, %544
  %558 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %57) #11
  br label %581

559:                                              ; preds = %541
  invoke void @_ZN3JPH23ConvexHullShapeSettingsC2ERKNS_5ArrayINS_4Vec3ENS_12STLAllocatorIS2_EEEEfPKNS_15PhysicsMaterialE(ptr noundef nonnull align 8 dereferenceable(120) %543, ptr noundef nonnull align 8 dereferenceable(24) %56, float noundef 0x3FA99999A0000000, ptr noundef null)
          to label %560 unwind label %576

560:                                              ; preds = %559
  %561 = uitofp nneg i32 %.073115 to float
  %562 = call float @llvm.fmuladd.f32(float %561, float 1.800000e+01, float -9.000000e+01)
  invoke void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %59, float noundef %562, float noundef 1.000000e+01, float noundef 2.000000e+01)
          to label %563 unwind label %574

563:                                              ; preds = %560
  %564 = invoke { double, double } @_ZN3JPH4Quat9sIdentityEv()
          to label %565 unwind label %574

565:                                              ; preds = %563
  %566 = extractvalue { double, double } %564, 0
  %567 = extractvalue { double, double } %564, 1
  %568 = load double, ptr %59, align 16
  %569 = load double, ptr %476, align 8
  invoke void @_ZN3JPH20BodyCreationSettingsC2EPKNS_13ShapeSettingsENS_4Vec3ENS_4QuatENS_11EMotionTypeEt(ptr noundef nonnull align 16 dereferenceable(256) %58, ptr noundef nonnull %543, double %568, double %569, double %566, double %567, i8 noundef zeroext 2, i16 noundef zeroext 1)
          to label %570 unwind label %574

570:                                              ; preds = %565
  %571 = invoke i32 @_ZN3JPH13BodyInterface16CreateAndAddBodyERKNS_20BodyCreationSettingsENS_11EActivationE(ptr noundef nonnull align 8 dereferenceable(24) %542, ptr noundef nonnull align 16 dereferenceable(256) %58, i32 noundef 0)
          to label %572 unwind label %578

572:                                              ; preds = %570
  call void @_ZN3JPH20BodyCreationSettingsD2Ev(ptr noundef nonnull align 16 dereferenceable(256) %58) #11
  call void @llvm.lifetime.end.p0(i64 256, ptr nonnull %58) #11
  call void @_ZN3JPH5ArrayINS_4Vec3ENS_12STLAllocatorIS1_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %56) #11
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %56) #11
  %573 = add nuw nsw i32 %.073115, 1
  %exitcond125.not = icmp eq i32 %573, 10
  br i1 %exitcond125.not, label %.preheader, label %540, !llvm.loop !21

574:                                              ; preds = %565, %563, %560, %541
  %575 = landingpad { ptr, i32 }
          cleanup
  br label %580

576:                                              ; preds = %559
  %577 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3JPH23ConvexHullShapeSettingsdlEPv(ptr noundef %543) #11
  br label %580

578:                                              ; preds = %570
  %579 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3JPH20BodyCreationSettingsD2Ev(ptr noundef nonnull align 16 dereferenceable(256) %58) #11
  br label %580

580:                                              ; preds = %578, %576, %574
  %.pn90 = phi { ptr, i32 } [ %579, %578 ], [ %575, %574 ], [ %577, %576 ]
  call void @llvm.lifetime.end.p0(i64 256, ptr nonnull %58) #11
  br label %581

581:                                              ; preds = %580, %557
  %.pn92 = phi { ptr, i32 } [ %558, %557 ], [ %.pn90, %580 ]
  call void @_ZN3JPH5ArrayINS_4Vec3ENS_12STLAllocatorIS1_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %56) #11
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %56) #11
  br label %634

582:                                              ; preds = %618
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %55) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %54) #11
  call void @_ZN3JPH5ArrayINS_4Vec3ENS_12STLAllocatorIS1_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %31) #11
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %31) #11
  call void @_ZN3JPH5ArrayINS_4Vec3ENS_12STLAllocatorIS1_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %24) #11
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %24) #11
  call void @_ZN3JPH5ArrayINS_4Vec3ENS_12STLAllocatorIS1_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %20) #11
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %20) #11
  call void @_ZN3JPH5ArrayINS_4Vec3ENS_12STLAllocatorIS1_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %9) #11
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %9) #11
  call void @_ZN3JPH5ArrayINS_4Vec3ENS_12STLAllocatorIS1_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %2) #11
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %2) #11
  ret void

583:                                              ; preds = %.preheader, %618
  %.071117 = phi i32 [ 0, %.preheader ], [ %619, %618 ]
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %60) #11
  call void @_ZN3JPH5ArrayINS_4Vec3ENS_12STLAllocatorIS1_EEEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %60) #11
  br label %586

584:                                              ; preds = %597
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %62) #11
  %585 = invoke noundef ptr @_ZN3JPH23ConvexHullShapeSettingsnwEm(i64 noundef 120)
          to label %601 unwind label %620

586:                                              ; preds = %583, %597
  %.070116 = phi i32 [ 0, %583 ], [ %598, %597 ]
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %61) #11
  %587 = invoke noundef float @_ZNSt25uniform_real_distributionIfEclISt26linear_congruential_engineImLm16807ELm0ELm2147483647EEEEfRT_(ptr noundef nonnull align 4 dereferenceable(8) %55, ptr noundef nonnull align 8 dereferenceable(8) %54)
          to label %588 unwind label %599

588:                                              ; preds = %586
  %589 = invoke { double, double } @_ZN3JPH4Vec37sRandomISt26linear_congruential_engineImLm16807ELm0ELm2147483647EEEES0_RT_(ptr noundef nonnull align 8 dereferenceable(8) %54)
          to label %590 unwind label %599

590:                                              ; preds = %588
  %591 = extractvalue { double, double } %589, 0
  %592 = extractvalue { double, double } %589, 1
  %593 = invoke { double, double } @_ZN3JPHmlEfNS_4Vec3E(float noundef %587, double %591, double %592)
          to label %594 unwind label %599

594:                                              ; preds = %590
  %595 = extractvalue { double, double } %593, 0
  store double %595, ptr %61, align 16
  %596 = extractvalue { double, double } %593, 1
  store double %596, ptr %477, align 8
  call void @_ZN3JPH4Vec34SetZEf(ptr noundef nonnull align 16 dereferenceable(16) %61, float noundef 0.000000e+00)
  invoke void @_ZN3JPH5ArrayINS_4Vec3ENS_12STLAllocatorIS1_EEE9push_backERKS1_(ptr noundef nonnull align 8 dereferenceable(24) %60, ptr noundef nonnull align 16 dereferenceable(16) %61)
          to label %597 unwind label %599

597:                                              ; preds = %594
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %61) #11
  %598 = add nuw nsw i32 %.070116, 1
  %exitcond126.not = icmp eq i32 %598, 20
  br i1 %exitcond126.not, label %584, label %586, !llvm.loop !22

599:                                              ; preds = %594, %590, %588, %586
  %600 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %61) #11
  br label %633

601:                                              ; preds = %584
  invoke void @_ZN3JPH23ConvexHullShapeSettingsC2ERKNS_5ArrayINS_4Vec3ENS_12STLAllocatorIS2_EEEEfPKNS_15PhysicsMaterialE(ptr noundef nonnull align 8 dereferenceable(120) %585, ptr noundef nonnull align 8 dereferenceable(24) %60, float noundef 0.000000e+00, ptr noundef null)
          to label %602 unwind label %622

602:                                              ; preds = %601
  invoke void @_ZN3JPH3RefINS_13ShapeSettingsEEC2EPS1_(ptr noundef nonnull align 8 dereferenceable(8) %62, ptr noundef nonnull %585)
          to label %603 unwind label %620

603:                                              ; preds = %602
  call void @llvm.lifetime.start.p0(i64 256, ptr nonnull %63) #11
  %604 = call noundef ptr @_ZNK3JPH3RefINS_13ShapeSettingsEEcvPS1_Ev(ptr noundef nonnull align 8 dereferenceable(8) %62)
  %605 = uitofp nneg i32 %.071117 to float
  %606 = call float @llvm.fmuladd.f32(float %605, float 1.800000e+01, float -9.000000e+01)
  invoke void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %64, float noundef %606, float noundef 1.000000e+01, float noundef 4.000000e+01)
          to label %607 unwind label %624

607:                                              ; preds = %603
  %608 = invoke { double, double } @_ZN3JPH4Quat9sIdentityEv()
          to label %609 unwind label %624

609:                                              ; preds = %607
  %610 = extractvalue { double, double } %608, 0
  %611 = extractvalue { double, double } %608, 1
  %612 = load double, ptr %64, align 16
  %613 = load double, ptr %478, align 8
  invoke void @_ZN3JPH20BodyCreationSettingsC2EPKNS_13ShapeSettingsENS_4Vec3ENS_4QuatENS_11EMotionTypeEt(ptr noundef nonnull align 16 dereferenceable(256) %63, ptr noundef %604, double %612, double %613, double %610, double %611, i8 noundef zeroext 2, i16 noundef zeroext 1)
          to label %614 unwind label %624

614:                                              ; preds = %609
  store i8 2, ptr %479, align 16, !tbaa !23
  store float 1.000000e+00, ptr %480, align 16, !tbaa !40
  call void @llvm.lifetime.start.p0(i64 64, ptr nonnull %65) #11
  invoke void @_ZN3JPH5Mat449sIdentityEv(ptr dead_on_unwind nonnull writable sret(%"class.JPH::Mat44") align 16 %65)
          to label %615 unwind label %626

615:                                              ; preds = %614
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 16 dereferenceable(64) %481, ptr noundef nonnull align 16 dereferenceable(64) %65, i64 64, i1 false), !tbaa.struct !41
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %65) #11
  %616 = load ptr, ptr %75, align 8, !tbaa !5
  %617 = invoke i32 @_ZN3JPH13BodyInterface16CreateAndAddBodyERKNS_20BodyCreationSettingsENS_11EActivationE(ptr noundef nonnull align 8 dereferenceable(24) %616, ptr noundef nonnull align 16 dereferenceable(256) %63, i32 noundef 0)
          to label %618 unwind label %628

618:                                              ; preds = %615
  call void @_ZN3JPH20BodyCreationSettingsD2Ev(ptr noundef nonnull align 16 dereferenceable(256) %63) #11
  call void @llvm.lifetime.end.p0(i64 256, ptr nonnull %63) #11
  call void @_ZN3JPH3RefINS_13ShapeSettingsEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %62) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %62) #11
  call void @_ZN3JPH5ArrayINS_4Vec3ENS_12STLAllocatorIS1_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %60) #11
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %60) #11
  %619 = add nuw nsw i32 %.071117, 1
  %exitcond127.not = icmp eq i32 %619, 10
  br i1 %exitcond127.not, label %582, label %583, !llvm.loop !43

620:                                              ; preds = %602, %584
  %621 = landingpad { ptr, i32 }
          cleanup
  br label %632

622:                                              ; preds = %601
  %623 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3JPH23ConvexHullShapeSettingsdlEPv(ptr noundef %585) #11
  br label %632

624:                                              ; preds = %609, %607, %603
  %625 = landingpad { ptr, i32 }
          cleanup
  br label %631

626:                                              ; preds = %614
  %627 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %65) #11
  br label %630

628:                                              ; preds = %615
  %629 = landingpad { ptr, i32 }
          cleanup
  br label %630

630:                                              ; preds = %628, %626
  %.pn84 = phi { ptr, i32 } [ %629, %628 ], [ %627, %626 ]
  call void @_ZN3JPH20BodyCreationSettingsD2Ev(ptr noundef nonnull align 16 dereferenceable(256) %63) #11
  br label %631

631:                                              ; preds = %630, %624
  %.pn84.pn = phi { ptr, i32 } [ %.pn84, %630 ], [ %625, %624 ]
  call void @llvm.lifetime.end.p0(i64 256, ptr nonnull %63) #11
  call void @_ZN3JPH3RefINS_13ShapeSettingsEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %62) #11
  br label %632

632:                                              ; preds = %631, %622, %620
  %.pn84.pn.pn = phi { ptr, i32 } [ %.pn84.pn, %631 ], [ %621, %620 ], [ %623, %622 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %62) #11
  br label %633

633:                                              ; preds = %632, %599
  %.pn88 = phi { ptr, i32 } [ %600, %599 ], [ %.pn84.pn.pn, %632 ]
  call void @_ZN3JPH5ArrayINS_4Vec3ENS_12STLAllocatorIS1_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %60) #11
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %60) #11
  br label %634

634:                                              ; preds = %633, %581, %538
  %.pn92.pn = phi { ptr, i32 } [ %.pn92, %581 ], [ %.pn88, %633 ], [ %539, %538 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %55) #11
  br label %635

635:                                              ; preds = %634, %536
  %.pn92.pn.pn = phi { ptr, i32 } [ %.pn92.pn, %634 ], [ %537, %536 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %54) #11
  br label %636

636:                                              ; preds = %635, %535, %527, %525, %523, %521, %519, %517, %515, %513, %511, %509, %507, %505, %503, %501, %499, %497, %495, %493, %491, %489
  %.pn92.pn.pn.pn = phi { ptr, i32 } [ %.pn92.pn.pn, %635 ], [ %.pn82, %535 ], [ %528, %527 ], [ %526, %525 ], [ %524, %523 ], [ %522, %521 ], [ %520, %519 ], [ %518, %517 ], [ %516, %515 ], [ %514, %513 ], [ %512, %511 ], [ %510, %509 ], [ %508, %507 ], [ %506, %505 ], [ %504, %503 ], [ %502, %501 ], [ %500, %499 ], [ %498, %497 ], [ %496, %495 ], [ %494, %493 ], [ %492, %491 ], [ %490, %489 ]
  call void @_ZN3JPH5ArrayINS_4Vec3ENS_12STLAllocatorIS1_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %31) #11
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %31) #11
  br label %637

637:                                              ; preds = %402, %404, %636, %488
  %.pn97.pn = phi { ptr, i32 } [ %.pn92.pn.pn.pn, %636 ], [ %.pn80, %488 ], [ %405, %404 ], [ %403, %402 ]
  call void @_ZN3JPH5ArrayINS_4Vec3ENS_12STLAllocatorIS1_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %24) #11
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %24) #11
  br label %638

638:                                              ; preds = %637, %374, %346
  %.pn100 = phi { ptr, i32 } [ %347, %346 ], [ %.pn97.pn, %637 ], [ %.pn78, %374 ]
  call void @_ZN3JPH5ArrayINS_4Vec3ENS_12STLAllocatorIS1_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %20) #11
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %20) #11
  br label %639

639:                                              ; preds = %638, %164, %156, %154, %152, %150, %148, %146, %144, %142
  %.pn100.pn = phi { ptr, i32 } [ %.pn100, %638 ], [ %.pn76, %164 ], [ %157, %156 ], [ %155, %154 ], [ %153, %152 ], [ %151, %150 ], [ %149, %148 ], [ %147, %146 ], [ %145, %144 ], [ %143, %142 ]
  call void @_ZN3JPH5ArrayINS_4Vec3ENS_12STLAllocatorIS1_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %9) #11
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %9) #11
  br label %640

640:                                              ; preds = %639, %141, %133, %131, %129, %127
  %.pn100.pn.pn = phi { ptr, i32 } [ %.pn100.pn, %639 ], [ %.pn, %141 ], [ %134, %133 ], [ %132, %131 ], [ %130, %129 ], [ %128, %127 ]
  call void @_ZN3JPH5ArrayINS_4Vec3ENS_12STLAllocatorIS1_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %2) #11
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %2) #11
  resume { ptr, i32 } %.pn100.pn.pn
}

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

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZN3JPH5ArrayINS_4Vec3ENS_12STLAllocatorIS1_EEE9push_backEOS1_(ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 16 dereferenceable(16)) local_unnamed_addr #4 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 #5 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 noundef ptr @_ZN3JPH23ConvexHullShapeSettingsnwEm(i64 noundef) local_unnamed_addr #6 align 2

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

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

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

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

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

; Function Attrs: alwaysinline mustprogress uwtable
declare dso_local { double, double } @_ZN3JPHmlEfNS_4Vec3E(float noundef, double, double) local_unnamed_addr #5

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

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

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

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

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

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

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

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

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

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

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

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

; Function Attrs: alwaysinline mustprogress uwtable
declare dso_local void @_ZN3JPH5Mat449sIdentityEv(ptr dead_on_unwind noalias writable sret(%"class.JPH::Mat44") align 16) local_unnamed_addr #6 align 2

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

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

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

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

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


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