; LLVM IR from jrouwe/JoltPhysics :: Samples/Tests/Shapes (StaticCompoundShapeTest)

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

%"class.JPH::Ref" = type { ptr }
%"class.JPH::Vec3" = type { %union.anon }
%union.anon = type { <4 x float> }
%"class.JPH::Quat" = type { %"class.JPH::Vec4" }
%"class.JPH::Vec4" = type { %union.anon.4 }
%union.anon.4 = type { <4 x float> }
%"class.JPH::BodyCreationSettings" = type { %"class.JPH::Vec3", %"class.JPH::Quat", %"class.JPH::Vec3", %"class.JPH::Vec3", i64, i16, %"class.JPH::CollisionGroup", i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, float, float, float, float, float, float, float, i32, i32, i8, float, %"class.JPH::MassProperties", %"class.JPH::RefConst.15", %"class.JPH::RefConst" }
%"class.JPH::CollisionGroup" = type { %"class.JPH::RefConst.5", i32, i32 }
%"class.JPH::RefConst.5" = type { ptr }
%"class.JPH::MassProperties" = type { float, %"class.JPH::Mat44" }
%"class.JPH::Mat44" = type { [4 x %"class.JPH::Vec4"] }
%"class.JPH::RefConst.15" = type { ptr }
%"class.JPH::RefConst" = type { ptr }
%"class.JPH::BodyID" = type { i32 }
%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 @_ZN23StaticCompoundShapeTest10InitializeEv(ptr noundef nonnull align 8 dereferenceable(112) %0) unnamed_addr #1 align 2 personality ptr @__gxx_personality_v0 {
  %2 = alloca ptr, align 8
  %3 = alloca %"class.JPH::Ref", align 8
  %4 = alloca ptr, align 8
  %5 = alloca i32, align 4
  %6 = alloca %"class.JPH::Vec3", align 16
  %7 = alloca %"class.JPH::Quat", align 16
  %8 = alloca %"class.JPH::Vec3", align 16
  %9 = alloca %"class.JPH::Quat", align 16
  %10 = alloca %"class.JPH::Vec3", align 16
  %11 = alloca %"class.JPH::Quat", align 16
  %12 = alloca %"class.JPH::Ref", align 8
  %13 = alloca %"class.JPH::Vec3", align 16
  %14 = alloca %"class.JPH::Quat", align 16
  %15 = alloca %"class.JPH::Vec3", align 16
  %16 = alloca %"class.JPH::Vec3", align 16
  %17 = alloca %"class.JPH::Vec3", align 16
  %18 = alloca %"class.JPH::Quat", align 16
  %19 = alloca %"class.JPH::Vec3", align 16
  %20 = alloca %"class.JPH::Vec3", align 16
  %21 = alloca %"class.JPH::Quat", align 16
  %22 = alloca %"class.JPH::Vec3", align 16
  %23 = alloca %"class.JPH::Ref", align 8
  %24 = alloca %"class.JPH::Vec3", align 16
  %25 = alloca %"class.JPH::Quat", align 16
  %26 = alloca %"class.JPH::Quat", align 16
  %27 = alloca %"class.JPH::Vec3", align 16
  %28 = alloca %"class.JPH::Quat", align 16
  %29 = alloca %"class.JPH::Vec3", align 16
  %30 = alloca %"class.JPH::Vec3", align 16
  %31 = alloca %"class.JPH::Quat", align 16
  %32 = alloca %"class.JPH::Quat", align 16
  %33 = alloca %"class.JPH::Vec3", align 16
  %34 = alloca %"class.JPH::Quat", align 16
  %35 = alloca %"class.JPH::Vec3", align 16
  %36 = alloca %"class.JPH::Ref", align 8
  %37 = alloca i32, align 4
  %38 = alloca i32, align 4
  %39 = alloca i32, align 4
  %40 = alloca i32, align 4
  %41 = alloca %"class.JPH::Vec3", align 16
  %42 = alloca %"class.JPH::Quat", align 16
  %43 = alloca %"class.JPH::Quat", align 16
  %44 = alloca %"class.JPH::Vec3", align 16
  %45 = alloca %"class.JPH::Quat", align 16
  %46 = alloca %"class.JPH::Vec3", align 16
  %47 = alloca %"class.JPH::Vec3", align 16
  %48 = alloca [3 x %"class.JPH::Ref"], align 16
  %49 = alloca ptr, align 8
  %50 = alloca i32, align 4
  %51 = alloca i32, align 4
  %52 = alloca %"class.JPH::Quat", align 16
  %53 = alloca %"class.JPH::Quat", align 16
  %54 = alloca %"class.JPH::Vec3", align 16
  %55 = alloca %"class.JPH::Quat", align 16
  %56 = alloca %"class.JPH::Vec3", align 16
  %57 = alloca %"class.JPH::BodyCreationSettings", align 16
  %58 = alloca %"class.JPH::Vec3", align 16
  %59 = alloca %"class.JPH::Quat", align 16
  %60 = alloca %"class.JPH::BodyID", align 4
  store ptr %0, ptr %2, align 8, !tbaa !5
  %61 = load ptr, ptr %2, align 8
  %62 = call noundef nonnull align 16 dereferenceable(122) ptr @_ZN4Test11CreateFloorEf(ptr noundef nonnull align 8 dereferenceable(112) %61, float noundef 2.000000e+02)
  call void @llvm.lifetime.start.p0(i64 8, ptr %3) #11
  %63 = call noundef ptr @_ZN3JPH27StaticCompoundShapeSettingsnwEm(i64 noundef 88)
  invoke void @_ZN3JPH27StaticCompoundShapeSettingsC2Ev(ptr noundef nonnull align 8 dereferenceable(88) %63)
          to label %64 unwind label %411

64:                                               ; preds = %1
  call void @_ZN3JPH3RefINS_27StaticCompoundShapeSettingsEEC2EPS1_(ptr noundef nonnull align 8 dereferenceable(8) %3, ptr noundef %63)
  %65 = invoke noundef ptr @_ZNK3JPH3RefINS_27StaticCompoundShapeSettingsEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %3)
          to label %66 unwind label %415

66:                                               ; preds = %64
  %67 = invoke { double, double } @_ZN3JPH4Vec35sZeroEv()
          to label %68 unwind label %415

68:                                               ; preds = %66
  %69 = getelementptr inbounds %"class.JPH::Vec3", ptr %6, i32 0, i32 0
  %70 = getelementptr inbounds %union.anon, ptr %69, i32 0, i32 0
  %71 = getelementptr inbounds { double, double }, ptr %70, i32 0, i32 0
  %72 = extractvalue { double, double } %67, 0
  store double %72, ptr %71, align 16
  %73 = getelementptr inbounds { double, double }, ptr %70, i32 0, i32 1
  %74 = extractvalue { double, double } %67, 1
  store double %74, ptr %73, align 8
  %75 = invoke { double, double } @_ZN3JPH4Quat9sIdentityEv()
          to label %76 unwind label %415

76:                                               ; preds = %68
  %77 = getelementptr inbounds %"class.JPH::Quat", ptr %7, i32 0, i32 0
  %78 = getelementptr inbounds %"class.JPH::Vec4", ptr %77, i32 0, i32 0
  %79 = getelementptr inbounds %union.anon.4, ptr %78, i32 0, i32 0
  %80 = getelementptr inbounds { double, double }, ptr %79, i32 0, i32 0
  %81 = extractvalue { double, double } %75, 0
  store double %81, ptr %80, align 16
  %82 = getelementptr inbounds { double, double }, ptr %79, i32 0, i32 1
  %83 = extractvalue { double, double } %75, 1
  store double %83, ptr %82, align 8
  %84 = invoke noundef ptr @_ZN3JPH12CapsuleShapenwEm(i64 noundef 56)
          to label %85 unwind label %415

85:                                               ; preds = %76
  invoke void @_ZN3JPH12CapsuleShapeC2EffPKNS_15PhysicsMaterialE(ptr noundef nonnull align 8 dereferenceable(56) %84, float noundef 5.000000e+00, float noundef 1.000000e+00, ptr noundef null)
          to label %86 unwind label %419

86:                                               ; preds = %85
  %87 = getelementptr inbounds { double, double }, ptr %6, i32 0, i32 0
  %88 = load double, ptr %87, align 16
  %89 = getelementptr inbounds { double, double }, ptr %6, i32 0, i32 1
  %90 = load double, ptr %89, align 8
  %91 = getelementptr inbounds { double, double }, ptr %7, i32 0, i32 0
  %92 = load double, ptr %91, align 16
  %93 = getelementptr inbounds { double, double }, ptr %7, i32 0, i32 1
  %94 = load double, ptr %93, align 8
  invoke void @_ZN3JPH21CompoundShapeSettings8AddShapeENS_4Vec3ENS_4QuatEPKNS_5ShapeEj(ptr noundef nonnull align 8 dereferenceable(88) %65, double %88, double %90, double %92, double %94, ptr noundef %84, i32 noundef 0)
          to label %95 unwind label %415

95:                                               ; preds = %86
  %96 = invoke noundef ptr @_ZNK3JPH3RefINS_27StaticCompoundShapeSettingsEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %3)
          to label %97 unwind label %415

97:                                               ; preds = %95
  invoke void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %8, float noundef 0.000000e+00, float noundef -5.000000e+00, float noundef 0.000000e+00)
          to label %98 unwind label %415

98:                                               ; preds = %97
  %99 = invoke { double, double } @_ZN3JPH4Quat9sIdentityEv()
          to label %100 unwind label %415

100:                                              ; preds = %98
  %101 = getelementptr inbounds %"class.JPH::Quat", ptr %9, i32 0, i32 0
  %102 = getelementptr inbounds %"class.JPH::Vec4", ptr %101, i32 0, i32 0
  %103 = getelementptr inbounds %union.anon.4, ptr %102, i32 0, i32 0
  %104 = getelementptr inbounds { double, double }, ptr %103, i32 0, i32 0
  %105 = extractvalue { double, double } %99, 0
  store double %105, ptr %104, align 16
  %106 = getelementptr inbounds { double, double }, ptr %103, i32 0, i32 1
  %107 = extractvalue { double, double } %99, 1
  store double %107, ptr %106, align 8
  %108 = invoke noundef ptr @_ZN3JPH11SphereShapenwEm(i64 noundef 48)
          to label %109 unwind label %415

109:                                              ; preds = %100
  invoke void @_ZN3JPH11SphereShapeC2EfPKNS_15PhysicsMaterialE(ptr noundef nonnull align 8 dereferenceable(48) %108, float noundef 2.000000e+00, ptr noundef null)
          to label %110 unwind label %423

110:                                              ; preds = %109
  %111 = getelementptr inbounds { double, double }, ptr %8, i32 0, i32 0
  %112 = load double, ptr %111, align 16
  %113 = getelementptr inbounds { double, double }, ptr %8, i32 0, i32 1
  %114 = load double, ptr %113, align 8
  %115 = getelementptr inbounds { double, double }, ptr %9, i32 0, i32 0
  %116 = load double, ptr %115, align 16
  %117 = getelementptr inbounds { double, double }, ptr %9, i32 0, i32 1
  %118 = load double, ptr %117, align 8
  invoke void @_ZN3JPH21CompoundShapeSettings8AddShapeENS_4Vec3ENS_4QuatEPKNS_5ShapeEj(ptr noundef nonnull align 8 dereferenceable(88) %96, double %112, double %114, double %116, double %118, ptr noundef %108, i32 noundef 0)
          to label %119 unwind label %415

119:                                              ; preds = %110
  %120 = invoke noundef ptr @_ZNK3JPH3RefINS_27StaticCompoundShapeSettingsEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %3)
          to label %121 unwind label %415

121:                                              ; preds = %119
  invoke void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %10, float noundef 0.000000e+00, float noundef 5.000000e+00, float noundef 0.000000e+00)
          to label %122 unwind label %415

122:                                              ; preds = %121
  %123 = invoke { double, double } @_ZN3JPH4Quat9sIdentityEv()
          to label %124 unwind label %415

124:                                              ; preds = %122
  %125 = getelementptr inbounds %"class.JPH::Quat", ptr %11, i32 0, i32 0
  %126 = getelementptr inbounds %"class.JPH::Vec4", ptr %125, i32 0, i32 0
  %127 = getelementptr inbounds %union.anon.4, ptr %126, i32 0, i32 0
  %128 = getelementptr inbounds { double, double }, ptr %127, i32 0, i32 0
  %129 = extractvalue { double, double } %123, 0
  store double %129, ptr %128, align 16
  %130 = getelementptr inbounds { double, double }, ptr %127, i32 0, i32 1
  %131 = extractvalue { double, double } %123, 1
  store double %131, ptr %130, align 8
  %132 = invoke noundef ptr @_ZN3JPH11SphereShapenwEm(i64 noundef 48)
          to label %133 unwind label %415

133:                                              ; preds = %124
  invoke void @_ZN3JPH11SphereShapeC2EfPKNS_15PhysicsMaterialE(ptr noundef nonnull align 8 dereferenceable(48) %132, float noundef 2.000000e+00, ptr noundef null)
          to label %134 unwind label %427

134:                                              ; preds = %133
  %135 = getelementptr inbounds { double, double }, ptr %10, i32 0, i32 0
  %136 = load double, ptr %135, align 16
  %137 = getelementptr inbounds { double, double }, ptr %10, i32 0, i32 1
  %138 = load double, ptr %137, align 8
  %139 = getelementptr inbounds { double, double }, ptr %11, i32 0, i32 0
  %140 = load double, ptr %139, align 16
  %141 = getelementptr inbounds { double, double }, ptr %11, i32 0, i32 1
  %142 = load double, ptr %141, align 8
  invoke void @_ZN3JPH21CompoundShapeSettings8AddShapeENS_4Vec3ENS_4QuatEPKNS_5ShapeEj(ptr noundef nonnull align 8 dereferenceable(88) %120, double %136, double %138, double %140, double %142, ptr noundef %132, i32 noundef 0)
          to label %143 unwind label %415

143:                                              ; preds = %134
  call void @llvm.lifetime.start.p0(i64 8, ptr %12) #11
  %144 = invoke noundef ptr @_ZN3JPH27StaticCompoundShapeSettingsnwEm(i64 noundef 88)
          to label %145 unwind label %431

145:                                              ; preds = %143
  invoke void @_ZN3JPH27StaticCompoundShapeSettingsC2Ev(ptr noundef nonnull align 8 dereferenceable(88) %144)
          to label %146 unwind label %435

146:                                              ; preds = %145
  invoke void @_ZN3JPH3RefINS_27StaticCompoundShapeSettingsEEC2EPS1_(ptr noundef nonnull align 8 dereferenceable(8) %12, ptr noundef %144)
          to label %147 unwind label %431

147:                                              ; preds = %146
  %148 = invoke noundef ptr @_ZNK3JPH3RefINS_27StaticCompoundShapeSettingsEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %12)
          to label %149 unwind label %439

149:                                              ; preds = %147
  invoke void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %13, float noundef 0.000000e+00, float noundef 1.500000e+00, float noundef 0.000000e+00)
          to label %150 unwind label %439

150:                                              ; preds = %149
  %151 = invoke { double, double } @_ZN3JPH4Vec36sAxisZEv()
          to label %152 unwind label %439

152:                                              ; preds = %150
  %153 = getelementptr inbounds %"class.JPH::Vec3", ptr %15, i32 0, i32 0
  %154 = getelementptr inbounds %union.anon, ptr %153, i32 0, i32 0
  %155 = getelementptr inbounds { double, double }, ptr %154, i32 0, i32 0
  %156 = extractvalue { double, double } %151, 0
  store double %156, ptr %155, align 16
  %157 = getelementptr inbounds { double, double }, ptr %154, i32 0, i32 1
  %158 = extractvalue { double, double } %151, 1
  store double %158, ptr %157, align 8
  %159 = getelementptr inbounds { double, double }, ptr %15, i32 0, i32 0
  %160 = load double, ptr %159, align 16
  %161 = getelementptr inbounds { double, double }, ptr %15, i32 0, i32 1
  %162 = load double, ptr %161, align 8
  %163 = invoke { double, double } @_ZN3JPH4Quat9sRotationENS_4Vec3Ef(double %160, double %162, float noundef 0x3FF921FB60000000)
          to label %164 unwind label %439

164:                                              ; preds = %152
  %165 = getelementptr inbounds %"class.JPH::Quat", ptr %14, i32 0, i32 0
  %166 = getelementptr inbounds %"class.JPH::Vec4", ptr %165, i32 0, i32 0
  %167 = getelementptr inbounds %union.anon.4, ptr %166, i32 0, i32 0
  %168 = getelementptr inbounds { double, double }, ptr %167, i32 0, i32 0
  %169 = extractvalue { double, double } %163, 0
  store double %169, ptr %168, align 16
  %170 = getelementptr inbounds { double, double }, ptr %167, i32 0, i32 1
  %171 = extractvalue { double, double } %163, 1
  store double %171, ptr %170, align 8
  %172 = invoke noundef ptr @_ZN3JPH8BoxShapenwEm(i64 noundef 80)
          to label %173 unwind label %439

173:                                              ; preds = %164
  invoke void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %16, float noundef 1.500000e+00, float noundef 2.500000e-01, float noundef 0x3FC99999A0000000)
          to label %174 unwind label %443

