; LLVM IR from jrouwe/JoltPhysics :: Samples/Tests/General/ManifoldReductionTest.ll (ZN21ManifoldReductionTest10InitializeEv)

; 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::Float3" = type { float, float, float }
%"class.JPH::Triangle" = type { [3 x %"class.JPH::Float3"], i32, i32 }
%"class.JPH::Array.4" = type { i64, i64, ptr }
%"class.JPH::RefConst" = type { ptr }
%"class.JPH::Ref" = type { ptr }
%"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.22", %"class.JPH::RefConst.23" }
%"class.JPH::Quat" = type { %"class.JPH::Vec4" }
%"class.JPH::Vec4" = type { %union.anon.20 }
%union.anon.20 = type { <4 x float> }
%"class.JPH::Vec3" = type { %union.anon.19 }
%union.anon.19 = type { <4 x float> }
%"class.JPH::CollisionGroup" = type { %"class.JPH::RefConst.21", i32, i32 }
%"class.JPH::RefConst.21" = type { ptr }
%"class.JPH::MassProperties" = type { float, %"class.JPH::Mat44" }
%"class.JPH::Mat44" = type { [4 x %"class.JPH::Vec4"] }
%"class.JPH::RefConst.22" = type { ptr }
%"class.JPH::RefConst.23" = type { ptr }
%"class.JPH::BodyID" = type { i32 }
%"class.JPH::Ref.24" = 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 @_ZN21ManifoldReductionTest10InitializeEv(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 float, align 4
  %4 = alloca %"class.JPH::Array", align 8
  %5 = alloca i32, align 4
  %6 = alloca i32, align 4
  %7 = alloca i32, align 4
  %8 = alloca float, align 4
  %9 = alloca float, align 4
  %10 = alloca float, align 4
  %11 = alloca float, align 4
  %12 = alloca %"class.JPH::Float3", align 4
  %13 = alloca ptr, align 8
  %14 = alloca i32, align 4
  %15 = alloca %"class.JPH::Float3", align 4
  %16 = alloca %"class.JPH::Float3", align 4
  %17 = alloca %"class.JPH::Float3", align 4
  %18 = alloca %"class.JPH::Triangle", align 4
  %19 = alloca %"class.JPH::Triangle", align 4
  %20 = alloca %"class.JPH::Array.4", align 8
  %21 = alloca %"class.JPH::RefConst", align 8
  %22 = alloca %"class.JPH::Ref", align 8
  %23 = alloca %"class.JPH::Array.4", align 8
  %24 = alloca i1, align 1
  %25 = alloca %"class.JPH::BodyCreationSettings", align 16
  %26 = alloca %"class.JPH::Vec3", align 16
  %27 = alloca %"class.JPH::Vec3", align 16
  %28 = alloca %"class.JPH::Quat", align 16
  %29 = alloca %"class.JPH::BodyID", align 4
  %30 = alloca %"class.JPH::Ref.24", align 8
  %31 = alloca %"class.JPH::Vec3", align 16
  %32 = alloca %"class.JPH::Quat", align 16
  %33 = alloca %"class.JPH::Vec3", align 16
  %34 = alloca %"class.JPH::Vec3", align 16
  %35 = alloca %"class.JPH::Quat", align 16
  %36 = alloca %"class.JPH::Vec3", align 16
  %37 = alloca %"class.JPH::Quat", align 16
  %38 = alloca %"class.JPH::Vec3", align 16
  %39 = alloca %"class.JPH::Vec3", align 16
  %40 = alloca %"class.JPH::Quat", align 16
  %41 = alloca %"class.JPH::Vec3", align 16
  %42 = alloca %"class.JPH::Vec3", align 16
  %43 = alloca %"class.JPH::Quat", align 16
  %44 = alloca %"class.JPH::Vec3", align 16
  %45 = alloca %"class.JPH::Vec3", align 16
  %46 = alloca %"class.JPH::Quat", align 16
  %47 = alloca %"class.JPH::Vec3", align 16
  %48 = alloca %"class.JPH::RefConst.22", align 8
  %49 = alloca %"class.JPH::Vec3", align 16
  %50 = alloca %"class.JPH::Ref.24", align 8
  %51 = alloca %"class.JPH::Vec3", align 16
  %52 = alloca %"class.JPH::Quat", align 16
  %53 = alloca %"class.JPH::Vec3", align 16
  %54 = alloca %"class.JPH::Quat", align 16
  %55 = alloca %"class.JPH::Vec3", align 16
  %56 = alloca %"class.JPH::Quat", align 16
  %57 = alloca %"class.JPH::Ref.24", align 8
  %58 = alloca %"class.JPH::Vec3", align 16
  %59 = alloca %"class.JPH::Quat", align 16
  %60 = alloca %"class.JPH::Vec3", align 16
  %61 = alloca %"class.JPH::Quat", align 16
  %62 = alloca %"class.JPH::Vec3", align 16
  %63 = alloca %"class.JPH::Quat", align 16
  %64 = alloca %"class.JPH::BodyCreationSettings", align 16
  %65 = alloca %"class.JPH::Vec3", align 16
  %66 = alloca %"class.JPH::Quat", align 16
  %67 = alloca %"class.JPH::BodyID", align 4
  %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.JPH::Ref.24", align 8
  %73 = alloca %"class.JPH::Vec3", align 16
  %74 = alloca %"class.JPH::Quat", align 16
  %75 = alloca %"class.JPH::Vec3", align 16
  %76 = alloca %"class.JPH::Quat", align 16
  %77 = alloca %"class.JPH::Ref.24", align 8
  %78 = alloca %"class.JPH::Vec3", align 16
  %79 = alloca %"class.JPH::Quat", align 16
  %80 = alloca %"class.JPH::Vec3", align 16
  %81 = alloca %"class.JPH::Quat", align 16
  %82 = alloca %"class.JPH::BodyCreationSettings", align 16
  %83 = alloca %"class.JPH::Vec3", align 16
  %84 = alloca %"class.JPH::Quat", align 16
  %85 = alloca %"class.JPH::BodyID", align 4
  %86 = alloca %"class.JPH::BodyCreationSettings", align 16
  %87 = alloca %"class.JPH::Vec3", align 16
  %88 = alloca %"class.JPH::Quat", align 16
  %89 = alloca %"class.JPH::BodyID", align 4
  %90 = alloca %"class.JPH::Ref.24", align 8
  %91 = alloca %"class.JPH::Vec3", align 16
  %92 = alloca %"class.JPH::Quat", align 16
  %93 = alloca %"class.JPH::Vec3", align 16
  %94 = alloca %"class.JPH::Vec3", align 16
  %95 = alloca %"class.JPH::Quat", align 16
  %96 = alloca %"class.JPH::Vec3", align 16
  %97 = alloca %"class.JPH::BodyCreationSettings", align 16
  %98 = alloca %"class.JPH::Vec3", align 16
  %99 = alloca %"class.JPH::Quat", align 16
  %100 = alloca %"class.JPH::BodyID", align 4
  %101 = alloca %"class.JPH::BodyCreationSettings", align 16
  %102 = alloca %"class.JPH::Vec3", align 16
  %103 = alloca %"class.JPH::Quat", align 16
  %104 = alloca %"class.JPH::BodyID", align 4
  %105 = alloca %"class.JPH::Ref.24", align 8
  %106 = alloca %"class.JPH::Vec3", align 16
  %107 = alloca %"class.JPH::Quat", align 16
  %108 = alloca %"class.JPH::Vec3", align 16
  %109 = alloca %"class.JPH::Vec3", align 16
  %110 = alloca %"class.JPH::Quat", align 16
  %111 = alloca %"class.JPH::Vec3", align 16
  %112 = alloca %"class.JPH::BodyCreationSettings", align 16
  %113 = alloca %"class.JPH::Vec3", align 16
  %114 = alloca %"class.JPH::Quat", align 16
  %115 = alloca %"class.JPH::BodyID", align 4
  %116 = alloca %"class.JPH::BodyCreationSettings", align 16
  %117 = alloca %"class.JPH::Vec3", align 16
  %118 = alloca %"class.JPH::Quat", align 16
  %119 = alloca %"class.JPH::BodyID", align 4
  store ptr %0, ptr %2, align 8, !tbaa !5
  %120 = load ptr, ptr %2, align 8
  call void @llvm.lifetime.start.p0(i64 4, ptr %3) #11
  store float 0x3F947AE140000000, ptr %3, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 24, ptr %4) #11
  call void @_ZN3JPH5ArrayINS_8TriangleENS_12STLAllocatorIS1_EEEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %4) #11
  call void @llvm.lifetime.start.p0(i64 4, ptr %5) #11
  store i32 -10, ptr %5, align 4, !tbaa !11
  br label %121

121:                                              ; preds = %209, %1
  %122 = load i32, ptr %5, align 4, !tbaa !11
  %123 = icmp slt i32 %122, 10
  br i1 %123, label %125, label %124

124:                                              ; preds = %121
  store i32 2, ptr %6, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %5) #11
  br label %212

125:                                              ; preds = %121
  call void @llvm.lifetime.start.p0(i64 4, ptr %7) #11
  store i32 -10, ptr %7, align 4, !tbaa !11
  br label %126

126:                                              ; preds = %177, %125
  %127 = load i32, ptr %7, align 4, !tbaa !11
  %128 = icmp slt i32 %127, 10
  br i1 %128, label %130, label %129

129:                                              ; preds = %126
  store i32 5, ptr %6, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %7) #11
  br label %208

130:                                              ; preds = %126
  call void @llvm.lifetime.start.p0(i64 4, ptr %8) #11
  %131 = load i32, ptr %5, align 4, !tbaa !11
  %132 = sitofp i32 %131 to float
  %133 = fmul float 0x3FB99999A0000000, %132
  store float %133, ptr %8, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %9) #11
  %134 = load i32, ptr %7, align 4, !tbaa !11
  %135 = sitofp i32 %134 to float
  %136 = fmul float 0x3FB99999A0000000, %135
  store float %136, ptr %9, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %10) #11
  %137 = load float, ptr %8, align 4, !tbaa !9
  %138 = fadd float %137, 0x3FB99999A0000000
  store float %138, ptr %10, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %11) #11
  %139 = load float, ptr %9, align 4, !tbaa !9
  %140 = fadd float %139, 0x3FB99999A0000000
  store float %140, ptr %11, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 12, ptr %12) #11
  %141 = load float, ptr %8, align 4, !tbaa !9
  %142 = load float, ptr %8, align 4, !tbaa !9
  %143 = load float, ptr %9, align 4, !tbaa !9
  %144 = invoke noundef float @_Z12PerlinNoise3fffiii(float noundef %142, float noundef 0.000000e+00, float noundef %143, i32 noundef 256, i32 noundef 256, i32 noundef 256)
          to label %145 unwind label %180

145:                                              ; preds = %130
  %146 = fmul float 0x3F947AE140000000, %144
  %147 = load float, ptr %9, align 4, !tbaa !9
  invoke void @_ZN3JPH6Float3C2Efff(ptr noundef nonnull align 4 dereferenceable(12) %12, float noundef %141, float noundef %146, float noundef %147)
          to label %148 unwind label %180

148:                                              ; preds = %145
  call void @llvm.lifetime.start.p0(i64 12, ptr %15) #11
  %149 = load float, ptr %10, align 4, !tbaa !9
  %150 = load float, ptr %10, align 4, !tbaa !9
  %151 = load float, ptr %9, align 4, !tbaa !9
  %152 = invoke noundef float @_Z12PerlinNoise3fffiii(float noundef %150, float noundef 0.000000e+00, float noundef %151, i32 noundef 256, i32 noundef 256, i32 noundef 256)
          to label %153 unwind label %184

153:                                              ; preds = %148
  %154 = fmul float 0x3F947AE140000000, %152
  %155 = load float, ptr %9, align 4, !tbaa !9
  invoke void @_ZN3JPH6Float3C2Efff(ptr noundef nonnull align 4 dereferenceable(12) %15, float noundef %149, float noundef %154, float noundef %155)
          to label %156 unwind label %184

156:                                              ; preds = %153
  call void @llvm.lifetime.start.p0(i64 12, ptr %16) #11
  %157 = load float, ptr %8, align 4, !tbaa !9
  %158 = load float, ptr %8, align 4, !tbaa !9
  %159 = load float, ptr %11, align 4, !tbaa !9
  %160 = invoke noundef float @_Z12PerlinNoise3fffiii(float noundef %158, float noundef 0.000000e+00, float noundef %159, i32 noundef 256, i32 noundef 256, i32 noundef 256)
          to label %161 unwind label %188

161:                                              ; preds = %156
  %162 = fmul float 0x3F947AE140000000, %160
  %163 = load float, ptr %11, align 4, !tbaa !9
  invoke void @_ZN3JPH6Float3C2Efff(ptr noundef nonnull align 4 dereferenceable(12) %16, float noundef %157, float noundef %162, float noundef %163)
          to label %164 unwind label %188

164:                                              ; preds = %161
  call void @llvm.lifetime.start.p0(i64 12, ptr %17) #11
  %165 = load float, ptr %10, align 4, !tbaa !9
  %166 = load float, ptr %10, align 4, !tbaa !9
  %167 = load float, ptr %11, align 4, !tbaa !9
  %168 = invoke noundef float @_Z12PerlinNoise3fffiii(float noundef %166, float noundef 0.000000e+00, float noundef %167, i32 noundef 256, i32 noundef 256, i32 noundef 256)
          to label %169 unwind label %192

169:                                              ; preds = %164
  %170 = fmul float 0x3F947AE140000000, %168
  %171 = load float, ptr %11, align 4, !tbaa !9
  invoke void @_ZN3JPH6Float3C2Efff(ptr noundef nonnull align 4 dereferenceable(12) %17, float noundef %165, float noundef %170, float noundef %171)
          to label %172 unwind label %192

172:                                              ; preds = %169
  call void @llvm.lifetime.start.p0(i64 44, ptr %18) #11
  invoke void @_ZN3JPH8TriangleC2ERKNS_6Float3ES3_S3_jj(ptr noundef nonnull align 4 dereferenceable(44) %18, ptr noundef nonnull align 4 dereferenceable(12) %12, ptr noundef nonnull align 4 dereferenceable(12) %16, ptr noundef nonnull align 4 dereferenceable(12) %17, i32 noundef 0, i32 noundef 0)
          to label %173 unwind label %196

173:                                              ; preds = %172
  invoke void @_ZN3JPH5ArrayINS_8TriangleENS_12STLAllocatorIS1_EEE9push_backEOS1_(ptr noundef nonnull align 8 dereferenceable(24) %4, ptr noundef nonnull align 4 dereferenceable(44) %18)
          to label %174 unwind label %196

174:                                              ; preds = %173
  call void @llvm.lifetime.end.p0(i64 44, ptr %18) #11
  call void @llvm.lifetime.start.p0(i64 44, ptr %19) #11
  invoke void @_ZN3JPH8TriangleC2ERKNS_6Float3ES3_S3_jj(ptr noundef nonnull align 4 dereferenceable(44) %19, ptr noundef nonnull align 4 dereferenceable(12) %12, ptr noundef nonnull align 4 dereferenceable(12) %17, ptr noundef nonnull align 4 dereferenceable(12) %15, i32 noundef 0, i32 noundef 0)
          to label %175 unwind label %200

175:                                              ; preds = %174
  invoke void @_ZN3JPH5ArrayINS_8TriangleENS_12STLAllocatorIS1_EEE9push_backEOS1_(ptr noundef nonnull align 8 dereferenceable(24) %4, ptr noundef nonnull align 4 dereferenceable(44) %19)
          to label %176 unwind label %200

176:                                              ; preds = %175
  call void @llvm.lifetime.end.p0(i64 44, ptr %19) #11
  call void @llvm.lifetime.end.p0(i64 12, ptr %17) #11
  call void @llvm.lifetime.end.p0(i64 12, ptr %16) #11
  call void @llvm.lifetime.end.p0(i64 12, ptr %15) #11
  call void @llvm.lifetime.end.p0(i64 12, ptr %12) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr %11) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr %10) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr %9) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr %8) #11
  br label %177

177:                                              ; preds = %176
  %178 = load i32, ptr %7, align 4, !tbaa !11
  %179 = add nsw i32 %178, 1
  store i32 %179, ptr %7, align 4, !tbaa !11
  br label %126, !llvm.loop !13

180:                                              ; preds = %145, %130
  %181 = landingpad { ptr, i32 }
          cleanup
  %182 = extractvalue { ptr, i32 } %181, 0
  store ptr %182, ptr %13, align 8
  %183 = extractvalue { ptr, i32 } %181, 1
  store i32 %183, ptr %14, align 4
  br label %207

184:                                              ; preds = %153, %148
  %185 = landingpad { ptr, i32 }
          cleanup
  %186 = extractvalue { ptr, i32 } %185, 0
  store ptr %186, ptr %13, align 8
  %187 = extractvalue { ptr, i32 } %185, 1
  store i32 %187, ptr %14, align 4
  br label %206

188:                                              ; preds = %161, %156
  %189 = landingpad { ptr, i32 }
          cleanup
  %190 = extractvalue { ptr, i32 } %189, 0
  store ptr %190, ptr %13, align 8
  %191 = extractvalue { ptr, i32 } %189, 1
  store i32 %191, ptr %14, align 4
  br label %205

192:                                              ; preds = %169, %164
  %193 = landingpad { ptr, i32 }
          cleanup
  %194 = extractvalue { ptr, i32 } %193, 0
  store ptr %194, ptr %13, align 8
  %195 = extractvalue { ptr, i32 } %193, 1
  store i32 %195, ptr %14, align 4
  br label %204

196:                                              ; preds = %173, %172
  %197 = landingpad { ptr, i32 }
          cleanup
  %198 = extractvalue { ptr, i32 } %197, 0
  store ptr %198, ptr %13, align 8
  %199 = extractvalue { ptr, i32 } %197, 1
  store i32 %199, ptr %14, align 4
  call void @llvm.lifetime.end.p0(i64 44, ptr %18) #11
  br label %204

200:                                              ; preds = %175, %174
  %201 = landingpad { ptr, i32 }
          cleanup
  %202 = extractvalue { ptr, i32 } %201, 0
  store ptr %202, ptr %13, align 8
  %203 = extractvalue { ptr, i32 } %201, 1
  store i32 %203, ptr %14, align 4
  call void @llvm.lifetime.end.p0(i64 44, ptr %19) #11
  br label %204

204:                                              ; preds = %200, %196, %192
  call void @llvm.lifetime.end.p0(i64 12, ptr %17) #11
  br label %205

205:                                              ; preds = %204, %188
  call void @llvm.lifetime.end.p0(i64 12, ptr %16) #11
  br label %206

206:                                              ; preds = %205, %184
  call void @llvm.lifetime.end.p0(i64 12, ptr %15) #11
  br label %207

207:                                              ; preds = %206, %180
  call void @llvm.lifetime.end.p0(i64 12, ptr %12) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr %11) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr %10) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr %9) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr %8) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr %7) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr %5) #11
  br label %1310

208:                                              ; preds = %129
  br label %209

209:                                              ; preds = %208
  %210 = load i32, ptr %5, align 4, !tbaa !11
  %211 = add nsw i32 %210, 1
  store i32 %211, ptr %5, align 4, !tbaa !11
  br label %121, !llvm.loop !15

212:                                              ; preds = %124
  call void @llvm.lifetime.start.p0(i64 24, ptr %20) #11
  call void @_ZN3JPH5ArrayINS_8RefConstINS_15PhysicsMaterialEEENS_12STLAllocatorIS3_EEEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %20) #11
  call void @llvm.lifetime.start.p0(i64 8, ptr %21) #11
  %213 = invoke noundef ptr @_ZN3JPH21PhysicsMaterialSimplenwEm(i64 noundef 56)
          to label %214 unwind label %1094

214:                                              ; preds = %212
  call void @llvm.memset.p0.i64(ptr align 8 %213, i8 0, i64 56, i1 false)
  call void @_ZN3JPH21PhysicsMaterialSimpleC2Ev(ptr noundef nonnull align 8 dereferenceable(52) %213) #11
  invoke void @_ZN3JPH8RefConstINS_15PhysicsMaterialEEC2EPKS1_(ptr noundef nonnull align 8 dereferenceable(8) %21, ptr noundef %213)
          to label %215 unwind label %1094

215:                                              ; preds = %214
  invoke void @_ZN3JPH5ArrayINS_8RefConstINS_15PhysicsMaterialEEENS_12STLAllocatorIS3_EEE9push_backEOS3_(ptr noundef nonnull align 8 dereferenceable(24) %20, ptr noundef nonnull align 8 dereferenceable(8) %21)
          to label %216 unwind label %1098

216:                                              ; preds = %215
  call void @_ZN3JPH8RefConstINS_15PhysicsMaterialEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %21) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %21) #11
  call void @llvm.lifetime.start.p0(i64 8, ptr %22) #11
  %217 = invoke noundef ptr @_ZN3JPH17MeshShapeSettingsnwEm(i64 noundef 152)
          to label %218 unwind label %1103

218:                                              ; preds = %216
  store i1 true, ptr %24, align 1
  call void @_ZN3JPH5ArrayINS_8RefConstINS_15PhysicsMaterialEEENS_12STLAllocatorIS3_EEEC2EOS6_(ptr noundef nonnull align 8 dereferenceable(24) %23, ptr noundef nonnull align 8 dereferenceable(24) %20) #11
  invoke void @_ZN3JPH17MeshShapeSettingsC1ERKNS_5ArrayINS_8TriangleENS_12STLAllocatorIS2_EEEENS1_INS_8RefConstINS_15PhysicsMaterialEEENS3_ISA_EEEE(ptr noundef nonnull align 8 dereferenceable(152) %217, ptr noundef nonnull align 8 dereferenceable(24) %4, ptr noundef %23)
          to label %219 unwind label %1107

219:                                              ; preds = %218
  store i1 false, ptr %24, align 1
  invoke void @_ZN3JPH3RefINS_13ShapeSettingsEEC2EPS1_(ptr noundef nonnull align 8 dereferenceable(8) %22, ptr noundef %217)
          to label %220 unwind label %1107

220:                                              ; preds = %219
  call void @_ZN3JPH5ArrayINS_8RefConstINS_15PhysicsMaterialEEENS_12STLAllocatorIS3_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %23) #11
  %221 = getelementptr inbounds %class.Test, ptr %120, i32 0, i32 3
  %222 = load ptr, ptr %221, align 8, !tbaa !16
  call void @llvm.lifetime.start.p0(i64 256, ptr %25) #11
  %223 = invoke noundef ptr @_ZN3JPH19ScaledShapeSettingsnwEm(i64 noundef 96)
          to label %224 unwind label %1114

224:                                              ; preds = %220
  %225 = invoke noundef ptr @_ZNK3JPH3RefINS_13ShapeSettingsEEcvPS1_Ev(ptr noundef nonnull align 8 dereferenceable(8) %22)
          to label %226 unwind label %1118

226:                                              ; preds = %224
  %227 = invoke { double, double } @_ZN3JPH4Vec310sReplicateEf(float noundef 2.000000e+01)
          to label %228 unwind label %1118

228:                                              ; preds = %226
  %229 = getelementptr inbounds %"class.JPH::Vec3", ptr %26, i32 0, i32 0
  %230 = getelementptr inbounds %union.anon.19, ptr %229, i32 0, i32 0
  %231 = getelementptr inbounds { double, double }, ptr %230, i32 0, i32 0
  %232 = extractvalue { double, double } %227, 0
  store double %232, ptr %231, align 16
  %233 = getelementptr inbounds { double, double }, ptr %230, i32 0, i32 1
  %234 = extractvalue { double, double } %227, 1
  store double %234, ptr %233, align 8
  %235 = getelementptr inbounds { double, double }, ptr %26, i32 0, i32 0
  %236 = load double, ptr %235, align 16
  %237 = getelementptr inbounds { double, double }, ptr %26, i32 0, i32 1
  %238 = load double, ptr %237, align 8
  invoke void @_ZN3JPH19ScaledShapeSettingsC2EPKNS_13ShapeSettingsENS_4Vec3E(ptr noundef nonnull align 16 dereferenceable(96) %223, ptr noundef %225, double %236, double %238)
          to label %239 unwind label %1118

239:                                              ; preds = %228
  %240 = invoke { double, double } @_ZN3JPH4Vec35sZeroEv()
          to label %241 unwind label %1114

241:                                              ; preds = %239
  %242 = getelementptr inbounds %"class.JPH::Vec3", ptr %27, i32 0, i32 0
  %243 = getelementptr inbounds %union.anon.19, ptr %242, i32 0, i32 0
  %244 = getelementptr inbounds { double, double }, ptr %243, i32 0, i32 0
  %245 = extractvalue { double, double } %240, 0
  store double %245, ptr %244, align 16
  %246 = getelementptr inbounds { double, double }, ptr %243, i32 0, i32 1
  %247 = extractvalue { double, double } %240, 1
  store double %247, ptr %246, align 8
  %248 = invoke { double, double } @_ZN3JPH4Quat9sIdentityEv()
          to label %249 unwind label %1114

249:                                              ; preds = %241
  %250 = getelementptr inbounds %"class.JPH::Quat", ptr %28, i32 0, i32 0
  %251 = getelementptr inbounds %"class.JPH::Vec4", ptr %250, i32 0, i32 0
  %252 = getelementptr inbounds %union.anon.20, ptr %251, i32 0, i32 0
  %253 = getelementptr inbounds { double, double }, ptr %252, i32 0, i32 0
  %254 = extractvalue { double, double } %248, 0
  store double %254, ptr %253, align 16
  %255 = getelementptr inbounds { double, double }, ptr %252, i32 0, i32 1
  %256 = extractvalue { double, double } %248, 1
  store double %256, ptr %255, align 8
  %257 = getelementptr inbounds { double, double }, ptr %27, i32 0, i32 0
  %258 = load double, ptr %257, align 16
  %259 = getelementptr inbounds { double, double }, ptr %27, i32 0, i32 1
  %260 = load double, ptr %259, align 8
  %261 = getelementptr inbounds { double, double }, ptr %28, i32 0, i32 0
  %262 = load double, ptr %261, align 16
  %263 = getelementptr inbounds { double, double }, ptr %28, i32 0, i32 1
  %264 = load double, ptr %263, align 8
  invoke void @_ZN3JPH20BodyCreationSettingsC2EPKNS_13ShapeSettingsENS_4Vec3ENS_4QuatENS_11EMotionTypeEt(ptr noundef nonnull align 16 dereferenceable(256) %25, ptr noundef %223, double %258, double %260, double %262, double %264, i8 noundef zeroext 0, i16 noundef zeroext 0)
          to label %265 unwind label %1114

265:                                              ; preds = %249
  %266 = invoke i32 @_ZN3JPH13BodyInterface16CreateAndAddBodyERKNS_20BodyCreationSettingsENS_11EActivationE(ptr noundef nonnull align 8 dereferenceable(24) %222, ptr noundef nonnull align 16 dereferenceable(256) %25, i32 noundef 1)
          to label %267 unwind label %1122

267:                                              ; preds = %265
  %268 = getelementptr inbounds %"class.JPH::BodyID", ptr %29, i32 0, i32 0
  store i32 %266, ptr %268, align 4
  call void @_ZN3JPH20BodyCreationSettingsD2Ev(ptr noundef nonnull align 16 dereferenceable(256) %25) #11
  call void @llvm.lifetime.end.p0(i64 256, ptr %25) #11
  call void @llvm.lifetime.start.p0(i64 8, ptr %30) #11
  %269 = invoke noundef ptr @_ZN3JPH27StaticCompoundShapeSettingsnwEm(i64 noundef 88)
          to label %270 unwind label %1127

270:                                              ; preds = %267
  invoke void @_ZN3JPH27StaticCompoundShapeSettingsC2Ev(ptr noundef nonnull align 8 dereferenceable(88) %269)
          to label %271 unwind label %1131

271:                                              ; preds = %270
  invoke void @_ZN3JPH3RefINS_27StaticCompoundShapeSettingsEEC2EPS1_(ptr noundef nonnull align 8 dereferenceable(8) %30, ptr noundef %269)
          to label %272 unwind label %1127

272:                                              ; preds = %271
  %273 = invoke noundef ptr @_ZNK3JPH3RefINS_27StaticCompoundShapeSettingsEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %30)
          to label %274 unwind label %1135