174:                                              ; preds = %173
  %175 = getelementptr inbounds { double, double }, ptr %16, i32 0, i32 0
  %176 = load double, ptr %175, align 16
  %177 = getelementptr inbounds { double, double }, ptr %16, i32 0, i32 1
  %178 = load double, ptr %177, align 8
  invoke void @_ZN3JPH8BoxShapeC2ENS_4Vec3EfPKNS_15PhysicsMaterialE(ptr noundef nonnull align 16 dereferenceable(80) %172, double %176, double %178, float noundef 0x3FA99999A0000000, ptr noundef null)
          to label %179 unwind label %443

179:                                              ; preds = %174
  %180 = getelementptr inbounds { double, double }, ptr %13, i32 0, i32 0
  %181 = load double, ptr %180, align 16
  %182 = getelementptr inbounds { double, double }, ptr %13, i32 0, i32 1
  %183 = load double, ptr %182, align 8
  %184 = getelementptr inbounds { double, double }, ptr %14, i32 0, i32 0
  %185 = load double, ptr %184, align 16
  %186 = getelementptr inbounds { double, double }, ptr %14, i32 0, i32 1
  %187 = load double, ptr %186, align 8
  invoke void @_ZN3JPH21CompoundShapeSettings8AddShapeENS_4Vec3ENS_4QuatEPKNS_5ShapeEj(ptr noundef nonnull align 8 dereferenceable(88) %148, double %181, double %183, double %185, double %187, ptr noundef %172, i32 noundef 0)
          to label %188 unwind label %439

188:                                              ; preds = %179
  %189 = invoke noundef ptr @_ZNK3JPH3RefINS_27StaticCompoundShapeSettingsEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %12)
          to label %190 unwind label %439

190:                                              ; preds = %188
  invoke void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %17, float noundef 1.500000e+00, float noundef 0.000000e+00, float noundef 0.000000e+00)
          to label %191 unwind label %439

191:                                              ; preds = %190
  %192 = invoke { double, double } @_ZN3JPH4Vec36sAxisZEv()
          to label %193 unwind label %439

193:                                              ; preds = %191
  %194 = getelementptr inbounds %"class.JPH::Vec3", ptr %19, i32 0, i32 0
  %195 = getelementptr inbounds %union.anon, ptr %194, i32 0, i32 0
  %196 = getelementptr inbounds { double, double }, ptr %195, i32 0, i32 0
  %197 = extractvalue { double, double } %192, 0
  store double %197, ptr %196, align 16
  %198 = getelementptr inbounds { double, double }, ptr %195, i32 0, i32 1
  %199 = extractvalue { double, double } %192, 1
  store double %199, ptr %198, align 8
  %200 = getelementptr inbounds { double, double }, ptr %19, i32 0, i32 0
  %201 = load double, ptr %200, align 16
  %202 = getelementptr inbounds { double, double }, ptr %19, i32 0, i32 1
  %203 = load double, ptr %202, align 8
  %204 = invoke { double, double } @_ZN3JPH4Quat9sRotationENS_4Vec3Ef(double %201, double %203, float noundef 0x3FF921FB60000000)
          to label %205 unwind label %439

205:                                              ; preds = %193
  %206 = getelementptr inbounds %"class.JPH::Quat", ptr %18, i32 0, i32 0
  %207 = getelementptr inbounds %"class.JPH::Vec4", ptr %206, i32 0, i32 0
  %208 = getelementptr inbounds %union.anon.4, ptr %207, i32 0, i32 0
  %209 = getelementptr inbounds { double, double }, ptr %208, i32 0, i32 0
  %210 = extractvalue { double, double } %204, 0
  store double %210, ptr %209, align 16
  %211 = getelementptr inbounds { double, double }, ptr %208, i32 0, i32 1
  %212 = extractvalue { double, double } %204, 1
  store double %212, ptr %211, align 8
  %213 = invoke noundef ptr @_ZN3JPH13CylinderShapenwEm(i64 noundef 56)
          to label %214 unwind label %439

214:                                              ; preds = %205
  invoke void @_ZN3JPH13CylinderShapeC1EfffPKNS_15PhysicsMaterialE(ptr noundef nonnull align 8 dereferenceable(56) %213, float noundef 1.500000e+00, float noundef 0x3FC99999A0000000, float noundef 0x3FA99999A0000000, ptr noundef null)
          to label %215 unwind label %447

215:                                              ; preds = %214
  %216 = getelementptr inbounds { double, double }, ptr %17, i32 0, i32 0
  %217 = load double, ptr %216, align 16
  %218 = getelementptr inbounds { double, double }, ptr %17, i32 0, i32 1
  %219 = load double, ptr %218, align 8
  %220 = getelementptr inbounds { double, double }, ptr %18, i32 0, i32 0
  %221 = load double, ptr %220, align 16
  %222 = getelementptr inbounds { double, double }, ptr %18, i32 0, i32 1
  %223 = load double, ptr %222, align 8
  invoke void @_ZN3JPH21CompoundShapeSettings8AddShapeENS_4Vec3ENS_4QuatEPKNS_5ShapeEj(ptr noundef nonnull align 8 dereferenceable(88) %189, double %217, double %219, double %221, double %223, ptr noundef %213, i32 noundef 0)
          to label %224 unwind label %439

224:                                              ; preds = %215
  %225 = invoke noundef ptr @_ZNK3JPH3RefINS_27StaticCompoundShapeSettingsEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %12)
          to label %226 unwind label %439

226:                                              ; preds = %224
  invoke void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %20, float noundef 0.000000e+00, float noundef 0.000000e+00, float noundef 1.500000e+00)
          to label %227 unwind label %439

227:                                              ; preds = %226
  %228 = invoke { double, double } @_ZN3JPH4Vec36sAxisXEv()
          to label %229 unwind label %439

229:                                              ; preds = %227
  %230 = getelementptr inbounds %"class.JPH::Vec3", ptr %22, i32 0, i32 0
  %231 = getelementptr inbounds %union.anon, ptr %230, i32 0, i32 0
  %232 = getelementptr inbounds { double, double }, ptr %231, i32 0, i32 0
  %233 = extractvalue { double, double } %228, 0
  store double %233, ptr %232, align 16
  %234 = getelementptr inbounds { double, double }, ptr %231, i32 0, i32 1
  %235 = extractvalue { double, double } %228, 1
  store double %235, ptr %234, align 8
  %236 = getelementptr inbounds { double, double }, ptr %22, i32 0, i32 0
  %237 = load double, ptr %236, align 16
  %238 = getelementptr inbounds { double, double }, ptr %22, i32 0, i32 1
  %239 = load double, ptr %238, align 8
  %240 = invoke { double, double } @_ZN3JPH4Quat9sRotationENS_4Vec3Ef(double %237, double %239, float noundef 0x3FF921FB60000000)
          to label %241 unwind label %439

241:                                              ; preds = %229
  %242 = getelementptr inbounds %"class.JPH::Quat", ptr %21, i32 0, i32 0
  %243 = getelementptr inbounds %"class.JPH::Vec4", ptr %242, i32 0, i32 0
  %244 = getelementptr inbounds %union.anon.4, ptr %243, i32 0, i32 0
  %245 = getelementptr inbounds { double, double }, ptr %244, i32 0, i32 0
  %246 = extractvalue { double, double } %240, 0
  store double %246, ptr %245, align 16
  %247 = getelementptr inbounds { double, double }, ptr %244, i32 0, i32 1
  %248 = extractvalue { double, double } %240, 1
  store double %248, ptr %247, align 8
  %249 = invoke noundef ptr @_ZN3JPH27TaperedCapsuleShapeSettingsnwEm(i64 noundef 88)
          to label %250 unwind label %439

250:                                              ; preds = %241
  invoke void @_ZN3JPH27TaperedCapsuleShapeSettingsC1EfffPKNS_15PhysicsMaterialE(ptr noundef nonnull align 8 dereferenceable(88) %249, float noundef 1.500000e+00, float noundef 2.500000e-01, float noundef 0x3FC99999A0000000, ptr noundef null)
          to label %251 unwind label %451

251:                                              ; preds = %250
  %252 = getelementptr inbounds { double, double }, ptr %20, i32 0, i32 0
  %253 = load double, ptr %252, align 16
  %254 = getelementptr inbounds { double, double }, ptr %20, i32 0, i32 1
  %255 = load double, ptr %254, align 8
  %256 = getelementptr inbounds { double, double }, ptr %21, i32 0, i32 0
  %257 = load double, ptr %256, align 16
  %258 = getelementptr inbounds { double, double }, ptr %21, i32 0, i32 1
  %259 = load double, ptr %258, align 8
  invoke void @_ZN3JPH21CompoundShapeSettings8AddShapeENS_4Vec3ENS_4QuatEPKNS_13ShapeSettingsEj(ptr noundef nonnull align 8 dereferenceable(88) %225, double %253, double %255, double %257, double %259, ptr noundef %249, i32 noundef 0)
          to label %260 unwind label %439

260:                                              ; preds = %251
  call void @llvm.lifetime.start.p0(i64 8, ptr %23) #11
  %261 = invoke noundef ptr @_ZN3JPH27StaticCompoundShapeSettingsnwEm(i64 noundef 88)
          to label %262 unwind label %455

262:                                              ; preds = %260
  invoke void @_ZN3JPH27StaticCompoundShapeSettingsC2Ev(ptr noundef nonnull align 8 dereferenceable(88) %261)
          to label %263 unwind label %459

263:                                              ; preds = %262
  invoke void @_ZN3JPH3RefINS_27StaticCompoundShapeSettingsEEC2EPS1_(ptr noundef nonnull align 8 dereferenceable(8) %23, ptr noundef %261)
          to label %264 unwind label %455

264:                                              ; preds = %263
  %265 = invoke noundef ptr @_ZNK3JPH3RefINS_27StaticCompoundShapeSettingsEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %23)
          to label %266 unwind label %463

266:                                              ; preds = %264
  invoke void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %24, float noundef 0.000000e+00, float noundef 0.000000e+00, float noundef 0.000000e+00)
          to label %267 unwind label %463

267:                                              ; preds = %266
  call void @llvm.lifetime.start.p0(i64 16, ptr %26) #11
  %268 = invoke { double, double } @_ZN3JPH4Vec36sAxisXEv()
          to label %269 unwind label %467

269:                                              ; preds = %267
  %270 = getelementptr inbounds %"class.JPH::Vec3", ptr %27, i32 0, i32 0
  %271 = getelementptr inbounds %union.anon, ptr %270, i32 0, i32 0
  %272 = getelementptr inbounds { double, double }, ptr %271, i32 0, i32 0
  %273 = extractvalue { double, double } %268, 0
  store double %273, ptr %272, align 16
  %274 = getelementptr inbounds { double, double }, ptr %271, i32 0, i32 1
  %275 = extractvalue { double, double } %268, 1
  store double %275, ptr %274, align 8
  %276 = getelementptr inbounds { double, double }, ptr %27, i32 0, i32 0
  %277 = load double, ptr %276, align 16
  %278 = getelementptr inbounds { double, double }, ptr %27, i32 0, i32 1
  %279 = load double, ptr %278, align 8
  %280 = invoke { double, double } @_ZN3JPH4Quat9sRotationENS_4Vec3Ef(double %277, double %279, float noundef 0xBFE921FB60000000)
          to label %281 unwind label %467

281:                                              ; preds = %269
  %282 = getelementptr inbounds %"class.JPH::Quat", ptr %26, i32 0, i32 0
  %283 = getelementptr inbounds %"class.JPH::Vec4", ptr %282, i32 0, i32 0
  %284 = getelementptr inbounds %union.anon.4, ptr %283, i32 0, i32 0
  %285 = getelementptr inbounds { double, double }, ptr %284, i32 0, i32 0
  %286 = extractvalue { double, double } %280, 0
  store double %286, ptr %285, align 16
  %287 = getelementptr inbounds { double, double }, ptr %284, i32 0, i32 1
  %288 = extractvalue { double, double } %280, 1
  store double %288, ptr %287, align 8
  %289 = invoke { double, double } @_ZN3JPH4Vec36sAxisZEv()
          to label %290 unwind label %467

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

302:                                              ; preds = %290
  %303 = getelementptr inbounds %"class.JPH::Quat", ptr %28, i32 0, i32 0
  %304 = getelementptr inbounds %"class.JPH::Vec4", ptr %303, i32 0, i32 0
  %305 = getelementptr inbounds %union.anon.4, ptr %304, i32 0, i32 0
  %306 = getelementptr inbounds { double, double }, ptr %305, i32 0, i32 0
  %307 = extractvalue { double, double } %301, 0
  store double %307, ptr %306, align 16
  %308 = getelementptr inbounds { double, double }, ptr %305, i32 0, i32 1
  %309 = extractvalue { double, double } %301, 1
  store double %309, ptr %308, align 8
  %310 = getelementptr inbounds { double, double }, ptr %28, i32 0, i32 0
  %311 = load double, ptr %310, align 16
  %312 = getelementptr inbounds { double, double }, ptr %28, i32 0, i32 1
  %313 = load double, ptr %312, align 8
  %314 = invoke { double, double } @_ZNK3JPH4QuatmlES0_(ptr noundef nonnull align 16 dereferenceable(16) %26, double %311, double %313)
          to label %315 unwind label %467

315:                                              ; preds = %302
  %316 = getelementptr inbounds %"class.JPH::Quat", ptr %25, i32 0, i32 0
  %317 = getelementptr inbounds %"class.JPH::Vec4", ptr %316, i32 0, i32 0
  %318 = getelementptr inbounds %union.anon.4, ptr %317, i32 0, i32 0
  %319 = getelementptr inbounds { double, double }, ptr %318, i32 0, i32 0
  %320 = extractvalue { double, double } %314, 0
  store double %320, ptr %319, align 16
  %321 = getelementptr inbounds { double, double }, ptr %318, i32 0, i32 1
  %322 = extractvalue { double, double } %314, 1
  store double %322, ptr %321, align 8
  %323 = invoke noundef ptr @_ZNK3JPH3RefINS_27StaticCompoundShapeSettingsEEcvPS1_Ev(ptr noundef nonnull align 8 dereferenceable(8) %12)
          to label %324 unwind label %467

324:                                              ; preds = %315
  %325 = getelementptr inbounds { double, double }, ptr %24, i32 0, i32 0
  %326 = load double, ptr %325, align 16
  %327 = getelementptr inbounds { double, double }, ptr %24, i32 0, i32 1
  %328 = load double, ptr %327, align 8
  %329 = getelementptr inbounds { double, double }, ptr %25, i32 0, i32 0
  %330 = load double, ptr %329, align 16
  %331 = getelementptr inbounds { double, double }, ptr %25, i32 0, i32 1
  %332 = load double, ptr %331, align 8
  invoke void @_ZN3JPH21CompoundShapeSettings8AddShapeENS_4Vec3ENS_4QuatEPKNS_13ShapeSettingsEj(ptr noundef nonnull align 8 dereferenceable(88) %265, double %326, double %328, double %330, double %332, ptr noundef %323, i32 noundef 0)
          to label %333 unwind label %467

333:                                              ; preds = %324
  call void @llvm.lifetime.end.p0(i64 16, ptr %26) #11
  %334 = invoke noundef ptr @_ZNK3JPH3RefINS_27StaticCompoundShapeSettingsEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %23)
          to label %335 unwind label %463

335:                                              ; preds = %333
  invoke void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %30, float noundef 0.000000e+00, float noundef 0xBFB99999A0000000, float noundef 0.000000e+00)
          to label %336 unwind label %463

336:                                              ; preds = %335
  call void @llvm.lifetime.start.p0(i64 16, ptr %32) #11
  %337 = invoke { double, double } @_ZN3JPH4Vec36sAxisXEv()
          to label %338 unwind label %471

338:                                              ; preds = %336
  %339 = getelementptr inbounds %"class.JPH::Vec3", ptr %33, i32 0, i32 0
  %340 = getelementptr inbounds %union.anon, ptr %339, i32 0, i32 0
  %341 = getelementptr inbounds { double, double }, ptr %340, i32 0, i32 0
  %342 = extractvalue { double, double } %337, 0
  store double %342, ptr %341, align 16
  %343 = getelementptr inbounds { double, double }, ptr %340, i32 0, i32 1
  %344 = extractvalue { double, double } %337, 1
  store double %344, ptr %343, align 8
  %345 = getelementptr inbounds { double, double }, ptr %33, i32 0, i32 0
  %346 = load double, ptr %345, align 16
  %347 = getelementptr inbounds { double, double }, ptr %33, i32 0, i32 1
  %348 = load double, ptr %347, align 8
  %349 = invoke { double, double } @_ZN3JPH4Quat9sRotationENS_4Vec3Ef(double %346, double %348, float noundef 0x3FE921FB60000000)
          to label %350 unwind label %471

350:                                              ; preds = %338
  %351 = getelementptr inbounds %"class.JPH::Quat", ptr %32, i32 0, i32 0
  %352 = getelementptr inbounds %"class.JPH::Vec4", ptr %351, i32 0, i32 0
  %353 = getelementptr inbounds %union.anon.4, ptr %352, i32 0, i32 0
  %354 = getelementptr inbounds { double, double }, ptr %353, i32 0, i32 0
  %355 = extractvalue { double, double } %349, 0
  store double %355, ptr %354, align 16
  %356 = getelementptr inbounds { double, double }, ptr %353, i32 0, i32 1
  %357 = extractvalue { double, double } %349, 1
  store double %357, ptr %356, align 8
  %358 = invoke { double, double } @_ZN3JPH4Vec36sAxisZEv()
          to label %359 unwind label %471