274:                                              ; preds = %272
  invoke void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %31, float noundef 0.000000e+00, float noundef -1.000000e+00, float noundef 0.000000e+00)
          to label %275 unwind label %1135

275:                                              ; preds = %274
  %276 = invoke { double, double } @_ZN3JPH4Vec36sAxisXEv()
          to label %277 unwind label %1135

277:                                              ; preds = %275
  %278 = getelementptr inbounds %"class.JPH::Vec3", ptr %33, i32 0, i32 0
  %279 = getelementptr inbounds %union.anon.19, ptr %278, i32 0, i32 0
  %280 = getelementptr inbounds { double, double }, ptr %279, i32 0, i32 0
  %281 = extractvalue { double, double } %276, 0
  store double %281, ptr %280, align 16
  %282 = getelementptr inbounds { double, double }, ptr %279, i32 0, i32 1
  %283 = extractvalue { double, double } %276, 1
  store double %283, ptr %282, align 8
  %284 = getelementptr inbounds { double, double }, ptr %33, i32 0, i32 0
  %285 = load double, ptr %284, align 16
  %286 = getelementptr inbounds { double, double }, ptr %33, i32 0, i32 1
  %287 = load double, ptr %286, align 8
  %288 = invoke { double, double } @_ZN3JPH4Quat9sRotationENS_4Vec3Ef(double %285, double %287, float noundef 0x400921FB60000000)
          to label %289 unwind label %1135

289:                                              ; preds = %277
  %290 = getelementptr inbounds %"class.JPH::Quat", ptr %32, i32 0, i32 0
  %291 = getelementptr inbounds %"class.JPH::Vec4", ptr %290, i32 0, i32 0
  %292 = getelementptr inbounds %union.anon.20, ptr %291, i32 0, i32 0
  %293 = getelementptr inbounds { double, double }, ptr %292, i32 0, i32 0
  %294 = extractvalue { double, double } %288, 0
  store double %294, ptr %293, align 16
  %295 = getelementptr inbounds { double, double }, ptr %292, i32 0, i32 1
  %296 = extractvalue { double, double } %288, 1
  store double %296, ptr %295, align 8
  %297 = invoke noundef ptr @_ZNK3JPH3RefINS_13ShapeSettingsEEcvPS1_Ev(ptr noundef nonnull align 8 dereferenceable(8) %22)
          to label %298 unwind label %1135

298:                                              ; preds = %289
  %299 = getelementptr inbounds { double, double }, ptr %31, i32 0, i32 0
  %300 = load double, ptr %299, align 16
  %301 = getelementptr inbounds { double, double }, ptr %31, i32 0, i32 1
  %302 = load double, ptr %301, align 8
  %303 = getelementptr inbounds { double, double }, ptr %32, i32 0, i32 0
  %304 = load double, ptr %303, align 16
  %305 = getelementptr inbounds { double, double }, ptr %32, i32 0, i32 1
  %306 = load double, ptr %305, align 8
  invoke void @_ZN3JPH21CompoundShapeSettings8AddShapeENS_4Vec3ENS_4QuatEPKNS_13ShapeSettingsEj(ptr noundef nonnull align 8 dereferenceable(88) %273, double %300, double %302, double %304, double %306, ptr noundef %297, i32 noundef 0)
          to label %307 unwind label %1135

307:                                              ; preds = %298
  %308 = invoke noundef ptr @_ZNK3JPH3RefINS_27StaticCompoundShapeSettingsEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %30)
          to label %309 unwind label %1135

309:                                              ; preds = %307
  invoke void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %34, float noundef 0.000000e+00, float noundef 1.000000e+00, float noundef 0.000000e+00)
          to label %310 unwind label %1135

310:                                              ; preds = %309
  %311 = invoke { double, double } @_ZN3JPH4Quat9sIdentityEv()
          to label %312 unwind label %1135

312:                                              ; preds = %310
  %313 = getelementptr inbounds %"class.JPH::Quat", ptr %35, i32 0, i32 0
  %314 = getelementptr inbounds %"class.JPH::Vec4", ptr %313, i32 0, i32 0
  %315 = getelementptr inbounds %union.anon.20, ptr %314, i32 0, i32 0
  %316 = getelementptr inbounds { double, double }, ptr %315, i32 0, i32 0
  %317 = extractvalue { double, double } %311, 0
  store double %317, ptr %316, align 16
  %318 = getelementptr inbounds { double, double }, ptr %315, i32 0, i32 1
  %319 = extractvalue { double, double } %311, 1
  store double %319, ptr %318, align 8
  %320 = invoke noundef ptr @_ZNK3JPH3RefINS_13ShapeSettingsEEcvPS1_Ev(ptr noundef nonnull align 8 dereferenceable(8) %22)
          to label %321 unwind label %1135

321:                                              ; preds = %312
  %322 = getelementptr inbounds { double, double }, ptr %34, i32 0, i32 0
  %323 = load double, ptr %322, align 16
  %324 = getelementptr inbounds { double, double }, ptr %34, i32 0, i32 1
  %325 = load double, ptr %324, align 8
  %326 = getelementptr inbounds { double, double }, ptr %35, i32 0, i32 0
  %327 = load double, ptr %326, align 16
  %328 = getelementptr inbounds { double, double }, ptr %35, i32 0, i32 1
  %329 = load double, ptr %328, align 8
  invoke void @_ZN3JPH21CompoundShapeSettings8AddShapeENS_4Vec3ENS_4QuatEPKNS_13ShapeSettingsEj(ptr noundef nonnull align 8 dereferenceable(88) %308, double %323, double %325, double %327, double %329, ptr noundef %320, i32 noundef 0)
          to label %330 unwind label %1135

330:                                              ; preds = %321
  %331 = invoke noundef ptr @_ZNK3JPH3RefINS_27StaticCompoundShapeSettingsEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %30)
          to label %332 unwind label %1135

332:                                              ; preds = %330
  invoke void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %36, float noundef -1.000000e+00, float noundef 0.000000e+00, float noundef 0.000000e+00)
          to label %333 unwind label %1135

333:                                              ; preds = %332
  %334 = invoke { double, double } @_ZN3JPH4Vec36sAxisZEv()
          to label %335 unwind label %1135

335:                                              ; preds = %333
  %336 = getelementptr inbounds %"class.JPH::Vec3", ptr %38, i32 0, i32 0
  %337 = getelementptr inbounds %union.anon.19, ptr %336, i32 0, i32 0
  %338 = getelementptr inbounds { double, double }, ptr %337, i32 0, i32 0
  %339 = extractvalue { double, double } %334, 0
  store double %339, ptr %338, align 16
  %340 = getelementptr inbounds { double, double }, ptr %337, i32 0, i32 1
  %341 = extractvalue { double, double } %334, 1
  store double %341, ptr %340, align 8
  %342 = getelementptr inbounds { double, double }, ptr %38, i32 0, i32 0
  %343 = load double, ptr %342, align 16
  %344 = getelementptr inbounds { double, double }, ptr %38, i32 0, i32 1
  %345 = load double, ptr %344, align 8
  %346 = invoke { double, double } @_ZN3JPH4Quat9sRotationENS_4Vec3Ef(double %343, double %345, float noundef 0x3FF921FB60000000)
          to label %347 unwind label %1135

347:                                              ; preds = %335
  %348 = getelementptr inbounds %"class.JPH::Quat", ptr %37, i32 0, i32 0
  %349 = getelementptr inbounds %"class.JPH::Vec4", ptr %348, i32 0, i32 0
  %350 = getelementptr inbounds %union.anon.20, ptr %349, i32 0, i32 0
  %351 = getelementptr inbounds { double, double }, ptr %350, i32 0, i32 0
  %352 = extractvalue { double, double } %346, 0
  store double %352, ptr %351, align 16
  %353 = getelementptr inbounds { double, double }, ptr %350, i32 0, i32 1
  %354 = extractvalue { double, double } %346, 1
  store double %354, ptr %353, align 8
  %355 = invoke noundef ptr @_ZNK3JPH3RefINS_13ShapeSettingsEEcvPS1_Ev(ptr noundef nonnull align 8 dereferenceable(8) %22)
          to label %356 unwind label %1135

356:                                              ; preds = %347
  %357 = getelementptr inbounds { double, double }, ptr %36, i32 0, i32 0
  %358 = load double, ptr %357, align 16
  %359 = getelementptr inbounds { double, double }, ptr %36, i32 0, i32 1
  %360 = load double, ptr %359, align 8
  %361 = getelementptr inbounds { double, double }, ptr %37, i32 0, i32 0
  %362 = load double, ptr %361, align 16
  %363 = getelementptr inbounds { double, double }, ptr %37, i32 0, i32 1
  %364 = load double, ptr %363, align 8
  invoke void @_ZN3JPH21CompoundShapeSettings8AddShapeENS_4Vec3ENS_4QuatEPKNS_13ShapeSettingsEj(ptr noundef nonnull align 8 dereferenceable(88) %331, double %358, double %360, double %362, double %364, ptr noundef %355, i32 noundef 0)
          to label %365 unwind label %1135

365:                                              ; preds = %356
  %366 = invoke noundef ptr @_ZNK3JPH3RefINS_27StaticCompoundShapeSettingsEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %30)
          to label %367 unwind label %1135

367:                                              ; preds = %365
  invoke void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %39, float noundef 1.000000e+00, float noundef 0.000000e+00, float noundef 0.000000e+00)
          to label %368 unwind label %1135

368:                                              ; preds = %367
  %369 = invoke { double, double } @_ZN3JPH4Vec36sAxisZEv()
          to label %370 unwind label %1135

370:                                              ; preds = %368
  %371 = getelementptr inbounds %"class.JPH::Vec3", ptr %41, i32 0, i32 0
  %372 = getelementptr inbounds %union.anon.19, 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
  %377 = getelementptr inbounds { double, double }, ptr %41, i32 0, i32 0
  %378 = load double, ptr %377, align 16
  %379 = getelementptr inbounds { double, double }, ptr %41, i32 0, i32 1
  %380 = load double, ptr %379, align 8
  %381 = invoke { double, double } @_ZN3JPH4Quat9sRotationENS_4Vec3Ef(double %378, double %380, float noundef 0xBFF921FB60000000)
          to label %382 unwind label %1135

382:                                              ; preds = %370
  %383 = getelementptr inbounds %"class.JPH::Quat", ptr %40, i32 0, i32 0
  %384 = getelementptr inbounds %"class.JPH::Vec4", ptr %383, i32 0, i32 0
  %385 = getelementptr inbounds %union.anon.20, ptr %384, i32 0, i32 0
  %386 = getelementptr inbounds { double, double }, ptr %385, i32 0, i32 0
  %387 = extractvalue { double, double } %381, 0
  store double %387, ptr %386, align 16
  %388 = getelementptr inbounds { double, double }, ptr %385, i32 0, i32 1
  %389 = extractvalue { double, double } %381, 1
  store double %389, ptr %388, align 8
  %390 = invoke noundef ptr @_ZNK3JPH3RefINS_13ShapeSettingsEEcvPS1_Ev(ptr noundef nonnull align 8 dereferenceable(8) %22)
          to label %391 unwind label %1135

391:                                              ; preds = %382
  %392 = getelementptr inbounds { double, double }, ptr %39, i32 0, i32 0
  %393 = load double, ptr %392, align 16
  %394 = getelementptr inbounds { double, double }, ptr %39, i32 0, i32 1
  %395 = load double, ptr %394, align 8
  %396 = getelementptr inbounds { double, double }, ptr %40, i32 0, i32 0
  %397 = load double, ptr %396, align 16
  %398 = getelementptr inbounds { double, double }, ptr %40, i32 0, i32 1
  %399 = load double, ptr %398, align 8
  invoke void @_ZN3JPH21CompoundShapeSettings8AddShapeENS_4Vec3ENS_4QuatEPKNS_13ShapeSettingsEj(ptr noundef nonnull align 8 dereferenceable(88) %366, double %393, double %395, double %397, double %399, ptr noundef %390, i32 noundef 0)
          to label %400 unwind label %1135

400:                                              ; preds = %391
  %401 = invoke noundef ptr @_ZNK3JPH3RefINS_27StaticCompoundShapeSettingsEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %30)
          to label %402 unwind label %1135

402:                                              ; preds = %400
  invoke void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %42, float noundef 0.000000e+00, float noundef 0.000000e+00, float noundef -1.000000e+00)
          to label %403 unwind label %1135

403:                                              ; preds = %402
  %404 = invoke { double, double } @_ZN3JPH4Vec36sAxisXEv()
          to label %405 unwind label %1135

405:                                              ; preds = %403
  %406 = getelementptr inbounds %"class.JPH::Vec3", ptr %44, i32 0, i32 0
  %407 = getelementptr inbounds %union.anon.19, ptr %406, i32 0, i32 0
  %408 = getelementptr inbounds { double, double }, ptr %407, i32 0, i32 0
  %409 = extractvalue { double, double } %404, 0
  store double %409, ptr %408, align 16
  %410 = getelementptr inbounds { double, double }, ptr %407, i32 0, i32 1
  %411 = extractvalue { double, double } %404, 1
  store double %411, ptr %410, align 8
  %412 = getelementptr inbounds { double, double }, ptr %44, i32 0, i32 0
  %413 = load double, ptr %412, align 16
  %414 = getelementptr inbounds { double, double }, ptr %44, i32 0, i32 1
  %415 = load double, ptr %414, align 8
  %416 = invoke { double, double } @_ZN3JPH4Quat9sRotationENS_4Vec3Ef(double %413, double %415, float noundef 0xBFF921FB60000000)
          to label %417 unwind label %1135

417:                                              ; preds = %405
  %418 = getelementptr inbounds %"class.JPH::Quat", ptr %43, i32 0, i32 0
  %419 = getelementptr inbounds %"class.JPH::Vec4", ptr %418, i32 0, i32 0
  %420 = getelementptr inbounds %union.anon.20, ptr %419, i32 0, i32 0
  %421 = getelementptr inbounds { double, double }, ptr %420, i32 0, i32 0
  %422 = extractvalue { double, double } %416, 0
  store double %422, ptr %421, align 16
  %423 = getelementptr inbounds { double, double }, ptr %420, i32 0, i32 1
  %424 = extractvalue { double, double } %416, 1
  store double %424, ptr %423, align 8
  %425 = invoke noundef ptr @_ZNK3JPH3RefINS_13ShapeSettingsEEcvPS1_Ev(ptr noundef nonnull align 8 dereferenceable(8) %22)
          to label %426 unwind label %1135

426:                                              ; preds = %417
  %427 = getelementptr inbounds { double, double }, ptr %42, i32 0, i32 0
  %428 = load double, ptr %427, align 16
  %429 = getelementptr inbounds { double, double }, ptr %42, i32 0, i32 1
  %430 = load double, ptr %429, align 8
  %431 = getelementptr inbounds { double, double }, ptr %43, i32 0, i32 0
  %432 = load double, ptr %431, align 16
  %433 = getelementptr inbounds { double, double }, ptr %43, i32 0, i32 1
  %434 = load double, ptr %433, align 8
  invoke void @_ZN3JPH21CompoundShapeSettings8AddShapeENS_4Vec3ENS_4QuatEPKNS_13ShapeSettingsEj(ptr noundef nonnull align 8 dereferenceable(88) %401, double %428, double %430, double %432, double %434, ptr noundef %425, i32 noundef 0)
          to label %435 unwind label %1135

435:                                              ; preds = %426
  %436 = invoke noundef ptr @_ZNK3JPH3RefINS_27StaticCompoundShapeSettingsEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %30)
          to label %437 unwind label %1135

437:                                              ; preds = %435
  invoke void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %45, float noundef 0.000000e+00, float noundef 0.000000e+00, float noundef 1.000000e+00)
          to label %438 unwind label %1135

438:                                              ; preds = %437
  %439 = invoke { double, double } @_ZN3JPH4Vec36sAxisXEv()
          to label %440 unwind label %1135

440:                                              ; preds = %438
  %441 = getelementptr inbounds %"class.JPH::Vec3", ptr %47, i32 0, i32 0
  %442 = getelementptr inbounds %union.anon.19, ptr %441, i32 0, i32 0
  %443 = getelementptr inbounds { double, double }, ptr %442, i32 0, i32 0
  %444 = extractvalue { double, double } %439, 0
  store double %444, ptr %443, align 16
  %445 = getelementptr inbounds { double, double }, ptr %442, i32 0, i32 1
  %446 = extractvalue { double, double } %439, 1
  store double %446, ptr %445, align 8
  %447 = getelementptr inbounds { double, double }, ptr %47, i32 0, i32 0
  %448 = load double, ptr %447, align 16
  %449 = getelementptr inbounds { double, double }, ptr %47, i32 0, i32 1
  %450 = load double, ptr %449, align 8
  %451 = invoke { double, double } @_ZN3JPH4Quat9sRotationENS_4Vec3Ef(double %448, double %450, float noundef 0x3FF921FB60000000)
          to label %452 unwind label %1135

452:                                              ; preds = %440
  %453 = getelementptr inbounds %"class.JPH::Quat", ptr %46, i32 0, i32 0
  %454 = getelementptr inbounds %"class.JPH::Vec4", ptr %453, i32 0, i32 0
  %455 = getelementptr inbounds %union.anon.20, ptr %454, i32 0, i32 0
  %456 = getelementptr inbounds { double, double }, ptr %455, i32 0, i32 0
  %457 = extractvalue { double, double } %451, 0
  store double %457, ptr %456, align 16
  %458 = getelementptr inbounds { double, double }, ptr %455, i32 0, i32 1
  %459 = extractvalue { double, double } %451, 1
  store double %459, ptr %458, align 8
  %460 = invoke noundef ptr @_ZNK3JPH3RefINS_13ShapeSettingsEEcvPS1_Ev(ptr noundef nonnull align 8 dereferenceable(8) %22)
          to label %461 unwind label %1135

461:                                              ; preds = %452
  %462 = getelementptr inbounds { double, double }, ptr %45, i32 0, i32 0
  %463 = load double, ptr %462, align 16
  %464 = getelementptr inbounds { double, double }, ptr %45, i32 0, i32 1
  %465 = load double, ptr %464, align 8
  %466 = getelementptr inbounds { double, double }, ptr %46, i32 0, i32 0
  %467 = load double, ptr %466, align 16
  %468 = getelementptr inbounds { double, double }, ptr %46, i32 0, i32 1
  %469 = load double, ptr %468, align 8
  invoke void @_ZN3JPH21CompoundShapeSettings8AddShapeENS_4Vec3ENS_4QuatEPKNS_13ShapeSettingsEj(ptr noundef nonnull align 8 dereferenceable(88) %436, double %463, double %465, double %467, double %469, ptr noundef %460, i32 noundef 0)
          to label %470 unwind label %1135

470:                                              ; preds = %461
  call void @llvm.lifetime.start.p0(i64 8, ptr %48) #11
  %471 = invoke noundef ptr @_ZN3JPH16BoxShapeSettingsnwEm(i64 noundef 112)
          to label %472 unwind label %1139

472:                                              ; preds = %470
  invoke void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %49, float noundef 1.000000e+00, float noundef 1.000000e+00, float noundef 1.000000e+00)
          to label %473 unwind label %1143

473:                                              ; preds = %472
  %474 = getelementptr inbounds { double, double }, ptr %49, i32 0, i32 0
  %475 = load double, ptr %474, align 16
  %476 = getelementptr inbounds { double, double }, ptr %49, i32 0, i32 1
  %477 = load double, ptr %476, align 8
  invoke void @_ZN3JPH16BoxShapeSettingsC2ENS_4Vec3EfPKNS_15PhysicsMaterialE(ptr noundef nonnull align 16 dereferenceable(112) %471, double %475, double %477, float noundef 0.000000e+00, ptr noundef null)
          to label %478 unwind label %1143

478:                                              ; preds = %473
  invoke void @_ZN3JPH8RefConstINS_13ShapeSettingsEEC2EPKS1_(ptr noundef nonnull align 8 dereferenceable(8) %48, ptr noundef %471)
          to label %479 unwind label %1139

479:                                              ; preds = %478
  call void @llvm.lifetime.start.p0(i64 8, ptr %50) #11
  %480 = invoke noundef ptr @_ZN3JPH27StaticCompoundShapeSettingsnwEm(i64 noundef 88)
          to label %481 unwind label %1147

481:                                              ; preds = %479
  invoke void @_ZN3JPH27StaticCompoundShapeSettingsC2Ev(ptr noundef nonnull align 8 dereferenceable(88) %480)
          to label %482 unwind label %1151

482:                                              ; preds = %481
  invoke void @_ZN3JPH3RefINS_27StaticCompoundShapeSettingsEEC2EPS1_(ptr noundef nonnull align 8 dereferenceable(8) %50, ptr noundef %480)
          to label %483 unwind label %1147

483:                                              ; preds = %482
  %484 = invoke noundef ptr @_ZNK3JPH3RefINS_27StaticCompoundShapeSettingsEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %50)
          to label %485 unwind label %1155

485:                                              ; preds = %483
  invoke void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %51, float noundef 0xC000CCCCC0000000, float noundef 0.000000e+00, float noundef 0.000000e+00)
          to label %486 unwind label %1155

486:                                              ; preds = %485
  %487 = invoke { double, double } @_ZN3JPH4Quat9sIdentityEv()
          to label %488 unwind label %1155

488:                                              ; preds = %486
  %489 = getelementptr inbounds %"class.JPH::Quat", ptr %52, i32 0, i32 0
  %490 = getelementptr inbounds %"class.JPH::Vec4", ptr %489, i32 0, i32 0
  %491 = getelementptr inbounds %union.anon.20, ptr %490, i32 0, i32 0
  %492 = getelementptr inbounds { double, double }, ptr %491, i32 0, i32 0
  %493 = extractvalue { double, double } %487, 0
  store double %493, ptr %492, align 16
  %494 = getelementptr inbounds { double, double }, ptr %491, i32 0, i32 1
  %495 = extractvalue { double, double } %487, 1
  store double %495, ptr %494, align 8
  %496 = invoke noundef ptr @_ZNK3JPH3RefINS_27StaticCompoundShapeSettingsEEcvPS1_Ev(ptr noundef nonnull align 8 dereferenceable(8) %30)
          to label %497 unwind label %1155

497:                                              ; preds = %488
  %498 = getelementptr inbounds { double, double }, ptr %51, i32 0, i32 0
  %499 = load double, ptr %498, align 16
  %500 = getelementptr inbounds { double, double }, ptr %51, i32 0, i32 1
  %501 = load double, ptr %500, align 8
  %502 = getelementptr inbounds { double, double }, ptr %52, i32 0, i32 0
  %503 = load double, ptr %502, align 16
  %504 = getelementptr inbounds { double, double }, ptr %52, i32 0, i32 1
  %505 = load double, ptr %504, align 8
  invoke void @_ZN3JPH21CompoundShapeSettings8AddShapeENS_4Vec3ENS_4QuatEPKNS_13ShapeSettingsEj(ptr noundef nonnull align 8 dereferenceable(88) %484, double %499, double %501, double %503, double %505, ptr noundef %496, i32 noundef 0)
          to label %506 unwind label %1155

506:                                              ; preds = %497
  %507 = invoke noundef ptr @_ZNK3JPH3RefINS_27StaticCompoundShapeSettingsEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %50)
          to label %508 unwind label %1155

508:                                              ; preds = %506
  invoke void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %53, float noundef 0.000000e+00, float noundef -1.000000e+00, float noundef 0.000000e+00)
          to label %509 unwind label %1155

509:                                              ; preds = %508
  %510 = invoke { double, double } @_ZN3JPH4Quat9sIdentityEv()
          to label %511 unwind label %1155

511:                                              ; preds = %509
  %512 = getelementptr inbounds %"class.JPH::Quat", ptr %54, i32 0, i32 0
  %513 = getelementptr inbounds %"class.JPH::Vec4", ptr %512, i32 0, i32 0
  %514 = getelementptr inbounds %union.anon.20, ptr %513, i32 0, i32 0
  %515 = getelementptr inbounds { double, double }, ptr %514, i32 0, i32 0
  %516 = extractvalue { double, double } %510, 0
  store double %516, ptr %515, align 16
  %517 = getelementptr inbounds { double, double }, ptr %514, i32 0, i32 1
  %518 = extractvalue { double, double } %510, 1
  store double %518, ptr %517, align 8
  %519 = invoke noundef ptr @_ZNK3JPH3RefINS_27StaticCompoundShapeSettingsEEcvPS1_Ev(ptr noundef nonnull align 8 dereferenceable(8) %30)
          to label %520 unwind label %1155

520:                                              ; preds = %511
  %521 = getelementptr inbounds { double, double }, ptr %53, i32 0, i32 0
  %522 = load double, ptr %521, align 16
  %523 = getelementptr inbounds { double, double }, ptr %53, i32 0, i32 1
  %524 = load double, ptr %523, align 8
  %525 = getelementptr inbounds { double, double }, ptr %54, i32 0, i32 0
  %526 = load double, ptr %525, align 16
  %527 = getelementptr inbounds { double, double }, ptr %54, i32 0, i32 1
  %528 = load double, ptr %527, align 8
  invoke void @_ZN3JPH21CompoundShapeSettings8AddShapeENS_4Vec3ENS_4QuatEPKNS_13ShapeSettingsEj(ptr noundef nonnull align 8 dereferenceable(88) %507, double %522, double %524, double %526, double %528, ptr noundef %519, i32 noundef 0)
          to label %529 unwind label %1155

529:                                              ; preds = %520
  %530 = invoke noundef ptr @_ZNK3JPH3RefINS_27StaticCompoundShapeSettingsEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %50)
          to label %531 unwind label %1155

531:                                              ; preds = %529
  invoke void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %55, float noundef 0x4000CCCCC0000000, float noundef 0.000000e+00, float noundef 0.000000e+00)
          to label %532 unwind label %1155

532:                                              ; preds = %531
  %533 = invoke { double, double } @_ZN3JPH4Quat9sIdentityEv()
          to label %534 unwind label %1155

534:                                              ; preds = %532
  %535 = getelementptr inbounds %"class.JPH::Quat", ptr %56, i32 0, i32 0
  %536 = getelementptr inbounds %"class.JPH::Vec4", ptr %535, i32 0, i32 0
  %537 = getelementptr inbounds %union.anon.20, ptr %536, i32 0, i32 0
  %538 = getelementptr inbounds { double, double }, ptr %537, i32 0, i32 0
  %539 = extractvalue { double, double } %533, 0
  store double %539, ptr %538, align 16
  %540 = getelementptr inbounds { double, double }, ptr %537, i32 0, i32 1
  %541 = extractvalue { double, double } %533, 1
  store double %541, ptr %540, align 8
  %542 = invoke noundef ptr @_ZNK3JPH3RefINS_27StaticCompoundShapeSettingsEEcvPS1_Ev(ptr noundef nonnull align 8 dereferenceable(8) %30)
          to label %543 unwind label %1155

543:                                              ; preds = %534
  %544 = getelementptr inbounds { double, double }, ptr %55, i32 0, i32 0
  %545 = load double, ptr %544, align 16
  %546 = getelementptr inbounds { double, double }, ptr %55, i32 0, i32 1
  %547 = load double, ptr %546, align 8
  %548 = getelementptr inbounds { double, double }, ptr %56, i32 0, i32 0
  %549 = load double, ptr %548, align 16
  %550 = getelementptr inbounds { double, double }, ptr %56, i32 0, i32 1
  %551 = load double, ptr %550, align 8
  invoke void @_ZN3JPH21CompoundShapeSettings8AddShapeENS_4Vec3ENS_4QuatEPKNS_13ShapeSettingsEj(ptr noundef nonnull align 8 dereferenceable(88) %530, double %545, double %547, double %549, double %551, ptr noundef %542, i32 noundef 0)
          to label %552 unwind label %1155

552:                                              ; preds = %543
  call void @llvm.lifetime.start.p0(i64 8, ptr %57) #11
  %553 = invoke noundef ptr @_ZN3JPH27StaticCompoundShapeSettingsnwEm(i64 noundef 88)
          to label %554 unwind label %1159

554:                                              ; preds = %552
  invoke void @_ZN3JPH27StaticCompoundShapeSettingsC2Ev(ptr noundef nonnull align 8 dereferenceable(88) %553)
          to label %555 unwind label %1163