359:                                              ; preds = %350
  %360 = getelementptr inbounds %"class.JPH::Vec3", ptr %35, i32 0, i32 0
  %361 = getelementptr inbounds %union.anon, ptr %360, i32 0, i32 0
  %362 = getelementptr inbounds { double, double }, ptr %361, i32 0, i32 0
  %363 = extractvalue { double, double } %358, 0
  store double %363, ptr %362, align 16
  %364 = getelementptr inbounds { double, double }, ptr %361, i32 0, i32 1
  %365 = extractvalue { double, double } %358, 1
  store double %365, ptr %364, align 8
  %366 = getelementptr inbounds { double, double }, ptr %35, i32 0, i32 0
  %367 = load double, ptr %366, align 16
  %368 = getelementptr inbounds { double, double }, ptr %35, i32 0, i32 1
  %369 = load double, ptr %368, align 8
  %370 = invoke { double, double } @_ZN3JPH4Quat9sRotationENS_4Vec3Ef(double %367, double %369, float noundef 0xC002D97C80000000)
          to label %371 unwind label %471

371:                                              ; preds = %359
  %372 = getelementptr inbounds %"class.JPH::Quat", ptr %34, i32 0, i32 0
  %373 = getelementptr inbounds %"class.JPH::Vec4", ptr %372, i32 0, i32 0
  %374 = getelementptr inbounds %union.anon.4, ptr %373, i32 0, i32 0
  %375 = getelementptr inbounds { double, double }, ptr %374, i32 0, i32 0
  %376 = extractvalue { double, double } %370, 0
  store double %376, ptr %375, align 16
  %377 = getelementptr inbounds { double, double }, ptr %374, i32 0, i32 1
  %378 = extractvalue { double, double } %370, 1
  store double %378, ptr %377, align 8
  %379 = getelementptr inbounds { double, double }, ptr %34, i32 0, i32 0
  %380 = load double, ptr %379, align 16
  %381 = getelementptr inbounds { double, double }, ptr %34, i32 0, i32 1
  %382 = load double, ptr %381, align 8
  %383 = invoke { double, double } @_ZNK3JPH4QuatmlES0_(ptr noundef nonnull align 16 dereferenceable(16) %32, double %380, double %382)
          to label %384 unwind label %471

384:                                              ; preds = %371
  %385 = getelementptr inbounds %"class.JPH::Quat", ptr %31, i32 0, i32 0
  %386 = getelementptr inbounds %"class.JPH::Vec4", ptr %385, i32 0, i32 0
  %387 = getelementptr inbounds %union.anon.4, ptr %386, i32 0, i32 0
  %388 = getelementptr inbounds { double, double }, ptr %387, i32 0, i32 0
  %389 = extractvalue { double, double } %383, 0
  store double %389, ptr %388, align 16
  %390 = getelementptr inbounds { double, double }, ptr %387, i32 0, i32 1
  %391 = extractvalue { double, double } %383, 1
  store double %391, ptr %390, align 8
  %392 = invoke noundef ptr @_ZNK3JPH3RefINS_27StaticCompoundShapeSettingsEEcvPS1_Ev(ptr noundef nonnull align 8 dereferenceable(8) %12)
          to label %393 unwind label %471

393:                                              ; preds = %384
  %394 = getelementptr inbounds { double, double }, ptr %30, i32 0, i32 0
  %395 = load double, ptr %394, align 16
  %396 = getelementptr inbounds { double, double }, ptr %30, i32 0, i32 1
  %397 = load double, ptr %396, align 8
  %398 = getelementptr inbounds { double, double }, ptr %31, i32 0, i32 0
  %399 = load double, ptr %398, align 16
  %400 = getelementptr inbounds { double, double }, ptr %31, i32 0, i32 1
  %401 = load double, ptr %400, align 8
  invoke void @_ZN3JPH21CompoundShapeSettings8AddShapeENS_4Vec3ENS_4QuatEPKNS_13ShapeSettingsEj(ptr noundef nonnull align 8 dereferenceable(88) %334, double %395, double %397, double %399, double %401, ptr noundef %392, i32 noundef 0)
          to label %402 unwind label %471

402:                                              ; preds = %393
  call void @llvm.lifetime.end.p0(i64 16, ptr %32) #11
  call void @llvm.lifetime.start.p0(i64 8, ptr %36) #11
  %403 = invoke noundef ptr @_ZN3JPH27StaticCompoundShapeSettingsnwEm(i64 noundef 88)
          to label %404 unwind label %475

404:                                              ; preds = %402
  invoke void @_ZN3JPH27StaticCompoundShapeSettingsC2Ev(ptr noundef nonnull align 8 dereferenceable(88) %403)
          to label %405 unwind label %479

405:                                              ; preds = %404
  invoke void @_ZN3JPH3RefINS_27StaticCompoundShapeSettingsEEC2EPS1_(ptr noundef nonnull align 8 dereferenceable(8) %36, ptr noundef %403)
          to label %406 unwind label %475

406:                                              ; preds = %405
  call void @llvm.lifetime.start.p0(i64 4, ptr %37) #11
  store i32 -2, ptr %37, align 4, !tbaa !9
  br label %407

407:                                              ; preds = %607, %406
  %408 = load i32, ptr %37, align 4, !tbaa !9
  %409 = icmp sle i32 %408, 2
  br i1 %409, label %483, label %410

410:                                              ; preds = %407
  store i32 2, ptr %38, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %37) #11
  br label %610

411:                                              ; preds = %1
  %412 = landingpad { ptr, i32 }
          cleanup
  %413 = extractvalue { ptr, i32 } %412, 0
  store ptr %413, ptr %4, align 8
  %414 = extractvalue { ptr, i32 } %412, 1
  store i32 %414, ptr %5, align 4
  call void @_ZN3JPH27StaticCompoundShapeSettingsdlEPv(ptr noundef %63) #11
  br label %759

415:                                              ; preds = %134, %124, %122, %121, %119, %110, %100, %98, %97, %95, %86, %76, %68, %66, %64
  %416 = landingpad { ptr, i32 }
          cleanup
  %417 = extractvalue { ptr, i32 } %416, 0
  store ptr %417, ptr %4, align 8
  %418 = extractvalue { ptr, i32 } %416, 1
  store i32 %418, ptr %5, align 4
  br label %758

419:                                              ; preds = %85
  %420 = landingpad { ptr, i32 }
          cleanup
  %421 = extractvalue { ptr, i32 } %420, 0
  store ptr %421, ptr %4, align 8
  %422 = extractvalue { ptr, i32 } %420, 1
  store i32 %422, ptr %5, align 4
  call void @_ZN3JPH12CapsuleShapedlEPv(ptr noundef %84) #11
  br label %758

423:                                              ; preds = %109
  %424 = landingpad { ptr, i32 }
          cleanup
  %425 = extractvalue { ptr, i32 } %424, 0
  store ptr %425, ptr %4, align 8
  %426 = extractvalue { ptr, i32 } %424, 1
  store i32 %426, ptr %5, align 4
  call void @_ZN3JPH11SphereShapedlEPv(ptr noundef %108) #11
  br label %758

427:                                              ; preds = %133
  %428 = landingpad { ptr, i32 }
          cleanup
  %429 = extractvalue { ptr, i32 } %428, 0
  store ptr %429, ptr %4, align 8
  %430 = extractvalue { ptr, i32 } %428, 1
  store i32 %430, ptr %5, align 4
  call void @_ZN3JPH11SphereShapedlEPv(ptr noundef %132) #11
  br label %758

431:                                              ; preds = %146, %143
  %432 = landingpad { ptr, i32 }
          cleanup
  %433 = extractvalue { ptr, i32 } %432, 0
  store ptr %433, ptr %4, align 8
  %434 = extractvalue { ptr, i32 } %432, 1
  store i32 %434, ptr %5, align 4
  br label %757

435:                                              ; preds = %145
  %436 = landingpad { ptr, i32 }
          cleanup
  %437 = extractvalue { ptr, i32 } %436, 0
  store ptr %437, ptr %4, align 8
  %438 = extractvalue { ptr, i32 } %436, 1
  store i32 %438, ptr %5, align 4
  call void @_ZN3JPH27StaticCompoundShapeSettingsdlEPv(ptr noundef %144) #11
  br label %757

439:                                              ; preds = %251, %241, %229, %227, %226, %224, %215, %205, %193, %191, %190, %188, %179, %164, %152, %150, %149, %147
  %440 = landingpad { ptr, i32 }
          cleanup
  %441 = extractvalue { ptr, i32 } %440, 0
  store ptr %441, ptr %4, align 8
  %442 = extractvalue { ptr, i32 } %440, 1
  store i32 %442, ptr %5, align 4
  br label %756

443:                                              ; preds = %174, %173
  %444 = landingpad { ptr, i32 }
          cleanup
  %445 = extractvalue { ptr, i32 } %444, 0
  store ptr %445, ptr %4, align 8
  %446 = extractvalue { ptr, i32 } %444, 1
  store i32 %446, ptr %5, align 4
  call void @_ZN3JPH8BoxShapedlEPv(ptr noundef %172) #11
  br label %756

447:                                              ; preds = %214
  %448 = landingpad { ptr, i32 }
          cleanup
  %449 = extractvalue { ptr, i32 } %448, 0
  store ptr %449, ptr %4, align 8
  %450 = extractvalue { ptr, i32 } %448, 1
  store i32 %450, ptr %5, align 4
  call void @_ZN3JPH13CylinderShapedlEPv(ptr noundef %213) #11
  br label %756

451:                                              ; preds = %250
  %452 = landingpad { ptr, i32 }
          cleanup
  %453 = extractvalue { ptr, i32 } %452, 0
  store ptr %453, ptr %4, align 8
  %454 = extractvalue { ptr, i32 } %452, 1
  store i32 %454, ptr %5, align 4
  call void @_ZN3JPH27TaperedCapsuleShapeSettingsdlEPv(ptr noundef %249) #11
  br label %756

455:                                              ; preds = %263, %260
  %456 = landingpad { ptr, i32 }
          cleanup
  %457 = extractvalue { ptr, i32 } %456, 0
  store ptr %457, ptr %4, align 8
  %458 = extractvalue { ptr, i32 } %456, 1
  store i32 %458, ptr %5, align 4
  br label %755

459:                                              ; preds = %262
  %460 = landingpad { ptr, i32 }
          cleanup
  %461 = extractvalue { ptr, i32 } %460, 0
  store ptr %461, ptr %4, align 8
  %462 = extractvalue { ptr, i32 } %460, 1
  store i32 %462, ptr %5, align 4
  call void @_ZN3JPH27StaticCompoundShapeSettingsdlEPv(ptr noundef %261) #11
  br label %755

463:                                              ; preds = %335, %333, %266, %264
  %464 = landingpad { ptr, i32 }
          cleanup
  %465 = extractvalue { ptr, i32 } %464, 0
  store ptr %465, ptr %4, align 8
  %466 = extractvalue { ptr, i32 } %464, 1
  store i32 %466, ptr %5, align 4
  br label %754

467:                                              ; preds = %324, %315, %302, %290, %281, %269, %267
  %468 = landingpad { ptr, i32 }
          cleanup
  %469 = extractvalue { ptr, i32 } %468, 0
  store ptr %469, ptr %4, align 8
  %470 = extractvalue { ptr, i32 } %468, 1
  store i32 %470, ptr %5, align 4
  call void @llvm.lifetime.end.p0(i64 16, ptr %26) #11
  br label %754

471:                                              ; preds = %393, %384, %371, %359, %350, %338, %336
  %472 = landingpad { ptr, i32 }
          cleanup
  %473 = extractvalue { ptr, i32 } %472, 0
  store ptr %473, ptr %4, align 8
  %474 = extractvalue { ptr, i32 } %472, 1
  store i32 %474, ptr %5, align 4
  call void @llvm.lifetime.end.p0(i64 16, ptr %32) #11
  br label %754

475:                                              ; preds = %405, %402
  %476 = landingpad { ptr, i32 }
          cleanup
  %477 = extractvalue { ptr, i32 } %476, 0
  store ptr %477, ptr %4, align 8
  %478 = extractvalue { ptr, i32 } %476, 1
  store i32 %478, ptr %5, align 4
  br label %753

479:                                              ; preds = %404
  %480 = landingpad { ptr, i32 }
          cleanup
  %481 = extractvalue { ptr, i32 } %480, 0
  store ptr %481, ptr %4, align 8
  %482 = extractvalue { ptr, i32 } %480, 1
  store i32 %482, ptr %5, align 4
  call void @_ZN3JPH27StaticCompoundShapeSettingsdlEPv(ptr noundef %403) #11
  br label %753

483:                                              ; preds = %407
  call void @llvm.lifetime.start.p0(i64 4, ptr %39) #11
  store i32 -2, ptr %39, align 4, !tbaa !9
  br label %484

484:                                              ; preds = %603, %483
  %485 = load i32, ptr %39, align 4, !tbaa !9
  %486 = icmp sle i32 %485, 2
  br i1 %486, label %488, label %487

487:                                              ; preds = %484
  store i32 5, ptr %38, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %39) #11
  br label %606

488:                                              ; preds = %484
  call void @llvm.lifetime.start.p0(i64 4, ptr %40) #11
  store i32 -2, ptr %40, align 4, !tbaa !9
  br label %489

489:                                              ; preds = %585, %488
  %490 = load i32, ptr %40, align 4, !tbaa !9
  %491 = icmp sle i32 %490, 2
  br i1 %491, label %493, label %492

492:                                              ; preds = %489
  store i32 8, ptr %38, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %40) #11
  br label %602

493:                                              ; preds = %489
  %494 = invoke noundef ptr @_ZNK3JPH3RefINS_27StaticCompoundShapeSettingsEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %36)
          to label %495 unwind label %588

495:                                              ; preds = %493
  %496 = load i32, ptr %39, align 4, !tbaa !9
  %497 = sitofp i32 %496 to float
  %498 = fmul float 5.000000e-01, %497
  %499 = load i32, ptr %37, align 4, !tbaa !9
  %500 = sitofp i32 %499 to float
  %501 = fmul float 5.000000e-01, %500
  %502 = load i32, ptr %40, align 4, !tbaa !9
  %503 = sitofp i32 %502 to float
  %504 = fmul float 5.000000e-01, %503
  invoke void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %41, float noundef %498, float noundef %501, float noundef %504)
          to label %505 unwind label %588

505:                                              ; preds = %495
  call void @llvm.lifetime.start.p0(i64 16, ptr %43) #11
  %506 = invoke { double, double } @_ZN3JPH4Vec36sAxisXEv()
          to label %507 unwind label %592

507:                                              ; preds = %505
  %508 = getelementptr inbounds %"class.JPH::Vec3", ptr %44, i32 0, i32 0
  %509 = getelementptr inbounds %union.anon, ptr %508, i32 0, i32 0
  %510 = getelementptr inbounds { double, double }, ptr %509, i32 0, i32 0
  %511 = extractvalue { double, double } %506, 0
  store double %511, ptr %510, align 16
  %512 = getelementptr inbounds { double, double }, ptr %509, i32 0, i32 1
  %513 = extractvalue { double, double } %506, 1
  store double %513, ptr %512, align 8
  %514 = getelementptr inbounds { double, double }, ptr %44, i32 0, i32 0
  %515 = load double, ptr %514, align 16
  %516 = getelementptr inbounds { double, double }, ptr %44, i32 0, i32 1
  %517 = load double, ptr %516, align 8
  %518 = invoke { double, double } @_ZN3JPH4Quat9sRotationENS_4Vec3Ef(double %515, double %517, float noundef 0xBFE921FB60000000)
          to label %519 unwind label %592

519:                                              ; preds = %507
  %520 = getelementptr inbounds %"class.JPH::Quat", ptr %43, i32 0, i32 0
  %521 = getelementptr inbounds %"class.JPH::Vec4", ptr %520, i32 0, i32 0
  %522 = getelementptr inbounds %union.anon.4, ptr %521, i32 0, i32 0
  %523 = getelementptr inbounds { double, double }, ptr %522, i32 0, i32 0
  %524 = extractvalue { double, double } %518, 0
  store double %524, ptr %523, align 16
  %525 = getelementptr inbounds { double, double }, ptr %522, i32 0, i32 1
  %526 = extractvalue { double, double } %518, 1
  store double %526, ptr %525, align 8
  %527 = invoke { double, double } @_ZN3JPH4Vec36sAxisZEv()
          to label %528 unwind label %592

528:                                              ; preds = %519
  %529 = getelementptr inbounds %"class.JPH::Vec3", ptr %46, i32 0, i32 0
  %530 = getelementptr inbounds %union.anon, ptr %529, i32 0, i32 0
  %531 = getelementptr inbounds { double, double }, ptr %530, i32 0, i32 0
  %532 = extractvalue { double, double } %527, 0
  store double %532, ptr %531, align 16
  %533 = getelementptr inbounds { double, double }, ptr %530, i32 0, i32 1
  %534 = extractvalue { double, double } %527, 1
  store double %534, ptr %533, align 8
  %535 = getelementptr inbounds { double, double }, ptr %46, i32 0, i32 0
  %536 = load double, ptr %535, align 16
  %537 = getelementptr inbounds { double, double }, ptr %46, i32 0, i32 1
  %538 = load double, ptr %537, align 8
  %539 = invoke { double, double } @_ZN3JPH4Quat9sRotationENS_4Vec3Ef(double %536, double %538, float noundef 0x3FE921FB60000000)
          to label %540 unwind label %592

540:                                              ; preds = %528
  %541 = getelementptr inbounds %"class.JPH::Quat", ptr %45, i32 0, i32 0
  %542 = getelementptr inbounds %"class.JPH::Vec4", ptr %541, i32 0, i32 0
  %543 = getelementptr inbounds %union.anon.4, ptr %542, i32 0, i32 0
  %544 = getelementptr inbounds { double, double }, ptr %543, i32 0, i32 0
  %545 = extractvalue { double, double } %539, 0
  store double %545, ptr %544, align 16
  %546 = getelementptr inbounds { double, double }, ptr %543, i32 0, i32 1
  %547 = extractvalue { double, double } %539, 1
  store double %547, ptr %546, align 8
  %548 = getelementptr inbounds { double, double }, ptr %45, i32 0, i32 0
  %549 = load double, ptr %548, align 16
  %550 = getelementptr inbounds { double, double }, ptr %45, i32 0, i32 1
  %551 = load double, ptr %550, align 8
  %552 = invoke { double, double } @_ZNK3JPH4QuatmlES0_(ptr noundef nonnull align 16 dereferenceable(16) %43, double %549, double %551)
          to label %553 unwind label %592

553:                                              ; preds = %540
  %554 = getelementptr inbounds %"class.JPH::Quat", ptr %42, i32 0, i32 0
  %555 = getelementptr inbounds %"class.JPH::Vec4", ptr %554, i32 0, i32 0
  %556 = getelementptr inbounds %union.anon.4, ptr %555, i32 0, i32 0
  %557 = getelementptr inbounds { double, double }, ptr %556, i32 0, i32 0
  %558 = extractvalue { double, double } %552, 0
  store double %558, ptr %557, align 16
  %559 = getelementptr inbounds { double, double }, ptr %556, i32 0, i32 1
  %560 = extractvalue { double, double } %552, 1
  store double %560, ptr %559, align 8
  %561 = invoke noundef ptr @_ZN3JPH8BoxShapenwEm(i64 noundef 80)
          to label %562 unwind label %592

562:                                              ; preds = %553
  %563 = invoke { double, double } @_ZN3JPH4Vec310sReplicateEf(float noundef 5.000000e-01)
          to label %564 unwind label %596

564:                                              ; preds = %562
  %565 = getelementptr inbounds %"class.JPH::Vec3", ptr %47, i32 0, i32 0
  %566 = getelementptr inbounds %union.anon, ptr %565, i32 0, i32 0
  %567 = getelementptr inbounds { double, double }, ptr %566, i32 0, i32 0
  %568 = extractvalue { double, double } %563, 0
  store double %568, ptr %567, align 16
  %569 = getelementptr inbounds { double, double }, ptr %566, i32 0, i32 1
  %570 = extractvalue { double, double } %563, 1
  store double %570, ptr %569, align 8
  %571 = getelementptr inbounds { double, double }, ptr %47, i32 0, i32 0
  %572 = load double, ptr %571, align 16
  %573 = getelementptr inbounds { double, double }, ptr %47, i32 0, i32 1
  %574 = load double, ptr %573, align 8
  invoke void @_ZN3JPH8BoxShapeC2ENS_4Vec3EfPKNS_15PhysicsMaterialE(ptr noundef nonnull align 16 dereferenceable(80) %561, double %572, double %574, float noundef 0x3FA99999A0000000, ptr noundef null)
          to label %575 unwind label %596

575:                                              ; preds = %564
  %576 = getelementptr inbounds { double, double }, ptr %41, i32 0, i32 0
  %577 = load double, ptr %576, align 16
  %578 = getelementptr inbounds { double, double }, ptr %41, i32 0, i32 1
  %579 = load double, ptr %578, align 8
  %580 = getelementptr inbounds { double, double }, ptr %42, i32 0, i32 0
  %581 = load double, ptr %580, align 16
  %582 = getelementptr inbounds { double, double }, ptr %42, i32 0, i32 1
  %583 = load double, ptr %582, align 8
  invoke void @_ZN3JPH21CompoundShapeSettings8AddShapeENS_4Vec3ENS_4QuatEPKNS_5ShapeEj(ptr noundef nonnull align 8 dereferenceable(88) %494, double %577, double %579, double %581, double %583, ptr noundef %561, i32 noundef 0)
          to label %584 unwind label %592

584:                                              ; preds = %575
  call void @llvm.lifetime.end.p0(i64 16, ptr %43) #11
  br label %585

585:                                              ; preds = %584
  %586 = load i32, ptr %40, align 4, !tbaa !9
  %587 = add nsw i32 %586, 1
  store i32 %587, ptr %40, align 4, !tbaa !9
  br label %489, !llvm.loop !11

588:                                              ; preds = %495, %493
  %589 = landingpad { ptr, i32 }
          cleanup
  %590 = extractvalue { ptr, i32 } %589, 0
  store ptr %590, ptr %4, align 8
  %591 = extractvalue { ptr, i32 } %589, 1
  store i32 %591, ptr %5, align 4
  br label %601

592:                                              ; preds = %575, %553, %540, %528, %519, %507, %505
  %593 = landingpad { ptr, i32 }
          cleanup
  %594 = extractvalue { ptr, i32 } %593, 0
  store ptr %594, ptr %4, align 8
  %595 = extractvalue { ptr, i32 } %593, 1
  store i32 %595, ptr %5, align 4
  br label %600

596:                                              ; preds = %564, %562
  %597 = landingpad { ptr, i32 }
          cleanup
  %598 = extractvalue { ptr, i32 } %597, 0
  store ptr %598, ptr %4, align 8
  %599 = extractvalue { ptr, i32 } %597, 1
  store i32 %599, ptr %5, align 4
  call void @_ZN3JPH8BoxShapedlEPv(ptr noundef %561) #11
  br label %600

600:                                              ; preds = %596, %592
  call void @llvm.lifetime.end.p0(i64 16, ptr %43) #11
  br label %601

601:                                              ; preds = %600, %588
  call void @llvm.lifetime.end.p0(i64 4, ptr %40) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr %39) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr %37) #11
  br label %752

602:                                              ; preds = %492
  br label %603

603:                                              ; preds = %602
  %604 = load i32, ptr %39, align 4, !tbaa !9
  %605 = add nsw i32 %604, 1
  store i32 %605, ptr %39, align 4, !tbaa !9
  br label %484, !llvm.loop !13

606:                                              ; preds = %487
  br label %607

607:                                              ; preds = %606
  %608 = load i32, ptr %37, align 4, !tbaa !9
  %609 = add nsw i32 %608, 1
  store i32 %609, ptr %37, align 4, !tbaa !9
  br label %407, !llvm.loop !14

610:                                              ; preds = %410
  call void @llvm.lifetime.start.p0(i64 24, ptr %48) #11
  store ptr %48, ptr %49, align 8
  invoke void @_ZN3JPH3RefINS_27StaticCompoundShapeSettingsEEC2ERKS2_(ptr noundef nonnull align 8 dereferenceable(8) %48, ptr noundef nonnull align 8 dereferenceable(8) %3)
          to label %611 unwind label %620

611:                                              ; preds = %610
  %612 = getelementptr inbounds %"class.JPH::Ref", ptr %48, i64 1
  store ptr %612, ptr %49, align 8
  invoke void @_ZN3JPH3RefINS_27StaticCompoundShapeSettingsEEC2ERKS2_(ptr noundef nonnull align 8 dereferenceable(8) %612, ptr noundef nonnull align 8 dereferenceable(8) %23)
          to label %613 unwind label %620

613:                                              ; preds = %611
  %614 = getelementptr inbounds %"class.JPH::Ref", ptr %48, i64 2
  store ptr %614, ptr %49, align 8
  invoke void @_ZN3JPH3RefINS_27StaticCompoundShapeSettingsEEC2ERKS2_(ptr noundef nonnull align 8 dereferenceable(8) %614, ptr noundef nonnull align 8 dereferenceable(8) %36)
          to label %615 unwind label %620

615:                                              ; preds = %613
  call void @llvm.lifetime.start.p0(i64 4, ptr %50) #11
  store i32 0, ptr %50, align 4, !tbaa !9
  br label %616

616:                                              ; preds = %735, %615
  %617 = load i32, ptr %50, align 4, !tbaa !9
  %618 = icmp slt i32 %617, 10
  br i1 %618, label %631, label %619

619:                                              ; preds = %616
  store i32 11, ptr %38, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %50) #11
  br label %738

620:                                              ; preds = %613, %611, %610
  %621 = landingpad { ptr, i32 }
          cleanup
  %622 = extractvalue { ptr, i32 } %621, 0
  store ptr %622, ptr %4, align 8
  %623 = extractvalue { ptr, i32 } %621, 1
  store i32 %623, ptr %5, align 4
  %624 = load ptr, ptr %49, align 8
  %625 = icmp eq ptr %48, %624
  br i1 %625, label %630, label %626

626:                                              ; preds = %626, %620
  %627 = phi ptr [ %624, %620 ], [ %628, %626 ]
  %628 = getelementptr inbounds %"class.JPH::Ref", ptr %627, i64 -1
  call void @_ZN3JPH3RefINS_27StaticCompoundShapeSettingsEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %628) #11
  %629 = icmp eq ptr %628, %48
  br i1 %629, label %630, label %626

630:                                              ; preds = %626, %620
  br label %751

631:                                              ; preds = %616
  call void @llvm.lifetime.start.p0(i64 4, ptr %51) #11
  store i32 0, ptr %51, align 4, !tbaa !9
  br label %632

632:                                              ; preds = %719, %631
  %633 = load i32, ptr %51, align 4, !tbaa !9
  %634 = icmp slt i32 %633, 3
  br i1 %634, label %636, label %635

635:                                              ; preds = %632
  store i32 14, ptr %38, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %51) #11
  br label %734

636:                                              ; preds = %632
  call void @llvm.lifetime.start.p0(i64 16, ptr %52) #11
  %637 = load i32, ptr %50, align 4, !tbaa !9
  %638 = and i32 %637, 1
  %639 = icmp eq i32 %638, 0
  br i1 %639, label %640, label %666

640:                                              ; preds = %636
  call void @llvm.lifetime.start.p0(i64 16, ptr %53) #11
  %641 = invoke { double, double } @_ZN3JPH4Vec36sAxisXEv()
          to label %642 unwind label %662

642:                                              ; preds = %640
  %643 = getelementptr inbounds %"class.JPH::Vec3", ptr %54, i32 0, i32 0
  %644 = getelementptr inbounds %union.anon, ptr %643, i32 0, i32 0
  %645 = getelementptr inbounds { double, double }, ptr %644, i32 0, i32 0
  %646 = extractvalue { double, double } %641, 0
  store double %646, ptr %645, align 16
  %647 = getelementptr inbounds { double, double }, ptr %644, i32 0, i32 1
  %648 = extractvalue { double, double } %641, 1
  store double %648, ptr %647, align 8
  %649 = getelementptr inbounds { double, double }, ptr %54, i32 0, i32 0
  %650 = load double, ptr %649, align 16
  %651 = getelementptr inbounds { double, double }, ptr %54, i32 0, i32 1
  %652 = load double, ptr %651, align 8
  %653 = invoke { double, double } @_ZN3JPH4Quat9sRotationENS_4Vec3Ef(double %650, double %652, float noundef 0x3FF921FB60000000)
          to label %654 unwind label %662

654:                                              ; preds = %642
  %655 = getelementptr inbounds %"class.JPH::Quat", ptr %53, i32 0, i32 0
  %656 = getelementptr inbounds %"class.JPH::Vec4", ptr %655, i32 0, i32 0
  %657 = getelementptr inbounds %union.anon.4, ptr %656, i32 0, i32 0
  %658 = getelementptr inbounds { double, double }, ptr %657, i32 0, i32 0
  %659 = extractvalue { double, double } %653, 0
  store double %659, ptr %658, align 16
  %660 = getelementptr inbounds { double, double }, ptr %657, i32 0, i32 1
  %661 = extractvalue { double, double } %653, 1
  store double %661, ptr %660, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 16 %52, ptr align 16 %53, i64 16, i1 false), !tbaa.struct !15
  call void @llvm.lifetime.end.p0(i64 16, ptr %53) #11
  br label %692

662:                                              ; preds = %642, %640
  %663 = landingpad { ptr, i32 }
          cleanup
  %664 = extractvalue { ptr, i32 } %663, 0
  store ptr %664, ptr %4, align 8
  %665 = extractvalue { ptr, i32 } %663, 1
  store i32 %665, ptr %5, align 4
  call void @llvm.lifetime.end.p0(i64 16, ptr %53) #11
  br label %731

666:                                              ; preds = %636
  call void @llvm.lifetime.start.p0(i64 16, ptr %55) #11
  %667 = invoke { double, double } @_ZN3JPH4Vec36sAxisZEv()
          to label %668 unwind label %688

668:                                              ; preds = %666
  %669 = getelementptr inbounds %"class.JPH::Vec3", ptr %56, i32 0, i32 0
  %670 = getelementptr inbounds %union.anon, ptr %669, i32 0, i32 0
  %671 = getelementptr inbounds { double, double }, ptr %670, i32 0, i32 0
  %672 = extractvalue { double, double } %667, 0
  store double %672, ptr %671, align 16
  %673 = getelementptr inbounds { double, double }, ptr %670, i32 0, i32 1
  %674 = extractvalue { double, double } %667, 1
  store double %674, ptr %673, align 8
  %675 = getelementptr inbounds { double, double }, ptr %56, i32 0, i32 0
  %676 = load double, ptr %675, align 16
  %677 = getelementptr inbounds { double, double }, ptr %56, i32 0, i32 1
  %678 = load double, ptr %677, align 8
  %679 = invoke { double, double } @_ZN3JPH4Quat9sRotationENS_4Vec3Ef(double %676, double %678, float noundef 0x3FF921FB60000000)
          to label %680 unwind label %688

680:                                              ; preds = %668
  %681 = getelementptr inbounds %"class.JPH::Quat", ptr %55, i32 0, i32 0
  %682 = getelementptr inbounds %"class.JPH::Vec4", ptr %681, i32 0, i32 0
  %683 = getelementptr inbounds %union.anon.4, ptr %682, i32 0, i32 0
  %684 = getelementptr inbounds { double, double }, ptr %683, i32 0, i32 0
  %685 = extractvalue { double, double } %679, 0
  store double %685, ptr %684, align 16
  %686 = getelementptr inbounds { double, double }, ptr %683, i32 0, i32 1
  %687 = extractvalue { double, double } %679, 1
  store double %687, ptr %686, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 16 %52, ptr align 16 %55, i64 16, i1 false), !tbaa.struct !15
  call void @llvm.lifetime.end.p0(i64 16, ptr %55) #11
  br label %692

688:                                              ; preds = %668, %666
  %689 = landingpad { ptr, i32 }
          cleanup
  %690 = extractvalue { ptr, i32 } %689, 0
  store ptr %690, ptr %4, align 8
  %691 = extractvalue { ptr, i32 } %689, 1
  store i32 %691, ptr %5, align 4
  call void @llvm.lifetime.end.p0(i64 16, ptr %55) #11
  br label %731

692:                                              ; preds = %680, %654
  %693 = getelementptr inbounds %class.Test, ptr %61, i32 0, i32 3
  %694 = load ptr, ptr %693, align 8, !tbaa !17
  call void @llvm.lifetime.start.p0(i64 256, ptr %57) #11
  %695 = load i32, ptr %51, align 4, !tbaa !9
  %696 = sext i32 %695 to i64
  %697 = getelementptr inbounds [3 x %"class.JPH::Ref"], ptr %48, i64 0, i64 %696
  %698 = invoke noundef ptr @_ZNK3JPH3RefINS_27StaticCompoundShapeSettingsEEcvPS1_Ev(ptr noundef nonnull align 8 dereferenceable(8) %697)
          to label %699 unwind label %722

699:                                              ; preds = %692
  %700 = load i32, ptr %50, align 4, !tbaa !9
  %701 = sitofp i32 %700 to float
  %702 = call float @llvm.fmuladd.f32(float 4.000000e+00, float %701, float 1.000000e+01)
  %703 = load i32, ptr %51, align 4, !tbaa !9
  %704 = sitofp i32 %703 to float
  %705 = fmul float %704, 2.000000e+01
  invoke void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %58, float noundef 0.000000e+00, float noundef %702, float noundef %705)
          to label %706 unwind label %722

706:                                              ; preds = %699
  call void @llvm.memcpy.p0.p0.i64(ptr align 16 %59, ptr align 16 %52, i64 16, i1 false), !tbaa.struct !15
  %707 = getelementptr inbounds { double, double }, ptr %58, i32 0, i32 0
  %708 = load double, ptr %707, align 16
  %709 = getelementptr inbounds { double, double }, ptr %58, i32 0, i32 1
  %710 = load double, ptr %709, align 8
  %711 = getelementptr inbounds { double, double }, ptr %59, i32 0, i32 0
  %712 = load double, ptr %711, align 16
  %713 = getelementptr inbounds { double, double }, ptr %59, i32 0, i32 1
  %714 = load double, ptr %713, align 8
  invoke void @_ZN3JPH20BodyCreationSettingsC2EPKNS_13ShapeSettingsENS_4Vec3ENS_4QuatENS_11EMotionTypeEt(ptr noundef nonnull align 16 dereferenceable(256) %57, ptr noundef %698, double %708, double %710, double %712, double %714, i8 noundef zeroext 2, i16 noundef zeroext 1)
          to label %715 unwind label %722