555:                                              ; preds = %554
  invoke void @_ZN3JPH3RefINS_27StaticCompoundShapeSettingsEEC2EPS1_(ptr noundef nonnull align 8 dereferenceable(8) %57, ptr noundef %553)
          to label %556 unwind label %1159

556:                                              ; preds = %555
  %557 = invoke noundef ptr @_ZNK3JPH3RefINS_27StaticCompoundShapeSettingsEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %57)
          to label %558 unwind label %1167

558:                                              ; preds = %556
  invoke void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %58, float noundef 0xC000CCCCC0000000, float noundef 0.000000e+00, float noundef 0.000000e+00)
          to label %559 unwind label %1167

559:                                              ; preds = %558
  %560 = invoke { double, double } @_ZN3JPH4Quat9sIdentityEv()
          to label %561 unwind label %1167

561:                                              ; preds = %559
  %562 = getelementptr inbounds %"class.JPH::Quat", ptr %59, i32 0, i32 0
  %563 = getelementptr inbounds %"class.JPH::Vec4", ptr %562, i32 0, i32 0
  %564 = getelementptr inbounds %union.anon.20, ptr %563, i32 0, i32 0
  %565 = getelementptr inbounds { double, double }, ptr %564, i32 0, i32 0
  %566 = extractvalue { double, double } %560, 0
  store double %566, ptr %565, align 16
  %567 = getelementptr inbounds { double, double }, ptr %564, i32 0, i32 1
  %568 = extractvalue { double, double } %560, 1
  store double %568, ptr %567, align 8
  %569 = invoke noundef ptr @_ZNK3JPH8RefConstINS_13ShapeSettingsEEcvPKS1_Ev(ptr noundef nonnull align 8 dereferenceable(8) %48)
          to label %570 unwind label %1167

570:                                              ; preds = %561
  %571 = getelementptr inbounds { double, double }, ptr %58, i32 0, i32 0
  %572 = load double, ptr %571, align 16
  %573 = getelementptr inbounds { double, double }, ptr %58, i32 0, i32 1
  %574 = load double, ptr %573, align 8
  %575 = getelementptr inbounds { double, double }, ptr %59, i32 0, i32 0
  %576 = load double, ptr %575, align 16
  %577 = getelementptr inbounds { double, double }, ptr %59, i32 0, i32 1
  %578 = load double, ptr %577, align 8
  invoke void @_ZN3JPH21CompoundShapeSettings8AddShapeENS_4Vec3ENS_4QuatEPKNS_13ShapeSettingsEj(ptr noundef nonnull align 8 dereferenceable(88) %557, double %572, double %574, double %576, double %578, ptr noundef %569, i32 noundef 0)
          to label %579 unwind label %1167

579:                                              ; preds = %570
  %580 = invoke noundef ptr @_ZNK3JPH3RefINS_27StaticCompoundShapeSettingsEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %57)
          to label %581 unwind label %1167

581:                                              ; preds = %579
  invoke void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %60, float noundef 0.000000e+00, float noundef 0xBFF19999A0000000, float noundef 0.000000e+00)
          to label %582 unwind label %1167

582:                                              ; preds = %581
  %583 = invoke { double, double } @_ZN3JPH4Quat9sIdentityEv()
          to label %584 unwind label %1167

584:                                              ; preds = %582
  %585 = getelementptr inbounds %"class.JPH::Quat", ptr %61, i32 0, i32 0
  %586 = getelementptr inbounds %"class.JPH::Vec4", ptr %585, i32 0, i32 0
  %587 = getelementptr inbounds %union.anon.20, ptr %586, i32 0, i32 0
  %588 = getelementptr inbounds { double, double }, ptr %587, i32 0, i32 0
  %589 = extractvalue { double, double } %583, 0
  store double %589, ptr %588, align 16
  %590 = getelementptr inbounds { double, double }, ptr %587, i32 0, i32 1
  %591 = extractvalue { double, double } %583, 1
  store double %591, ptr %590, align 8
  %592 = invoke noundef ptr @_ZNK3JPH8RefConstINS_13ShapeSettingsEEcvPKS1_Ev(ptr noundef nonnull align 8 dereferenceable(8) %48)
          to label %593 unwind label %1167

593:                                              ; preds = %584
  %594 = getelementptr inbounds { double, double }, ptr %60, i32 0, i32 0
  %595 = load double, ptr %594, align 16
  %596 = getelementptr inbounds { double, double }, ptr %60, i32 0, i32 1
  %597 = load double, ptr %596, align 8
  %598 = getelementptr inbounds { double, double }, ptr %61, i32 0, i32 0
  %599 = load double, ptr %598, align 16
  %600 = getelementptr inbounds { double, double }, ptr %61, i32 0, i32 1
  %601 = load double, ptr %600, align 8
  invoke void @_ZN3JPH21CompoundShapeSettings8AddShapeENS_4Vec3ENS_4QuatEPKNS_13ShapeSettingsEj(ptr noundef nonnull align 8 dereferenceable(88) %580, double %595, double %597, double %599, double %601, ptr noundef %592, i32 noundef 0)
          to label %602 unwind label %1167

602:                                              ; preds = %593
  %603 = invoke noundef ptr @_ZNK3JPH3RefINS_27StaticCompoundShapeSettingsEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %57)
          to label %604 unwind label %1167

604:                                              ; preds = %602
  invoke void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %62, float noundef 0x4000CCCCC0000000, float noundef 0.000000e+00, float noundef 0.000000e+00)
          to label %605 unwind label %1167

605:                                              ; preds = %604
  %606 = invoke { double, double } @_ZN3JPH4Quat9sIdentityEv()
          to label %607 unwind label %1167

607:                                              ; preds = %605
  %608 = getelementptr inbounds %"class.JPH::Quat", ptr %63, i32 0, i32 0
  %609 = getelementptr inbounds %"class.JPH::Vec4", ptr %608, i32 0, i32 0
  %610 = getelementptr inbounds %union.anon.20, ptr %609, i32 0, i32 0
  %611 = getelementptr inbounds { double, double }, ptr %610, i32 0, i32 0
  %612 = extractvalue { double, double } %606, 0
  store double %612, ptr %611, align 16
  %613 = getelementptr inbounds { double, double }, ptr %610, i32 0, i32 1
  %614 = extractvalue { double, double } %606, 1
  store double %614, ptr %613, align 8
  %615 = invoke noundef ptr @_ZNK3JPH8RefConstINS_13ShapeSettingsEEcvPKS1_Ev(ptr noundef nonnull align 8 dereferenceable(8) %48)
          to label %616 unwind label %1167

616:                                              ; preds = %607
  %617 = getelementptr inbounds { double, double }, ptr %62, i32 0, i32 0
  %618 = load double, ptr %617, align 16
  %619 = getelementptr inbounds { double, double }, ptr %62, i32 0, i32 1
  %620 = load double, ptr %619, align 8
  %621 = getelementptr inbounds { double, double }, ptr %63, i32 0, i32 0
  %622 = load double, ptr %621, align 16
  %623 = getelementptr inbounds { double, double }, ptr %63, i32 0, i32 1
  %624 = load double, ptr %623, align 8
  invoke void @_ZN3JPH21CompoundShapeSettings8AddShapeENS_4Vec3ENS_4QuatEPKNS_13ShapeSettingsEj(ptr noundef nonnull align 8 dereferenceable(88) %603, double %618, double %620, double %622, double %624, ptr noundef %615, i32 noundef 0)
          to label %625 unwind label %1167

625:                                              ; preds = %616
  %626 = getelementptr inbounds %class.Test, ptr %120, i32 0, i32 3
  %627 = load ptr, ptr %626, align 8, !tbaa !16
  call void @llvm.lifetime.start.p0(i64 256, ptr %64) #11
  %628 = invoke noundef ptr @_ZNK3JPH3RefINS_27StaticCompoundShapeSettingsEEcvPS1_Ev(ptr noundef nonnull align 8 dereferenceable(8) %50)
          to label %629 unwind label %1171

629:                                              ; preds = %625
  invoke void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %65, float noundef 0.000000e+00, float noundef 1.000000e+00, float noundef 0.000000e+00)
          to label %630 unwind label %1171

630:                                              ; preds = %629
  %631 = invoke { double, double } @_ZN3JPH4Quat9sIdentityEv()
          to label %632 unwind label %1171

632:                                              ; preds = %630
  %633 = getelementptr inbounds %"class.JPH::Quat", ptr %66, i32 0, i32 0
  %634 = getelementptr inbounds %"class.JPH::Vec4", ptr %633, i32 0, i32 0
  %635 = getelementptr inbounds %union.anon.20, ptr %634, i32 0, i32 0
  %636 = getelementptr inbounds { double, double }, ptr %635, i32 0, i32 0
  %637 = extractvalue { double, double } %631, 0
  store double %637, ptr %636, align 16
  %638 = getelementptr inbounds { double, double }, ptr %635, i32 0, i32 1
  %639 = extractvalue { double, double } %631, 1
  store double %639, ptr %638, align 8
  %640 = getelementptr inbounds { double, double }, ptr %65, i32 0, i32 0
  %641 = load double, ptr %640, align 16
  %642 = getelementptr inbounds { double, double }, ptr %65, i32 0, i32 1
  %643 = load double, ptr %642, align 8
  %644 = getelementptr inbounds { double, double }, ptr %66, i32 0, i32 0
  %645 = load double, ptr %644, align 16
  %646 = getelementptr inbounds { double, double }, ptr %66, i32 0, i32 1
  %647 = load double, ptr %646, align 8
  invoke void @_ZN3JPH20BodyCreationSettingsC2EPKNS_13ShapeSettingsENS_4Vec3ENS_4QuatENS_11EMotionTypeEt(ptr noundef nonnull align 16 dereferenceable(256) %64, ptr noundef %628, double %641, double %643, double %645, double %647, i8 noundef zeroext 0, i16 noundef zeroext 0)
          to label %648 unwind label %1171

648:                                              ; preds = %632
  %649 = invoke i32 @_ZN3JPH13BodyInterface16CreateAndAddBodyERKNS_20BodyCreationSettingsENS_11EActivationE(ptr noundef nonnull align 8 dereferenceable(24) %627, ptr noundef nonnull align 16 dereferenceable(256) %64, i32 noundef 1)
          to label %650 unwind label %1175

650:                                              ; preds = %648
  %651 = getelementptr inbounds %"class.JPH::BodyID", ptr %67, i32 0, i32 0
  store i32 %649, ptr %651, align 4
  call void @_ZN3JPH20BodyCreationSettingsD2Ev(ptr noundef nonnull align 16 dereferenceable(256) %64) #11
  call void @llvm.lifetime.end.p0(i64 256, ptr %64) #11
  call void @llvm.lifetime.start.p0(i64 256, ptr %68) #11
  %652 = invoke noundef ptr @_ZNK3JPH3RefINS_27StaticCompoundShapeSettingsEEcvPS1_Ev(ptr noundef nonnull align 8 dereferenceable(8) %57)
          to label %653 unwind label %1180

653:                                              ; preds = %650
  invoke void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %69, float noundef 0.000000e+00, float noundef 0x40079999A0000000, float noundef 0.000000e+00)
          to label %654 unwind label %1180

654:                                              ; preds = %653
  %655 = invoke { double, double } @_ZN3JPH4Quat9sIdentityEv()
          to label %656 unwind label %1180

656:                                              ; preds = %654
  %657 = getelementptr inbounds %"class.JPH::Quat", ptr %70, i32 0, i32 0
  %658 = getelementptr inbounds %"class.JPH::Vec4", ptr %657, i32 0, i32 0
  %659 = getelementptr inbounds %union.anon.20, ptr %658, i32 0, i32 0
  %660 = getelementptr inbounds { double, double }, ptr %659, i32 0, i32 0
  %661 = extractvalue { double, double } %655, 0
  store double %661, ptr %660, align 16
  %662 = getelementptr inbounds { double, double }, ptr %659, i32 0, i32 1
  %663 = extractvalue { double, double } %655, 1
  store double %663, ptr %662, align 8
  %664 = getelementptr inbounds { double, double }, ptr %69, i32 0, i32 0
  %665 = load double, ptr %664, align 16
  %666 = getelementptr inbounds { double, double }, ptr %69, i32 0, i32 1
  %667 = load double, ptr %666, align 8
  %668 = getelementptr inbounds { double, double }, ptr %70, i32 0, i32 0
  %669 = load double, ptr %668, align 16
  %670 = getelementptr inbounds { double, double }, ptr %70, i32 0, i32 1
  %671 = load double, ptr %670, align 8
  invoke void @_ZN3JPH20BodyCreationSettingsC2EPKNS_13ShapeSettingsENS_4Vec3ENS_4QuatENS_11EMotionTypeEt(ptr noundef nonnull align 16 dereferenceable(256) %68, ptr noundef %652, double %665, double %667, double %669, double %671, i8 noundef zeroext 2, i16 noundef zeroext 1)
          to label %672 unwind label %1180

672:                                              ; preds = %656
  %673 = getelementptr inbounds %"class.JPH::BodyCreationSettings", ptr %68, i32 0, i32 16
  store i8 0, ptr %673, align 1, !tbaa !24
  %674 = getelementptr inbounds %class.Test, ptr %120, i32 0, i32 3
  %675 = load ptr, ptr %674, align 8, !tbaa !16
  %676 = invoke i32 @_ZN3JPH13BodyInterface16CreateAndAddBodyERKNS_20BodyCreationSettingsENS_11EActivationE(ptr noundef nonnull align 8 dereferenceable(24) %675, ptr noundef nonnull align 16 dereferenceable(256) %68, i32 noundef 0)
          to label %677 unwind label %1184

677:                                              ; preds = %672
  %678 = getelementptr inbounds %"class.JPH::BodyID", ptr %71, i32 0, i32 0
  store i32 %676, ptr %678, 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 @_ZN3JPH3RefINS_27StaticCompoundShapeSettingsEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %57) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %57) #11
  call void @_ZN3JPH3RefINS_27StaticCompoundShapeSettingsEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %50) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %50) #11
  call void @llvm.lifetime.start.p0(i64 8, ptr %72) #11
  %679 = invoke noundef ptr @_ZN3JPH27StaticCompoundShapeSettingsnwEm(i64 noundef 88)
          to label %680 unwind label %1193

680:                                              ; preds = %677
  invoke void @_ZN3JPH27StaticCompoundShapeSettingsC2Ev(ptr noundef nonnull align 8 dereferenceable(88) %679)
          to label %681 unwind label %1197

681:                                              ; preds = %680
  invoke void @_ZN3JPH3RefINS_27StaticCompoundShapeSettingsEEC2EPS1_(ptr noundef nonnull align 8 dereferenceable(8) %72, ptr noundef %679)
          to label %682 unwind label %1193

682:                                              ; preds = %681
  %683 = invoke noundef ptr @_ZNK3JPH3RefINS_27StaticCompoundShapeSettingsEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %72)
          to label %684 unwind label %1201

684:                                              ; preds = %682
  invoke void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %73, float noundef 0xC000CCCCC0000000, float noundef 0.000000e+00, float noundef 0.000000e+00)
          to label %685 unwind label %1201

685:                                              ; preds = %684
  %686 = invoke { double, double } @_ZN3JPH4Quat9sIdentityEv()
          to label %687 unwind label %1201

687:                                              ; preds = %685
  %688 = getelementptr inbounds %"class.JPH::Quat", ptr %74, i32 0, i32 0
  %689 = getelementptr inbounds %"class.JPH::Vec4", ptr %688, i32 0, i32 0
  %690 = getelementptr inbounds %union.anon.20, ptr %689, i32 0, i32 0
  %691 = getelementptr inbounds { double, double }, ptr %690, i32 0, i32 0
  %692 = extractvalue { double, double } %686, 0
  store double %692, ptr %691, align 16
  %693 = getelementptr inbounds { double, double }, ptr %690, i32 0, i32 1
  %694 = extractvalue { double, double } %686, 1
  store double %694, ptr %693, align 8
  %695 = invoke noundef ptr @_ZNK3JPH3RefINS_27StaticCompoundShapeSettingsEEcvPS1_Ev(ptr noundef nonnull align 8 dereferenceable(8) %30)
          to label %696 unwind label %1201

696:                                              ; preds = %687
  %697 = getelementptr inbounds { double, double }, ptr %73, i32 0, i32 0
  %698 = load double, ptr %697, align 16
  %699 = getelementptr inbounds { double, double }, ptr %73, i32 0, i32 1
  %700 = load double, ptr %699, align 8
  %701 = getelementptr inbounds { double, double }, ptr %74, i32 0, i32 0
  %702 = load double, ptr %701, align 16
  %703 = getelementptr inbounds { double, double }, ptr %74, i32 0, i32 1
  %704 = load double, ptr %703, align 8
  invoke void @_ZN3JPH21CompoundShapeSettings8AddShapeENS_4Vec3ENS_4QuatEPKNS_13ShapeSettingsEj(ptr noundef nonnull align 8 dereferenceable(88) %683, double %698, double %700, double %702, double %704, ptr noundef %695, i32 noundef 0)
          to label %705 unwind label %1201

705:                                              ; preds = %696
  %706 = invoke noundef ptr @_ZNK3JPH3RefINS_27StaticCompoundShapeSettingsEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %72)
          to label %707 unwind label %1201

707:                                              ; preds = %705
  invoke void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %75, float noundef 0.000000e+00, float noundef -1.000000e+00, float noundef 0.000000e+00)
          to label %708 unwind label %1201

708:                                              ; preds = %707
  %709 = invoke { double, double } @_ZN3JPH4Quat9sIdentityEv()
          to label %710 unwind label %1201

710:                                              ; preds = %708
  %711 = getelementptr inbounds %"class.JPH::Quat", ptr %76, i32 0, i32 0
  %712 = getelementptr inbounds %"class.JPH::Vec4", ptr %711, i32 0, i32 0
  %713 = getelementptr inbounds %union.anon.20, ptr %712, i32 0, i32 0
  %714 = getelementptr inbounds { double, double }, ptr %713, i32 0, i32 0
  %715 = extractvalue { double, double } %709, 0
  store double %715, ptr %714, align 16
  %716 = getelementptr inbounds { double, double }, ptr %713, i32 0, i32 1
  %717 = extractvalue { double, double } %709, 1
  store double %717, ptr %716, align 8
  %718 = invoke noundef ptr @_ZNK3JPH3RefINS_27StaticCompoundShapeSettingsEEcvPS1_Ev(ptr noundef nonnull align 8 dereferenceable(8) %30)
          to label %719 unwind label %1201

719:                                              ; preds = %710
  %720 = getelementptr inbounds { double, double }, ptr %75, i32 0, i32 0
  %721 = load double, ptr %720, align 16
  %722 = getelementptr inbounds { double, double }, ptr %75, i32 0, i32 1
  %723 = load double, ptr %722, align 8
  %724 = getelementptr inbounds { double, double }, ptr %76, i32 0, i32 0
  %725 = load double, ptr %724, align 16
  %726 = getelementptr inbounds { double, double }, ptr %76, i32 0, i32 1
  %727 = load double, ptr %726, align 8
  invoke void @_ZN3JPH21CompoundShapeSettings8AddShapeENS_4Vec3ENS_4QuatEPKNS_13ShapeSettingsEj(ptr noundef nonnull align 8 dereferenceable(88) %706, double %721, double %723, double %725, double %727, ptr noundef %718, i32 noundef 0)
          to label %728 unwind label %1201

728:                                              ; preds = %719
  call void @llvm.lifetime.start.p0(i64 8, ptr %77) #11
  %729 = invoke noundef ptr @_ZN3JPH27StaticCompoundShapeSettingsnwEm(i64 noundef 88)
          to label %730 unwind label %1205

730:                                              ; preds = %728
  invoke void @_ZN3JPH27StaticCompoundShapeSettingsC2Ev(ptr noundef nonnull align 8 dereferenceable(88) %729)
          to label %731 unwind label %1209

731:                                              ; preds = %730
  invoke void @_ZN3JPH3RefINS_27StaticCompoundShapeSettingsEEC2EPS1_(ptr noundef nonnull align 8 dereferenceable(8) %77, ptr noundef %729)
          to label %732 unwind label %1205

732:                                              ; preds = %731
  %733 = invoke noundef ptr @_ZNK3JPH3RefINS_27StaticCompoundShapeSettingsEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %77)
          to label %734 unwind label %1213

734:                                              ; preds = %732
  invoke void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %78, float noundef 0xC000CCCCC0000000, float noundef 0.000000e+00, float noundef 0.000000e+00)
          to label %735 unwind label %1213

735:                                              ; preds = %734
  %736 = invoke { double, double } @_ZN3JPH4Quat9sIdentityEv()
          to label %737 unwind label %1213

737:                                              ; preds = %735
  %738 = getelementptr inbounds %"class.JPH::Quat", ptr %79, i32 0, i32 0
  %739 = getelementptr inbounds %"class.JPH::Vec4", ptr %738, i32 0, i32 0
  %740 = getelementptr inbounds %union.anon.20, ptr %739, i32 0, i32 0
  %741 = getelementptr inbounds { double, double }, ptr %740, i32 0, i32 0
  %742 = extractvalue { double, double } %736, 0
  store double %742, ptr %741, align 16
  %743 = getelementptr inbounds { double, double }, ptr %740, i32 0, i32 1
  %744 = extractvalue { double, double } %736, 1
  store double %744, ptr %743, align 8
  %745 = invoke noundef ptr @_ZNK3JPH8RefConstINS_13ShapeSettingsEEcvPKS1_Ev(ptr noundef nonnull align 8 dereferenceable(8) %48)
          to label %746 unwind label %1213

746:                                              ; preds = %737
  %747 = getelementptr inbounds { double, double }, ptr %78, i32 0, i32 0
  %748 = load double, ptr %747, align 16
  %749 = getelementptr inbounds { double, double }, ptr %78, i32 0, i32 1
  %750 = load double, ptr %749, align 8
  %751 = getelementptr inbounds { double, double }, ptr %79, i32 0, i32 0
  %752 = load double, ptr %751, align 16
  %753 = getelementptr inbounds { double, double }, ptr %79, i32 0, i32 1
  %754 = load double, ptr %753, align 8
  invoke void @_ZN3JPH21CompoundShapeSettings8AddShapeENS_4Vec3ENS_4QuatEPKNS_13ShapeSettingsEj(ptr noundef nonnull align 8 dereferenceable(88) %733, double %748, double %750, double %752, double %754, ptr noundef %745, i32 noundef 0)
          to label %755 unwind label %1213

755:                                              ; preds = %746
  %756 = invoke noundef ptr @_ZNK3JPH3RefINS_27StaticCompoundShapeSettingsEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %77)
          to label %757 unwind label %1213

757:                                              ; preds = %755
  invoke void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %80, float noundef 0.000000e+00, float noundef -1.000000e+00, float noundef 0.000000e+00)
          to label %758 unwind label %1213

758:                                              ; preds = %757
  %759 = invoke { double, double } @_ZN3JPH4Quat9sIdentityEv()
          to label %760 unwind label %1213

760:                                              ; preds = %758
  %761 = getelementptr inbounds %"class.JPH::Quat", ptr %81, i32 0, i32 0
  %762 = getelementptr inbounds %"class.JPH::Vec4", ptr %761, i32 0, i32 0
  %763 = getelementptr inbounds %union.anon.20, ptr %762, i32 0, i32 0
  %764 = getelementptr inbounds { double, double }, ptr %763, i32 0, i32 0
  %765 = extractvalue { double, double } %759, 0
  store double %765, ptr %764, align 16
  %766 = getelementptr inbounds { double, double }, ptr %763, i32 0, i32 1
  %767 = extractvalue { double, double } %759, 1
  store double %767, ptr %766, align 8
  %768 = invoke noundef ptr @_ZNK3JPH8RefConstINS_13ShapeSettingsEEcvPKS1_Ev(ptr noundef nonnull align 8 dereferenceable(8) %48)
          to label %769 unwind label %1213

769:                                              ; preds = %760
  %770 = getelementptr inbounds { double, double }, ptr %80, i32 0, i32 0
  %771 = load double, ptr %770, align 16
  %772 = getelementptr inbounds { double, double }, ptr %80, i32 0, i32 1
  %773 = load double, ptr %772, align 8
  %774 = getelementptr inbounds { double, double }, ptr %81, i32 0, i32 0
  %775 = load double, ptr %774, align 16
  %776 = getelementptr inbounds { double, double }, ptr %81, i32 0, i32 1
  %777 = load double, ptr %776, align 8
  invoke void @_ZN3JPH21CompoundShapeSettings8AddShapeENS_4Vec3ENS_4QuatEPKNS_13ShapeSettingsEj(ptr noundef nonnull align 8 dereferenceable(88) %756, double %771, double %773, double %775, double %777, ptr noundef %768, i32 noundef 0)
          to label %778 unwind label %1213

778:                                              ; preds = %769
  %779 = getelementptr inbounds %class.Test, ptr %120, i32 0, i32 3
  %780 = load ptr, ptr %779, align 8, !tbaa !16
  call void @llvm.lifetime.start.p0(i64 256, ptr %82) #11
  %781 = invoke noundef ptr @_ZNK3JPH3RefINS_27StaticCompoundShapeSettingsEEcvPS1_Ev(ptr noundef nonnull align 8 dereferenceable(8) %72)
          to label %782 unwind label %1217

782:                                              ; preds = %778
  invoke void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %83, float noundef 0.000000e+00, float noundef 1.000000e+00, float noundef 4.000000e+00)
          to label %783 unwind label %1217

783:                                              ; preds = %782
  %784 = invoke { double, double } @_ZN3JPH4Quat9sIdentityEv()
          to label %785 unwind label %1217

785:                                              ; preds = %783
  %786 = getelementptr inbounds %"class.JPH::Quat", ptr %84, i32 0, i32 0
  %787 = getelementptr inbounds %"class.JPH::Vec4", ptr %786, i32 0, i32 0
  %788 = getelementptr inbounds %union.anon.20, ptr %787, i32 0, i32 0
  %789 = getelementptr inbounds { double, double }, ptr %788, i32 0, i32 0
  %790 = extractvalue { double, double } %784, 0
  store double %790, ptr %789, align 16
  %791 = getelementptr inbounds { double, double }, ptr %788, i32 0, i32 1
  %792 = extractvalue { double, double } %784, 1
  store double %792, ptr %791, align 8
  %793 = getelementptr inbounds { double, double }, ptr %83, i32 0, i32 0
  %794 = load double, ptr %793, align 16
  %795 = getelementptr inbounds { double, double }, ptr %83, i32 0, i32 1
  %796 = load double, ptr %795, align 8
  %797 = getelementptr inbounds { double, double }, ptr %84, i32 0, i32 0
  %798 = load double, ptr %797, align 16
  %799 = getelementptr inbounds { double, double }, ptr %84, i32 0, i32 1
  %800 = load double, ptr %799, align 8
  invoke void @_ZN3JPH20BodyCreationSettingsC2EPKNS_13ShapeSettingsENS_4Vec3ENS_4QuatENS_11EMotionTypeEt(ptr noundef nonnull align 16 dereferenceable(256) %82, ptr noundef %781, double %794, double %796, double %798, double %800, i8 noundef zeroext 0, i16 noundef zeroext 0)
          to label %801 unwind label %1217

801:                                              ; preds = %785
  %802 = invoke i32 @_ZN3JPH13BodyInterface16CreateAndAddBodyERKNS_20BodyCreationSettingsENS_11EActivationE(ptr noundef nonnull align 8 dereferenceable(24) %780, ptr noundef nonnull align 16 dereferenceable(256) %82, i32 noundef 1)
          to label %803 unwind label %1221

803:                                              ; preds = %801
  %804 = getelementptr inbounds %"class.JPH::BodyID", ptr %85, i32 0, i32 0
  store i32 %802, ptr %804, align 4
  call void @_ZN3JPH20BodyCreationSettingsD2Ev(ptr noundef nonnull align 16 dereferenceable(256) %82) #11
  call void @llvm.lifetime.end.p0(i64 256, ptr %82) #11
  call void @llvm.lifetime.start.p0(i64 256, ptr %86) #11
  %805 = invoke noundef ptr @_ZNK3JPH3RefINS_27StaticCompoundShapeSettingsEEcvPS1_Ev(ptr noundef nonnull align 8 dereferenceable(8) %77)
          to label %806 unwind label %1226

806:                                              ; preds = %803
  invoke void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %87, float noundef 0.000000e+00, float noundef 4.000000e+00, float noundef 4.000000e+00)
          to label %807 unwind label %1226

807:                                              ; preds = %806
  %808 = invoke { double, double } @_ZN3JPH4Quat9sIdentityEv()
          to label %809 unwind label %1226

809:                                              ; preds = %807
  %810 = getelementptr inbounds %"class.JPH::Quat", ptr %88, i32 0, i32 0
  %811 = getelementptr inbounds %"class.JPH::Vec4", ptr %810, i32 0, i32 0
  %812 = getelementptr inbounds %union.anon.20, ptr %811, i32 0, i32 0
  %813 = getelementptr inbounds { double, double }, ptr %812, i32 0, i32 0
  %814 = extractvalue { double, double } %808, 0
  store double %814, ptr %813, align 16
  %815 = getelementptr inbounds { double, double }, ptr %812, i32 0, i32 1
  %816 = extractvalue { double, double } %808, 1
  store double %816, ptr %815, align 8
  %817 = getelementptr inbounds { double, double }, ptr %87, i32 0, i32 0
  %818 = load double, ptr %817, align 16
  %819 = getelementptr inbounds { double, double }, ptr %87, i32 0, i32 1
  %820 = load double, ptr %819, align 8
  %821 = getelementptr inbounds { double, double }, ptr %88, i32 0, i32 0
  %822 = load double, ptr %821, align 16
  %823 = getelementptr inbounds { double, double }, ptr %88, i32 0, i32 1
  %824 = load double, ptr %823, align 8
  invoke void @_ZN3JPH20BodyCreationSettingsC2EPKNS_13ShapeSettingsENS_4Vec3ENS_4QuatENS_11EMotionTypeEt(ptr noundef nonnull align 16 dereferenceable(256) %86, ptr noundef %805, double %818, double %820, double %822, double %824, i8 noundef zeroext 2, i16 noundef zeroext 1)
          to label %825 unwind label %1226

825:                                              ; preds = %809
  %826 = getelementptr inbounds %"class.JPH::BodyCreationSettings", ptr %86, i32 0, i32 16
  store i8 0, ptr %826, align 1, !tbaa !24
  %827 = getelementptr inbounds %class.Test, ptr %120, i32 0, i32 3
  %828 = load ptr, ptr %827, align 8, !tbaa !16
  %829 = invoke i32 @_ZN3JPH13BodyInterface16CreateAndAddBodyERKNS_20BodyCreationSettingsENS_11EActivationE(ptr noundef nonnull align 8 dereferenceable(24) %828, ptr noundef nonnull align 16 dereferenceable(256) %86, i32 noundef 0)
          to label %830 unwind label %1230

830:                                              ; preds = %825
  %831 = getelementptr inbounds %"class.JPH::BodyID", ptr %89, i32 0, i32 0
  store i32 %829, ptr %831, align 4
  call void @_ZN3JPH20BodyCreationSettingsD2Ev(ptr noundef nonnull align 16 dereferenceable(256) %86) #11
  call void @llvm.lifetime.end.p0(i64 256, ptr %86) #11
  call void @_ZN3JPH3RefINS_27StaticCompoundShapeSettingsEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %77) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %77) #11
  call void @_ZN3JPH3RefINS_27StaticCompoundShapeSettingsEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %72) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %72) #11
  call void @llvm.lifetime.start.p0(i64 8, ptr %90) #11
  %832 = invoke noundef ptr @_ZN3JPH27StaticCompoundShapeSettingsnwEm(i64 noundef 88)
          to label %833 unwind label %1239

833:                                              ; preds = %830
  invoke void @_ZN3JPH27StaticCompoundShapeSettingsC2Ev(ptr noundef nonnull align 8 dereferenceable(88) %832)
          to label %834 unwind label %1243

834:                                              ; preds = %833
  invoke void @_ZN3JPH3RefINS_27StaticCompoundShapeSettingsEEC2EPS1_(ptr noundef nonnull align 8 dereferenceable(8) %90, ptr noundef %832)
          to label %835 unwind label %1239

835:                                              ; preds = %834
  %836 = invoke noundef ptr @_ZNK3JPH3RefINS_27StaticCompoundShapeSettingsEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %90)
          to label %837 unwind label %1247

837:                                              ; preds = %835
  invoke void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %91, float noundef 1.000000e+00, float noundef 0.000000e+00, float noundef 0.000000e+00)
          to label %838 unwind label %1247

838:                                              ; preds = %837
  %839 = invoke { double, double } @_ZN3JPH4Vec36sAxisZEv()
          to label %840 unwind label %1247

840:                                              ; preds = %838
  %841 = getelementptr inbounds %"class.JPH::Vec3", ptr %93, i32 0, i32 0
  %842 = getelementptr inbounds %union.anon.19, ptr %841, i32 0, i32 0
  %843 = getelementptr inbounds { double, double }, ptr %842, i32 0, i32 0
  %844 = extractvalue { double, double } %839, 0
  store double %844, ptr %843, align 16
  %845 = getelementptr inbounds { double, double }, ptr %842, i32 0, i32 1
  %846 = extractvalue { double, double } %839, 1
  store double %846, ptr %845, align 8
  %847 = invoke noundef float @_ZN3JPH16DegreesToRadiansEf(float noundef 2.000000e+00)
          to label %848 unwind label %1247

848:                                              ; preds = %840
  %849 = getelementptr inbounds { double, double }, ptr %93, i32 0, i32 0
  %850 = load double, ptr %849, align 16
  %851 = getelementptr inbounds { double, double }, ptr %93, i32 0, i32 1
  %852 = load double, ptr %851, align 8
  %853 = invoke { double, double } @_ZN3JPH4Quat9sRotationENS_4Vec3Ef(double %850, double %852, float noundef %847)
          to label %854 unwind label %1247

854:                                              ; preds = %848
  %855 = getelementptr inbounds %"class.JPH::Quat", ptr %92, i32 0, i32 0
  %856 = getelementptr inbounds %"class.JPH::Vec4", ptr %855, i32 0, i32 0
  %857 = getelementptr inbounds %union.anon.20, ptr %856, i32 0, i32 0
  %858 = getelementptr inbounds { double, double }, ptr %857, i32 0, i32 0
  %859 = extractvalue { double, double } %853, 0
  store double %859, ptr %858, align 16
  %860 = getelementptr inbounds { double, double }, ptr %857, i32 0, i32 1
  %861 = extractvalue { double, double } %853, 1
  store double %861, ptr %860, align 8
  %862 = invoke noundef ptr @_ZNK3JPH3RefINS_13ShapeSettingsEEcvPS1_Ev(ptr noundef nonnull align 8 dereferenceable(8) %22)
          to label %863 unwind label %1247

863:                                              ; preds = %854
  %864 = getelementptr inbounds { double, double }, ptr %91, i32 0, i32 0
  %865 = load double, ptr %864, align 16
  %866 = getelementptr inbounds { double, double }, ptr %91, i32 0, i32 1
  %867 = load double, ptr %866, align 8
  %868 = getelementptr inbounds { double, double }, ptr %92, i32 0, i32 0
  %869 = load double, ptr %868, align 16
  %870 = getelementptr inbounds { double, double }, ptr %92, i32 0, i32 1
  %871 = load double, ptr %870, align 8
  invoke void @_ZN3JPH21CompoundShapeSettings8AddShapeENS_4Vec3ENS_4QuatEPKNS_13ShapeSettingsEj(ptr noundef nonnull align 8 dereferenceable(88) %836, double %865, double %867, double %869, double %871, ptr noundef %862, i32 noundef 0)
          to label %872 unwind label %1247

872:                                              ; preds = %863
  %873 = invoke noundef ptr @_ZNK3JPH3RefINS_27StaticCompoundShapeSettingsEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %90)
          to label %874 unwind label %1247

874:                                              ; preds = %872
  invoke void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %94, float noundef -1.000000e+00, float noundef 0.000000e+00, float noundef 0.000000e+00)
          to label %875 unwind label %1247

875:                                              ; preds = %874
  %876 = invoke { double, double } @_ZN3JPH4Vec36sAxisZEv()
          to label %877 unwind label %1247

877:                                              ; preds = %875
  %878 = getelementptr inbounds %"class.JPH::Vec3", ptr %96, i32 0, i32 0
  %879 = getelementptr inbounds %union.anon.19, ptr %878, i32 0, i32 0
  %880 = getelementptr inbounds { double, double }, ptr %879, i32 0, i32 0
  %881 = extractvalue { double, double } %876, 0
  store double %881, ptr %880, align 16
  %882 = getelementptr inbounds { double, double }, ptr %879, i32 0, i32 1
  %883 = extractvalue { double, double } %876, 1
  store double %883, ptr %882, align 8
  %884 = invoke noundef float @_ZN3JPH16DegreesToRadiansEf(float noundef -2.000000e+00)
          to label %885 unwind label %1247

885:                                              ; preds = %877
  %886 = getelementptr inbounds { double, double }, ptr %96, i32 0, i32 0
  %887 = load double, ptr %886, align 16
  %888 = getelementptr inbounds { double, double }, ptr %96, i32 0, i32 1
  %889 = load double, ptr %888, align 8
  %890 = invoke { double, double } @_ZN3JPH4Quat9sRotationENS_4Vec3Ef(double %887, double %889, float noundef %884)
          to label %891 unwind label %1247

891:                                              ; preds = %885
  %892 = getelementptr inbounds %"class.JPH::Quat", ptr %95, i32 0, i32 0
  %893 = getelementptr inbounds %"class.JPH::Vec4", ptr %892, i32 0, i32 0
  %894 = getelementptr inbounds %union.anon.20, ptr %893, i32 0, i32 0
  %895 = getelementptr inbounds { double, double }, ptr %894, i32 0, i32 0
  %896 = extractvalue { double, double } %890, 0
  store double %896, ptr %895, align 16
  %897 = getelementptr inbounds { double, double }, ptr %894, i32 0, i32 1
  %898 = extractvalue { double, double } %890, 1
  store double %898, ptr %897, align 8
  %899 = invoke noundef ptr @_ZNK3JPH3RefINS_13ShapeSettingsEEcvPS1_Ev(ptr noundef nonnull align 8 dereferenceable(8) %22)
          to label %900 unwind label %1247

900:                                              ; preds = %891
  %901 = getelementptr inbounds { double, double }, ptr %94, i32 0, i32 0
  %902 = load double, ptr %901, align 16
  %903 = getelementptr inbounds { double, double }, ptr %94, i32 0, i32 1
  %904 = load double, ptr %903, align 8
  %905 = getelementptr inbounds { double, double }, ptr %95, i32 0, i32 0
  %906 = load double, ptr %905, align 16
  %907 = getelementptr inbounds { double, double }, ptr %95, i32 0, i32 1
  %908 = load double, ptr %907, align 8
  invoke void @_ZN3JPH21CompoundShapeSettings8AddShapeENS_4Vec3ENS_4QuatEPKNS_13ShapeSettingsEj(ptr noundef nonnull align 8 dereferenceable(88) %873, double %902, double %904, double %906, double %908, ptr noundef %899, i32 noundef 0)
          to label %909 unwind label %1247

909:                                              ; preds = %900
  %910 = getelementptr inbounds %class.Test, ptr %120, i32 0, i32 3
  %911 = load ptr, ptr %910, align 8, !tbaa !16
  call void @llvm.lifetime.start.p0(i64 256, ptr %97) #11
  %912 = invoke noundef ptr @_ZNK3JPH3RefINS_27StaticCompoundShapeSettingsEEcvPS1_Ev(ptr noundef nonnull align 8 dereferenceable(8) %90)
          to label %913 unwind label %1251

913:                                              ; preds = %909
  invoke void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %98, float noundef 0.000000e+00, float noundef 1.000000e+00, float noundef -4.000000e+00)
          to label %914 unwind label %1251

914:                                              ; preds = %913
  %915 = invoke { double, double } @_ZN3JPH4Quat9sIdentityEv()
          to label %916 unwind label %1251

916:                                              ; preds = %914
  %917 = getelementptr inbounds %"class.JPH::Quat", ptr %99, i32 0, i32 0
  %918 = getelementptr inbounds %"class.JPH::Vec4", ptr %917, i32 0, i32 0
  %919 = getelementptr inbounds %union.anon.20, ptr %918, i32 0, i32 0
  %920 = getelementptr inbounds { double, double }, ptr %919, i32 0, i32 0
  %921 = extractvalue { double, double } %915, 0
  store double %921, ptr %920, align 16
  %922 = getelementptr inbounds { double, double }, ptr %919, i32 0, i32 1
  %923 = extractvalue { double, double } %915, 1
  store double %923, ptr %922, align 8
  %924 = getelementptr inbounds { double, double }, ptr %98, i32 0, i32 0
  %925 = load double, ptr %924, align 16
  %926 = getelementptr inbounds { double, double }, ptr %98, i32 0, i32 1
  %927 = load double, ptr %926, align 8
  %928 = getelementptr inbounds { double, double }, ptr %99, i32 0, i32 0
  %929 = load double, ptr %928, align 16
  %930 = getelementptr inbounds { double, double }, ptr %99, i32 0, i32 1
  %931 = load double, ptr %930, align 8
  invoke void @_ZN3JPH20BodyCreationSettingsC2EPKNS_13ShapeSettingsENS_4Vec3ENS_4QuatENS_11EMotionTypeEt(ptr noundef nonnull align 16 dereferenceable(256) %97, ptr noundef %912, double %925, double %927, double %929, double %931, i8 noundef zeroext 0, i16 noundef zeroext 0)
          to label %932 unwind label %1251

932:                                              ; preds = %916
  %933 = invoke i32 @_ZN3JPH13BodyInterface16CreateAndAddBodyERKNS_20BodyCreationSettingsENS_11EActivationE(ptr noundef nonnull align 8 dereferenceable(24) %911, ptr noundef nonnull align 16 dereferenceable(256) %97, i32 noundef 1)
          to label %934 unwind label %1255

934:                                              ; preds = %932
  %935 = getelementptr inbounds %"class.JPH::BodyID", ptr %100, i32 0, i32 0
  store i32 %933, ptr %935, align 4
  call void @_ZN3JPH20BodyCreationSettingsD2Ev(ptr noundef nonnull align 16 dereferenceable(256) %97) #11
  call void @llvm.lifetime.end.p0(i64 256, ptr %97) #11
  call void @llvm.lifetime.start.p0(i64 256, ptr %101) #11
  %936 = invoke noundef ptr @_ZNK3JPH8RefConstINS_13ShapeSettingsEEcvPKS1_Ev(ptr noundef nonnull align 8 dereferenceable(8) %48)
          to label %937 unwind label %1260

937:                                              ; preds = %934
  invoke void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %102, float noundef 0.000000e+00, float noundef 4.000000e+00, float noundef -4.000000e+00)
          to label %938 unwind label %1260

938:                                              ; preds = %937
  %939 = invoke { double, double } @_ZN3JPH4Quat9sIdentityEv()
          to label %940 unwind label %1260

940:                                              ; preds = %938
  %941 = getelementptr inbounds %"class.JPH::Quat", ptr %103, i32 0, i32 0
  %942 = getelementptr inbounds %"class.JPH::Vec4", ptr %941, i32 0, i32 0
  %943 = getelementptr inbounds %union.anon.20, ptr %942, i32 0, i32 0
  %944 = getelementptr inbounds { double, double }, ptr %943, i32 0, i32 0
  %945 = extractvalue { double, double } %939, 0
  store double %945, ptr %944, align 16
  %946 = getelementptr inbounds { double, double }, ptr %943, i32 0, i32 1
  %947 = extractvalue { double, double } %939, 1
  store double %947, ptr %946, align 8
  %948 = getelementptr inbounds { double, double }, ptr %102, i32 0, i32 0
  %949 = load double, ptr %948, align 16
  %950 = getelementptr inbounds { double, double }, ptr %102, i32 0, i32 1
  %951 = load double, ptr %950, align 8
  %952 = getelementptr inbounds { double, double }, ptr %103, i32 0, i32 0
  %953 = load double, ptr %952, align 16
  %954 = getelementptr inbounds { double, double }, ptr %103, i32 0, i32 1
  %955 = load double, ptr %954, align 8
  invoke void @_ZN3JPH20BodyCreationSettingsC2EPKNS_13ShapeSettingsENS_4Vec3ENS_4QuatENS_11EMotionTypeEt(ptr noundef nonnull align 16 dereferenceable(256) %101, ptr noundef %936, double %949, double %951, double %953, double %955, i8 noundef zeroext 2, i16 noundef zeroext 1)
          to label %956 unwind label %1260

956:                                              ; preds = %940
  %957 = getelementptr inbounds %"class.JPH::BodyCreationSettings", ptr %101, i32 0, i32 16
  store i8 0, ptr %957, align 1, !tbaa !24
  %958 = getelementptr inbounds %class.Test, ptr %120, i32 0, i32 3
  %959 = load ptr, ptr %958, align 8, !tbaa !16
  %960 = invoke i32 @_ZN3JPH13BodyInterface16CreateAndAddBodyERKNS_20BodyCreationSettingsENS_11EActivationE(ptr noundef nonnull align 8 dereferenceable(24) %959, ptr noundef nonnull align 16 dereferenceable(256) %101, i32 noundef 0)
          to label %961 unwind label %1264

961:                                              ; preds = %956
  %962 = getelementptr inbounds %"class.JPH::BodyID", ptr %104, i32 0, i32 0
  store i32 %960, ptr %962, align 4
  call void @_ZN3JPH20BodyCreationSettingsD2Ev(ptr noundef nonnull align 16 dereferenceable(256) %101) #11
  call void @llvm.lifetime.end.p0(i64 256, ptr %101) #11
  call void @_ZN3JPH3RefINS_27StaticCompoundShapeSettingsEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %90) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %90) #11
  call void @llvm.lifetime.start.p0(i64 8, ptr %105) #11
  %963 = invoke noundef ptr @_ZN3JPH27StaticCompoundShapeSettingsnwEm(i64 noundef 88)
          to label %964 unwind label %1271

964:                                              ; preds = %961
  call void @llvm.memset.p0.i64(ptr align 8 %963, i8 0, i64 88, i1 false)
  invoke void @_ZN3JPH27StaticCompoundShapeSettingsC2Ev(ptr noundef nonnull align 8 dereferenceable(88) %963)
          to label %965 unwind label %1275

965:                                              ; preds = %964
  invoke void @_ZN3JPH3RefINS_27StaticCompoundShapeSettingsEEC2EPS1_(ptr noundef nonnull align 8 dereferenceable(8) %105, ptr noundef %963)
          to label %966 unwind label %1271

966:                                              ; preds = %965
  %967 = invoke noundef ptr @_ZNK3JPH3RefINS_27StaticCompoundShapeSettingsEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %105)
          to label %968 unwind label %1279

968:                                              ; preds = %966
  invoke void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %106, float noundef 1.000000e+00, float noundef 0.000000e+00, float noundef 0.000000e+00)
          to label %969 unwind label %1279

969:                                              ; preds = %968
  %970 = invoke { double, double } @_ZN3JPH4Vec36sAxisZEv()
          to label %971 unwind label %1279

971:                                              ; preds = %969
  %972 = getelementptr inbounds %"class.JPH::Vec3", ptr %108, i32 0, i32 0
  %973 = getelementptr inbounds %union.anon.19, ptr %972, i32 0, i32 0
  %974 = getelementptr inbounds { double, double }, ptr %973, i32 0, i32 0
  %975 = extractvalue { double, double } %970, 0
  store double %975, ptr %974, align 16
  %976 = getelementptr inbounds { double, double }, ptr %973, i32 0, i32 1
  %977 = extractvalue { double, double } %970, 1
  store double %977, ptr %976, align 8
  %978 = invoke noundef float @_ZN3JPH16DegreesToRadiansEf(float noundef 3.000000e+00)
          to label %979 unwind label %1279

979:                                              ; preds = %971
  %980 = getelementptr inbounds { double, double }, ptr %108, i32 0, i32 0
  %981 = load double, ptr %980, align 16
  %982 = getelementptr inbounds { double, double }, ptr %108, i32 0, i32 1
  %983 = load double, ptr %982, align 8
  %984 = invoke { double, double } @_ZN3JPH4Quat9sRotationENS_4Vec3Ef(double %981, double %983, float noundef %978)
          to label %985 unwind label %1279

985:                                              ; preds = %979
  %986 = getelementptr inbounds %"class.JPH::Quat", ptr %107, i32 0, i32 0
  %987 = getelementptr inbounds %"class.JPH::Vec4", ptr %986, i32 0, i32 0
  %988 = getelementptr inbounds %union.anon.20, ptr %987, i32 0, i32 0
  %989 = getelementptr inbounds { double, double }, ptr %988, i32 0, i32 0
  %990 = extractvalue { double, double } %984, 0
  store double %990, ptr %989, align 16
  %991 = getelementptr inbounds { double, double }, ptr %988, i32 0, i32 1
  %992 = extractvalue { double, double } %984, 1
  store double %992, ptr %991, align 8
  %993 = invoke noundef ptr @_ZNK3JPH3RefINS_13ShapeSettingsEEcvPS1_Ev(ptr noundef nonnull align 8 dereferenceable(8) %22)
          to label %994 unwind label %1279

994:                                              ; preds = %985
  %995 = getelementptr inbounds { double, double }, ptr %106, i32 0, i32 0
  %996 = load double, ptr %995, align 16
  %997 = getelementptr inbounds { double, double }, ptr %106, i32 0, i32 1
  %998 = load double, ptr %997, align 8
  %999 = getelementptr inbounds { double, double }, ptr %107, i32 0, i32 0
  %1000 = load double, ptr %999, align 16
  %1001 = getelementptr inbounds { double, double }, ptr %107, i32 0, i32 1
  %1002 = load double, ptr %1001, align 8
  invoke void @_ZN3JPH21CompoundShapeSettings8AddShapeENS_4Vec3ENS_4QuatEPKNS_13ShapeSettingsEj(ptr noundef nonnull align 8 dereferenceable(88) %967, double %996, double %998, double %1000, double %1002, ptr noundef %993, i32 noundef 0)
          to label %1003 unwind label %1279

1003:                                             ; preds = %994
  %1004 = invoke noundef ptr @_ZNK3JPH3RefINS_27StaticCompoundShapeSettingsEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %105)
          to label %1005 unwind label %1279

1005:                                             ; preds = %1003
  invoke void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %109, float noundef -1.000000e+00, float noundef 0.000000e+00, float noundef 0.000000e+00)
          to label %1006 unwind label %1279

1006:                                             ; preds = %1005
  %1007 = invoke { double, double } @_ZN3JPH4Vec36sAxisZEv()
          to label %1008 unwind label %1279

1008:                                             ; preds = %1006
  %1009 = getelementptr inbounds %"class.JPH::Vec3", ptr %111, i32 0, i32 0
  %1010 = getelementptr inbounds %union.anon.19, ptr %1009, i32 0, i32 0
  %1011 = getelementptr inbounds { double, double }, ptr %1010, i32 0, i32 0
  %1012 = extractvalue { double, double } %1007, 0
  store double %1012, ptr %1011, align 16
  %1013 = getelementptr inbounds { double, double }, ptr %1010, i32 0, i32 1
  %1014 = extractvalue { double, double } %1007, 1
  store double %1014, ptr %1013, align 8
  %1015 = invoke noundef float @_ZN3JPH16DegreesToRadiansEf(float noundef -3.000000e+00)
          to label %1016 unwind label %1279

1016:                                             ; preds = %1008
  %1017 = getelementptr inbounds { double, double }, ptr %111, i32 0, i32 0
  %1018 = load double, ptr %1017, align 16
  %1019 = getelementptr inbounds { double, double }, ptr %111, i32 0, i32 1
  %1020 = load double, ptr %1019, align 8
  %1021 = invoke { double, double } @_ZN3JPH4Quat9sRotationENS_4Vec3Ef(double %1018, double %1020, float noundef %1015)
          to label %1022 unwind label %1279

1022:                                             ; preds = %1016
  %1023 = getelementptr inbounds %"class.JPH::Quat", ptr %110, i32 0, i32 0
  %1024 = getelementptr inbounds %"class.JPH::Vec4", ptr %1023, i32 0, i32 0
  %1025 = getelementptr inbounds %union.anon.20, ptr %1024, i32 0, i32 0
  %1026 = getelementptr inbounds { double, double }, ptr %1025, i32 0, i32 0
  %1027 = extractvalue { double, double } %1021, 0
  store double %1027, ptr %1026, align 16
  %1028 = getelementptr inbounds { double, double }, ptr %1025, i32 0, i32 1
  %1029 = extractvalue { double, double } %1021, 1
  store double %1029, ptr %1028, align 8
  %1030 = invoke noundef ptr @_ZNK3JPH3RefINS_13ShapeSettingsEEcvPS1_Ev(ptr noundef nonnull align 8 dereferenceable(8) %22)
          to label %1031 unwind label %1279

1031:                                             ; preds = %1022
  %1032 = getelementptr inbounds { double, double }, ptr %109, i32 0, i32 0
  %1033 = load double, ptr %1032, align 16
  %1034 = getelementptr inbounds { double, double }, ptr %109, i32 0, i32 1
  %1035 = load double, ptr %1034, align 8
  %1036 = getelementptr inbounds { double, double }, ptr %110, i32 0, i32 0
  %1037 = load double, ptr %1036, align 16
  %1038 = getelementptr inbounds { double, double }, ptr %110, i32 0, i32 1
  %1039 = load double, ptr %1038, align 8
  invoke void @_ZN3JPH21CompoundShapeSettings8AddShapeENS_4Vec3ENS_4QuatEPKNS_13ShapeSettingsEj(ptr noundef nonnull align 8 dereferenceable(88) %1004, double %1033, double %1035, double %1037, double %1039, ptr noundef %1030, i32 noundef 0)
          to label %1040 unwind label %1279

1040:                                             ; preds = %1031
  %1041 = getelementptr inbounds %class.Test, ptr %120, i32 0, i32 3
  %1042 = load ptr, ptr %1041, align 8, !tbaa !16
  call void @llvm.lifetime.start.p0(i64 256, ptr %112) #11
  %1043 = invoke noundef ptr @_ZNK3JPH3RefINS_27StaticCompoundShapeSettingsEEcvPS1_Ev(ptr noundef nonnull align 8 dereferenceable(8) %105)
          to label %1044 unwind label %1283

1044:                                             ; preds = %1040
  invoke void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %113, float noundef 0.000000e+00, float noundef 1.000000e+00, float noundef -8.000000e+00)
          to label %1045 unwind label %1283

1045:                                             ; preds = %1044
  %1046 = invoke { double, double } @_ZN3JPH4Quat9sIdentityEv()
          to label %1047 unwind label %1283

1047:                                             ; preds = %1045
  %1048 = getelementptr inbounds %"class.JPH::Quat", ptr %114, i32 0, i32 0
  %1049 = getelementptr inbounds %"class.JPH::Vec4", ptr %1048, i32 0, i32 0
  %1050 = getelementptr inbounds %union.anon.20, ptr %1049, i32 0, i32 0
  %1051 = getelementptr inbounds { double, double }, ptr %1050, i32 0, i32 0
  %1052 = extractvalue { double, double } %1046, 0
  store double %1052, ptr %1051, align 16
  %1053 = getelementptr inbounds { double, double }, ptr %1050, i32 0, i32 1
  %1054 = extractvalue { double, double } %1046, 1
  store double %1054, ptr %1053, align 8
  %1055 = getelementptr inbounds { double, double }, ptr %113, i32 0, i32 0
  %1056 = load double, ptr %1055, align 16
  %1057 = getelementptr inbounds { double, double }, ptr %113, i32 0, i32 1
  %1058 = load double, ptr %1057, align 8
  %1059 = getelementptr inbounds { double, double }, ptr %114, i32 0, i32 0
  %1060 = load double, ptr %1059, align 16
  %1061 = getelementptr inbounds { double, double }, ptr %114, i32 0, i32 1
  %1062 = load double, ptr %1061, align 8
  invoke void @_ZN3JPH20BodyCreationSettingsC2EPKNS_13ShapeSettingsENS_4Vec3ENS_4QuatENS_11EMotionTypeEt(ptr noundef nonnull align 16 dereferenceable(256) %112, ptr noundef %1043, double %1056, double %1058, double %1060, double %1062, i8 noundef zeroext 0, i16 noundef zeroext 0)
          to label %1063 unwind label %1283