715:                                              ; preds = %706
  %716 = invoke i32 @_ZN3JPH13BodyInterface16CreateAndAddBodyERKNS_20BodyCreationSettingsENS_11EActivationE(ptr noundef nonnull align 8 dereferenceable(24) %694, ptr noundef nonnull align 16 dereferenceable(256) %57, i32 noundef 0)
          to label %717 unwind label %726

717:                                              ; preds = %715
  %718 = getelementptr inbounds %"class.JPH::BodyID", ptr %60, i32 0, i32 0
  store i32 %716, ptr %718, align 4
  call void @_ZN3JPH20BodyCreationSettingsD2Ev(ptr noundef nonnull align 16 dereferenceable(256) %57) #11
  call void @llvm.lifetime.end.p0(i64 256, ptr %57) #11
  call void @llvm.lifetime.end.p0(i64 16, ptr %52) #11
  br label %719

719:                                              ; preds = %717
  %720 = load i32, ptr %51, align 4, !tbaa !9
  %721 = add nsw i32 %720, 1
  store i32 %721, ptr %51, align 4, !tbaa !9
  br label %632, !llvm.loop !26

722:                                              ; preds = %706, %699, %692
  %723 = landingpad { ptr, i32 }
          cleanup
  %724 = extractvalue { ptr, i32 } %723, 0
  store ptr %724, ptr %4, align 8
  %725 = extractvalue { ptr, i32 } %723, 1
  store i32 %725, ptr %5, align 4
  br label %730

726:                                              ; preds = %715
  %727 = landingpad { ptr, i32 }
          cleanup
  %728 = extractvalue { ptr, i32 } %727, 0
  store ptr %728, ptr %4, align 8
  %729 = extractvalue { ptr, i32 } %727, 1
  store i32 %729, ptr %5, align 4
  call void @_ZN3JPH20BodyCreationSettingsD2Ev(ptr noundef nonnull align 16 dereferenceable(256) %57) #11
  br label %730

730:                                              ; preds = %726, %722
  call void @llvm.lifetime.end.p0(i64 256, ptr %57) #11
  br label %731

731:                                              ; preds = %730, %688, %662
  call void @llvm.lifetime.end.p0(i64 16, ptr %52) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr %51) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr %50) #11
  %732 = getelementptr inbounds [3 x %"class.JPH::Ref"], ptr %48, i32 0, i32 0
  %733 = getelementptr inbounds %"class.JPH::Ref", ptr %732, i64 3
  br label %746

734:                                              ; preds = %635
  br label %735

735:                                              ; preds = %734
  %736 = load i32, ptr %50, align 4, !tbaa !9
  %737 = add nsw i32 %736, 1
  store i32 %737, ptr %50, align 4, !tbaa !9
  br label %616, !llvm.loop !27

738:                                              ; preds = %619
  %739 = getelementptr inbounds [3 x %"class.JPH::Ref"], ptr %48, i32 0, i32 0
  %740 = getelementptr inbounds %"class.JPH::Ref", ptr %739, i64 3
  br label %741

741:                                              ; preds = %741, %738
  %742 = phi ptr [ %740, %738 ], [ %743, %741 ]
  %743 = getelementptr inbounds %"class.JPH::Ref", ptr %742, i64 -1
  call void @_ZN3JPH3RefINS_27StaticCompoundShapeSettingsEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %743) #11
  %744 = icmp eq ptr %743, %739
  br i1 %744, label %745, label %741

745:                                              ; preds = %741
  call void @llvm.lifetime.end.p0(i64 24, ptr %48) #11
  call void @_ZN3JPH3RefINS_27StaticCompoundShapeSettingsEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %36) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %36) #11
  call void @_ZN3JPH3RefINS_27StaticCompoundShapeSettingsEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %23) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %23) #11
  call void @_ZN3JPH3RefINS_27StaticCompoundShapeSettingsEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %12) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %12) #11
  call void @_ZN3JPH3RefINS_27StaticCompoundShapeSettingsEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %3) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %3) #11
  ret void

746:                                              ; preds = %746, %731
  %747 = phi ptr [ %733, %731 ], [ %748, %746 ]
  %748 = getelementptr inbounds %"class.JPH::Ref", ptr %747, i64 -1
  call void @_ZN3JPH3RefINS_27StaticCompoundShapeSettingsEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %748) #11
  %749 = icmp eq ptr %748, %732
  br i1 %749, label %750, label %746

750:                                              ; preds = %746
  br label %751

751:                                              ; preds = %750, %630
  call void @llvm.lifetime.end.p0(i64 24, ptr %48) #11
  br label %752

752:                                              ; preds = %751, %601
  call void @_ZN3JPH3RefINS_27StaticCompoundShapeSettingsEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %36) #11
  br label %753

753:                                              ; preds = %752, %479, %475
  call void @llvm.lifetime.end.p0(i64 8, ptr %36) #11
  br label %754

754:                                              ; preds = %753, %471, %467, %463
  call void @_ZN3JPH3RefINS_27StaticCompoundShapeSettingsEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %23) #11
  br label %755

755:                                              ; preds = %754, %459, %455
  call void @llvm.lifetime.end.p0(i64 8, ptr %23) #11
  br label %756

756:                                              ; preds = %755, %451, %447, %443, %439
  call void @_ZN3JPH3RefINS_27StaticCompoundShapeSettingsEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %12) #11
  br label %757

757:                                              ; preds = %756, %435, %431
  call void @llvm.lifetime.end.p0(i64 8, ptr %12) #11
  br label %758

758:                                              ; preds = %757, %427, %423, %419, %415
  call void @_ZN3JPH3RefINS_27StaticCompoundShapeSettingsEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %3) #11
  br label %759

759:                                              ; preds = %758, %411
  call void @llvm.lifetime.end.p0(i64 8, ptr %3) #11
  br label %760

760:                                              ; preds = %759
  %761 = load ptr, ptr %4, align 8
  %762 = load i32, ptr %5, align 4
  %763 = insertvalue { ptr, i32 } poison, ptr %761, 0
  %764 = insertvalue { ptr, i32 } %763, i32 %762, 1
  resume { ptr, i32 } %764
}

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

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

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

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

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

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

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

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

; 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 #8 align 2

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

; 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 #6 align 2

attributes #0 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #1 = { mustprogress uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #2 = { "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #3 = { alwaysinline mustprogress uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #4 = { 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 nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #6 = { inlinehint mustprogress nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #7 = { alwaysinline mustprogress uwtable "min-legal-vector-width"="128" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #8 = { 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 #9 = { nocallback nofree nounwind willreturn memory(argmem: readwrite) }
attributes #10 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) }
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 = !{!"int", !7, i64 0}
!11 = distinct !{!11, !12}
!12 = !{!"llvm.loop.mustprogress"}
!13 = distinct !{!13, !12}
!14 = distinct !{!14, !12}
!15 = !{i64 0, i64 16, !16}
!16 = !{!7, !7, i64 0}
!17 = !{!18, !6, i64 24}
!18 = !{!"_ZTS4Test", !6, i64 8, !6, i64 16, !6, i64 24, !6, i64 32, !6, i64 40, !19, i64 48, !20, i64 56}
!19 = !{!"bool", !7, i64 0}
!20 = !{!"_ZTSSt13unordered_mapIN3JPH6BodyIDENSt7__cxx1112basic_stringIcSt11char_traitsIcENS0_12STLAllocatorIcEEEESt4hashIS1_ESt8equal_toIS1_ESaISt4pairIKS1_S8_EEE", !21, i64 0}
!21 = !{!"_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, !22, i64 8, !23, i64 16, !22, i64 24, !24, i64 32, !6, i64 48}
!22 = !{!"long", !7, i64 0}
!23 = !{!"_ZTSNSt8__detail15_Hash_node_baseE", !6, i64 0}
!24 = !{!"_ZTSNSt8__detail20_Prime_rehash_policyE", !25, i64 0, !22, i64 8}
!25 = !{!"float", !7, i64 0}
!26 = distinct !{!26, !12}
!27 = distinct !{!27, !12}


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

%"class.JPH::Ref" = type { ptr }
%"class.JPH::Vec3" = type { %union.anon }
%union.anon = type { <4 x float> }
%"class.JPH::Quat" = type { %"class.JPH::Vec4" }
%"class.JPH::Vec4" = type { %union.anon.4 }
%union.anon.4 = type { <4 x float> }
%"class.JPH::BodyCreationSettings" = type { %"class.JPH::Vec3", %"class.JPH::Quat", %"class.JPH::Vec3", %"class.JPH::Vec3", i64, i16, %"class.JPH::CollisionGroup", i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, float, float, float, float, float, float, float, i32, i32, i8, float, %"class.JPH::MassProperties", %"class.JPH::RefConst.15", %"class.JPH::RefConst" }
%"class.JPH::CollisionGroup" = type { %"class.JPH::RefConst.5", i32, i32 }
%"class.JPH::RefConst.5" = type { ptr }
%"class.JPH::MassProperties" = type { float, %"class.JPH::Mat44" }
%"class.JPH::Mat44" = type { [4 x %"class.JPH::Vec4"] }
%"class.JPH::RefConst.15" = type { ptr }
%"class.JPH::RefConst" = 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 @_ZN23StaticCompoundShapeTest10InitializeEv(ptr noundef nonnull align 8 dereferenceable(112) %0) unnamed_addr #1 align 2 personality ptr @__gxx_personality_v0 {
  %2 = alloca %"class.JPH::Ref", align 8
  %3 = alloca %"class.JPH::Vec3", align 16
  %4 = alloca %"class.JPH::Vec3", align 16
  %5 = alloca %"class.JPH::Ref", align 8
  %6 = alloca %"class.JPH::Vec3", align 16
  %7 = alloca %"class.JPH::Vec3", align 16
  %8 = alloca %"class.JPH::Vec3", align 16
  %9 = alloca %"class.JPH::Vec3", align 16
  %10 = alloca %"class.JPH::Ref", align 8
  %11 = alloca %"class.JPH::Vec3", align 16
  %12 = alloca %"class.JPH::Quat", align 16
  %13 = alloca %"class.JPH::Vec3", align 16
  %14 = alloca %"class.JPH::Quat", align 16
  %15 = alloca %"class.JPH::Ref", align 8
  %16 = alloca %"class.JPH::Vec3", align 16
  %17 = alloca %"class.JPH::Quat", align 16
  %18 = alloca [3 x %"class.JPH::Ref"], align 16
  %19 = alloca %"class.JPH::BodyCreationSettings", align 16
  %20 = alloca %"class.JPH::Vec3", align 16
  %21 = tail call noundef nonnull align 16 dereferenceable(122) ptr @_ZN4Test11CreateFloorEf(ptr noundef nonnull align 8 dereferenceable(112) %0, float noundef 2.000000e+02)
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %2) #10
  %22 = tail call noundef ptr @_ZN3JPH27StaticCompoundShapeSettingsnwEm(i64 noundef 88)
  invoke void @_ZN3JPH27StaticCompoundShapeSettingsC2Ev(ptr noundef nonnull align 8 dereferenceable(88) %22)
          to label %23 unwind label %186

23:                                               ; preds = %1
  call void @_ZN3JPH3RefINS_27StaticCompoundShapeSettingsEEC2EPS1_(ptr noundef nonnull align 8 dereferenceable(8) %2, ptr noundef nonnull %22)
  %24 = call noundef ptr @_ZNK3JPH3RefINS_27StaticCompoundShapeSettingsEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %2)
  %25 = invoke { double, double } @_ZN3JPH4Vec35sZeroEv()
          to label %26 unwind label %188

26:                                               ; preds = %23
  %27 = extractvalue { double, double } %25, 0
  %28 = extractvalue { double, double } %25, 1
  %29 = invoke { double, double } @_ZN3JPH4Quat9sIdentityEv()
          to label %30 unwind label %188

30:                                               ; preds = %26
  %31 = extractvalue { double, double } %29, 0
  %32 = extractvalue { double, double } %29, 1
  %33 = invoke noundef ptr @_ZN3JPH12CapsuleShapenwEm(i64 noundef 56)
          to label %34 unwind label %188

34:                                               ; preds = %30
  invoke void @_ZN3JPH12CapsuleShapeC2EffPKNS_15PhysicsMaterialE(ptr noundef nonnull align 8 dereferenceable(56) %33, float noundef 5.000000e+00, float noundef 1.000000e+00, ptr noundef null)
          to label %35 unwind label %190

35:                                               ; preds = %34
  invoke void @_ZN3JPH21CompoundShapeSettings8AddShapeENS_4Vec3ENS_4QuatEPKNS_5ShapeEj(ptr noundef nonnull align 8 dereferenceable(88) %24, double %27, double %28, double %31, double %32, ptr noundef nonnull %33, i32 noundef 0)
          to label %36 unwind label %188

36:                                               ; preds = %35
  %37 = call noundef ptr @_ZNK3JPH3RefINS_27StaticCompoundShapeSettingsEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %2)
  call void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %3, float noundef 0.000000e+00, float noundef -5.000000e+00, float noundef 0.000000e+00)
  %38 = invoke { double, double } @_ZN3JPH4Quat9sIdentityEv()
          to label %39 unwind label %188

39:                                               ; preds = %36
  %40 = extractvalue { double, double } %38, 0
  %41 = extractvalue { double, double } %38, 1
  %42 = invoke noundef ptr @_ZN3JPH11SphereShapenwEm(i64 noundef 48)
          to label %43 unwind label %188

43:                                               ; preds = %39
  invoke void @_ZN3JPH11SphereShapeC2EfPKNS_15PhysicsMaterialE(ptr noundef nonnull align 8 dereferenceable(48) %42, float noundef 2.000000e+00, ptr noundef null)
          to label %44 unwind label %192

44:                                               ; preds = %43
  %45 = load double, ptr %3, align 16
  %46 = getelementptr inbounds i8, ptr %3, i64 8
  %47 = load double, ptr %46, align 8
  invoke void @_ZN3JPH21CompoundShapeSettings8AddShapeENS_4Vec3ENS_4QuatEPKNS_5ShapeEj(ptr noundef nonnull align 8 dereferenceable(88) %37, double %45, double %47, double %40, double %41, ptr noundef nonnull %42, i32 noundef 0)
          to label %48 unwind label %188

48:                                               ; preds = %44
  %49 = call noundef ptr @_ZNK3JPH3RefINS_27StaticCompoundShapeSettingsEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %2)
  call void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %4, float noundef 0.000000e+00, float noundef 5.000000e+00, float noundef 0.000000e+00)
  %50 = invoke { double, double } @_ZN3JPH4Quat9sIdentityEv()
          to label %51 unwind label %188

51:                                               ; preds = %48
  %52 = extractvalue { double, double } %50, 0
  %53 = extractvalue { double, double } %50, 1
  %54 = invoke noundef ptr @_ZN3JPH11SphereShapenwEm(i64 noundef 48)
          to label %55 unwind label %188

55:                                               ; preds = %51
  invoke void @_ZN3JPH11SphereShapeC2EfPKNS_15PhysicsMaterialE(ptr noundef nonnull align 8 dereferenceable(48) %54, float noundef 2.000000e+00, ptr noundef null)
          to label %56 unwind label %194

56:                                               ; preds = %55
  %57 = load double, ptr %4, align 16
  %58 = getelementptr inbounds i8, ptr %4, i64 8
  %59 = load double, ptr %58, align 8
  invoke void @_ZN3JPH21CompoundShapeSettings8AddShapeENS_4Vec3ENS_4QuatEPKNS_5ShapeEj(ptr noundef nonnull align 8 dereferenceable(88) %49, double %57, double %59, double %52, double %53, ptr noundef nonnull %54, i32 noundef 0)
          to label %60 unwind label %188

60:                                               ; preds = %56
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %5) #10
  %61 = invoke noundef ptr @_ZN3JPH27StaticCompoundShapeSettingsnwEm(i64 noundef 88)
          to label %62 unwind label %196

62:                                               ; preds = %60
  invoke void @_ZN3JPH27StaticCompoundShapeSettingsC2Ev(ptr noundef nonnull align 8 dereferenceable(88) %61)
          to label %63 unwind label %198

63:                                               ; preds = %62
  invoke void @_ZN3JPH3RefINS_27StaticCompoundShapeSettingsEEC2EPS1_(ptr noundef nonnull align 8 dereferenceable(8) %5, ptr noundef nonnull %61)
          to label %64 unwind label %196

64:                                               ; preds = %63
  %65 = call noundef ptr @_ZNK3JPH3RefINS_27StaticCompoundShapeSettingsEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %5)
  call void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %6, float noundef 0.000000e+00, float noundef 1.500000e+00, float noundef 0.000000e+00)
  %66 = invoke { double, double } @_ZN3JPH4Vec36sAxisZEv()
          to label %67 unwind label %200

67:                                               ; preds = %64
  %68 = extractvalue { double, double } %66, 0
  %69 = extractvalue { double, double } %66, 1
  %70 = invoke { double, double } @_ZN3JPH4Quat9sRotationENS_4Vec3Ef(double %68, double %69, float noundef 0x3FF921FB60000000)
          to label %71 unwind label %200

71:                                               ; preds = %67
  %72 = extractvalue { double, double } %70, 0
  %73 = extractvalue { double, double } %70, 1
  %74 = invoke noundef ptr @_ZN3JPH8BoxShapenwEm(i64 noundef 80)
          to label %75 unwind label %200