1063:                                             ; preds = %1047
  %1064 = invoke i32 @_ZN3JPH13BodyInterface16CreateAndAddBodyERKNS_20BodyCreationSettingsENS_11EActivationE(ptr noundef nonnull align 8 dereferenceable(24) %1042, ptr noundef nonnull align 16 dereferenceable(256) %112, i32 noundef 1)
          to label %1065 unwind label %1287

1065:                                             ; preds = %1063
  %1066 = getelementptr inbounds %"class.JPH::BodyID", ptr %115, i32 0, i32 0
  store i32 %1064, ptr %1066, align 4
  call void @_ZN3JPH20BodyCreationSettingsD2Ev(ptr noundef nonnull align 16 dereferenceable(256) %112) #11
  call void @llvm.lifetime.end.p0(i64 256, ptr %112) #11
  call void @llvm.lifetime.start.p0(i64 256, ptr %116) #11
  %1067 = invoke noundef ptr @_ZNK3JPH8RefConstINS_13ShapeSettingsEEcvPKS1_Ev(ptr noundef nonnull align 8 dereferenceable(8) %48)
          to label %1068 unwind label %1292

1068:                                             ; preds = %1065
  invoke void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %117, float noundef 0.000000e+00, float noundef 4.000000e+00, float noundef -8.000000e+00)
          to label %1069 unwind label %1292

1069:                                             ; preds = %1068
  %1070 = invoke { double, double } @_ZN3JPH4Quat9sIdentityEv()
          to label %1071 unwind label %1292

1071:                                             ; preds = %1069
  %1072 = getelementptr inbounds %"class.JPH::Quat", ptr %118, i32 0, i32 0
  %1073 = getelementptr inbounds %"class.JPH::Vec4", ptr %1072, i32 0, i32 0
  %1074 = getelementptr inbounds %union.anon.20, ptr %1073, i32 0, i32 0
  %1075 = getelementptr inbounds { double, double }, ptr %1074, i32 0, i32 0
  %1076 = extractvalue { double, double } %1070, 0
  store double %1076, ptr %1075, align 16
  %1077 = getelementptr inbounds { double, double }, ptr %1074, i32 0, i32 1
  %1078 = extractvalue { double, double } %1070, 1
  store double %1078, ptr %1077, align 8
  %1079 = getelementptr inbounds { double, double }, ptr %117, i32 0, i32 0
  %1080 = load double, ptr %1079, align 16
  %1081 = getelementptr inbounds { double, double }, ptr %117, i32 0, i32 1
  %1082 = load double, ptr %1081, align 8
  %1083 = getelementptr inbounds { double, double }, ptr %118, i32 0, i32 0
  %1084 = load double, ptr %1083, align 16
  %1085 = getelementptr inbounds { double, double }, ptr %118, i32 0, i32 1
  %1086 = load double, ptr %1085, align 8
  invoke void @_ZN3JPH20BodyCreationSettingsC2EPKNS_13ShapeSettingsENS_4Vec3ENS_4QuatENS_11EMotionTypeEt(ptr noundef nonnull align 16 dereferenceable(256) %116, ptr noundef %1067, double %1080, double %1082, double %1084, double %1086, i8 noundef zeroext 2, i16 noundef zeroext 1)
          to label %1087 unwind label %1292

1087:                                             ; preds = %1071
  %1088 = getelementptr inbounds %"class.JPH::BodyCreationSettings", ptr %116, i32 0, i32 16
  store i8 0, ptr %1088, align 1, !tbaa !24
  %1089 = getelementptr inbounds %class.Test, ptr %120, i32 0, i32 3
  %1090 = load ptr, ptr %1089, align 8, !tbaa !16
  %1091 = invoke i32 @_ZN3JPH13BodyInterface16CreateAndAddBodyERKNS_20BodyCreationSettingsENS_11EActivationE(ptr noundef nonnull align 8 dereferenceable(24) %1090, ptr noundef nonnull align 16 dereferenceable(256) %116, i32 noundef 0)
          to label %1092 unwind label %1296

1092:                                             ; preds = %1087
  %1093 = getelementptr inbounds %"class.JPH::BodyID", ptr %119, i32 0, i32 0
  store i32 %1091, ptr %1093, align 4
  call void @_ZN3JPH20BodyCreationSettingsD2Ev(ptr noundef nonnull align 16 dereferenceable(256) %116) #11
  call void @llvm.lifetime.end.p0(i64 256, ptr %116) #11
  call void @_ZN3JPH3RefINS_27StaticCompoundShapeSettingsEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %105) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %105) #11
  call void @_ZN3JPH8RefConstINS_13ShapeSettingsEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %48) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %48) #11
  call void @_ZN3JPH3RefINS_27StaticCompoundShapeSettingsEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %30) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %30) #11
  call void @_ZN3JPH3RefINS_13ShapeSettingsEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %22) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %22) #11
  call void @_ZN3JPH5ArrayINS_8RefConstINS_15PhysicsMaterialEEENS_12STLAllocatorIS3_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %20) #11
  call void @llvm.lifetime.end.p0(i64 24, ptr %20) #11
  call void @_ZN3JPH5ArrayINS_8TriangleENS_12STLAllocatorIS1_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %4) #11
  call void @llvm.lifetime.end.p0(i64 24, ptr %4) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr %3) #11
  ret void

1094:                                             ; preds = %214, %212
  %1095 = landingpad { ptr, i32 }
          cleanup
  %1096 = extractvalue { ptr, i32 } %1095, 0
  store ptr %1096, ptr %13, align 8
  %1097 = extractvalue { ptr, i32 } %1095, 1
  store i32 %1097, ptr %14, align 4
  br label %1102

1098:                                             ; preds = %215
  %1099 = landingpad { ptr, i32 }
          cleanup
  %1100 = extractvalue { ptr, i32 } %1099, 0
  store ptr %1100, ptr %13, align 8
  %1101 = extractvalue { ptr, i32 } %1099, 1
  store i32 %1101, ptr %14, align 4
  call void @_ZN3JPH8RefConstINS_15PhysicsMaterialEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %21) #11
  br label %1102

1102:                                             ; preds = %1098, %1094
  call void @llvm.lifetime.end.p0(i64 8, ptr %21) #11
  br label %1309

1103:                                             ; preds = %216
  %1104 = landingpad { ptr, i32 }
          cleanup
  %1105 = extractvalue { ptr, i32 } %1104, 0
  store ptr %1105, ptr %13, align 8
  %1106 = extractvalue { ptr, i32 } %1104, 1
  store i32 %1106, ptr %14, align 4
  br label %1308

1107:                                             ; preds = %219, %218
  %1108 = landingpad { ptr, i32 }
          cleanup
  %1109 = extractvalue { ptr, i32 } %1108, 0
  store ptr %1109, ptr %13, align 8
  %1110 = extractvalue { ptr, i32 } %1108, 1
  store i32 %1110, ptr %14, align 4
  call void @_ZN3JPH5ArrayINS_8RefConstINS_15PhysicsMaterialEEENS_12STLAllocatorIS3_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %23) #11
  %1111 = load i1, ptr %24, align 1
  br i1 %1111, label %1112, label %1113

1112:                                             ; preds = %1107
  call void @_ZN3JPH17MeshShapeSettingsdlEPv(ptr noundef %217) #11
  br label %1113

1113:                                             ; preds = %1112, %1107
  br label %1308

1114:                                             ; preds = %249, %241, %239, %220
  %1115 = landingpad { ptr, i32 }
          cleanup
  %1116 = extractvalue { ptr, i32 } %1115, 0
  store ptr %1116, ptr %13, align 8
  %1117 = extractvalue { ptr, i32 } %1115, 1
  store i32 %1117, ptr %14, align 4
  br label %1126

1118:                                             ; preds = %228, %226, %224
  %1119 = landingpad { ptr, i32 }
          cleanup
  %1120 = extractvalue { ptr, i32 } %1119, 0
  store ptr %1120, ptr %13, align 8
  %1121 = extractvalue { ptr, i32 } %1119, 1
  store i32 %1121, ptr %14, align 4
  call void @_ZN3JPH19ScaledShapeSettingsdlEPv(ptr noundef %223) #11
  br label %1126

1122:                                             ; preds = %265
  %1123 = landingpad { ptr, i32 }
          cleanup
  %1124 = extractvalue { ptr, i32 } %1123, 0
  store ptr %1124, ptr %13, align 8
  %1125 = extractvalue { ptr, i32 } %1123, 1
  store i32 %1125, ptr %14, align 4
  call void @_ZN3JPH20BodyCreationSettingsD2Ev(ptr noundef nonnull align 16 dereferenceable(256) %25) #11
  br label %1126

1126:                                             ; preds = %1122, %1118, %1114
  call void @llvm.lifetime.end.p0(i64 256, ptr %25) #11
  br label %1307

1127:                                             ; preds = %271, %267
  %1128 = landingpad { ptr, i32 }
          cleanup
  %1129 = extractvalue { ptr, i32 } %1128, 0
  store ptr %1129, ptr %13, align 8
  %1130 = extractvalue { ptr, i32 } %1128, 1
  store i32 %1130, ptr %14, align 4
  br label %1306

1131:                                             ; preds = %270
  %1132 = landingpad { ptr, i32 }
          cleanup
  %1133 = extractvalue { ptr, i32 } %1132, 0
  store ptr %1133, ptr %13, align 8
  %1134 = extractvalue { ptr, i32 } %1132, 1
  store i32 %1134, ptr %14, align 4
  call void @_ZN3JPH27StaticCompoundShapeSettingsdlEPv(ptr noundef %269) #11
  br label %1306

1135:                                             ; preds = %461, %452, %440, %438, %437, %435, %426, %417, %405, %403, %402, %400, %391, %382, %370, %368, %367, %365, %356, %347, %335, %333, %332, %330, %321, %312, %310, %309, %307, %298, %289, %277, %275, %274, %272
  %1136 = landingpad { ptr, i32 }
          cleanup
  %1137 = extractvalue { ptr, i32 } %1136, 0
  store ptr %1137, ptr %13, align 8
  %1138 = extractvalue { ptr, i32 } %1136, 1
  store i32 %1138, ptr %14, align 4
  br label %1305

1139:                                             ; preds = %478, %470
  %1140 = landingpad { ptr, i32 }
          cleanup
  %1141 = extractvalue { ptr, i32 } %1140, 0
  store ptr %1141, ptr %13, align 8
  %1142 = extractvalue { ptr, i32 } %1140, 1
  store i32 %1142, ptr %14, align 4
  br label %1304

1143:                                             ; preds = %473, %472
  %1144 = landingpad { ptr, i32 }
          cleanup
  %1145 = extractvalue { ptr, i32 } %1144, 0
  store ptr %1145, ptr %13, align 8
  %1146 = extractvalue { ptr, i32 } %1144, 1
  store i32 %1146, ptr %14, align 4
  call void @_ZN3JPH16BoxShapeSettingsdlEPv(ptr noundef %471) #11
  br label %1304

1147:                                             ; preds = %482, %479
  %1148 = landingpad { ptr, i32 }
          cleanup
  %1149 = extractvalue { ptr, i32 } %1148, 0
  store ptr %1149, ptr %13, align 8
  %1150 = extractvalue { ptr, i32 } %1148, 1
  store i32 %1150, ptr %14, align 4
  br label %1192

1151:                                             ; preds = %481
  %1152 = landingpad { ptr, i32 }
          cleanup
  %1153 = extractvalue { ptr, i32 } %1152, 0
  store ptr %1153, ptr %13, align 8
  %1154 = extractvalue { ptr, i32 } %1152, 1
  store i32 %1154, ptr %14, align 4
  call void @_ZN3JPH27StaticCompoundShapeSettingsdlEPv(ptr noundef %480) #11
  br label %1192

1155:                                             ; preds = %543, %534, %532, %531, %529, %520, %511, %509, %508, %506, %497, %488, %486, %485, %483
  %1156 = landingpad { ptr, i32 }
          cleanup
  %1157 = extractvalue { ptr, i32 } %1156, 0
  store ptr %1157, ptr %13, align 8
  %1158 = extractvalue { ptr, i32 } %1156, 1
  store i32 %1158, ptr %14, align 4
  br label %1191

1159:                                             ; preds = %555, %552
  %1160 = landingpad { ptr, i32 }
          cleanup
  %1161 = extractvalue { ptr, i32 } %1160, 0
  store ptr %1161, ptr %13, align 8
  %1162 = extractvalue { ptr, i32 } %1160, 1
  store i32 %1162, ptr %14, align 4
  br label %1190

1163:                                             ; preds = %554
  %1164 = landingpad { ptr, i32 }
          cleanup
  %1165 = extractvalue { ptr, i32 } %1164, 0
  store ptr %1165, ptr %13, align 8
  %1166 = extractvalue { ptr, i32 } %1164, 1
  store i32 %1166, ptr %14, align 4
  call void @_ZN3JPH27StaticCompoundShapeSettingsdlEPv(ptr noundef %553) #11
  br label %1190

1167:                                             ; preds = %616, %607, %605, %604, %602, %593, %584, %582, %581, %579, %570, %561, %559, %558, %556
  %1168 = landingpad { ptr, i32 }
          cleanup
  %1169 = extractvalue { ptr, i32 } %1168, 0
  store ptr %1169, ptr %13, align 8
  %1170 = extractvalue { ptr, i32 } %1168, 1
  store i32 %1170, ptr %14, align 4
  br label %1189

1171:                                             ; preds = %632, %630, %629, %625
  %1172 = landingpad { ptr, i32 }
          cleanup
  %1173 = extractvalue { ptr, i32 } %1172, 0
  store ptr %1173, ptr %13, align 8
  %1174 = extractvalue { ptr, i32 } %1172, 1
  store i32 %1174, ptr %14, align 4
  br label %1179

1175:                                             ; preds = %648
  %1176 = landingpad { ptr, i32 }
          cleanup
  %1177 = extractvalue { ptr, i32 } %1176, 0
  store ptr %1177, ptr %13, align 8
  %1178 = extractvalue { ptr, i32 } %1176, 1
  store i32 %1178, ptr %14, align 4
  call void @_ZN3JPH20BodyCreationSettingsD2Ev(ptr noundef nonnull align 16 dereferenceable(256) %64) #11
  br label %1179

1179:                                             ; preds = %1175, %1171
  call void @llvm.lifetime.end.p0(i64 256, ptr %64) #11
  br label %1189

1180:                                             ; preds = %656, %654, %653, %650
  %1181 = landingpad { ptr, i32 }
          cleanup
  %1182 = extractvalue { ptr, i32 } %1181, 0
  store ptr %1182, ptr %13, align 8
  %1183 = extractvalue { ptr, i32 } %1181, 1
  store i32 %1183, ptr %14, align 4
  br label %1188

1184:                                             ; preds = %672
  %1185 = landingpad { ptr, i32 }
          cleanup
  %1186 = extractvalue { ptr, i32 } %1185, 0
  store ptr %1186, ptr %13, align 8
  %1187 = extractvalue { ptr, i32 } %1185, 1
  store i32 %1187, ptr %14, align 4
  call void @_ZN3JPH20BodyCreationSettingsD2Ev(ptr noundef nonnull align 16 dereferenceable(256) %68) #11
  br label %1188

1188:                                             ; preds = %1184, %1180
  call void @llvm.lifetime.end.p0(i64 256, ptr %68) #11
  br label %1189

1189:                                             ; preds = %1188, %1179, %1167
  call void @_ZN3JPH3RefINS_27StaticCompoundShapeSettingsEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %57) #11
  br label %1190

1190:                                             ; preds = %1189, %1163, %1159
  call void @llvm.lifetime.end.p0(i64 8, ptr %57) #11
  br label %1191

1191:                                             ; preds = %1190, %1155
  call void @_ZN3JPH3RefINS_27StaticCompoundShapeSettingsEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %50) #11
  br label %1192

1192:                                             ; preds = %1191, %1151, %1147
  call void @llvm.lifetime.end.p0(i64 8, ptr %50) #11
  br label %1303

1193:                                             ; preds = %681, %677
  %1194 = landingpad { ptr, i32 }
          cleanup
  %1195 = extractvalue { ptr, i32 } %1194, 0
  store ptr %1195, ptr %13, align 8
  %1196 = extractvalue { ptr, i32 } %1194, 1
  store i32 %1196, ptr %14, align 4
  br label %1238

1197:                                             ; preds = %680
  %1198 = landingpad { ptr, i32 }
          cleanup
  %1199 = extractvalue { ptr, i32 } %1198, 0
  store ptr %1199, ptr %13, align 8
  %1200 = extractvalue { ptr, i32 } %1198, 1
  store i32 %1200, ptr %14, align 4
  call void @_ZN3JPH27StaticCompoundShapeSettingsdlEPv(ptr noundef %679) #11
  br label %1238

1201:                                             ; preds = %719, %710, %708, %707, %705, %696, %687, %685, %684, %682
  %1202 = landingpad { ptr, i32 }
          cleanup
  %1203 = extractvalue { ptr, i32 } %1202, 0
  store ptr %1203, ptr %13, align 8
  %1204 = extractvalue { ptr, i32 } %1202, 1
  store i32 %1204, ptr %14, align 4
  br label %1237

1205:                                             ; preds = %731, %728
  %1206 = landingpad { ptr, i32 }
          cleanup
  %1207 = extractvalue { ptr, i32 } %1206, 0
  store ptr %1207, ptr %13, align 8
  %1208 = extractvalue { ptr, i32 } %1206, 1
  store i32 %1208, ptr %14, align 4
  br label %1236

1209:                                             ; preds = %730
  %1210 = landingpad { ptr, i32 }
          cleanup
  %1211 = extractvalue { ptr, i32 } %1210, 0
  store ptr %1211, ptr %13, align 8
  %1212 = extractvalue { ptr, i32 } %1210, 1
  store i32 %1212, ptr %14, align 4
  call void @_ZN3JPH27StaticCompoundShapeSettingsdlEPv(ptr noundef %729) #11
  br label %1236

1213:                                             ; preds = %769, %760, %758, %757, %755, %746, %737, %735, %734, %732
  %1214 = landingpad { ptr, i32 }
          cleanup
  %1215 = extractvalue { ptr, i32 } %1214, 0
  store ptr %1215, ptr %13, align 8
  %1216 = extractvalue { ptr, i32 } %1214, 1
  store i32 %1216, ptr %14, align 4
  br label %1235

1217:                                             ; preds = %785, %783, %782, %778
  %1218 = landingpad { ptr, i32 }
          cleanup
  %1219 = extractvalue { ptr, i32 } %1218, 0
  store ptr %1219, ptr %13, align 8
  %1220 = extractvalue { ptr, i32 } %1218, 1
  store i32 %1220, ptr %14, align 4
  br label %1225

1221:                                             ; preds = %801
  %1222 = landingpad { ptr, i32 }
          cleanup
  %1223 = extractvalue { ptr, i32 } %1222, 0
  store ptr %1223, ptr %13, align 8
  %1224 = extractvalue { ptr, i32 } %1222, 1
  store i32 %1224, ptr %14, align 4
  call void @_ZN3JPH20BodyCreationSettingsD2Ev(ptr noundef nonnull align 16 dereferenceable(256) %82) #11
  br label %1225

1225:                                             ; preds = %1221, %1217
  call void @llvm.lifetime.end.p0(i64 256, ptr %82) #11
  br label %1235

1226:                                             ; preds = %809, %807, %806, %803
  %1227 = landingpad { ptr, i32 }
          cleanup
  %1228 = extractvalue { ptr, i32 } %1227, 0
  store ptr %1228, ptr %13, align 8
  %1229 = extractvalue { ptr, i32 } %1227, 1
  store i32 %1229, ptr %14, align 4
  br label %1234

1230:                                             ; preds = %825
  %1231 = landingpad { ptr, i32 }
          cleanup
  %1232 = extractvalue { ptr, i32 } %1231, 0
  store ptr %1232, ptr %13, align 8
  %1233 = extractvalue { ptr, i32 } %1231, 1
  store i32 %1233, ptr %14, align 4
  call void @_ZN3JPH20BodyCreationSettingsD2Ev(ptr noundef nonnull align 16 dereferenceable(256) %86) #11
  br label %1234

1234:                                             ; preds = %1230, %1226
  call void @llvm.lifetime.end.p0(i64 256, ptr %86) #11
  br label %1235

1235:                                             ; preds = %1234, %1225, %1213
  call void @_ZN3JPH3RefINS_27StaticCompoundShapeSettingsEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %77) #11
  br label %1236

1236:                                             ; preds = %1235, %1209, %1205
  call void @llvm.lifetime.end.p0(i64 8, ptr %77) #11
  br label %1237

1237:                                             ; preds = %1236, %1201
  call void @_ZN3JPH3RefINS_27StaticCompoundShapeSettingsEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %72) #11
  br label %1238

1238:                                             ; preds = %1237, %1197, %1193
  call void @llvm.lifetime.end.p0(i64 8, ptr %72) #11
  br label %1303

1239:                                             ; preds = %834, %830
  %1240 = landingpad { ptr, i32 }
          cleanup
  %1241 = extractvalue { ptr, i32 } %1240, 0
  store ptr %1241, ptr %13, align 8
  %1242 = extractvalue { ptr, i32 } %1240, 1
  store i32 %1242, ptr %14, align 4
  br label %1270

1243:                                             ; preds = %833
  %1244 = landingpad { ptr, i32 }
          cleanup
  %1245 = extractvalue { ptr, i32 } %1244, 0
  store ptr %1245, ptr %13, align 8
  %1246 = extractvalue { ptr, i32 } %1244, 1
  store i32 %1246, ptr %14, align 4
  call void @_ZN3JPH27StaticCompoundShapeSettingsdlEPv(ptr noundef %832) #11
  br label %1270

1247:                                             ; preds = %900, %891, %885, %877, %875, %874, %872, %863, %854, %848, %840, %838, %837, %835
  %1248 = landingpad { ptr, i32 }
          cleanup
  %1249 = extractvalue { ptr, i32 } %1248, 0
  store ptr %1249, ptr %13, align 8
  %1250 = extractvalue { ptr, i32 } %1248, 1
  store i32 %1250, ptr %14, align 4
  br label %1269

1251:                                             ; preds = %916, %914, %913, %909
  %1252 = landingpad { ptr, i32 }
          cleanup
  %1253 = extractvalue { ptr, i32 } %1252, 0
  store ptr %1253, ptr %13, align 8
  %1254 = extractvalue { ptr, i32 } %1252, 1
  store i32 %1254, ptr %14, align 4
  br label %1259

1255:                                             ; preds = %932
  %1256 = landingpad { ptr, i32 }
          cleanup
  %1257 = extractvalue { ptr, i32 } %1256, 0
  store ptr %1257, ptr %13, align 8
  %1258 = extractvalue { ptr, i32 } %1256, 1
  store i32 %1258, ptr %14, align 4
  call void @_ZN3JPH20BodyCreationSettingsD2Ev(ptr noundef nonnull align 16 dereferenceable(256) %97) #11
  br label %1259

1259:                                             ; preds = %1255, %1251
  call void @llvm.lifetime.end.p0(i64 256, ptr %97) #11
  br label %1269

1260:                                             ; preds = %940, %938, %937, %934
  %1261 = landingpad { ptr, i32 }
          cleanup
  %1262 = extractvalue { ptr, i32 } %1261, 0
  store ptr %1262, ptr %13, align 8
  %1263 = extractvalue { ptr, i32 } %1261, 1
  store i32 %1263, ptr %14, align 4
  br label %1268

1264:                                             ; preds = %956
  %1265 = landingpad { ptr, i32 }
          cleanup
  %1266 = extractvalue { ptr, i32 } %1265, 0
  store ptr %1266, ptr %13, align 8
  %1267 = extractvalue { ptr, i32 } %1265, 1
  store i32 %1267, ptr %14, align 4
  call void @_ZN3JPH20BodyCreationSettingsD2Ev(ptr noundef nonnull align 16 dereferenceable(256) %101) #11
  br label %1268

1268:                                             ; preds = %1264, %1260
  call void @llvm.lifetime.end.p0(i64 256, ptr %101) #11
  br label %1269

1269:                                             ; preds = %1268, %1259, %1247
  call void @_ZN3JPH3RefINS_27StaticCompoundShapeSettingsEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %90) #11
  br label %1270

1270:                                             ; preds = %1269, %1243, %1239
  call void @llvm.lifetime.end.p0(i64 8, ptr %90) #11
  br label %1303

1271:                                             ; preds = %965, %961
  %1272 = landingpad { ptr, i32 }
          cleanup
  %1273 = extractvalue { ptr, i32 } %1272, 0
  store ptr %1273, ptr %13, align 8
  %1274 = extractvalue { ptr, i32 } %1272, 1
  store i32 %1274, ptr %14, align 4
  br label %1302

1275:                                             ; preds = %964
  %1276 = landingpad { ptr, i32 }
          cleanup
  %1277 = extractvalue { ptr, i32 } %1276, 0
  store ptr %1277, ptr %13, align 8
  %1278 = extractvalue { ptr, i32 } %1276, 1
  store i32 %1278, ptr %14, align 4
  call void @_ZN3JPH27StaticCompoundShapeSettingsdlEPv(ptr noundef %963) #11
  br label %1302

1279:                                             ; preds = %1031, %1022, %1016, %1008, %1006, %1005, %1003, %994, %985, %979, %971, %969, %968, %966
  %1280 = landingpad { ptr, i32 }
          cleanup
  %1281 = extractvalue { ptr, i32 } %1280, 0
  store ptr %1281, ptr %13, align 8
  %1282 = extractvalue { ptr, i32 } %1280, 1
  store i32 %1282, ptr %14, align 4
  br label %1301

1283:                                             ; preds = %1047, %1045, %1044, %1040
  %1284 = landingpad { ptr, i32 }
          cleanup
  %1285 = extractvalue { ptr, i32 } %1284, 0
  store ptr %1285, ptr %13, align 8
  %1286 = extractvalue { ptr, i32 } %1284, 1
  store i32 %1286, ptr %14, align 4
  br label %1291

1287:                                             ; preds = %1063
  %1288 = landingpad { ptr, i32 }
          cleanup
  %1289 = extractvalue { ptr, i32 } %1288, 0
  store ptr %1289, ptr %13, align 8
  %1290 = extractvalue { ptr, i32 } %1288, 1
  store i32 %1290, ptr %14, align 4
  call void @_ZN3JPH20BodyCreationSettingsD2Ev(ptr noundef nonnull align 16 dereferenceable(256) %112) #11
  br label %1291

1291:                                             ; preds = %1287, %1283
  call void @llvm.lifetime.end.p0(i64 256, ptr %112) #11
  br label %1301

1292:                                             ; preds = %1071, %1069, %1068, %1065
  %1293 = landingpad { ptr, i32 }
          cleanup
  %1294 = extractvalue { ptr, i32 } %1293, 0
  store ptr %1294, ptr %13, align 8
  %1295 = extractvalue { ptr, i32 } %1293, 1
  store i32 %1295, ptr %14, align 4
  br label %1300

1296:                                             ; preds = %1087
  %1297 = landingpad { ptr, i32 }
          cleanup
  %1298 = extractvalue { ptr, i32 } %1297, 0
  store ptr %1298, ptr %13, align 8
  %1299 = extractvalue { ptr, i32 } %1297, 1
  store i32 %1299, ptr %14, align 4
  call void @_ZN3JPH20BodyCreationSettingsD2Ev(ptr noundef nonnull align 16 dereferenceable(256) %116) #11
  br label %1300

1300:                                             ; preds = %1296, %1292
  call void @llvm.lifetime.end.p0(i64 256, ptr %116) #11
  br label %1301

1301:                                             ; preds = %1300, %1291, %1279
  call void @_ZN3JPH3RefINS_27StaticCompoundShapeSettingsEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %105) #11
  br label %1302

1302:                                             ; preds = %1301, %1275, %1271
  call void @llvm.lifetime.end.p0(i64 8, ptr %105) #11
  br label %1303

1303:                                             ; preds = %1302, %1270, %1238, %1192
  call void @_ZN3JPH8RefConstINS_13ShapeSettingsEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %48) #11
  br label %1304

1304:                                             ; preds = %1303, %1143, %1139
  call void @llvm.lifetime.end.p0(i64 8, ptr %48) #11
  br label %1305

1305:                                             ; preds = %1304, %1135
  call void @_ZN3JPH3RefINS_27StaticCompoundShapeSettingsEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %30) #11
  br label %1306

1306:                                             ; preds = %1305, %1131, %1127
  call void @llvm.lifetime.end.p0(i64 8, ptr %30) #11
  br label %1307

1307:                                             ; preds = %1306, %1126
  call void @_ZN3JPH3RefINS_13ShapeSettingsEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %22) #11
  br label %1308

1308:                                             ; preds = %1307, %1113, %1103
  call void @llvm.lifetime.end.p0(i64 8, ptr %22) #11
  br label %1309

1309:                                             ; preds = %1308, %1102
  call void @_ZN3JPH5ArrayINS_8RefConstINS_15PhysicsMaterialEEENS_12STLAllocatorIS3_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %20) #11
  call void @llvm.lifetime.end.p0(i64 24, ptr %20) #11
  br label %1310

1310:                                             ; preds = %1309, %207
  call void @_ZN3JPH5ArrayINS_8TriangleENS_12STLAllocatorIS1_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %4) #11
  call void @llvm.lifetime.end.p0(i64 24, ptr %4) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr %3) #11
  br label %1311

1311:                                             ; preds = %1310
  %1312 = load ptr, ptr %13, align 8
  %1313 = load i32, ptr %14, align 4
  %1314 = insertvalue { ptr, i32 } poison, ptr %1312, 0
  %1315 = insertvalue { ptr, i32 } %1314, i32 %1313, 1
  resume { ptr, i32 } %1315
}

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

declare noundef float @_Z12PerlinNoise3fffiii(float noundef, float noundef, float noundef, i32 noundef, i32 noundef, i32 noundef) #3

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZN3JPH6Float3C2Efff(ptr noundef nonnull align 4 dereferenceable(12), float noundef, float noundef, float noundef) unnamed_addr #2 align 2

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZN3JPH8TriangleC2ERKNS_6Float3ES3_S3_jj(ptr noundef nonnull align 4 dereferenceable(44), ptr noundef nonnull align 4 dereferenceable(12), ptr noundef nonnull align 4 dereferenceable(12), ptr noundef nonnull align 4 dereferenceable(12), i32 noundef, i32 noundef) unnamed_addr #2 align 2

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

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

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

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

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

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

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

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

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

declare void @_ZN3JPH17MeshShapeSettingsC1ERKNS_5ArrayINS_8TriangleENS_12STLAllocatorIS2_EEEENS1_INS_8RefConstINS_15PhysicsMaterialEEENS3_ISA_EEEE(ptr noundef nonnull align 8 dereferenceable(152), ptr noundef nonnull align 8 dereferenceable(24), ptr noundef) unnamed_addr #3

; 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 void @_ZN3JPH5ArrayINS_8RefConstINS_15PhysicsMaterialEEENS_12STLAllocatorIS3_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(24)) unnamed_addr #7 align 2

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

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

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

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

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

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

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

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

; Function Attrs: alwaysinline mustprogress uwtable
declare dso_local { double, double } @_ZN3JPH4Quat9sIdentityEv() #5 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 #7 align 2

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


; 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::Float3" = type { float, float, float }
%"class.JPH::Triangle" = type { [3 x %"class.JPH::Float3"], i32, i32 }
%"class.JPH::Array.4" = type { i64, i64, ptr }
%"class.JPH::RefConst" = type { ptr }
%"class.JPH::Ref" = type { ptr }
%"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.22", %"class.JPH::RefConst.23" }
%"class.JPH::Quat" = type { %"class.JPH::Vec4" }
%"class.JPH::Vec4" = type { %union.anon.20 }
%union.anon.20 = type { <4 x float> }
%"class.JPH::Vec3" = type { %union.anon.19 }
%union.anon.19 = type { <4 x float> }
%"class.JPH::CollisionGroup" = type { %"class.JPH::RefConst.21", i32, i32 }
%"class.JPH::RefConst.21" = type { ptr }
%"class.JPH::MassProperties" = type { float, %"class.JPH::Mat44" }
%"class.JPH::Mat44" = type { [4 x %"class.JPH::Vec4"] }
%"class.JPH::RefConst.22" = type { ptr }
%"class.JPH::RefConst.23" = type { ptr }
%"class.JPH::Ref.24" = 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 @_ZN21ManifoldReductionTest10InitializeEv(ptr nocapture noundef nonnull readonly 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::Float3", align 4
  %4 = alloca %"class.JPH::Float3", align 4
  %5 = alloca %"class.JPH::Float3", align 4
  %6 = alloca %"class.JPH::Float3", align 4
  %7 = alloca %"class.JPH::Triangle", align 4
  %8 = alloca %"class.JPH::Triangle", align 4
  %9 = alloca %"class.JPH::Array.4", align 8
  %10 = alloca %"class.JPH::RefConst", align 8
  %11 = alloca %"class.JPH::Ref", align 8
  %12 = alloca %"class.JPH::Array.4", align 8
  %13 = alloca %"class.JPH::BodyCreationSettings", align 16
  %14 = alloca %"class.JPH::Ref.24", 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::RefConst.22", align 8
  %22 = alloca %"class.JPH::Vec3", align 16
  %23 = alloca %"class.JPH::Ref.24", align 8
  %24 = alloca %"class.JPH::Vec3", align 16
  %25 = alloca %"class.JPH::Vec3", align 16
  %26 = alloca %"class.JPH::Vec3", align 16
  %27 = alloca %"class.JPH::Ref.24", align 8
  %28 = alloca %"class.JPH::Vec3", align 16
  %29 = alloca %"class.JPH::Vec3", align 16
  %30 = alloca %"class.JPH::Vec3", align 16
  %31 = alloca %"class.JPH::BodyCreationSettings", 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::Ref.24", align 8
  %36 = alloca %"class.JPH::Vec3", align 16
  %37 = alloca %"class.JPH::Vec3", align 16
  %38 = alloca %"class.JPH::Ref.24", align 8
  %39 = alloca %"class.JPH::Vec3", align 16
  %40 = alloca %"class.JPH::Vec3", align 16
  %41 = alloca %"class.JPH::BodyCreationSettings", 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::Ref.24", align 8
  %46 = alloca %"class.JPH::Vec3", align 16
  %47 = alloca %"class.JPH::Vec3", align 16
  %48 = alloca %"class.JPH::BodyCreationSettings", align 16
  %49 = alloca %"class.JPH::Vec3", align 16
  %50 = alloca %"class.JPH::BodyCreationSettings", align 16
  %51 = alloca %"class.JPH::Vec3", align 16
  %52 = alloca %"class.JPH::Ref.24", align 8
  %53 = alloca %"class.JPH::Vec3", align 16
  %54 = alloca %"class.JPH::Vec3", align 16
  %55 = alloca %"class.JPH::BodyCreationSettings", align 16
  %56 = alloca %"class.JPH::Vec3", align 16
  %57 = alloca %"class.JPH::BodyCreationSettings", align 16
  %58 = alloca %"class.JPH::Vec3", align 16
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %2) #11
  call void @_ZN3JPH5ArrayINS_8TriangleENS_12STLAllocatorIS1_EEEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %2) #11
  br label %.preheader

.preheader:                                       ; preds = %1, %64
  %.0197 = phi i32 [ -10, %1 ], [ %65, %64 ]
  %59 = sitofp i32 %.0197 to float
  %60 = fmul float %59, 0x3FB99999A0000000
  %61 = fadd float %60, 0x3FB99999A0000000
  br label %66

62:                                               ; preds = %64
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %9) #11
  call void @_ZN3JPH5ArrayINS_8RefConstINS_15PhysicsMaterialEEENS_12STLAllocatorIS3_EEEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %9) #11
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %10) #11
  %63 = invoke noundef ptr @_ZN3JPH21PhysicsMaterialSimplenwEm(i64 noundef 56)
          to label %101 unwind label %504

64:                                               ; preds = %83
  %65 = add nsw i32 %.0197, 1
  %exitcond198.not = icmp eq i32 %65, 10
  br i1 %exitcond198.not, label %62, label %.preheader, !llvm.loop !5

66:                                               ; preds = %.preheader, %83
  %.0114196 = phi i32 [ -10, %.preheader ], [ %84, %83 ]
  %67 = sitofp i32 %.0114196 to float
  %68 = fmul float %67, 0x3FB99999A0000000
  %69 = fadd float %68, 0x3FB99999A0000000
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %3) #11
  %70 = invoke noundef float @_Z12PerlinNoise3fffiii(float noundef %60, float noundef 0.000000e+00, float noundef %68, i32 noundef 256, i32 noundef 256, i32 noundef 256)
          to label %71 unwind label %85

71:                                               ; preds = %66
  %72 = fmul float %70, 0x3F947AE140000000
  call void @_ZN3JPH6Float3C2Efff(ptr noundef nonnull align 4 dereferenceable(12) %3, float noundef %60, float noundef %72, float noundef %68)
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %4) #11
  %73 = invoke noundef float @_Z12PerlinNoise3fffiii(float noundef %61, float noundef 0.000000e+00, float noundef %68, i32 noundef 256, i32 noundef 256, i32 noundef 256)
          to label %74 unwind label %87

74:                                               ; preds = %71
  %75 = fmul float %73, 0x3F947AE140000000
  call void @_ZN3JPH6Float3C2Efff(ptr noundef nonnull align 4 dereferenceable(12) %4, float noundef %61, float noundef %75, float noundef %68)
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %5) #11
  %76 = invoke noundef float @_Z12PerlinNoise3fffiii(float noundef %60, float noundef 0.000000e+00, float noundef %69, i32 noundef 256, i32 noundef 256, i32 noundef 256)
          to label %77 unwind label %89

77:                                               ; preds = %74
  %78 = fmul float %76, 0x3F947AE140000000
  call void @_ZN3JPH6Float3C2Efff(ptr noundef nonnull align 4 dereferenceable(12) %5, float noundef %60, float noundef %78, float noundef %69)
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %6) #11
  %79 = invoke noundef float @_Z12PerlinNoise3fffiii(float noundef %61, float noundef 0.000000e+00, float noundef %69, i32 noundef 256, i32 noundef 256, i32 noundef 256)
          to label %80 unwind label %91

80:                                               ; preds = %77
  %81 = fmul float %79, 0x3F947AE140000000
  call void @_ZN3JPH6Float3C2Efff(ptr noundef nonnull align 4 dereferenceable(12) %6, float noundef %61, float noundef %81, float noundef %69)
  call void @llvm.lifetime.start.p0(i64 44, ptr nonnull %7) #11
  call void @_ZN3JPH8TriangleC2ERKNS_6Float3ES3_S3_jj(ptr noundef nonnull align 4 dereferenceable(44) %7, ptr noundef nonnull align 4 dereferenceable(12) %3, ptr noundef nonnull align 4 dereferenceable(12) %5, ptr noundef nonnull align 4 dereferenceable(12) %6, i32 noundef 0, i32 noundef 0)
  invoke void @_ZN3JPH5ArrayINS_8TriangleENS_12STLAllocatorIS1_EEE9push_backEOS1_(ptr noundef nonnull align 8 dereferenceable(24) %2, ptr noundef nonnull align 4 dereferenceable(44) %7)
          to label %82 unwind label %93

82:                                               ; preds = %80
  call void @llvm.lifetime.end.p0(i64 44, ptr nonnull %7) #11
  call void @llvm.lifetime.start.p0(i64 44, ptr nonnull %8) #11
  call void @_ZN3JPH8TriangleC2ERKNS_6Float3ES3_S3_jj(ptr noundef nonnull align 4 dereferenceable(44) %8, ptr noundef nonnull align 4 dereferenceable(12) %3, ptr noundef nonnull align 4 dereferenceable(12) %6, ptr noundef nonnull align 4 dereferenceable(12) %4, i32 noundef 0, i32 noundef 0)
  invoke void @_ZN3JPH5ArrayINS_8TriangleENS_12STLAllocatorIS1_EEE9push_backEOS1_(ptr noundef nonnull align 8 dereferenceable(24) %2, ptr noundef nonnull align 4 dereferenceable(44) %8)
          to label %83 unwind label %95

83:                                               ; preds = %82
  call void @llvm.lifetime.end.p0(i64 44, ptr nonnull %8) #11
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %6) #11
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %5) #11
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %4) #11
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %3) #11
  %84 = add nsw i32 %.0114196, 1
  %exitcond.not = icmp eq i32 %84, 10
  br i1 %exitcond.not, label %64, label %66, !llvm.loop !7

85:                                               ; preds = %66
  %86 = landingpad { ptr, i32 }
          cleanup
  br label %100

87:                                               ; preds = %71
  %88 = landingpad { ptr, i32 }
          cleanup
  br label %99

89:                                               ; preds = %74
  %90 = landingpad { ptr, i32 }
          cleanup
  br label %98

91:                                               ; preds = %77
  %92 = landingpad { ptr, i32 }
          cleanup
  br label %97

93:                                               ; preds = %80
  %94 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 44, ptr nonnull %7) #11
  br label %97

95:                                               ; preds = %82
  %96 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 44, ptr nonnull %8) #11
  br label %97

97:                                               ; preds = %95, %93, %91
  %.pn189 = phi { ptr, i32 } [ %96, %95 ], [ %94, %93 ], [ %92, %91 ]
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %6) #11
  br label %98

98:                                               ; preds = %97, %89
  %.pn189.pn = phi { ptr, i32 } [ %.pn189, %97 ], [ %90, %89 ]
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %5) #11
  br label %99

99:                                               ; preds = %98, %87
  %.pn189.pn.pn = phi { ptr, i32 } [ %.pn189.pn, %98 ], [ %88, %87 ]
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %4) #11
  br label %100

100:                                              ; preds = %99, %85
  %.pn189.pn.pn.pn = phi { ptr, i32 } [ %.pn189.pn.pn, %99 ], [ %86, %85 ]
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %3) #11
  br label %627

101:                                              ; preds = %62
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(56) %63, i8 0, i64 56, i1 false)
  call void @_ZN3JPH21PhysicsMaterialSimpleC2Ev(ptr noundef nonnull align 8 dereferenceable(52) %63) #11
  invoke void @_ZN3JPH8RefConstINS_15PhysicsMaterialEEC2EPKS1_(ptr noundef nonnull align 8 dereferenceable(8) %10, ptr noundef nonnull %63)
          to label %102 unwind label %504

102:                                              ; preds = %101
  invoke void @_ZN3JPH5ArrayINS_8RefConstINS_15PhysicsMaterialEEENS_12STLAllocatorIS3_EEE9push_backEOS3_(ptr noundef nonnull align 8 dereferenceable(24) %9, ptr noundef nonnull align 8 dereferenceable(8) %10)
          to label %103 unwind label %506

103:                                              ; preds = %102
  call void @_ZN3JPH8RefConstINS_15PhysicsMaterialEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %10) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %10) #11
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %11) #11
  %104 = invoke noundef ptr @_ZN3JPH17MeshShapeSettingsnwEm(i64 noundef 152)
          to label %105 unwind label %509

105:                                              ; preds = %103
  call void @_ZN3JPH5ArrayINS_8RefConstINS_15PhysicsMaterialEEENS_12STLAllocatorIS3_EEEC2EOS6_(ptr noundef nonnull align 8 dereferenceable(24) %12, ptr noundef nonnull align 8 dereferenceable(24) %9) #11
  invoke void @_ZN3JPH17MeshShapeSettingsC1ERKNS_5ArrayINS_8TriangleENS_12STLAllocatorIS2_EEEENS1_INS_8RefConstINS_15PhysicsMaterialEEENS3_ISA_EEEE(ptr noundef nonnull align 8 dereferenceable(152) %104, ptr noundef nonnull align 8 dereferenceable(24) %2, ptr noundef nonnull %12)
          to label %106 unwind label %513

106:                                              ; preds = %105
  invoke void @_ZN3JPH3RefINS_13ShapeSettingsEEC2EPS1_(ptr noundef nonnull align 8 dereferenceable(8) %11, ptr noundef nonnull %104)
          to label %107 unwind label %511

107:                                              ; preds = %106
  call void @_ZN3JPH5ArrayINS_8RefConstINS_15PhysicsMaterialEEENS_12STLAllocatorIS3_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %12) #11
  %108 = getelementptr inbounds i8, ptr %0, i64 24
  %109 = load ptr, ptr %108, align 8, !tbaa !8
  call void @llvm.lifetime.start.p0(i64 256, ptr nonnull %13) #11
  %110 = invoke noundef ptr @_ZN3JPH19ScaledShapeSettingsnwEm(i64 noundef 96)
          to label %111 unwind label %515

111:                                              ; preds = %107
  %112 = call noundef ptr @_ZNK3JPH3RefINS_13ShapeSettingsEEcvPS1_Ev(ptr noundef nonnull align 8 dereferenceable(8) %11)
  %113 = invoke { double, double } @_ZN3JPH4Vec310sReplicateEf(float noundef 2.000000e+01)
          to label %114 unwind label %517

114:                                              ; preds = %111
  %115 = extractvalue { double, double } %113, 0
  %116 = extractvalue { double, double } %113, 1
  invoke void @_ZN3JPH19ScaledShapeSettingsC2EPKNS_13ShapeSettingsENS_4Vec3E(ptr noundef nonnull align 16 dereferenceable(96) %110, ptr noundef %112, double %115, double %116)
          to label %117 unwind label %517

117:                                              ; preds = %114
  %118 = invoke { double, double } @_ZN3JPH4Vec35sZeroEv()
          to label %119 unwind label %515

119:                                              ; preds = %117
  %120 = invoke { double, double } @_ZN3JPH4Quat9sIdentityEv()
          to label %121 unwind label %515

121:                                              ; preds = %119
  %122 = extractvalue { double, double } %118, 1
  %123 = extractvalue { double, double } %118, 0
  %124 = extractvalue { double, double } %120, 0
  %125 = extractvalue { double, double } %120, 1
  invoke void @_ZN3JPH20BodyCreationSettingsC2EPKNS_13ShapeSettingsENS_4Vec3ENS_4QuatENS_11EMotionTypeEt(ptr noundef nonnull align 16 dereferenceable(256) %13, ptr noundef nonnull %110, double %123, double %122, double %124, double %125, i8 noundef zeroext 0, i16 noundef zeroext 0)
          to label %126 unwind label %515

126:                                              ; preds = %121
  %127 = invoke i32 @_ZN3JPH13BodyInterface16CreateAndAddBodyERKNS_20BodyCreationSettingsENS_11EActivationE(ptr noundef nonnull align 8 dereferenceable(24) %109, ptr noundef nonnull align 16 dereferenceable(256) %13, i32 noundef 1)
          to label %128 unwind label %519

128:                                              ; preds = %126
  call void @_ZN3JPH20BodyCreationSettingsD2Ev(ptr noundef nonnull align 16 dereferenceable(256) %13) #11
  call void @llvm.lifetime.end.p0(i64 256, ptr nonnull %13) #11
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %14) #11
  %129 = invoke noundef ptr @_ZN3JPH27StaticCompoundShapeSettingsnwEm(i64 noundef 88)
          to label %130 unwind label %522

130:                                              ; preds = %128
  invoke void @_ZN3JPH27StaticCompoundShapeSettingsC2Ev(ptr noundef nonnull align 8 dereferenceable(88) %129)
          to label %131 unwind label %524

131:                                              ; preds = %130
  invoke void @_ZN3JPH3RefINS_27StaticCompoundShapeSettingsEEC2EPS1_(ptr noundef nonnull align 8 dereferenceable(8) %14, ptr noundef nonnull %129)
          to label %132 unwind label %522

132:                                              ; preds = %131
  %133 = call noundef ptr @_ZNK3JPH3RefINS_27StaticCompoundShapeSettingsEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %14)
  call void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %15, float noundef 0.000000e+00, float noundef -1.000000e+00, float noundef 0.000000e+00)
  %134 = invoke { double, double } @_ZN3JPH4Vec36sAxisXEv()
          to label %135 unwind label %526

135:                                              ; preds = %132
  %136 = extractvalue { double, double } %134, 0
  %137 = extractvalue { double, double } %134, 1
  %138 = invoke { double, double } @_ZN3JPH4Quat9sRotationENS_4Vec3Ef(double %136, double %137, float noundef 0x400921FB60000000)
          to label %139 unwind label %526

139:                                              ; preds = %135
  %140 = extractvalue { double, double } %138, 0
  %141 = extractvalue { double, double } %138, 1
  %142 = call noundef ptr @_ZNK3JPH3RefINS_13ShapeSettingsEEcvPS1_Ev(ptr noundef nonnull align 8 dereferenceable(8) %11)
  %143 = load double, ptr %15, align 16
  %144 = getelementptr inbounds i8, ptr %15, i64 8
  %145 = load double, ptr %144, align 8
  invoke void @_ZN3JPH21CompoundShapeSettings8AddShapeENS_4Vec3ENS_4QuatEPKNS_13ShapeSettingsEj(ptr noundef nonnull align 8 dereferenceable(88) %133, double %143, double %145, double %140, double %141, ptr noundef %142, i32 noundef 0)
          to label %146 unwind label %526

146:                                              ; preds = %139
  %147 = call noundef ptr @_ZNK3JPH3RefINS_27StaticCompoundShapeSettingsEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %14)
  call void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %16, float noundef 0.000000e+00, float noundef 1.000000e+00, float noundef 0.000000e+00)
  %148 = invoke { double, double } @_ZN3JPH4Quat9sIdentityEv()
          to label %149 unwind label %526

149:                                              ; preds = %146
  %150 = extractvalue { double, double } %148, 0
  %151 = extractvalue { double, double } %148, 1
  %152 = call noundef ptr @_ZNK3JPH3RefINS_13ShapeSettingsEEcvPS1_Ev(ptr noundef nonnull align 8 dereferenceable(8) %11)
  %153 = load double, ptr %16, align 16
  %154 = getelementptr inbounds i8, ptr %16, i64 8
  %155 = load double, ptr %154, align 8
  invoke void @_ZN3JPH21CompoundShapeSettings8AddShapeENS_4Vec3ENS_4QuatEPKNS_13ShapeSettingsEj(ptr noundef nonnull align 8 dereferenceable(88) %147, double %153, double %155, double %150, double %151, ptr noundef %152, i32 noundef 0)
          to label %156 unwind label %526

156:                                              ; preds = %149
  %157 = call noundef ptr @_ZNK3JPH3RefINS_27StaticCompoundShapeSettingsEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %14)
  call void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %17, float noundef -1.000000e+00, float noundef 0.000000e+00, float noundef 0.000000e+00)
  %158 = invoke { double, double } @_ZN3JPH4Vec36sAxisZEv()
          to label %159 unwind label %526

159:                                              ; preds = %156
  %160 = extractvalue { double, double } %158, 0
  %161 = extractvalue { double, double } %158, 1
  %162 = invoke { double, double } @_ZN3JPH4Quat9sRotationENS_4Vec3Ef(double %160, double %161, float noundef 0x3FF921FB60000000)
          to label %163 unwind label %526

163:                                              ; preds = %159
  %164 = extractvalue { double, double } %162, 0
  %165 = extractvalue { double, double } %162, 1
  %166 = call noundef ptr @_ZNK3JPH3RefINS_13ShapeSettingsEEcvPS1_Ev(ptr noundef nonnull align 8 dereferenceable(8) %11)
  %167 = load double, ptr %17, align 16
  %168 = getelementptr inbounds i8, ptr %17, i64 8
  %169 = load double, ptr %168, align 8
  invoke void @_ZN3JPH21CompoundShapeSettings8AddShapeENS_4Vec3ENS_4QuatEPKNS_13ShapeSettingsEj(ptr noundef nonnull align 8 dereferenceable(88) %157, double %167, double %169, double %164, double %165, ptr noundef %166, i32 noundef 0)
          to label %170 unwind label %526

170:                                              ; preds = %163
  %171 = call noundef ptr @_ZNK3JPH3RefINS_27StaticCompoundShapeSettingsEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %14)
  call void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %18, float noundef 1.000000e+00, float noundef 0.000000e+00, float noundef 0.000000e+00)
  %172 = invoke { double, double } @_ZN3JPH4Vec36sAxisZEv()
          to label %173 unwind label %526

173:                                              ; preds = %170
  %174 = extractvalue { double, double } %172, 0
  %175 = extractvalue { double, double } %172, 1
  %176 = invoke { double, double } @_ZN3JPH4Quat9sRotationENS_4Vec3Ef(double %174, double %175, float noundef 0xBFF921FB60000000)
          to label %177 unwind label %526

177:                                              ; preds = %173
  %178 = extractvalue { double, double } %176, 0
  %179 = extractvalue { double, double } %176, 1
  %180 = call noundef ptr @_ZNK3JPH3RefINS_13ShapeSettingsEEcvPS1_Ev(ptr noundef nonnull align 8 dereferenceable(8) %11)
  %181 = load double, ptr %18, align 16
  %182 = getelementptr inbounds i8, ptr %18, i64 8
  %183 = load double, ptr %182, align 8
  invoke void @_ZN3JPH21CompoundShapeSettings8AddShapeENS_4Vec3ENS_4QuatEPKNS_13ShapeSettingsEj(ptr noundef nonnull align 8 dereferenceable(88) %171, double %181, double %183, double %178, double %179, ptr noundef %180, i32 noundef 0)
          to label %184 unwind label %526

184:                                              ; preds = %177
  %185 = call noundef ptr @_ZNK3JPH3RefINS_27StaticCompoundShapeSettingsEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %14)
  call void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %19, float noundef 0.000000e+00, float noundef 0.000000e+00, float noundef -1.000000e+00)
  %186 = invoke { double, double } @_ZN3JPH4Vec36sAxisXEv()
          to label %187 unwind label %526

187:                                              ; preds = %184
  %188 = extractvalue { double, double } %186, 0
  %189 = extractvalue { double, double } %186, 1
  %190 = invoke { double, double } @_ZN3JPH4Quat9sRotationENS_4Vec3Ef(double %188, double %189, float noundef 0xBFF921FB60000000)
          to label %191 unwind label %526

191:                                              ; preds = %187
  %192 = extractvalue { double, double } %190, 0
  %193 = extractvalue { double, double } %190, 1
  %194 = call noundef ptr @_ZNK3JPH3RefINS_13ShapeSettingsEEcvPS1_Ev(ptr noundef nonnull align 8 dereferenceable(8) %11)
  %195 = load double, ptr %19, align 16
  %196 = getelementptr inbounds i8, ptr %19, i64 8
  %197 = load double, ptr %196, align 8
  invoke void @_ZN3JPH21CompoundShapeSettings8AddShapeENS_4Vec3ENS_4QuatEPKNS_13ShapeSettingsEj(ptr noundef nonnull align 8 dereferenceable(88) %185, double %195, double %197, double %192, double %193, ptr noundef %194, i32 noundef 0)
          to label %198 unwind label %526

198:                                              ; preds = %191
  %199 = call noundef ptr @_ZNK3JPH3RefINS_27StaticCompoundShapeSettingsEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %14)
  call void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %20, float noundef 0.000000e+00, float noundef 0.000000e+00, float noundef 1.000000e+00)
  %200 = invoke { double, double } @_ZN3JPH4Vec36sAxisXEv()
          to label %201 unwind label %526

201:                                              ; preds = %198
  %202 = extractvalue { double, double } %200, 0
  %203 = extractvalue { double, double } %200, 1
  %204 = invoke { double, double } @_ZN3JPH4Quat9sRotationENS_4Vec3Ef(double %202, double %203, float noundef 0x3FF921FB60000000)
          to label %205 unwind label %526

205:                                              ; preds = %201
  %206 = extractvalue { double, double } %204, 0
  %207 = extractvalue { double, double } %204, 1
  %208 = call noundef ptr @_ZNK3JPH3RefINS_13ShapeSettingsEEcvPS1_Ev(ptr noundef nonnull align 8 dereferenceable(8) %11)
  %209 = load double, ptr %20, align 16
  %210 = getelementptr inbounds i8, ptr %20, i64 8
  %211 = load double, ptr %210, align 8
  invoke void @_ZN3JPH21CompoundShapeSettings8AddShapeENS_4Vec3ENS_4QuatEPKNS_13ShapeSettingsEj(ptr noundef nonnull align 8 dereferenceable(88) %199, double %209, double %211, double %206, double %207, ptr noundef %208, i32 noundef 0)
          to label %212 unwind label %526