75:                                               ; preds = %71
  call void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %7, float noundef 1.500000e+00, float noundef 2.500000e-01, float noundef 0x3FC99999A0000000)
  %76 = load double, ptr %7, align 16
  %77 = getelementptr inbounds i8, ptr %7, i64 8
  %78 = load double, ptr %77, align 8
  invoke void @_ZN3JPH8BoxShapeC2ENS_4Vec3EfPKNS_15PhysicsMaterialE(ptr noundef nonnull align 16 dereferenceable(80) %74, double %76, double %78, float noundef 0x3FA99999A0000000, ptr noundef null)
          to label %79 unwind label %202

79:                                               ; preds = %75
  %80 = load double, ptr %6, align 16
  %81 = getelementptr inbounds i8, ptr %6, i64 8
  %82 = load double, ptr %81, align 8
  invoke void @_ZN3JPH21CompoundShapeSettings8AddShapeENS_4Vec3ENS_4QuatEPKNS_5ShapeEj(ptr noundef nonnull align 8 dereferenceable(88) %65, double %80, double %82, double %72, double %73, ptr noundef nonnull %74, i32 noundef 0)
          to label %83 unwind label %200

83:                                               ; preds = %79
  %84 = call noundef ptr @_ZNK3JPH3RefINS_27StaticCompoundShapeSettingsEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %5)
  call void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %8, float noundef 1.500000e+00, float noundef 0.000000e+00, float noundef 0.000000e+00)
  %85 = invoke { double, double } @_ZN3JPH4Vec36sAxisZEv()
          to label %86 unwind label %200

86:                                               ; preds = %83
  %87 = extractvalue { double, double } %85, 0
  %88 = extractvalue { double, double } %85, 1
  %89 = invoke { double, double } @_ZN3JPH4Quat9sRotationENS_4Vec3Ef(double %87, double %88, float noundef 0x3FF921FB60000000)
          to label %90 unwind label %200

90:                                               ; preds = %86
  %91 = extractvalue { double, double } %89, 0
  %92 = extractvalue { double, double } %89, 1
  %93 = invoke noundef ptr @_ZN3JPH13CylinderShapenwEm(i64 noundef 56)
          to label %94 unwind label %200

94:                                               ; preds = %90
  invoke void @_ZN3JPH13CylinderShapeC1EfffPKNS_15PhysicsMaterialE(ptr noundef nonnull align 8 dereferenceable(56) %93, float noundef 1.500000e+00, float noundef 0x3FC99999A0000000, float noundef 0x3FA99999A0000000, ptr noundef null)
          to label %95 unwind label %204

95:                                               ; preds = %94
  %96 = load double, ptr %8, align 16
  %97 = getelementptr inbounds i8, ptr %8, i64 8
  %98 = load double, ptr %97, align 8
  invoke void @_ZN3JPH21CompoundShapeSettings8AddShapeENS_4Vec3ENS_4QuatEPKNS_5ShapeEj(ptr noundef nonnull align 8 dereferenceable(88) %84, double %96, double %98, double %91, double %92, ptr noundef nonnull %93, i32 noundef 0)
          to label %99 unwind label %200

99:                                               ; preds = %95
  %100 = call noundef ptr @_ZNK3JPH3RefINS_27StaticCompoundShapeSettingsEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %5)
  call void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %9, float noundef 0.000000e+00, float noundef 0.000000e+00, float noundef 1.500000e+00)
  %101 = invoke { double, double } @_ZN3JPH4Vec36sAxisXEv()
          to label %102 unwind label %200

102:                                              ; preds = %99
  %103 = extractvalue { double, double } %101, 0
  %104 = extractvalue { double, double } %101, 1
  %105 = invoke { double, double } @_ZN3JPH4Quat9sRotationENS_4Vec3Ef(double %103, double %104, float noundef 0x3FF921FB60000000)
          to label %106 unwind label %200

106:                                              ; preds = %102
  %107 = extractvalue { double, double } %105, 0
  %108 = extractvalue { double, double } %105, 1
  %109 = invoke noundef ptr @_ZN3JPH27TaperedCapsuleShapeSettingsnwEm(i64 noundef 88)
          to label %110 unwind label %200

110:                                              ; preds = %106
  invoke void @_ZN3JPH27TaperedCapsuleShapeSettingsC1EfffPKNS_15PhysicsMaterialE(ptr noundef nonnull align 8 dereferenceable(88) %109, float noundef 1.500000e+00, float noundef 2.500000e-01, float noundef 0x3FC99999A0000000, ptr noundef null)
          to label %111 unwind label %206

111:                                              ; preds = %110
  %112 = load double, ptr %9, align 16
  %113 = getelementptr inbounds i8, ptr %9, i64 8
  %114 = load double, ptr %113, align 8
  invoke void @_ZN3JPH21CompoundShapeSettings8AddShapeENS_4Vec3ENS_4QuatEPKNS_13ShapeSettingsEj(ptr noundef nonnull align 8 dereferenceable(88) %100, double %112, double %114, double %107, double %108, ptr noundef nonnull %109, i32 noundef 0)
          to label %115 unwind label %200

115:                                              ; preds = %111
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %10) #10
  %116 = invoke noundef ptr @_ZN3JPH27StaticCompoundShapeSettingsnwEm(i64 noundef 88)
          to label %117 unwind label %208

117:                                              ; preds = %115
  invoke void @_ZN3JPH27StaticCompoundShapeSettingsC2Ev(ptr noundef nonnull align 8 dereferenceable(88) %116)
          to label %118 unwind label %210

118:                                              ; preds = %117
  invoke void @_ZN3JPH3RefINS_27StaticCompoundShapeSettingsEEC2EPS1_(ptr noundef nonnull align 8 dereferenceable(8) %10, ptr noundef nonnull %116)
          to label %119 unwind label %208

119:                                              ; preds = %118
  %120 = call noundef ptr @_ZNK3JPH3RefINS_27StaticCompoundShapeSettingsEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %10)
  call void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %11, float noundef 0.000000e+00, float noundef 0.000000e+00, float noundef 0.000000e+00)
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %12) #10
  %121 = invoke { double, double } @_ZN3JPH4Vec36sAxisXEv()
          to label %122 unwind label %212

122:                                              ; preds = %119
  %123 = extractvalue { double, double } %121, 0
  %124 = extractvalue { double, double } %121, 1
  %125 = invoke { double, double } @_ZN3JPH4Quat9sRotationENS_4Vec3Ef(double %123, double %124, float noundef 0xBFE921FB60000000)
          to label %126 unwind label %212

126:                                              ; preds = %122
  %127 = extractvalue { double, double } %125, 0
  store double %127, ptr %12, align 16
  %128 = getelementptr inbounds i8, ptr %12, i64 8
  %129 = extractvalue { double, double } %125, 1
  store double %129, ptr %128, align 8
  %130 = invoke { double, double } @_ZN3JPH4Vec36sAxisZEv()
          to label %131 unwind label %212

131:                                              ; preds = %126
  %132 = extractvalue { double, double } %130, 0
  %133 = extractvalue { double, double } %130, 1
  %134 = invoke { double, double } @_ZN3JPH4Quat9sRotationENS_4Vec3Ef(double %132, double %133, float noundef 0x3FE921FB60000000)
          to label %135 unwind label %212

135:                                              ; preds = %131
  %136 = extractvalue { double, double } %134, 0
  %137 = extractvalue { double, double } %134, 1
  %138 = invoke { double, double } @_ZNK3JPH4QuatmlES0_(ptr noundef nonnull align 16 dereferenceable(16) %12, double %136, double %137)
          to label %139 unwind label %212

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

146:                                              ; preds = %139
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %12) #10
  %147 = call noundef ptr @_ZNK3JPH3RefINS_27StaticCompoundShapeSettingsEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %10)
  call void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %13, float noundef 0.000000e+00, float noundef 0xBFB99999A0000000, float noundef 0.000000e+00)
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %14) #10
  %148 = invoke { double, double } @_ZN3JPH4Vec36sAxisXEv()
          to label %149 unwind label %214

149:                                              ; preds = %146
  %150 = extractvalue { double, double } %148, 0
  %151 = extractvalue { double, double } %148, 1
  %152 = invoke { double, double } @_ZN3JPH4Quat9sRotationENS_4Vec3Ef(double %150, double %151, float noundef 0x3FE921FB60000000)
          to label %153 unwind label %214

153:                                              ; preds = %149
  %154 = extractvalue { double, double } %152, 0
  store double %154, ptr %14, align 16
  %155 = getelementptr inbounds i8, ptr %14, i64 8
  %156 = extractvalue { double, double } %152, 1
  store double %156, ptr %155, align 8
  %157 = invoke { double, double } @_ZN3JPH4Vec36sAxisZEv()
          to label %158 unwind label %214

158:                                              ; preds = %153
  %159 = extractvalue { double, double } %157, 0
  %160 = extractvalue { double, double } %157, 1
  %161 = invoke { double, double } @_ZN3JPH4Quat9sRotationENS_4Vec3Ef(double %159, double %160, float noundef 0xC002D97C80000000)
          to label %162 unwind label %214

162:                                              ; preds = %158
  %163 = extractvalue { double, double } %161, 0
  %164 = extractvalue { double, double } %161, 1
  %165 = invoke { double, double } @_ZNK3JPH4QuatmlES0_(ptr noundef nonnull align 16 dereferenceable(16) %14, double %163, double %164)
          to label %166 unwind label %214

166:                                              ; preds = %162
  %167 = extractvalue { double, double } %165, 0
  %168 = extractvalue { double, double } %165, 1
  %169 = call noundef ptr @_ZNK3JPH3RefINS_27StaticCompoundShapeSettingsEEcvPS1_Ev(ptr noundef nonnull align 8 dereferenceable(8) %5)
  %170 = load double, ptr %13, align 16
  %171 = getelementptr inbounds i8, ptr %13, i64 8
  %172 = load double, ptr %171, align 8
  invoke void @_ZN3JPH21CompoundShapeSettings8AddShapeENS_4Vec3ENS_4QuatEPKNS_13ShapeSettingsEj(ptr noundef nonnull align 8 dereferenceable(88) %147, double %170, double %172, double %167, double %168, ptr noundef %169, i32 noundef 0)
          to label %173 unwind label %214

173:                                              ; preds = %166
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %14) #10
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %15) #10
  %174 = invoke noundef ptr @_ZN3JPH27StaticCompoundShapeSettingsnwEm(i64 noundef 88)
          to label %175 unwind label %216

175:                                              ; preds = %173
  invoke void @_ZN3JPH27StaticCompoundShapeSettingsC2Ev(ptr noundef nonnull align 8 dereferenceable(88) %174)
          to label %176 unwind label %218

176:                                              ; preds = %175
  invoke void @_ZN3JPH3RefINS_27StaticCompoundShapeSettingsEEC2EPS1_(ptr noundef nonnull align 8 dereferenceable(8) %15, ptr noundef nonnull %174)
          to label %.preheader108 unwind label %216

.preheader108:                                    ; preds = %176
  %177 = getelementptr inbounds i8, ptr %17, i64 8
  %178 = getelementptr inbounds i8, ptr %16, i64 8
  br label %.preheader107

.preheader107:                                    ; preds = %.preheader108, %224
  %.085111 = phi i32 [ -2, %.preheader108 ], [ %225, %224 ]
  %179 = sitofp i32 %.085111 to float
  %180 = fmul float %179, 5.000000e-01
  br label %.preheader106

181:                                              ; preds = %224
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %18) #10
  call void @_ZN3JPH3RefINS_27StaticCompoundShapeSettingsEEC2ERKS2_(ptr noundef nonnull align 8 dereferenceable(8) %18, ptr noundef nonnull align 8 dereferenceable(8) %2)
  %182 = getelementptr inbounds i8, ptr %18, i64 8
  call void @_ZN3JPH3RefINS_27StaticCompoundShapeSettingsEEC2ERKS2_(ptr noundef nonnull align 8 dereferenceable(8) %182, ptr noundef nonnull align 8 dereferenceable(8) %10)
  %183 = getelementptr inbounds i8, ptr %18, i64 16
  call void @_ZN3JPH3RefINS_27StaticCompoundShapeSettingsEEC2ERKS2_(ptr noundef nonnull align 8 dereferenceable(8) %183, ptr noundef nonnull align 8 dereferenceable(8) %15)
  %184 = getelementptr inbounds i8, ptr %0, i64 24
  %185 = getelementptr inbounds i8, ptr %20, i64 8
  br label %.preheader

186:                                              ; preds = %1
  %187 = landingpad { ptr, i32 }
          cleanup
  tail call void @_ZN3JPH27StaticCompoundShapeSettingsdlEPv(ptr noundef %22) #10
  br label %484

188:                                              ; preds = %56, %51, %48, %44, %39, %36, %35, %30, %26, %23
  %189 = landingpad { ptr, i32 }
          cleanup
  br label %483

190:                                              ; preds = %34
  %191 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3JPH12CapsuleShapedlEPv(ptr noundef %33) #10
  br label %483

192:                                              ; preds = %43
  %193 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3JPH11SphereShapedlEPv(ptr noundef %42) #10
  br label %483

194:                                              ; preds = %55
  %195 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3JPH11SphereShapedlEPv(ptr noundef %54) #10
  br label %483

196:                                              ; preds = %63, %60
  %197 = landingpad { ptr, i32 }
          cleanup
  br label %482

198:                                              ; preds = %62
  %199 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3JPH27StaticCompoundShapeSettingsdlEPv(ptr noundef %61) #10
  br label %482

200:                                              ; preds = %111, %106, %102, %99, %95, %90, %86, %83, %79, %71, %67, %64
  %201 = landingpad { ptr, i32 }
          cleanup
  br label %481

202:                                              ; preds = %75
  %203 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3JPH8BoxShapedlEPv(ptr noundef %74) #10
  br label %481

204:                                              ; preds = %94
  %205 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3JPH13CylinderShapedlEPv(ptr noundef %93) #10
  br label %481

206:                                              ; preds = %110
  %207 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3JPH27TaperedCapsuleShapeSettingsdlEPv(ptr noundef %109) #10
  br label %481

208:                                              ; preds = %118, %115
  %209 = landingpad { ptr, i32 }
          cleanup
  br label %480

210:                                              ; preds = %117
  %211 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3JPH27StaticCompoundShapeSettingsdlEPv(ptr noundef %116) #10
  br label %480

212:                                              ; preds = %139, %135, %131, %126, %122, %119
  %213 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %12) #10
  br label %479

214:                                              ; preds = %166, %162, %158, %153, %149, %146
  %215 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %14) #10
  br label %479

216:                                              ; preds = %176, %173
  %217 = landingpad { ptr, i32 }
          cleanup
  br label %478

218:                                              ; preds = %175
  %219 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3JPH27StaticCompoundShapeSettingsdlEPv(ptr noundef %174) #10
  br label %478

.preheader106:                                    ; preds = %.preheader107, %378
  %.086110 = phi i32 [ -2, %.preheader107 ], [ %379, %378 ]
  %220 = sitofp i32 %.086110 to float
  %221 = fmul float %220, 5.000000e-01
  %222 = call noundef ptr @_ZNK3JPH3RefINS_27StaticCompoundShapeSettingsEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %15)
  call void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %16, float noundef %221, float noundef %180, float noundef -1.000000e+00)
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %17) #10
  %223 = invoke { double, double } @_ZN3JPH4Vec36sAxisXEv()
          to label %226 unwind label %380

224:                                              ; preds = %378
  %225 = add nsw i32 %.085111, 1
  %exitcond124.not = icmp eq i32 %225, 3
  br i1 %exitcond124.not, label %181, label %.preheader107, !llvm.loop !5

226:                                              ; preds = %.preheader106
  %227 = extractvalue { double, double } %223, 0
  %228 = extractvalue { double, double } %223, 1
  %229 = invoke { double, double } @_ZN3JPH4Quat9sRotationENS_4Vec3Ef(double %227, double %228, float noundef 0xBFE921FB60000000)
          to label %230 unwind label %380

230:                                              ; preds = %226
  %231 = extractvalue { double, double } %229, 0
  store double %231, ptr %17, align 16
  %232 = extractvalue { double, double } %229, 1
  store double %232, ptr %177, align 8
  %233 = invoke { double, double } @_ZN3JPH4Vec36sAxisZEv()
          to label %234 unwind label %380

234:                                              ; preds = %230
  %235 = extractvalue { double, double } %233, 0
  %236 = extractvalue { double, double } %233, 1
  %237 = invoke { double, double } @_ZN3JPH4Quat9sRotationENS_4Vec3Ef(double %235, double %236, float noundef 0x3FE921FB60000000)
          to label %238 unwind label %380

238:                                              ; preds = %234
  %239 = extractvalue { double, double } %237, 0
  %240 = extractvalue { double, double } %237, 1
  %241 = invoke { double, double } @_ZNK3JPH4QuatmlES0_(ptr noundef nonnull align 16 dereferenceable(16) %17, double %239, double %240)
          to label %242 unwind label %380

242:                                              ; preds = %238
  %243 = extractvalue { double, double } %241, 0
  %244 = extractvalue { double, double } %241, 1
  %245 = invoke noundef ptr @_ZN3JPH8BoxShapenwEm(i64 noundef 80)
          to label %246 unwind label %380

246:                                              ; preds = %242
  %247 = invoke { double, double } @_ZN3JPH4Vec310sReplicateEf(float noundef 5.000000e-01)
          to label %248 unwind label %382

248:                                              ; preds = %246
  %249 = extractvalue { double, double } %247, 0
  %250 = extractvalue { double, double } %247, 1
  invoke void @_ZN3JPH8BoxShapeC2ENS_4Vec3EfPKNS_15PhysicsMaterialE(ptr noundef nonnull align 16 dereferenceable(80) %245, double %249, double %250, float noundef 0x3FA99999A0000000, ptr noundef null)
          to label %251 unwind label %382

251:                                              ; preds = %248
  %252 = load double, ptr %16, align 16
  %253 = load double, ptr %178, align 8
  invoke void @_ZN3JPH21CompoundShapeSettings8AddShapeENS_4Vec3ENS_4QuatEPKNS_5ShapeEj(ptr noundef nonnull align 8 dereferenceable(88) %222, double %252, double %253, double %243, double %244, ptr noundef nonnull %245, i32 noundef 0)
          to label %254 unwind label %380

254:                                              ; preds = %251
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %17) #10
  %255 = call noundef ptr @_ZNK3JPH3RefINS_27StaticCompoundShapeSettingsEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %15)
  call void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %16, float noundef %221, float noundef %180, float noundef -5.000000e-01)
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %17) #10
  %256 = invoke { double, double } @_ZN3JPH4Vec36sAxisXEv()
          to label %257 unwind label %380

257:                                              ; preds = %254
  %258 = extractvalue { double, double } %256, 0
  %259 = extractvalue { double, double } %256, 1
  %260 = invoke { double, double } @_ZN3JPH4Quat9sRotationENS_4Vec3Ef(double %258, double %259, float noundef 0xBFE921FB60000000)
          to label %261 unwind label %380

261:                                              ; preds = %257
  %262 = extractvalue { double, double } %260, 0
  store double %262, ptr %17, align 16
  %263 = extractvalue { double, double } %260, 1
  store double %263, ptr %177, align 8
  %264 = invoke { double, double } @_ZN3JPH4Vec36sAxisZEv()
          to label %265 unwind label %380

265:                                              ; preds = %261
  %266 = extractvalue { double, double } %264, 0
  %267 = extractvalue { double, double } %264, 1
  %268 = invoke { double, double } @_ZN3JPH4Quat9sRotationENS_4Vec3Ef(double %266, double %267, float noundef 0x3FE921FB60000000)
          to label %269 unwind label %380

269:                                              ; preds = %265
  %270 = extractvalue { double, double } %268, 0
  %271 = extractvalue { double, double } %268, 1
  %272 = invoke { double, double } @_ZNK3JPH4QuatmlES0_(ptr noundef nonnull align 16 dereferenceable(16) %17, double %270, double %271)
          to label %273 unwind label %380

273:                                              ; preds = %269
  %274 = extractvalue { double, double } %272, 0
  %275 = extractvalue { double, double } %272, 1
  %276 = invoke noundef ptr @_ZN3JPH8BoxShapenwEm(i64 noundef 80)
          to label %277 unwind label %380

277:                                              ; preds = %273
  %278 = invoke { double, double } @_ZN3JPH4Vec310sReplicateEf(float noundef 5.000000e-01)
          to label %279 unwind label %382

279:                                              ; preds = %277
  %280 = extractvalue { double, double } %278, 0
  %281 = extractvalue { double, double } %278, 1
  invoke void @_ZN3JPH8BoxShapeC2ENS_4Vec3EfPKNS_15PhysicsMaterialE(ptr noundef nonnull align 16 dereferenceable(80) %276, double %280, double %281, float noundef 0x3FA99999A0000000, ptr noundef null)
          to label %282 unwind label %382

282:                                              ; preds = %279
  %283 = load double, ptr %16, align 16
  %284 = load double, ptr %178, align 8
  invoke void @_ZN3JPH21CompoundShapeSettings8AddShapeENS_4Vec3ENS_4QuatEPKNS_5ShapeEj(ptr noundef nonnull align 8 dereferenceable(88) %255, double %283, double %284, double %274, double %275, ptr noundef nonnull %276, i32 noundef 0)
          to label %285 unwind label %380

285:                                              ; preds = %282
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %17) #10
  %286 = call noundef ptr @_ZNK3JPH3RefINS_27StaticCompoundShapeSettingsEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %15)
  call void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %16, float noundef %221, float noundef %180, float noundef 0.000000e+00)
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %17) #10
  %287 = invoke { double, double } @_ZN3JPH4Vec36sAxisXEv()
          to label %288 unwind label %380

288:                                              ; preds = %285
  %289 = extractvalue { double, double } %287, 0
  %290 = extractvalue { double, double } %287, 1
  %291 = invoke { double, double } @_ZN3JPH4Quat9sRotationENS_4Vec3Ef(double %289, double %290, float noundef 0xBFE921FB60000000)
          to label %292 unwind label %380

292:                                              ; preds = %288
  %293 = extractvalue { double, double } %291, 0
  store double %293, ptr %17, align 16
  %294 = extractvalue { double, double } %291, 1
  store double %294, ptr %177, align 8
  %295 = invoke { double, double } @_ZN3JPH4Vec36sAxisZEv()
          to label %296 unwind label %380

296:                                              ; preds = %292
  %297 = extractvalue { double, double } %295, 0
  %298 = extractvalue { double, double } %295, 1
  %299 = invoke { double, double } @_ZN3JPH4Quat9sRotationENS_4Vec3Ef(double %297, double %298, float noundef 0x3FE921FB60000000)
          to label %300 unwind label %380

300:                                              ; preds = %296
  %301 = extractvalue { double, double } %299, 0
  %302 = extractvalue { double, double } %299, 1
  %303 = invoke { double, double } @_ZNK3JPH4QuatmlES0_(ptr noundef nonnull align 16 dereferenceable(16) %17, double %301, double %302)
          to label %304 unwind label %380

304:                                              ; preds = %300
  %305 = extractvalue { double, double } %303, 0
  %306 = extractvalue { double, double } %303, 1
  %307 = invoke noundef ptr @_ZN3JPH8BoxShapenwEm(i64 noundef 80)
          to label %308 unwind label %380

308:                                              ; preds = %304
  %309 = invoke { double, double } @_ZN3JPH4Vec310sReplicateEf(float noundef 5.000000e-01)
          to label %310 unwind label %382

310:                                              ; preds = %308
  %311 = extractvalue { double, double } %309, 0
  %312 = extractvalue { double, double } %309, 1
  invoke void @_ZN3JPH8BoxShapeC2ENS_4Vec3EfPKNS_15PhysicsMaterialE(ptr noundef nonnull align 16 dereferenceable(80) %307, double %311, double %312, float noundef 0x3FA99999A0000000, ptr noundef null)
          to label %313 unwind label %382

313:                                              ; preds = %310
  %314 = load double, ptr %16, align 16
  %315 = load double, ptr %178, align 8
  invoke void @_ZN3JPH21CompoundShapeSettings8AddShapeENS_4Vec3ENS_4QuatEPKNS_5ShapeEj(ptr noundef nonnull align 8 dereferenceable(88) %286, double %314, double %315, double %305, double %306, ptr noundef nonnull %307, i32 noundef 0)
          to label %316 unwind label %380

316:                                              ; preds = %313
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %17) #10
  %317 = call noundef ptr @_ZNK3JPH3RefINS_27StaticCompoundShapeSettingsEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %15)
  call void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %16, float noundef %221, float noundef %180, float noundef 5.000000e-01)
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %17) #10
  %318 = invoke { double, double } @_ZN3JPH4Vec36sAxisXEv()
          to label %319 unwind label %380

319:                                              ; preds = %316
  %320 = extractvalue { double, double } %318, 0
  %321 = extractvalue { double, double } %318, 1
  %322 = invoke { double, double } @_ZN3JPH4Quat9sRotationENS_4Vec3Ef(double %320, double %321, float noundef 0xBFE921FB60000000)
          to label %323 unwind label %380

323:                                              ; preds = %319
  %324 = extractvalue { double, double } %322, 0
  store double %324, ptr %17, align 16
  %325 = extractvalue { double, double } %322, 1
  store double %325, ptr %177, align 8
  %326 = invoke { double, double } @_ZN3JPH4Vec36sAxisZEv()
          to label %327 unwind label %380

327:                                              ; preds = %323
  %328 = extractvalue { double, double } %326, 0
  %329 = extractvalue { double, double } %326, 1
  %330 = invoke { double, double } @_ZN3JPH4Quat9sRotationENS_4Vec3Ef(double %328, double %329, float noundef 0x3FE921FB60000000)
          to label %331 unwind label %380

331:                                              ; preds = %327
  %332 = extractvalue { double, double } %330, 0
  %333 = extractvalue { double, double } %330, 1
  %334 = invoke { double, double } @_ZNK3JPH4QuatmlES0_(ptr noundef nonnull align 16 dereferenceable(16) %17, double %332, double %333)
          to label %335 unwind label %380

335:                                              ; preds = %331
  %336 = extractvalue { double, double } %334, 0
  %337 = extractvalue { double, double } %334, 1
  %338 = invoke noundef ptr @_ZN3JPH8BoxShapenwEm(i64 noundef 80)
          to label %339 unwind label %380

339:                                              ; preds = %335
  %340 = invoke { double, double } @_ZN3JPH4Vec310sReplicateEf(float noundef 5.000000e-01)
          to label %341 unwind label %382

341:                                              ; preds = %339
  %342 = extractvalue { double, double } %340, 0
  %343 = extractvalue { double, double } %340, 1
  invoke void @_ZN3JPH8BoxShapeC2ENS_4Vec3EfPKNS_15PhysicsMaterialE(ptr noundef nonnull align 16 dereferenceable(80) %338, double %342, double %343, float noundef 0x3FA99999A0000000, ptr noundef null)
          to label %344 unwind label %382

344:                                              ; preds = %341
  %345 = load double, ptr %16, align 16
  %346 = load double, ptr %178, align 8
  invoke void @_ZN3JPH21CompoundShapeSettings8AddShapeENS_4Vec3ENS_4QuatEPKNS_5ShapeEj(ptr noundef nonnull align 8 dereferenceable(88) %317, double %345, double %346, double %336, double %337, ptr noundef nonnull %338, i32 noundef 0)
          to label %347 unwind label %380

347:                                              ; preds = %344
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %17) #10
  %348 = call noundef ptr @_ZNK3JPH3RefINS_27StaticCompoundShapeSettingsEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %15)
  call void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %16, float noundef %221, float noundef %180, float noundef 1.000000e+00)
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %17) #10
  %349 = invoke { double, double } @_ZN3JPH4Vec36sAxisXEv()
          to label %350 unwind label %380

350:                                              ; preds = %347
  %351 = extractvalue { double, double } %349, 0
  %352 = extractvalue { double, double } %349, 1
  %353 = invoke { double, double } @_ZN3JPH4Quat9sRotationENS_4Vec3Ef(double %351, double %352, float noundef 0xBFE921FB60000000)
          to label %354 unwind label %380

354:                                              ; preds = %350
  %355 = extractvalue { double, double } %353, 0
  store double %355, ptr %17, align 16
  %356 = extractvalue { double, double } %353, 1
  store double %356, ptr %177, align 8
  %357 = invoke { double, double } @_ZN3JPH4Vec36sAxisZEv()
          to label %358 unwind label %380

358:                                              ; preds = %354
  %359 = extractvalue { double, double } %357, 0
  %360 = extractvalue { double, double } %357, 1
  %361 = invoke { double, double } @_ZN3JPH4Quat9sRotationENS_4Vec3Ef(double %359, double %360, float noundef 0x3FE921FB60000000)
          to label %362 unwind label %380

362:                                              ; preds = %358
  %363 = extractvalue { double, double } %361, 0
  %364 = extractvalue { double, double } %361, 1
  %365 = invoke { double, double } @_ZNK3JPH4QuatmlES0_(ptr noundef nonnull align 16 dereferenceable(16) %17, double %363, double %364)
          to label %366 unwind label %380

366:                                              ; preds = %362
  %367 = extractvalue { double, double } %365, 0
  %368 = extractvalue { double, double } %365, 1
  %369 = invoke noundef ptr @_ZN3JPH8BoxShapenwEm(i64 noundef 80)
          to label %370 unwind label %380

370:                                              ; preds = %366
  %371 = invoke { double, double } @_ZN3JPH4Vec310sReplicateEf(float noundef 5.000000e-01)
          to label %372 unwind label %382

372:                                              ; preds = %370
  %373 = extractvalue { double, double } %371, 0
  %374 = extractvalue { double, double } %371, 1
  invoke void @_ZN3JPH8BoxShapeC2ENS_4Vec3EfPKNS_15PhysicsMaterialE(ptr noundef nonnull align 16 dereferenceable(80) %369, double %373, double %374, float noundef 0x3FA99999A0000000, ptr noundef null)
          to label %375 unwind label %382

375:                                              ; preds = %372
  %376 = load double, ptr %16, align 16
  %377 = load double, ptr %178, align 8
  invoke void @_ZN3JPH21CompoundShapeSettings8AddShapeENS_4Vec3ENS_4QuatEPKNS_5ShapeEj(ptr noundef nonnull align 8 dereferenceable(88) %348, double %376, double %377, double %367, double %368, ptr noundef nonnull %369, i32 noundef 0)
          to label %378 unwind label %380

378:                                              ; preds = %375
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %17) #10
  %379 = add nsw i32 %.086110, 1
  %exitcond.not = icmp eq i32 %379, 3
  br i1 %exitcond.not, label %224, label %.preheader106, !llvm.loop !7

380:                                              ; preds = %375, %366, %362, %358, %354, %350, %347, %344, %335, %331, %327, %323, %319, %316, %313, %304, %300, %296, %292, %288, %285, %282, %273, %269, %265, %261, %257, %254, %251, %242, %238, %234, %230, %226, %.preheader106
  %381 = landingpad { ptr, i32 }
          cleanup
  br label %384

382:                                              ; preds = %372, %370, %341, %339, %310, %308, %279, %277, %248, %246
  %.lcssa = phi ptr [ %245, %248 ], [ %245, %246 ], [ %276, %277 ], [ %276, %279 ], [ %307, %308 ], [ %307, %310 ], [ %338, %339 ], [ %338, %341 ], [ %369, %370 ], [ %369, %372 ]
  %383 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3JPH8BoxShapedlEPv(ptr noundef %.lcssa) #10
  br label %384

384:                                              ; preds = %382, %380
  %.pn96 = phi { ptr, i32 } [ %381, %380 ], [ %383, %382 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %17) #10
  br label %477

.preheader:                                       ; preds = %181, %.split120.us
  %.088121 = phi i32 [ 0, %181 ], [ %432, %.split120.us ]
  %385 = and i32 %.088121, 1
  %386 = icmp eq i32 %385, 0
  %387 = uitofp nneg i32 %.088121 to float
  %388 = call float @llvm.fmuladd.f32(float %387, float 4.000000e+00, float 1.000000e+01)
  br i1 %386, label %.preheader.split.us.preheader, label %.preheader.split.preheader

.preheader.split.preheader:                       ; preds = %.preheader
  %389 = invoke { double, double } @_ZN3JPH4Vec36sAxisZEv()
          to label %433 unwind label %437

.preheader.split.us.preheader:                    ; preds = %.preheader
  %390 = invoke { double, double } @_ZN3JPH4Vec36sAxisXEv()
          to label %391 unwind label %.split.us

391:                                              ; preds = %.preheader.split.us.preheader
  %392 = extractvalue { double, double } %390, 0
  %393 = extractvalue { double, double } %390, 1
  %394 = invoke { double, double } @_ZN3JPH4Quat9sRotationENS_4Vec3Ef(double %392, double %393, float noundef 0x3FF921FB60000000)
          to label %395 unwind label %.split.us

395:                                              ; preds = %391
  %.sroa.6.0.us = extractvalue { double, double } %394, 1
  %.sroa.09.0.us = extractvalue { double, double } %394, 0
  %396 = load ptr, ptr %184, align 8, !tbaa !8
  call void @llvm.lifetime.start.p0(i64 256, ptr nonnull %19) #10
  %397 = call noundef ptr @_ZNK3JPH3RefINS_27StaticCompoundShapeSettingsEEcvPS1_Ev(ptr noundef nonnull align 8 dereferenceable(8) %18)
  call void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %20, float noundef 0.000000e+00, float noundef %388, float noundef 0.000000e+00)
  %398 = load double, ptr %20, align 16
  %399 = load double, ptr %185, align 8
  invoke void @_ZN3JPH20BodyCreationSettingsC2EPKNS_13ShapeSettingsENS_4Vec3ENS_4QuatENS_11EMotionTypeEt(ptr noundef nonnull align 16 dereferenceable(256) %19, ptr noundef %397, double %398, double %399, double %.sroa.09.0.us, double %.sroa.6.0.us, i8 noundef zeroext 2, i16 noundef zeroext 1)
          to label %400 unwind label %.split114.us

400:                                              ; preds = %395
  %401 = invoke i32 @_ZN3JPH13BodyInterface16CreateAndAddBodyERKNS_20BodyCreationSettingsENS_11EActivationE(ptr noundef nonnull align 8 dereferenceable(24) %396, ptr noundef nonnull align 16 dereferenceable(256) %19, i32 noundef 0)
          to label %.preheader.split.us.1 unwind label %.split117.us

.preheader.split.us.1:                            ; preds = %400
  call void @_ZN3JPH20BodyCreationSettingsD2Ev(ptr noundef nonnull align 16 dereferenceable(256) %19) #10
  call void @llvm.lifetime.end.p0(i64 256, ptr nonnull %19) #10
  %402 = invoke { double, double } @_ZN3JPH4Vec36sAxisXEv()
          to label %403 unwind label %.split.us