212:                                              ; preds = %205
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %21) #11
  %213 = invoke noundef ptr @_ZN3JPH16BoxShapeSettingsnwEm(i64 noundef 112)
          to label %214 unwind label %528

214:                                              ; preds = %212
  call void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %22, float noundef 1.000000e+00, float noundef 1.000000e+00, float noundef 1.000000e+00)
  %215 = load double, ptr %22, align 16
  %216 = getelementptr inbounds i8, ptr %22, i64 8
  %217 = load double, ptr %216, align 8
  invoke void @_ZN3JPH16BoxShapeSettingsC2ENS_4Vec3EfPKNS_15PhysicsMaterialE(ptr noundef nonnull align 16 dereferenceable(112) %213, double %215, double %217, float noundef 0.000000e+00, ptr noundef null)
          to label %218 unwind label %530

218:                                              ; preds = %214
  invoke void @_ZN3JPH8RefConstINS_13ShapeSettingsEEC2EPKS1_(ptr noundef nonnull align 8 dereferenceable(8) %21, ptr noundef nonnull %213)
          to label %219 unwind label %528

219:                                              ; preds = %218
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %23) #11
  %220 = invoke noundef ptr @_ZN3JPH27StaticCompoundShapeSettingsnwEm(i64 noundef 88)
          to label %221 unwind label %532

221:                                              ; preds = %219
  invoke void @_ZN3JPH27StaticCompoundShapeSettingsC2Ev(ptr noundef nonnull align 8 dereferenceable(88) %220)
          to label %222 unwind label %534

222:                                              ; preds = %221
  invoke void @_ZN3JPH3RefINS_27StaticCompoundShapeSettingsEEC2EPS1_(ptr noundef nonnull align 8 dereferenceable(8) %23, ptr noundef nonnull %220)
          to label %223 unwind label %532

223:                                              ; preds = %222
  %224 = call noundef ptr @_ZNK3JPH3RefINS_27StaticCompoundShapeSettingsEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %23)
  call void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %24, float noundef 0xC000CCCCC0000000, float noundef 0.000000e+00, float noundef 0.000000e+00)
  %225 = invoke { double, double } @_ZN3JPH4Quat9sIdentityEv()
          to label %226 unwind label %536

226:                                              ; preds = %223
  %227 = extractvalue { double, double } %225, 0
  %228 = extractvalue { double, double } %225, 1
  %229 = call noundef ptr @_ZNK3JPH3RefINS_27StaticCompoundShapeSettingsEEcvPS1_Ev(ptr noundef nonnull align 8 dereferenceable(8) %14)
  %230 = load double, ptr %24, align 16
  %231 = getelementptr inbounds i8, ptr %24, i64 8
  %232 = load double, ptr %231, align 8
  invoke void @_ZN3JPH21CompoundShapeSettings8AddShapeENS_4Vec3ENS_4QuatEPKNS_13ShapeSettingsEj(ptr noundef nonnull align 8 dereferenceable(88) %224, double %230, double %232, double %227, double %228, ptr noundef %229, i32 noundef 0)
          to label %233 unwind label %536

233:                                              ; preds = %226
  %234 = call noundef ptr @_ZNK3JPH3RefINS_27StaticCompoundShapeSettingsEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %23)
  call void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %25, float noundef 0.000000e+00, float noundef -1.000000e+00, float noundef 0.000000e+00)
  %235 = invoke { double, double } @_ZN3JPH4Quat9sIdentityEv()
          to label %236 unwind label %536

236:                                              ; preds = %233
  %237 = extractvalue { double, double } %235, 0
  %238 = extractvalue { double, double } %235, 1
  %239 = call noundef ptr @_ZNK3JPH3RefINS_27StaticCompoundShapeSettingsEEcvPS1_Ev(ptr noundef nonnull align 8 dereferenceable(8) %14)
  %240 = load double, ptr %25, align 16
  %241 = getelementptr inbounds i8, ptr %25, i64 8
  %242 = load double, ptr %241, align 8
  invoke void @_ZN3JPH21CompoundShapeSettings8AddShapeENS_4Vec3ENS_4QuatEPKNS_13ShapeSettingsEj(ptr noundef nonnull align 8 dereferenceable(88) %234, double %240, double %242, double %237, double %238, ptr noundef %239, i32 noundef 0)
          to label %243 unwind label %536

243:                                              ; preds = %236
  %244 = call noundef ptr @_ZNK3JPH3RefINS_27StaticCompoundShapeSettingsEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %23)
  call void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %26, float noundef 0x4000CCCCC0000000, float noundef 0.000000e+00, float noundef 0.000000e+00)
  %245 = invoke { double, double } @_ZN3JPH4Quat9sIdentityEv()
          to label %246 unwind label %536

246:                                              ; preds = %243
  %247 = extractvalue { double, double } %245, 0
  %248 = extractvalue { double, double } %245, 1
  %249 = call noundef ptr @_ZNK3JPH3RefINS_27StaticCompoundShapeSettingsEEcvPS1_Ev(ptr noundef nonnull align 8 dereferenceable(8) %14)
  %250 = load double, ptr %26, align 16
  %251 = getelementptr inbounds i8, ptr %26, i64 8
  %252 = load double, ptr %251, align 8
  invoke void @_ZN3JPH21CompoundShapeSettings8AddShapeENS_4Vec3ENS_4QuatEPKNS_13ShapeSettingsEj(ptr noundef nonnull align 8 dereferenceable(88) %244, double %250, double %252, double %247, double %248, ptr noundef %249, i32 noundef 0)
          to label %253 unwind label %536

253:                                              ; preds = %246
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %27) #11
  %254 = invoke noundef ptr @_ZN3JPH27StaticCompoundShapeSettingsnwEm(i64 noundef 88)
          to label %255 unwind label %538

255:                                              ; preds = %253
  invoke void @_ZN3JPH27StaticCompoundShapeSettingsC2Ev(ptr noundef nonnull align 8 dereferenceable(88) %254)
          to label %256 unwind label %540

256:                                              ; preds = %255
  invoke void @_ZN3JPH3RefINS_27StaticCompoundShapeSettingsEEC2EPS1_(ptr noundef nonnull align 8 dereferenceable(8) %27, ptr noundef nonnull %254)
          to label %257 unwind label %538

257:                                              ; preds = %256
  %258 = call noundef ptr @_ZNK3JPH3RefINS_27StaticCompoundShapeSettingsEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %27)
  call void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %28, float noundef 0xC000CCCCC0000000, float noundef 0.000000e+00, float noundef 0.000000e+00)
  %259 = invoke { double, double } @_ZN3JPH4Quat9sIdentityEv()
          to label %260 unwind label %542

260:                                              ; preds = %257
  %261 = extractvalue { double, double } %259, 0
  %262 = extractvalue { double, double } %259, 1
  %263 = call noundef ptr @_ZNK3JPH8RefConstINS_13ShapeSettingsEEcvPKS1_Ev(ptr noundef nonnull align 8 dereferenceable(8) %21)
  %264 = load double, ptr %28, align 16
  %265 = getelementptr inbounds i8, ptr %28, i64 8
  %266 = load double, ptr %265, align 8
  invoke void @_ZN3JPH21CompoundShapeSettings8AddShapeENS_4Vec3ENS_4QuatEPKNS_13ShapeSettingsEj(ptr noundef nonnull align 8 dereferenceable(88) %258, double %264, double %266, double %261, double %262, ptr noundef %263, i32 noundef 0)
          to label %267 unwind label %542

267:                                              ; preds = %260
  %268 = call noundef ptr @_ZNK3JPH3RefINS_27StaticCompoundShapeSettingsEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %27)
  call void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %29, float noundef 0.000000e+00, float noundef 0xBFF19999A0000000, float noundef 0.000000e+00)
  %269 = invoke { double, double } @_ZN3JPH4Quat9sIdentityEv()
          to label %270 unwind label %542

270:                                              ; preds = %267
  %271 = extractvalue { double, double } %269, 0
  %272 = extractvalue { double, double } %269, 1
  %273 = call noundef ptr @_ZNK3JPH8RefConstINS_13ShapeSettingsEEcvPKS1_Ev(ptr noundef nonnull align 8 dereferenceable(8) %21)
  %274 = load double, ptr %29, align 16
  %275 = getelementptr inbounds i8, ptr %29, i64 8
  %276 = load double, ptr %275, align 8
  invoke void @_ZN3JPH21CompoundShapeSettings8AddShapeENS_4Vec3ENS_4QuatEPKNS_13ShapeSettingsEj(ptr noundef nonnull align 8 dereferenceable(88) %268, double %274, double %276, double %271, double %272, ptr noundef %273, i32 noundef 0)
          to label %277 unwind label %542

277:                                              ; preds = %270
  %278 = call noundef ptr @_ZNK3JPH3RefINS_27StaticCompoundShapeSettingsEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %27)
  call void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %30, float noundef 0x4000CCCCC0000000, float noundef 0.000000e+00, float noundef 0.000000e+00)
  %279 = invoke { double, double } @_ZN3JPH4Quat9sIdentityEv()
          to label %280 unwind label %542

280:                                              ; preds = %277
  %281 = extractvalue { double, double } %279, 0
  %282 = extractvalue { double, double } %279, 1
  %283 = call noundef ptr @_ZNK3JPH8RefConstINS_13ShapeSettingsEEcvPKS1_Ev(ptr noundef nonnull align 8 dereferenceable(8) %21)
  %284 = load double, ptr %30, align 16
  %285 = getelementptr inbounds i8, ptr %30, i64 8
  %286 = load double, ptr %285, align 8
  invoke void @_ZN3JPH21CompoundShapeSettings8AddShapeENS_4Vec3ENS_4QuatEPKNS_13ShapeSettingsEj(ptr noundef nonnull align 8 dereferenceable(88) %278, double %284, double %286, double %281, double %282, ptr noundef %283, i32 noundef 0)
          to label %287 unwind label %542

287:                                              ; preds = %280
  %288 = load ptr, ptr %108, align 8, !tbaa !8
  call void @llvm.lifetime.start.p0(i64 256, ptr nonnull %31) #11
  %289 = call noundef ptr @_ZNK3JPH3RefINS_27StaticCompoundShapeSettingsEEcvPS1_Ev(ptr noundef nonnull align 8 dereferenceable(8) %23)
  call void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %32, float noundef 0.000000e+00, float noundef 1.000000e+00, float noundef 0.000000e+00)
  %290 = invoke { double, double } @_ZN3JPH4Quat9sIdentityEv()
          to label %291 unwind label %544

291:                                              ; preds = %287
  %292 = extractvalue { double, double } %290, 0
  %293 = extractvalue { double, double } %290, 1
  %294 = load double, ptr %32, align 16
  %295 = getelementptr inbounds i8, ptr %32, i64 8
  %296 = load double, ptr %295, align 8
  invoke void @_ZN3JPH20BodyCreationSettingsC2EPKNS_13ShapeSettingsENS_4Vec3ENS_4QuatENS_11EMotionTypeEt(ptr noundef nonnull align 16 dereferenceable(256) %31, ptr noundef %289, double %294, double %296, double %292, double %293, i8 noundef zeroext 0, i16 noundef zeroext 0)
          to label %297 unwind label %544

297:                                              ; preds = %291
  %298 = invoke i32 @_ZN3JPH13BodyInterface16CreateAndAddBodyERKNS_20BodyCreationSettingsENS_11EActivationE(ptr noundef nonnull align 8 dereferenceable(24) %288, ptr noundef nonnull align 16 dereferenceable(256) %31, i32 noundef 1)
          to label %299 unwind label %546

299:                                              ; preds = %297
  call void @_ZN3JPH20BodyCreationSettingsD2Ev(ptr noundef nonnull align 16 dereferenceable(256) %31) #11
  call void @llvm.lifetime.end.p0(i64 256, ptr nonnull %31) #11
  call void @llvm.lifetime.start.p0(i64 256, ptr nonnull %33) #11
  %300 = call noundef ptr @_ZNK3JPH3RefINS_27StaticCompoundShapeSettingsEEcvPS1_Ev(ptr noundef nonnull align 8 dereferenceable(8) %27)
  call void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %34, float noundef 0.000000e+00, float noundef 0x40079999A0000000, float noundef 0.000000e+00)
  %301 = invoke { double, double } @_ZN3JPH4Quat9sIdentityEv()
          to label %302 unwind label %549

302:                                              ; preds = %299
  %303 = extractvalue { double, double } %301, 0
  %304 = extractvalue { double, double } %301, 1
  %305 = load double, ptr %34, align 16
  %306 = getelementptr inbounds i8, ptr %34, i64 8
  %307 = load double, ptr %306, align 8
  invoke void @_ZN3JPH20BodyCreationSettingsC2EPKNS_13ShapeSettingsENS_4Vec3ENS_4QuatENS_11EMotionTypeEt(ptr noundef nonnull align 16 dereferenceable(256) %33, ptr noundef %300, double %305, double %307, double %303, double %304, i8 noundef zeroext 2, i16 noundef zeroext 1)
          to label %308 unwind label %549

308:                                              ; preds = %302
  %309 = getelementptr inbounds i8, ptr %33, i64 105
  store i8 0, ptr %309, align 1, !tbaa !20
  %310 = load ptr, ptr %108, align 8, !tbaa !8
  %311 = invoke i32 @_ZN3JPH13BodyInterface16CreateAndAddBodyERKNS_20BodyCreationSettingsENS_11EActivationE(ptr noundef nonnull align 8 dereferenceable(24) %310, ptr noundef nonnull align 16 dereferenceable(256) %33, i32 noundef 0)
          to label %312 unwind label %551

312:                                              ; preds = %308
  call void @_ZN3JPH20BodyCreationSettingsD2Ev(ptr noundef nonnull align 16 dereferenceable(256) %33) #11
  call void @llvm.lifetime.end.p0(i64 256, ptr nonnull %33) #11
  call void @_ZN3JPH3RefINS_27StaticCompoundShapeSettingsEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %27) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %27) #11
  call void @_ZN3JPH3RefINS_27StaticCompoundShapeSettingsEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %23) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %23) #11
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %35) #11
  %313 = invoke noundef ptr @_ZN3JPH27StaticCompoundShapeSettingsnwEm(i64 noundef 88)
          to label %314 unwind label %558

314:                                              ; preds = %312
  invoke void @_ZN3JPH27StaticCompoundShapeSettingsC2Ev(ptr noundef nonnull align 8 dereferenceable(88) %313)
          to label %315 unwind label %560

315:                                              ; preds = %314
  invoke void @_ZN3JPH3RefINS_27StaticCompoundShapeSettingsEEC2EPS1_(ptr noundef nonnull align 8 dereferenceable(8) %35, ptr noundef nonnull %313)
          to label %316 unwind label %558

316:                                              ; preds = %315
  %317 = call noundef ptr @_ZNK3JPH3RefINS_27StaticCompoundShapeSettingsEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %35)
  call void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %36, float noundef 0xC000CCCCC0000000, float noundef 0.000000e+00, float noundef 0.000000e+00)
  %318 = invoke { double, double } @_ZN3JPH4Quat9sIdentityEv()
          to label %319 unwind label %562

319:                                              ; preds = %316
  %320 = extractvalue { double, double } %318, 0
  %321 = extractvalue { double, double } %318, 1
  %322 = call noundef ptr @_ZNK3JPH3RefINS_27StaticCompoundShapeSettingsEEcvPS1_Ev(ptr noundef nonnull align 8 dereferenceable(8) %14)
  %323 = load double, ptr %36, align 16
  %324 = getelementptr inbounds i8, ptr %36, i64 8
  %325 = load double, ptr %324, align 8
  invoke void @_ZN3JPH21CompoundShapeSettings8AddShapeENS_4Vec3ENS_4QuatEPKNS_13ShapeSettingsEj(ptr noundef nonnull align 8 dereferenceable(88) %317, double %323, double %325, double %320, double %321, ptr noundef %322, i32 noundef 0)
          to label %326 unwind label %562

326:                                              ; preds = %319
  %327 = call noundef ptr @_ZNK3JPH3RefINS_27StaticCompoundShapeSettingsEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %35)
  call void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %37, float noundef 0.000000e+00, float noundef -1.000000e+00, float noundef 0.000000e+00)
  %328 = invoke { double, double } @_ZN3JPH4Quat9sIdentityEv()
          to label %329 unwind label %562

329:                                              ; preds = %326
  %330 = extractvalue { double, double } %328, 0
  %331 = extractvalue { double, double } %328, 1
  %332 = call noundef ptr @_ZNK3JPH3RefINS_27StaticCompoundShapeSettingsEEcvPS1_Ev(ptr noundef nonnull align 8 dereferenceable(8) %14)
  %333 = load double, ptr %37, align 16
  %334 = getelementptr inbounds i8, ptr %37, i64 8
  %335 = load double, ptr %334, align 8
  invoke void @_ZN3JPH21CompoundShapeSettings8AddShapeENS_4Vec3ENS_4QuatEPKNS_13ShapeSettingsEj(ptr noundef nonnull align 8 dereferenceable(88) %327, double %333, double %335, double %330, double %331, ptr noundef %332, i32 noundef 0)
          to label %336 unwind label %562

336:                                              ; preds = %329
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %38) #11
  %337 = invoke noundef ptr @_ZN3JPH27StaticCompoundShapeSettingsnwEm(i64 noundef 88)
          to label %338 unwind label %564

338:                                              ; preds = %336
  invoke void @_ZN3JPH27StaticCompoundShapeSettingsC2Ev(ptr noundef nonnull align 8 dereferenceable(88) %337)
          to label %339 unwind label %566

339:                                              ; preds = %338
  invoke void @_ZN3JPH3RefINS_27StaticCompoundShapeSettingsEEC2EPS1_(ptr noundef nonnull align 8 dereferenceable(8) %38, ptr noundef nonnull %337)
          to label %340 unwind label %564

340:                                              ; preds = %339
  %341 = call noundef ptr @_ZNK3JPH3RefINS_27StaticCompoundShapeSettingsEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %38)
  call void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %39, float noundef 0xC000CCCCC0000000, float noundef 0.000000e+00, float noundef 0.000000e+00)
  %342 = invoke { double, double } @_ZN3JPH4Quat9sIdentityEv()
          to label %343 unwind label %568

343:                                              ; preds = %340
  %344 = extractvalue { double, double } %342, 0
  %345 = extractvalue { double, double } %342, 1
  %346 = call noundef ptr @_ZNK3JPH8RefConstINS_13ShapeSettingsEEcvPKS1_Ev(ptr noundef nonnull align 8 dereferenceable(8) %21)
  %347 = load double, ptr %39, align 16
  %348 = getelementptr inbounds i8, ptr %39, i64 8
  %349 = load double, ptr %348, align 8
  invoke void @_ZN3JPH21CompoundShapeSettings8AddShapeENS_4Vec3ENS_4QuatEPKNS_13ShapeSettingsEj(ptr noundef nonnull align 8 dereferenceable(88) %341, double %347, double %349, double %344, double %345, ptr noundef %346, i32 noundef 0)
          to label %350 unwind label %568

350:                                              ; preds = %343
  %351 = call noundef ptr @_ZNK3JPH3RefINS_27StaticCompoundShapeSettingsEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %38)
  call void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %40, float noundef 0.000000e+00, float noundef -1.000000e+00, float noundef 0.000000e+00)
  %352 = invoke { double, double } @_ZN3JPH4Quat9sIdentityEv()
          to label %353 unwind label %568

353:                                              ; preds = %350
  %354 = extractvalue { double, double } %352, 0
  %355 = extractvalue { double, double } %352, 1
  %356 = call noundef ptr @_ZNK3JPH8RefConstINS_13ShapeSettingsEEcvPKS1_Ev(ptr noundef nonnull align 8 dereferenceable(8) %21)
  %357 = load double, ptr %40, align 16
  %358 = getelementptr inbounds i8, ptr %40, i64 8
  %359 = load double, ptr %358, align 8
  invoke void @_ZN3JPH21CompoundShapeSettings8AddShapeENS_4Vec3ENS_4QuatEPKNS_13ShapeSettingsEj(ptr noundef nonnull align 8 dereferenceable(88) %351, double %357, double %359, double %354, double %355, ptr noundef %356, i32 noundef 0)
          to label %360 unwind label %568

360:                                              ; preds = %353
  %361 = load ptr, ptr %108, align 8, !tbaa !8
  call void @llvm.lifetime.start.p0(i64 256, ptr nonnull %41) #11
  %362 = call noundef ptr @_ZNK3JPH3RefINS_27StaticCompoundShapeSettingsEEcvPS1_Ev(ptr noundef nonnull align 8 dereferenceable(8) %35)
  call void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %42, float noundef 0.000000e+00, float noundef 1.000000e+00, float noundef 4.000000e+00)
  %363 = invoke { double, double } @_ZN3JPH4Quat9sIdentityEv()
          to label %364 unwind label %570

364:                                              ; preds = %360
  %365 = extractvalue { double, double } %363, 0
  %366 = extractvalue { double, double } %363, 1
  %367 = load double, ptr %42, align 16
  %368 = getelementptr inbounds i8, ptr %42, i64 8
  %369 = load double, ptr %368, align 8
  invoke void @_ZN3JPH20BodyCreationSettingsC2EPKNS_13ShapeSettingsENS_4Vec3ENS_4QuatENS_11EMotionTypeEt(ptr noundef nonnull align 16 dereferenceable(256) %41, ptr noundef %362, double %367, double %369, double %365, double %366, i8 noundef zeroext 0, i16 noundef zeroext 0)
          to label %370 unwind label %570

370:                                              ; preds = %364
  %371 = invoke i32 @_ZN3JPH13BodyInterface16CreateAndAddBodyERKNS_20BodyCreationSettingsENS_11EActivationE(ptr noundef nonnull align 8 dereferenceable(24) %361, ptr noundef nonnull align 16 dereferenceable(256) %41, i32 noundef 1)
          to label %372 unwind label %572

372:                                              ; preds = %370
  call void @_ZN3JPH20BodyCreationSettingsD2Ev(ptr noundef nonnull align 16 dereferenceable(256) %41) #11
  call void @llvm.lifetime.end.p0(i64 256, ptr nonnull %41) #11
  call void @llvm.lifetime.start.p0(i64 256, ptr nonnull %43) #11
  %373 = call noundef ptr @_ZNK3JPH3RefINS_27StaticCompoundShapeSettingsEEcvPS1_Ev(ptr noundef nonnull align 8 dereferenceable(8) %38)
  call void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %44, float noundef 0.000000e+00, float noundef 4.000000e+00, float noundef 4.000000e+00)
  %374 = invoke { double, double } @_ZN3JPH4Quat9sIdentityEv()
          to label %375 unwind label %575

375:                                              ; preds = %372
  %376 = extractvalue { double, double } %374, 0
  %377 = extractvalue { double, double } %374, 1
  %378 = load double, ptr %44, align 16
  %379 = getelementptr inbounds i8, ptr %44, i64 8
  %380 = load double, ptr %379, align 8
  invoke void @_ZN3JPH20BodyCreationSettingsC2EPKNS_13ShapeSettingsENS_4Vec3ENS_4QuatENS_11EMotionTypeEt(ptr noundef nonnull align 16 dereferenceable(256) %43, ptr noundef %373, double %378, double %380, double %376, double %377, i8 noundef zeroext 2, i16 noundef zeroext 1)
          to label %381 unwind label %575

381:                                              ; preds = %375
  %382 = getelementptr inbounds i8, ptr %43, i64 105
  store i8 0, ptr %382, align 1, !tbaa !20
  %383 = load ptr, ptr %108, align 8, !tbaa !8
  %384 = invoke i32 @_ZN3JPH13BodyInterface16CreateAndAddBodyERKNS_20BodyCreationSettingsENS_11EActivationE(ptr noundef nonnull align 8 dereferenceable(24) %383, ptr noundef nonnull align 16 dereferenceable(256) %43, i32 noundef 0)
          to label %385 unwind label %577

385:                                              ; preds = %381
  call void @_ZN3JPH20BodyCreationSettingsD2Ev(ptr noundef nonnull align 16 dereferenceable(256) %43) #11
  call void @llvm.lifetime.end.p0(i64 256, ptr nonnull %43) #11
  call void @_ZN3JPH3RefINS_27StaticCompoundShapeSettingsEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %38) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %38) #11
  call void @_ZN3JPH3RefINS_27StaticCompoundShapeSettingsEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %35) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %35) #11
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %45) #11
  %386 = invoke noundef ptr @_ZN3JPH27StaticCompoundShapeSettingsnwEm(i64 noundef 88)
          to label %387 unwind label %584

387:                                              ; preds = %385
  invoke void @_ZN3JPH27StaticCompoundShapeSettingsC2Ev(ptr noundef nonnull align 8 dereferenceable(88) %386)
          to label %388 unwind label %586

388:                                              ; preds = %387
  invoke void @_ZN3JPH3RefINS_27StaticCompoundShapeSettingsEEC2EPS1_(ptr noundef nonnull align 8 dereferenceable(8) %45, ptr noundef nonnull %386)
          to label %389 unwind label %584

389:                                              ; preds = %388
  %390 = call noundef ptr @_ZNK3JPH3RefINS_27StaticCompoundShapeSettingsEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %45)
  call void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %46, float noundef 1.000000e+00, float noundef 0.000000e+00, float noundef 0.000000e+00)
  %391 = invoke { double, double } @_ZN3JPH4Vec36sAxisZEv()
          to label %392 unwind label %588

392:                                              ; preds = %389
  %393 = extractvalue { double, double } %391, 0
  %394 = extractvalue { double, double } %391, 1
  %395 = call noundef float @_ZN3JPH16DegreesToRadiansEf(float noundef 2.000000e+00)
  %396 = invoke { double, double } @_ZN3JPH4Quat9sRotationENS_4Vec3Ef(double %393, double %394, float noundef %395)
          to label %397 unwind label %588

397:                                              ; preds = %392
  %398 = extractvalue { double, double } %396, 0
  %399 = extractvalue { double, double } %396, 1
  %400 = call noundef ptr @_ZNK3JPH3RefINS_13ShapeSettingsEEcvPS1_Ev(ptr noundef nonnull align 8 dereferenceable(8) %11)
  %401 = load double, ptr %46, align 16
  %402 = getelementptr inbounds i8, ptr %46, i64 8
  %403 = load double, ptr %402, align 8
  invoke void @_ZN3JPH21CompoundShapeSettings8AddShapeENS_4Vec3ENS_4QuatEPKNS_13ShapeSettingsEj(ptr noundef nonnull align 8 dereferenceable(88) %390, double %401, double %403, double %398, double %399, ptr noundef %400, i32 noundef 0)
          to label %404 unwind label %588

404:                                              ; preds = %397
  %405 = call noundef ptr @_ZNK3JPH3RefINS_27StaticCompoundShapeSettingsEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %45)
  call void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %47, float noundef -1.000000e+00, float noundef 0.000000e+00, float noundef 0.000000e+00)
  %406 = invoke { double, double } @_ZN3JPH4Vec36sAxisZEv()
          to label %407 unwind label %588

407:                                              ; preds = %404
  %408 = extractvalue { double, double } %406, 0
  %409 = extractvalue { double, double } %406, 1
  %410 = call noundef float @_ZN3JPH16DegreesToRadiansEf(float noundef -2.000000e+00)
  %411 = invoke { double, double } @_ZN3JPH4Quat9sRotationENS_4Vec3Ef(double %408, double %409, float noundef %410)
          to label %412 unwind label %588

412:                                              ; preds = %407
  %413 = extractvalue { double, double } %411, 0
  %414 = extractvalue { double, double } %411, 1
  %415 = call noundef ptr @_ZNK3JPH3RefINS_13ShapeSettingsEEcvPS1_Ev(ptr noundef nonnull align 8 dereferenceable(8) %11)
  %416 = load double, ptr %47, align 16
  %417 = getelementptr inbounds i8, ptr %47, i64 8
  %418 = load double, ptr %417, align 8
  invoke void @_ZN3JPH21CompoundShapeSettings8AddShapeENS_4Vec3ENS_4QuatEPKNS_13ShapeSettingsEj(ptr noundef nonnull align 8 dereferenceable(88) %405, double %416, double %418, double %413, double %414, ptr noundef %415, i32 noundef 0)
          to label %419 unwind label %588

419:                                              ; preds = %412
  %420 = load ptr, ptr %108, align 8, !tbaa !8
  call void @llvm.lifetime.start.p0(i64 256, ptr nonnull %48) #11
  %421 = call noundef ptr @_ZNK3JPH3RefINS_27StaticCompoundShapeSettingsEEcvPS1_Ev(ptr noundef nonnull align 8 dereferenceable(8) %45)
  call void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %49, float noundef 0.000000e+00, float noundef 1.000000e+00, float noundef -4.000000e+00)
  %422 = invoke { double, double } @_ZN3JPH4Quat9sIdentityEv()
          to label %423 unwind label %590

423:                                              ; preds = %419
  %424 = extractvalue { double, double } %422, 0
  %425 = extractvalue { double, double } %422, 1
  %426 = load double, ptr %49, align 16
  %427 = getelementptr inbounds i8, ptr %49, i64 8
  %428 = load double, ptr %427, align 8
  invoke void @_ZN3JPH20BodyCreationSettingsC2EPKNS_13ShapeSettingsENS_4Vec3ENS_4QuatENS_11EMotionTypeEt(ptr noundef nonnull align 16 dereferenceable(256) %48, ptr noundef %421, double %426, double %428, double %424, double %425, i8 noundef zeroext 0, i16 noundef zeroext 0)
          to label %429 unwind label %590

429:                                              ; preds = %423
  %430 = invoke i32 @_ZN3JPH13BodyInterface16CreateAndAddBodyERKNS_20BodyCreationSettingsENS_11EActivationE(ptr noundef nonnull align 8 dereferenceable(24) %420, ptr noundef nonnull align 16 dereferenceable(256) %48, i32 noundef 1)
          to label %431 unwind label %592

431:                                              ; preds = %429
  call void @_ZN3JPH20BodyCreationSettingsD2Ev(ptr noundef nonnull align 16 dereferenceable(256) %48) #11
  call void @llvm.lifetime.end.p0(i64 256, ptr nonnull %48) #11
  call void @llvm.lifetime.start.p0(i64 256, ptr nonnull %50) #11
  %432 = call noundef ptr @_ZNK3JPH8RefConstINS_13ShapeSettingsEEcvPKS1_Ev(ptr noundef nonnull align 8 dereferenceable(8) %21)
  call void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %51, float noundef 0.000000e+00, float noundef 4.000000e+00, float noundef -4.000000e+00)
  %433 = invoke { double, double } @_ZN3JPH4Quat9sIdentityEv()
          to label %434 unwind label %595

434:                                              ; preds = %431
  %435 = extractvalue { double, double } %433, 0
  %436 = extractvalue { double, double } %433, 1
  %437 = load double, ptr %51, align 16
  %438 = getelementptr inbounds i8, ptr %51, i64 8
  %439 = load double, ptr %438, align 8
  invoke void @_ZN3JPH20BodyCreationSettingsC2EPKNS_13ShapeSettingsENS_4Vec3ENS_4QuatENS_11EMotionTypeEt(ptr noundef nonnull align 16 dereferenceable(256) %50, ptr noundef %432, double %437, double %439, double %435, double %436, i8 noundef zeroext 2, i16 noundef zeroext 1)
          to label %440 unwind label %595

440:                                              ; preds = %434
  %441 = getelementptr inbounds i8, ptr %50, i64 105
  store i8 0, ptr %441, align 1, !tbaa !20
  %442 = load ptr, ptr %108, align 8, !tbaa !8
  %443 = invoke i32 @_ZN3JPH13BodyInterface16CreateAndAddBodyERKNS_20BodyCreationSettingsENS_11EActivationE(ptr noundef nonnull align 8 dereferenceable(24) %442, ptr noundef nonnull align 16 dereferenceable(256) %50, i32 noundef 0)
          to label %444 unwind label %597

444:                                              ; preds = %440
  call void @_ZN3JPH20BodyCreationSettingsD2Ev(ptr noundef nonnull align 16 dereferenceable(256) %50) #11
  call void @llvm.lifetime.end.p0(i64 256, ptr nonnull %50) #11
  call void @_ZN3JPH3RefINS_27StaticCompoundShapeSettingsEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %45) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %45) #11
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %52) #11
  %445 = invoke noundef ptr @_ZN3JPH27StaticCompoundShapeSettingsnwEm(i64 noundef 88)
          to label %446 unwind label %602

446:                                              ; preds = %444
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(88) %445, i8 0, i64 88, i1 false)
  invoke void @_ZN3JPH27StaticCompoundShapeSettingsC2Ev(ptr noundef nonnull align 8 dereferenceable(88) %445)
          to label %447 unwind label %604

447:                                              ; preds = %446
  invoke void @_ZN3JPH3RefINS_27StaticCompoundShapeSettingsEEC2EPS1_(ptr noundef nonnull align 8 dereferenceable(8) %52, ptr noundef nonnull %445)
          to label %448 unwind label %602

448:                                              ; preds = %447
  %449 = call noundef ptr @_ZNK3JPH3RefINS_27StaticCompoundShapeSettingsEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %52)
  call void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %53, float noundef 1.000000e+00, float noundef 0.000000e+00, float noundef 0.000000e+00)
  %450 = invoke { double, double } @_ZN3JPH4Vec36sAxisZEv()
          to label %451 unwind label %606

451:                                              ; preds = %448
  %452 = extractvalue { double, double } %450, 0
  %453 = extractvalue { double, double } %450, 1
  %454 = call noundef float @_ZN3JPH16DegreesToRadiansEf(float noundef 3.000000e+00)
  %455 = invoke { double, double } @_ZN3JPH4Quat9sRotationENS_4Vec3Ef(double %452, double %453, float noundef %454)
          to label %456 unwind label %606

456:                                              ; preds = %451
  %457 = extractvalue { double, double } %455, 0
  %458 = extractvalue { double, double } %455, 1
  %459 = call noundef ptr @_ZNK3JPH3RefINS_13ShapeSettingsEEcvPS1_Ev(ptr noundef nonnull align 8 dereferenceable(8) %11)
  %460 = load double, ptr %53, align 16
  %461 = getelementptr inbounds i8, ptr %53, i64 8
  %462 = load double, ptr %461, align 8
  invoke void @_ZN3JPH21CompoundShapeSettings8AddShapeENS_4Vec3ENS_4QuatEPKNS_13ShapeSettingsEj(ptr noundef nonnull align 8 dereferenceable(88) %449, double %460, double %462, double %457, double %458, ptr noundef %459, i32 noundef 0)
          to label %463 unwind label %606

463:                                              ; preds = %456
  %464 = call noundef ptr @_ZNK3JPH3RefINS_27StaticCompoundShapeSettingsEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %52)
  call void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %54, float noundef -1.000000e+00, float noundef 0.000000e+00, float noundef 0.000000e+00)
  %465 = invoke { double, double } @_ZN3JPH4Vec36sAxisZEv()
          to label %466 unwind label %606

466:                                              ; preds = %463
  %467 = extractvalue { double, double } %465, 0
  %468 = extractvalue { double, double } %465, 1
  %469 = call noundef float @_ZN3JPH16DegreesToRadiansEf(float noundef -3.000000e+00)
  %470 = invoke { double, double } @_ZN3JPH4Quat9sRotationENS_4Vec3Ef(double %467, double %468, float noundef %469)
          to label %471 unwind label %606

471:                                              ; preds = %466
  %472 = extractvalue { double, double } %470, 0
  %473 = extractvalue { double, double } %470, 1
  %474 = call noundef ptr @_ZNK3JPH3RefINS_13ShapeSettingsEEcvPS1_Ev(ptr noundef nonnull align 8 dereferenceable(8) %11)
  %475 = load double, ptr %54, align 16
  %476 = getelementptr inbounds i8, ptr %54, i64 8
  %477 = load double, ptr %476, align 8
  invoke void @_ZN3JPH21CompoundShapeSettings8AddShapeENS_4Vec3ENS_4QuatEPKNS_13ShapeSettingsEj(ptr noundef nonnull align 8 dereferenceable(88) %464, double %475, double %477, double %472, double %473, ptr noundef %474, i32 noundef 0)
          to label %478 unwind label %606

478:                                              ; preds = %471
  %479 = load ptr, ptr %108, align 8, !tbaa !8
  call void @llvm.lifetime.start.p0(i64 256, ptr nonnull %55) #11
  %480 = call noundef ptr @_ZNK3JPH3RefINS_27StaticCompoundShapeSettingsEEcvPS1_Ev(ptr noundef nonnull align 8 dereferenceable(8) %52)
  call void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %56, float noundef 0.000000e+00, float noundef 1.000000e+00, float noundef -8.000000e+00)
  %481 = invoke { double, double } @_ZN3JPH4Quat9sIdentityEv()
          to label %482 unwind label %608

482:                                              ; preds = %478
  %483 = extractvalue { double, double } %481, 0
  %484 = extractvalue { double, double } %481, 1
  %485 = load double, ptr %56, align 16
  %486 = getelementptr inbounds i8, ptr %56, i64 8
  %487 = load double, ptr %486, align 8
  invoke void @_ZN3JPH20BodyCreationSettingsC2EPKNS_13ShapeSettingsENS_4Vec3ENS_4QuatENS_11EMotionTypeEt(ptr noundef nonnull align 16 dereferenceable(256) %55, ptr noundef %480, double %485, double %487, double %483, double %484, i8 noundef zeroext 0, i16 noundef zeroext 0)
          to label %488 unwind label %608

488:                                              ; preds = %482
  %489 = invoke i32 @_ZN3JPH13BodyInterface16CreateAndAddBodyERKNS_20BodyCreationSettingsENS_11EActivationE(ptr noundef nonnull align 8 dereferenceable(24) %479, ptr noundef nonnull align 16 dereferenceable(256) %55, i32 noundef 1)
          to label %490 unwind label %610

490:                                              ; preds = %488
  call void @_ZN3JPH20BodyCreationSettingsD2Ev(ptr noundef nonnull align 16 dereferenceable(256) %55) #11
  call void @llvm.lifetime.end.p0(i64 256, ptr nonnull %55) #11
  call void @llvm.lifetime.start.p0(i64 256, ptr nonnull %57) #11
  %491 = call noundef ptr @_ZNK3JPH8RefConstINS_13ShapeSettingsEEcvPKS1_Ev(ptr noundef nonnull align 8 dereferenceable(8) %21)
  call void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %58, float noundef 0.000000e+00, float noundef 4.000000e+00, float noundef -8.000000e+00)
  %492 = invoke { double, double } @_ZN3JPH4Quat9sIdentityEv()
          to label %493 unwind label %613

493:                                              ; preds = %490
  %494 = extractvalue { double, double } %492, 0
  %495 = extractvalue { double, double } %492, 1
  %496 = load double, ptr %58, align 16
  %497 = getelementptr inbounds i8, ptr %58, i64 8
  %498 = load double, ptr %497, align 8
  invoke void @_ZN3JPH20BodyCreationSettingsC2EPKNS_13ShapeSettingsENS_4Vec3ENS_4QuatENS_11EMotionTypeEt(ptr noundef nonnull align 16 dereferenceable(256) %57, ptr noundef %491, double %496, double %498, double %494, double %495, i8 noundef zeroext 2, i16 noundef zeroext 1)
          to label %499 unwind label %613

499:                                              ; preds = %493
  %500 = getelementptr inbounds i8, ptr %57, i64 105
  store i8 0, ptr %500, align 1, !tbaa !20
  %501 = load ptr, ptr %108, align 8, !tbaa !8
  %502 = invoke i32 @_ZN3JPH13BodyInterface16CreateAndAddBodyERKNS_20BodyCreationSettingsENS_11EActivationE(ptr noundef nonnull align 8 dereferenceable(24) %501, ptr noundef nonnull align 16 dereferenceable(256) %57, i32 noundef 0)
          to label %503 unwind label %615

503:                                              ; preds = %499
  call void @_ZN3JPH20BodyCreationSettingsD2Ev(ptr noundef nonnull align 16 dereferenceable(256) %57) #11
  call void @llvm.lifetime.end.p0(i64 256, ptr nonnull %57) #11
  call void @_ZN3JPH3RefINS_27StaticCompoundShapeSettingsEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %52) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %52) #11
  call void @_ZN3JPH8RefConstINS_13ShapeSettingsEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %21) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %21) #11
  call void @_ZN3JPH3RefINS_27StaticCompoundShapeSettingsEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %14) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %14) #11
  call void @_ZN3JPH3RefINS_13ShapeSettingsEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %11) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %11) #11
  call void @_ZN3JPH5ArrayINS_8RefConstINS_15PhysicsMaterialEEENS_12STLAllocatorIS3_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_8TriangleENS_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

504:                                              ; preds = %101, %62
  %505 = landingpad { ptr, i32 }
          cleanup
  br label %508

506:                                              ; preds = %102
  %507 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3JPH8RefConstINS_15PhysicsMaterialEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %10) #11
  br label %508

508:                                              ; preds = %506, %504
  %.pn = phi { ptr, i32 } [ %507, %506 ], [ %505, %504 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %10) #11
  br label %626

509:                                              ; preds = %103
  %510 = landingpad { ptr, i32 }
          cleanup
  br label %625

511:                                              ; preds = %106
  %512 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3JPH5ArrayINS_8RefConstINS_15PhysicsMaterialEEENS_12STLAllocatorIS3_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %12) #11
  br label %625

513:                                              ; preds = %105
  %514 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3JPH5ArrayINS_8RefConstINS_15PhysicsMaterialEEENS_12STLAllocatorIS3_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %12) #11
  call void @_ZN3JPH17MeshShapeSettingsdlEPv(ptr noundef %104) #11
  br label %625

515:                                              ; preds = %121, %119, %117, %107
  %516 = landingpad { ptr, i32 }
          cleanup
  br label %521

517:                                              ; preds = %114, %111
  %518 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3JPH19ScaledShapeSettingsdlEPv(ptr noundef %110) #11
  br label %521

519:                                              ; preds = %126
  %520 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3JPH20BodyCreationSettingsD2Ev(ptr noundef nonnull align 16 dereferenceable(256) %13) #11
  br label %521

521:                                              ; preds = %519, %517, %515
  %.pn152 = phi { ptr, i32 } [ %520, %519 ], [ %516, %515 ], [ %518, %517 ]
  call void @llvm.lifetime.end.p0(i64 256, ptr nonnull %13) #11
  br label %624

522:                                              ; preds = %131, %128
  %523 = landingpad { ptr, i32 }
          cleanup
  br label %623

524:                                              ; preds = %130
  %525 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3JPH27StaticCompoundShapeSettingsdlEPv(ptr noundef %129) #11
  br label %623

526:                                              ; preds = %205, %201, %198, %191, %187, %184, %177, %173, %170, %163, %159, %156, %149, %146, %139, %135, %132
  %527 = landingpad { ptr, i32 }
          cleanup
  br label %622

528:                                              ; preds = %218, %212
  %529 = landingpad { ptr, i32 }
          cleanup
  br label %621

530:                                              ; preds = %214
  %531 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3JPH16BoxShapeSettingsdlEPv(ptr noundef %213) #11
  br label %621

532:                                              ; preds = %222, %219
  %533 = landingpad { ptr, i32 }
          cleanup
  br label %557

534:                                              ; preds = %221
  %535 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3JPH27StaticCompoundShapeSettingsdlEPv(ptr noundef %220) #11
  br label %557

536:                                              ; preds = %246, %243, %236, %233, %226, %223
  %537 = landingpad { ptr, i32 }
          cleanup
  br label %556

538:                                              ; preds = %256, %253
  %539 = landingpad { ptr, i32 }
          cleanup
  br label %555

540:                                              ; preds = %255
  %541 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3JPH27StaticCompoundShapeSettingsdlEPv(ptr noundef %254) #11
  br label %555

542:                                              ; preds = %280, %277, %270, %267, %260, %257
  %543 = landingpad { ptr, i32 }
          cleanup
  br label %554

544:                                              ; preds = %291, %287
  %545 = landingpad { ptr, i32 }
          cleanup
  br label %548

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

548:                                              ; preds = %546, %544
  %.pn154 = phi { ptr, i32 } [ %547, %546 ], [ %545, %544 ]
  call void @llvm.lifetime.end.p0(i64 256, ptr nonnull %31) #11
  br label %554

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

551:                                              ; preds = %308
  %552 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3JPH20BodyCreationSettingsD2Ev(ptr noundef nonnull align 16 dereferenceable(256) %33) #11
  br label %553

553:                                              ; preds = %551, %549
  %.pn156 = phi { ptr, i32 } [ %552, %551 ], [ %550, %549 ]
  call void @llvm.lifetime.end.p0(i64 256, ptr nonnull %33) #11
  br label %554

554:                                              ; preds = %553, %548, %542
  %.pn156.pn = phi { ptr, i32 } [ %.pn156, %553 ], [ %.pn154, %548 ], [ %543, %542 ]
  call void @_ZN3JPH3RefINS_27StaticCompoundShapeSettingsEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %27) #11
  br label %555

555:                                              ; preds = %554, %540, %538
  %.pn156.pn.pn = phi { ptr, i32 } [ %.pn156.pn, %554 ], [ %539, %538 ], [ %541, %540 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %27) #11
  br label %556

556:                                              ; preds = %555, %536
  %.pn156.pn.pn.pn = phi { ptr, i32 } [ %.pn156.pn.pn, %555 ], [ %537, %536 ]
  call void @_ZN3JPH3RefINS_27StaticCompoundShapeSettingsEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %23) #11
  br label %557

557:                                              ; preds = %556, %534, %532
  %.pn156.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn156.pn.pn.pn, %556 ], [ %533, %532 ], [ %535, %534 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %23) #11
  br label %620

558:                                              ; preds = %315, %312
  %559 = landingpad { ptr, i32 }
          cleanup
  br label %583

560:                                              ; preds = %314
  %561 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3JPH27StaticCompoundShapeSettingsdlEPv(ptr noundef %313) #11
  br label %583

562:                                              ; preds = %329, %326, %319, %316
  %563 = landingpad { ptr, i32 }
          cleanup
  br label %582

564:                                              ; preds = %339, %336
  %565 = landingpad { ptr, i32 }
          cleanup
  br label %581

566:                                              ; preds = %338
  %567 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3JPH27StaticCompoundShapeSettingsdlEPv(ptr noundef %337) #11
  br label %581

568:                                              ; preds = %353, %350, %343, %340
  %569 = landingpad { ptr, i32 }
          cleanup
  br label %580

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

572:                                              ; preds = %370
  %573 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3JPH20BodyCreationSettingsD2Ev(ptr noundef nonnull align 16 dereferenceable(256) %41) #11
  br label %574

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

575:                                              ; preds = %375, %372
  %576 = landingpad { ptr, i32 }
          cleanup
  br label %579

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

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

580:                                              ; preds = %579, %574, %568
  %.pn164.pn = phi { ptr, i32 } [ %.pn164, %579 ], [ %.pn162, %574 ], [ %569, %568 ]
  call void @_ZN3JPH3RefINS_27StaticCompoundShapeSettingsEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %38) #11
  br label %581

581:                                              ; preds = %580, %566, %564
  %.pn164.pn.pn = phi { ptr, i32 } [ %.pn164.pn, %580 ], [ %565, %564 ], [ %567, %566 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %38) #11
  br label %582

582:                                              ; preds = %581, %562
  %.pn164.pn.pn.pn = phi { ptr, i32 } [ %.pn164.pn.pn, %581 ], [ %563, %562 ]
  call void @_ZN3JPH3RefINS_27StaticCompoundShapeSettingsEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %35) #11
  br label %583

583:                                              ; preds = %582, %560, %558
  %.pn164.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn164.pn.pn.pn, %582 ], [ %559, %558 ], [ %561, %560 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %35) #11
  br label %620

584:                                              ; preds = %388, %385
  %585 = landingpad { ptr, i32 }
          cleanup
  br label %601

586:                                              ; preds = %387
  %587 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3JPH27StaticCompoundShapeSettingsdlEPv(ptr noundef %386) #11
  br label %601

588:                                              ; preds = %412, %407, %404, %397, %392, %389
  %589 = landingpad { ptr, i32 }
          cleanup
  br label %600

590:                                              ; preds = %423, %419
  %591 = landingpad { ptr, i32 }
          cleanup
  br label %594

592:                                              ; preds = %429
  %593 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3JPH20BodyCreationSettingsD2Ev(ptr noundef nonnull align 16 dereferenceable(256) %48) #11
  br label %594

594:                                              ; preds = %592, %590
  %.pn170 = phi { ptr, i32 } [ %593, %592 ], [ %591, %590 ]
  call void @llvm.lifetime.end.p0(i64 256, ptr nonnull %48) #11
  br label %600

595:                                              ; preds = %434, %431
  %596 = landingpad { ptr, i32 }
          cleanup
  br label %599

597:                                              ; preds = %440
  %598 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3JPH20BodyCreationSettingsD2Ev(ptr noundef nonnull align 16 dereferenceable(256) %50) #11
  br label %599

599:                                              ; preds = %597, %595
  %.pn172 = phi { ptr, i32 } [ %598, %597 ], [ %596, %595 ]
  call void @llvm.lifetime.end.p0(i64 256, ptr nonnull %50) #11
  br label %600

600:                                              ; preds = %599, %594, %588
  %.pn172.pn = phi { ptr, i32 } [ %.pn172, %599 ], [ %.pn170, %594 ], [ %589, %588 ]
  call void @_ZN3JPH3RefINS_27StaticCompoundShapeSettingsEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %45) #11
  br label %601

601:                                              ; preds = %600, %586, %584
  %.pn172.pn.pn = phi { ptr, i32 } [ %.pn172.pn, %600 ], [ %585, %584 ], [ %587, %586 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %45) #11
  br label %620

602:                                              ; preds = %447, %444
  %603 = landingpad { ptr, i32 }
          cleanup
  br label %619

604:                                              ; preds = %446
  %605 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3JPH27StaticCompoundShapeSettingsdlEPv(ptr noundef nonnull %445) #11
  br label %619

606:                                              ; preds = %471, %466, %463, %456, %451, %448
  %607 = landingpad { ptr, i32 }
          cleanup
  br label %618

608:                                              ; preds = %482, %478
  %609 = landingpad { ptr, i32 }
          cleanup
  br label %612

610:                                              ; preds = %488
  %611 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3JPH20BodyCreationSettingsD2Ev(ptr noundef nonnull align 16 dereferenceable(256) %55) #11
  br label %612

612:                                              ; preds = %610, %608
  %.pn176 = phi { ptr, i32 } [ %611, %610 ], [ %609, %608 ]
  call void @llvm.lifetime.end.p0(i64 256, ptr nonnull %55) #11
  br label %618

613:                                              ; preds = %493, %490
  %614 = landingpad { ptr, i32 }
          cleanup
  br label %617

615:                                              ; preds = %499
  %616 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3JPH20BodyCreationSettingsD2Ev(ptr noundef nonnull align 16 dereferenceable(256) %57) #11
  br label %617

617:                                              ; preds = %615, %613
  %.pn178 = phi { ptr, i32 } [ %616, %615 ], [ %614, %613 ]
  call void @llvm.lifetime.end.p0(i64 256, ptr nonnull %57) #11
  br label %618

618:                                              ; preds = %617, %612, %606
  %.pn178.pn = phi { ptr, i32 } [ %.pn178, %617 ], [ %.pn176, %612 ], [ %607, %606 ]
  call void @_ZN3JPH3RefINS_27StaticCompoundShapeSettingsEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %52) #11
  br label %619

619:                                              ; preds = %618, %604, %602
  %.pn178.pn.pn = phi { ptr, i32 } [ %.pn178.pn, %618 ], [ %603, %602 ], [ %605, %604 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %52) #11
  br label %620

620:                                              ; preds = %619, %601, %583, %557
  %.pn178.pn.pn.pn = phi { ptr, i32 } [ %.pn178.pn.pn, %619 ], [ %.pn172.pn.pn, %601 ], [ %.pn164.pn.pn.pn.pn, %583 ], [ %.pn156.pn.pn.pn.pn, %557 ]
  call void @_ZN3JPH8RefConstINS_13ShapeSettingsEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %21) #11
  br label %621

621:                                              ; preds = %620, %530, %528
  %.pn178.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn178.pn.pn.pn, %620 ], [ %529, %528 ], [ %531, %530 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %21) #11
  br label %622

622:                                              ; preds = %621, %526
  %.pn178.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn178.pn.pn.pn.pn, %621 ], [ %527, %526 ]
  call void @_ZN3JPH3RefINS_27StaticCompoundShapeSettingsEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %14) #11
  br label %623

623:                                              ; preds = %622, %524, %522
  %.pn178.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn178.pn.pn.pn.pn.pn, %622 ], [ %523, %522 ], [ %525, %524 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %14) #11
  br label %624

624:                                              ; preds = %623, %521
  %.pn178.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn178.pn.pn.pn.pn.pn.pn, %623 ], [ %.pn152, %521 ]
  call void @_ZN3JPH3RefINS_13ShapeSettingsEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %11) #11
  br label %625

625:                                              ; preds = %511, %513, %624, %509
  %.pn178.pn.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn178.pn.pn.pn.pn.pn.pn.pn, %624 ], [ %514, %513 ], [ %512, %511 ], [ %510, %509 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %11) #11
  br label %626

626:                                              ; preds = %625, %508
  %.pn178.pn.pn.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn178.pn.pn.pn.pn.pn.pn.pn.pn, %625 ], [ %.pn, %508 ]
  call void @_ZN3JPH5ArrayINS_8RefConstINS_15PhysicsMaterialEEENS_12STLAllocatorIS3_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %9) #11
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %9) #11
  br label %627

627:                                              ; preds = %626, %100
  %.pn189.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn189.pn.pn.pn, %100 ], [ %.pn178.pn.pn.pn.pn.pn.pn.pn.pn.pn, %626 ]
  call void @_ZN3JPH5ArrayINS_8TriangleENS_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 } %.pn189.pn.pn.pn.pn
}

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

declare noundef float @_Z12PerlinNoise3fffiii(float noundef, float noundef, float noundef, i32 noundef, i32 noundef, i32 noundef) local_unnamed_addr #3

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZN3JPH6Float3C2Efff(ptr noundef nonnull align 4 dereferenceable(12), float noundef, float noundef, float noundef) unnamed_addr #2 align 2

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZN3JPH8TriangleC2ERKNS_6Float3ES3_S3_jj(ptr noundef nonnull align 4 dereferenceable(44), ptr noundef nonnull align 4 dereferenceable(12), ptr noundef nonnull align 4 dereferenceable(12), ptr noundef nonnull align 4 dereferenceable(12), i32 noundef, i32 noundef) unnamed_addr #2 align 2

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

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

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

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

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

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

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

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

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

declare void @_ZN3JPH17MeshShapeSettingsC1ERKNS_5ArrayINS_8TriangleENS_12STLAllocatorIS2_EEEENS1_INS_8RefConstINS_15PhysicsMaterialEEENS3_ISA_EEEE(ptr noundef nonnull align 8 dereferenceable(152), ptr noundef nonnull align 8 dereferenceable(24), ptr noundef) unnamed_addr #3

; 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 void @_ZN3JPH5ArrayINS_8RefConstINS_15PhysicsMaterialEEENS_12STLAllocatorIS3_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(24)) unnamed_addr #7 align 2

; Function Attrs: alwaysinline mustprogress nounwind uwtable
declare dso_local void @_ZN3JPH17MeshShapeSettingsdlEPv(ptr noundef) local_unnamed_addr #8 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 #3

; Function Attrs: alwaysinline mustprogress uwtable
declare dso_local noundef ptr @_ZN3JPH19ScaledShapeSettingsnwEm(i64 noundef) local_unnamed_addr #5 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 #7 align 2

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

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

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

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

; Function Attrs: alwaysinline mustprogress uwtable
declare dso_local { double, double } @_ZN3JPH4Quat9sIdentityEv() local_unnamed_addr #5 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 #7 align 2

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


; Effective O3 passes: CorrelatedValuePropagationPass,EarlyCSEPass,GlobalOptPass,IndVarSimplifyPass,InferFunctionAttrsPass,InstCombinePass,JumpThreadingPass,LICMPass,LoopRotatePass,LoopSimplifyPass,PostOrderFunctionAttrsPass,SROAPass,SimplifyCFGPass