403:                                              ; preds = %.preheader.split.us.1
  %404 = extractvalue { double, double } %402, 0
  %405 = extractvalue { double, double } %402, 1
  %406 = invoke { double, double } @_ZN3JPH4Quat9sRotationENS_4Vec3Ef(double %404, double %405, float noundef 0x3FF921FB60000000)
          to label %407 unwind label %.split.us

407:                                              ; preds = %403
  %.sroa.6.0.us.1 = extractvalue { double, double } %406, 1
  %.sroa.09.0.us.1 = extractvalue { double, double } %406, 0
  %408 = load ptr, ptr %184, align 8, !tbaa !8
  call void @llvm.lifetime.start.p0(i64 256, ptr nonnull %19) #10
  %409 = call noundef ptr @_ZNK3JPH3RefINS_27StaticCompoundShapeSettingsEEcvPS1_Ev(ptr noundef nonnull align 8 dereferenceable(8) %182)
  call void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %20, float noundef 0.000000e+00, float noundef %388, float noundef 2.000000e+01)
  %410 = load double, ptr %20, align 16
  %411 = load double, ptr %185, align 8
  invoke void @_ZN3JPH20BodyCreationSettingsC2EPKNS_13ShapeSettingsENS_4Vec3ENS_4QuatENS_11EMotionTypeEt(ptr noundef nonnull align 16 dereferenceable(256) %19, ptr noundef %409, double %410, double %411, double %.sroa.09.0.us.1, double %.sroa.6.0.us.1, i8 noundef zeroext 2, i16 noundef zeroext 1)
          to label %412 unwind label %.split114.us

412:                                              ; preds = %407
  %413 = invoke i32 @_ZN3JPH13BodyInterface16CreateAndAddBodyERKNS_20BodyCreationSettingsENS_11EActivationE(ptr noundef nonnull align 8 dereferenceable(24) %408, ptr noundef nonnull align 16 dereferenceable(256) %19, i32 noundef 0)
          to label %.preheader.split.us.2 unwind label %.split117.us

.preheader.split.us.2:                            ; preds = %412
  call void @_ZN3JPH20BodyCreationSettingsD2Ev(ptr noundef nonnull align 16 dereferenceable(256) %19) #10
  call void @llvm.lifetime.end.p0(i64 256, ptr nonnull %19) #10
  %414 = invoke { double, double } @_ZN3JPH4Vec36sAxisXEv()
          to label %415 unwind label %.split.us

415:                                              ; preds = %.preheader.split.us.2
  %416 = extractvalue { double, double } %414, 0
  %417 = extractvalue { double, double } %414, 1
  %418 = invoke { double, double } @_ZN3JPH4Quat9sRotationENS_4Vec3Ef(double %416, double %417, float noundef 0x3FF921FB60000000)
          to label %419 unwind label %.split.us

419:                                              ; preds = %415
  %.sroa.6.0.us.2 = extractvalue { double, double } %418, 1
  %.sroa.09.0.us.2 = extractvalue { double, double } %418, 0
  %420 = load ptr, ptr %184, align 8, !tbaa !8
  call void @llvm.lifetime.start.p0(i64 256, ptr nonnull %19) #10
  %421 = call noundef ptr @_ZNK3JPH3RefINS_27StaticCompoundShapeSettingsEEcvPS1_Ev(ptr noundef nonnull align 8 dereferenceable(8) %183)
  call void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %20, float noundef 0.000000e+00, float noundef %388, float noundef 4.000000e+01)
  %422 = load double, ptr %20, align 16
  %423 = load double, ptr %185, align 8
  invoke void @_ZN3JPH20BodyCreationSettingsC2EPKNS_13ShapeSettingsENS_4Vec3ENS_4QuatENS_11EMotionTypeEt(ptr noundef nonnull align 16 dereferenceable(256) %19, ptr noundef %421, double %422, double %423, double %.sroa.09.0.us.2, double %.sroa.6.0.us.2, i8 noundef zeroext 2, i16 noundef zeroext 1)
          to label %424 unwind label %.split114.us

424:                                              ; preds = %419
  %425 = invoke i32 @_ZN3JPH13BodyInterface16CreateAndAddBodyERKNS_20BodyCreationSettingsENS_11EActivationE(ptr noundef nonnull align 8 dereferenceable(24) %420, ptr noundef nonnull align 16 dereferenceable(256) %19, i32 noundef 0)
          to label %.split120.us.loopexit unwind label %.split117.us

.split120.us.loopexit:                            ; preds = %424
  call void @_ZN3JPH20BodyCreationSettingsD2Ev(ptr noundef nonnull align 16 dereferenceable(256) %19) #10
  call void @llvm.lifetime.end.p0(i64 256, ptr nonnull %19) #10
  br label %.split120.us

.split.us:                                        ; preds = %415, %.preheader.split.us.2, %403, %.preheader.split.us.1, %391, %.preheader.split.us.preheader
  %426 = landingpad { ptr, i32 }
          cleanup
  br label %474

.split114.us:                                     ; preds = %419, %407, %395
  %427 = landingpad { ptr, i32 }
          cleanup
  br label %473

.split117.us:                                     ; preds = %424, %412, %400
  %428 = landingpad { ptr, i32 }
          cleanup
  br label %472

429:                                              ; preds = %.split120.us
  %430 = getelementptr inbounds i8, ptr %18, i64 16
  call void @_ZN3JPH3RefINS_27StaticCompoundShapeSettingsEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %430) #10
  %431 = getelementptr inbounds i8, ptr %18, i64 8
  call void @_ZN3JPH3RefINS_27StaticCompoundShapeSettingsEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %431) #10
  call void @_ZN3JPH3RefINS_27StaticCompoundShapeSettingsEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %18) #10
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %18) #10
  call void @_ZN3JPH3RefINS_27StaticCompoundShapeSettingsEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %15) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %15) #10
  call void @_ZN3JPH3RefINS_27StaticCompoundShapeSettingsEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %10) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %10) #10
  call void @_ZN3JPH3RefINS_27StaticCompoundShapeSettingsEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %5) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %5) #10
  call void @_ZN3JPH3RefINS_27StaticCompoundShapeSettingsEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %2) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %2) #10
  ret void

.split120.us:                                     ; preds = %.split120.us.loopexit122, %.split120.us.loopexit
  %432 = add nuw nsw i32 %.088121, 1
  %exitcond129.not = icmp eq i32 %432, 10
  br i1 %exitcond129.not, label %429, label %.preheader, !llvm.loop !20

433:                                              ; preds = %.preheader.split.preheader
  %434 = extractvalue { double, double } %389, 0
  %435 = extractvalue { double, double } %389, 1
  %436 = invoke { double, double } @_ZN3JPH4Quat9sRotationENS_4Vec3Ef(double %434, double %435, float noundef 0x3FF921FB60000000)
          to label %439 unwind label %437

437:                                              ; preds = %459, %.preheader.split.2, %447, %.preheader.split.1, %433, %.preheader.split.preheader
  %438 = landingpad { ptr, i32 }
          cleanup
  br label %474

439:                                              ; preds = %433
  %.sroa.6.0 = extractvalue { double, double } %436, 1
  %.sroa.09.0 = extractvalue { double, double } %436, 0
  %440 = load ptr, ptr %184, align 8, !tbaa !8
  call void @llvm.lifetime.start.p0(i64 256, ptr nonnull %19) #10
  %441 = call noundef ptr @_ZNK3JPH3RefINS_27StaticCompoundShapeSettingsEEcvPS1_Ev(ptr noundef nonnull align 8 dereferenceable(8) %18)
  call void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %20, float noundef 0.000000e+00, float noundef %388, float noundef 0.000000e+00)
  %442 = load double, ptr %20, align 16
  %443 = load double, ptr %185, align 8
  invoke void @_ZN3JPH20BodyCreationSettingsC2EPKNS_13ShapeSettingsENS_4Vec3ENS_4QuatENS_11EMotionTypeEt(ptr noundef nonnull align 16 dereferenceable(256) %19, ptr noundef %441, double %442, double %443, double %.sroa.09.0, double %.sroa.6.0, i8 noundef zeroext 2, i16 noundef zeroext 1)
          to label %444 unwind label %.split114

444:                                              ; preds = %439
  %445 = invoke i32 @_ZN3JPH13BodyInterface16CreateAndAddBodyERKNS_20BodyCreationSettingsENS_11EActivationE(ptr noundef nonnull align 8 dereferenceable(24) %440, ptr noundef nonnull align 16 dereferenceable(256) %19, i32 noundef 0)
          to label %.preheader.split.1 unwind label %.split117

.preheader.split.1:                               ; preds = %444
  call void @_ZN3JPH20BodyCreationSettingsD2Ev(ptr noundef nonnull align 16 dereferenceable(256) %19) #10
  call void @llvm.lifetime.end.p0(i64 256, ptr nonnull %19) #10
  %446 = invoke { double, double } @_ZN3JPH4Vec36sAxisZEv()
          to label %447 unwind label %437

447:                                              ; preds = %.preheader.split.1
  %448 = extractvalue { double, double } %446, 0
  %449 = extractvalue { double, double } %446, 1
  %450 = invoke { double, double } @_ZN3JPH4Quat9sRotationENS_4Vec3Ef(double %448, double %449, float noundef 0x3FF921FB60000000)
          to label %451 unwind label %437

451:                                              ; preds = %447
  %.sroa.6.0.1 = extractvalue { double, double } %450, 1
  %.sroa.09.0.1 = extractvalue { double, double } %450, 0
  %452 = load ptr, ptr %184, align 8, !tbaa !8
  call void @llvm.lifetime.start.p0(i64 256, ptr nonnull %19) #10
  %453 = call noundef ptr @_ZNK3JPH3RefINS_27StaticCompoundShapeSettingsEEcvPS1_Ev(ptr noundef nonnull align 8 dereferenceable(8) %182)
  call void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %20, float noundef 0.000000e+00, float noundef %388, float noundef 2.000000e+01)
  %454 = load double, ptr %20, align 16
  %455 = load double, ptr %185, align 8
  invoke void @_ZN3JPH20BodyCreationSettingsC2EPKNS_13ShapeSettingsENS_4Vec3ENS_4QuatENS_11EMotionTypeEt(ptr noundef nonnull align 16 dereferenceable(256) %19, ptr noundef %453, double %454, double %455, double %.sroa.09.0.1, double %.sroa.6.0.1, i8 noundef zeroext 2, i16 noundef zeroext 1)
          to label %456 unwind label %.split114

456:                                              ; preds = %451
  %457 = invoke i32 @_ZN3JPH13BodyInterface16CreateAndAddBodyERKNS_20BodyCreationSettingsENS_11EActivationE(ptr noundef nonnull align 8 dereferenceable(24) %452, ptr noundef nonnull align 16 dereferenceable(256) %19, i32 noundef 0)
          to label %.preheader.split.2 unwind label %.split117

.preheader.split.2:                               ; preds = %456
  call void @_ZN3JPH20BodyCreationSettingsD2Ev(ptr noundef nonnull align 16 dereferenceable(256) %19) #10
  call void @llvm.lifetime.end.p0(i64 256, ptr nonnull %19) #10
  %458 = invoke { double, double } @_ZN3JPH4Vec36sAxisZEv()
          to label %459 unwind label %437

459:                                              ; preds = %.preheader.split.2
  %460 = extractvalue { double, double } %458, 0
  %461 = extractvalue { double, double } %458, 1
  %462 = invoke { double, double } @_ZN3JPH4Quat9sRotationENS_4Vec3Ef(double %460, double %461, float noundef 0x3FF921FB60000000)
          to label %463 unwind label %437

463:                                              ; preds = %459
  %.sroa.6.0.2 = extractvalue { double, double } %462, 1
  %.sroa.09.0.2 = extractvalue { double, double } %462, 0
  %464 = load ptr, ptr %184, align 8, !tbaa !8
  call void @llvm.lifetime.start.p0(i64 256, ptr nonnull %19) #10
  %465 = call noundef ptr @_ZNK3JPH3RefINS_27StaticCompoundShapeSettingsEEcvPS1_Ev(ptr noundef nonnull align 8 dereferenceable(8) %183)
  call void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %20, float noundef 0.000000e+00, float noundef %388, float noundef 4.000000e+01)
  %466 = load double, ptr %20, align 16
  %467 = load double, ptr %185, align 8
  invoke void @_ZN3JPH20BodyCreationSettingsC2EPKNS_13ShapeSettingsENS_4Vec3ENS_4QuatENS_11EMotionTypeEt(ptr noundef nonnull align 16 dereferenceable(256) %19, ptr noundef %465, double %466, double %467, double %.sroa.09.0.2, double %.sroa.6.0.2, i8 noundef zeroext 2, i16 noundef zeroext 1)
          to label %468 unwind label %.split114

468:                                              ; preds = %463
  %469 = invoke i32 @_ZN3JPH13BodyInterface16CreateAndAddBodyERKNS_20BodyCreationSettingsENS_11EActivationE(ptr noundef nonnull align 8 dereferenceable(24) %464, ptr noundef nonnull align 16 dereferenceable(256) %19, i32 noundef 0)
          to label %.split120.us.loopexit122 unwind label %.split117

.split120.us.loopexit122:                         ; preds = %468
  call void @_ZN3JPH20BodyCreationSettingsD2Ev(ptr noundef nonnull align 16 dereferenceable(256) %19) #10
  call void @llvm.lifetime.end.p0(i64 256, ptr nonnull %19) #10
  br label %.split120.us

.split114:                                        ; preds = %463, %451, %439
  %470 = landingpad { ptr, i32 }
          cleanup
  br label %473

.split117:                                        ; preds = %468, %456, %444
  %471 = landingpad { ptr, i32 }
          cleanup
  br label %472

472:                                              ; preds = %.split117.us, %.split117
  %.us-phi118 = phi { ptr, i32 } [ %471, %.split117 ], [ %428, %.split117.us ]
  call void @_ZN3JPH20BodyCreationSettingsD2Ev(ptr noundef nonnull align 16 dereferenceable(256) %19) #10
  br label %473

473:                                              ; preds = %.split114, %.split114.us, %472
  %.pn93 = phi { ptr, i32 } [ %.us-phi118, %472 ], [ %470, %.split114 ], [ %427, %.split114.us ]
  call void @llvm.lifetime.end.p0(i64 256, ptr nonnull %19) #10
  br label %474

474:                                              ; preds = %473, %437, %.split.us
  %.pn93.pn = phi { ptr, i32 } [ %.pn93, %473 ], [ %426, %.split.us ], [ %438, %437 ]
  %475 = getelementptr inbounds i8, ptr %18, i64 16
  call void @_ZN3JPH3RefINS_27StaticCompoundShapeSettingsEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %475) #10
  %476 = getelementptr inbounds i8, ptr %18, i64 8
  call void @_ZN3JPH3RefINS_27StaticCompoundShapeSettingsEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %476) #10
  call void @_ZN3JPH3RefINS_27StaticCompoundShapeSettingsEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %18) #10
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %18) #10
  br label %477

477:                                              ; preds = %474, %384
  %.pn96.pn = phi { ptr, i32 } [ %.pn96, %384 ], [ %.pn93.pn, %474 ]
  call void @_ZN3JPH3RefINS_27StaticCompoundShapeSettingsEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %15) #10
  br label %478

478:                                              ; preds = %477, %218, %216
  %.pn96.pn.pn = phi { ptr, i32 } [ %.pn96.pn, %477 ], [ %217, %216 ], [ %219, %218 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %15) #10
  br label %479

479:                                              ; preds = %478, %214, %212
  %.pn96.pn.pn.pn = phi { ptr, i32 } [ %.pn96.pn.pn, %478 ], [ %215, %214 ], [ %213, %212 ]
  call void @_ZN3JPH3RefINS_27StaticCompoundShapeSettingsEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %10) #10
  br label %480

480:                                              ; preds = %479, %210, %208
  %.pn96.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn96.pn.pn.pn, %479 ], [ %209, %208 ], [ %211, %210 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %10) #10
  br label %481

481:                                              ; preds = %480, %206, %204, %202, %200
  %.pn96.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn96.pn.pn.pn.pn, %480 ], [ %201, %200 ], [ %207, %206 ], [ %205, %204 ], [ %203, %202 ]
  call void @_ZN3JPH3RefINS_27StaticCompoundShapeSettingsEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %5) #10
  br label %482

482:                                              ; preds = %481, %198, %196
  %.pn96.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn96.pn.pn.pn.pn.pn, %481 ], [ %197, %196 ], [ %199, %198 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %5) #10
  br label %483

483:                                              ; preds = %482, %194, %192, %190, %188
  %.pn96.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn96.pn.pn.pn.pn.pn.pn, %482 ], [ %189, %188 ], [ %195, %194 ], [ %193, %192 ], [ %191, %190 ]
  call void @_ZN3JPH3RefINS_27StaticCompoundShapeSettingsEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %2) #10
  br label %484

484:                                              ; preds = %483, %186
  %.pn96.pn.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn96.pn.pn.pn.pn.pn.pn.pn, %483 ], [ %187, %186 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %2) #10
  resume { ptr, i32 } %.pn96.pn.pn.pn.pn.pn.pn.pn.pn
}

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

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

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

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

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

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

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

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

; 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 #8 align 2

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

; 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 #6 align 2

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = 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 = distinct !{!20, !6}


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