; LLVM IR from jrouwe/JoltPhysics :: Samples/Tests/General (EnhancedInternalEdgeRemovalTest)

; 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::Vec3" = type { %union.anon }
%union.anon = type { <4 x float> }
%"class.JPH::BodyCreationSettings" = type { %"class.JPH::Vec3", %"class.JPH::Quat", %"class.JPH::Vec3", %"class.JPH::Vec3", i64, i16, %"class.JPH::CollisionGroup", i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, float, float, float, float, float, float, float, i32, i32, i8, float, %"class.JPH::MassProperties", %"class.JPH::RefConst.5", %"class.JPH::RefConst.6" }
%"class.JPH::Quat" = type { %"class.JPH::Vec4" }
%"class.JPH::Vec4" = type { %union.anon.4 }
%union.anon.4 = type { <4 x float> }
%"class.JPH::CollisionGroup" = type { %"class.JPH::RefConst", i32, i32 }
%"class.JPH::RefConst" = type { ptr }
%"class.JPH::MassProperties" = type { float, %"class.JPH::Mat44" }
%"class.JPH::Mat44" = type { [4 x %"class.JPH::Vec4"] }
%"class.JPH::RefConst.5" = type { ptr }
%"class.JPH::RefConst.6" = type { ptr }
%"class.JPH::BodyID" = type { i32 }
%"class.std::__cxx11::basic_string" = type { %"struct.std::__cxx11::basic_string<char, std::char_traits<char>, JPH::STLAllocator<char>>::_Alloc_hider", i64, %union.anon.8 }
%"struct.std::__cxx11::basic_string<char, std::char_traits<char>, JPH::STLAllocator<char>>::_Alloc_hider" = type { ptr }
%union.anon.8 = type { i64, [8 x i8] }
%"class.JPH::STLAllocator" = type { i8 }
%"class.JPH::StaticCompoundShapeSettings" = type { %"class.JPH::CompoundShapeSettings" }
%"class.JPH::CompoundShapeSettings" = type { %"class.JPH::ShapeSettings", %"class.JPH::Array" }
%"class.JPH::ShapeSettings" = type { %"class.JPH::SerializableObject", %"class.JPH::RefTarget.9", i64, %"class.JPH::Result" }
%"class.JPH::SerializableObject" = type { ptr }
%"class.JPH::RefTarget.9" = type { %"struct.std::atomic" }
%"struct.std::atomic" = type { %"struct.std::__atomic_base" }
%"struct.std::__atomic_base" = type { i32 }
%"class.JPH::Result" = type <{ %union.anon.10, i8, [7 x i8] }>
%union.anon.10 = type { %"class.std::__cxx11::basic_string" }
%"class.JPH::Array" = type { i64, i64, ptr }
%class.Test = type { ptr, ptr, ptr, ptr, ptr, ptr, i8, %"class.std::unordered_map" }
%"class.std::unordered_map" = type { %"class.std::_Hashtable" }
%"class.std::_Hashtable" = type { ptr, i64, %"struct.std::__detail::_Hash_node_base", i64, %"struct.std::__detail::_Prime_rehash_policy", ptr }
%"struct.std::__detail::_Hash_node_base" = type { ptr }
%"struct.std::__detail::_Prime_rehash_policy" = type { float, i64 }

@_ZZN31EnhancedInternalEdgeRemovalTest20CreateSlidingObjectsEN3JPH4Vec3EE6labels = external hidden global [2 x ptr], align 16

; 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 @_ZN31EnhancedInternalEdgeRemovalTest20CreateSlidingObjectsEN3JPH4Vec3E(ptr noundef nonnull align 8 dereferenceable(116) %0, double %1, double %2) #1 align 2 personality ptr @__gxx_personality_v0 {
  %4 = alloca %"class.JPH::Vec3", align 16
  %5 = alloca ptr, align 8
  %6 = alloca %"class.JPH::Vec3", align 16
  %7 = alloca %"class.JPH::Vec3", align 16
  %8 = alloca i32, align 4
  %9 = alloca i32, align 4
  %10 = alloca %"class.JPH::BodyCreationSettings", align 16
  %11 = alloca %"class.JPH::Vec3", align 16
  %12 = alloca ptr, align 8
  %13 = alloca i32, align 4
  %14 = alloca %"class.JPH::Vec3", align 16
  %15 = alloca %"class.JPH::Quat", align 16
  %16 = alloca %"class.JPH::Vec3", align 16
  %17 = alloca %"class.JPH::BodyID", align 4
  %18 = alloca %"class.std::__cxx11::basic_string", align 8
  %19 = alloca %"class.JPH::STLAllocator", align 1
  %20 = alloca %"class.JPH::Vec3", align 16
  %21 = alloca %"class.JPH::BodyCreationSettings", align 16
  %22 = alloca %"class.JPH::Vec3", align 16
  %23 = alloca %"class.JPH::Quat", align 16
  %24 = alloca %"class.JPH::Vec3", align 16
  %25 = alloca %"class.JPH::BodyID", align 4
  %26 = alloca %"class.std::__cxx11::basic_string", align 8
  %27 = alloca %"class.JPH::STLAllocator", align 1
  %28 = alloca %"class.JPH::Vec3", align 16
  %29 = alloca %"class.JPH::RefConst.6", align 8
  %30 = alloca %"class.JPH::Vec3", align 16
  %31 = alloca %"class.JPH::StaticCompoundShapeSettings", align 8
  %32 = alloca i32, align 4
  %33 = alloca i32, align 4
  %34 = alloca i32, align 4
  %35 = alloca %"class.JPH::Vec3", align 16
  %36 = alloca %"class.JPH::Quat", align 16
  %37 = alloca %"class.JPH::BodyCreationSettings", align 16
  %38 = alloca %"class.JPH::Vec3", align 16
  %39 = alloca %"class.JPH::Quat", align 16
  %40 = alloca %"class.JPH::Vec3", align 16
  %41 = alloca %"class.JPH::BodyID", align 4
  %42 = alloca %"class.std::__cxx11::basic_string", align 8
  %43 = alloca %"class.JPH::STLAllocator", align 1
  %44 = alloca %"class.JPH::Vec3", align 16
  %45 = getelementptr inbounds { double, double }, ptr %4, i32 0, i32 0
  store double %1, ptr %45, align 16
  %46 = getelementptr inbounds { double, double }, ptr %4, i32 0, i32 1
  store double %2, ptr %46, align 8
  store ptr %0, ptr %5, align 8, !tbaa !5
  %47 = load ptr, ptr %5, align 8
  call void @llvm.lifetime.start.p0(i64 16, ptr %6) #10
  %48 = call noundef float @_ZN3JPH8literalsli2_rEe(x86_fp80 noundef 0xK4002C000000000000000)
  call void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %7, float noundef 0.000000e+00, float noundef 0.000000e+00, float noundef %48)
  %49 = getelementptr inbounds { double, double }, ptr %7, i32 0, i32 0
  %50 = load double, ptr %49, align 16
  %51 = getelementptr inbounds { double, double }, ptr %7, i32 0, i32 1
  %52 = load double, ptr %51, align 8
  %53 = call { double, double } @_ZNK3JPH4Vec3miES0_(ptr noundef nonnull align 16 dereferenceable(16) %4, double %50, double %52)
  %54 = getelementptr inbounds %"class.JPH::Vec3", ptr %6, i32 0, i32 0
  %55 = getelementptr inbounds %union.anon, ptr %54, i32 0, i32 0
  %56 = getelementptr inbounds { double, double }, ptr %55, i32 0, i32 0
  %57 = extractvalue { double, double } %53, 0
  store double %57, ptr %56, align 16
  %58 = getelementptr inbounds { double, double }, ptr %55, i32 0, i32 1
  %59 = extractvalue { double, double } %53, 1
  store double %59, ptr %58, align 8
  call void @llvm.lifetime.start.p0(i64 4, ptr %8) #10
  store i32 0, ptr %8, align 4, !tbaa !9
  br label %60

60:                                               ; preds = %361, %3
  %61 = load i32, ptr %8, align 4, !tbaa !9
  %62 = icmp slt i32 %61, 2
  br i1 %62, label %64, label %63

63:                                               ; preds = %60
  store i32 2, ptr %9, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %8) #10
  br label %399

64:                                               ; preds = %60
  call void @llvm.lifetime.start.p0(i64 256, ptr %10) #10
  %65 = call noundef ptr @_ZN3JPH8BoxShapenwEm(i64 noundef 80)
  %66 = invoke { double, double } @_ZN3JPH4Vec310sReplicateEf(float noundef 2.000000e+00)
          to label %67 unwind label %191

67:                                               ; preds = %64
  %68 = getelementptr inbounds %"class.JPH::Vec3", ptr %11, i32 0, i32 0
  %69 = getelementptr inbounds %union.anon, ptr %68, i32 0, i32 0
  %70 = getelementptr inbounds { double, double }, ptr %69, i32 0, i32 0
  %71 = extractvalue { double, double } %66, 0
  store double %71, ptr %70, align 16
  %72 = getelementptr inbounds { double, double }, ptr %69, i32 0, i32 1
  %73 = extractvalue { double, double } %66, 1
  store double %73, ptr %72, align 8
  %74 = getelementptr inbounds { double, double }, ptr %11, i32 0, i32 0
  %75 = load double, ptr %74, align 16
  %76 = getelementptr inbounds { double, double }, ptr %11, i32 0, i32 1
  %77 = load double, ptr %76, align 8
  invoke void @_ZN3JPH8BoxShapeC2ENS_4Vec3EfPKNS_15PhysicsMaterialE(ptr noundef nonnull align 16 dereferenceable(80) %65, double %75, double %77, float noundef 0x3FA99999A0000000, ptr noundef null)
          to label %78 unwind label %191

78:                                               ; preds = %67
  call void @llvm.memcpy.p0.p0.i64(ptr align 16 %14, ptr align 16 %6, i64 16, i1 false), !tbaa.struct !11
  %79 = call { double, double } @_ZN3JPH4Quat9sIdentityEv()
  %80 = getelementptr inbounds %"class.JPH::Quat", ptr %15, i32 0, i32 0
  %81 = getelementptr inbounds %"class.JPH::Vec4", ptr %80, i32 0, i32 0
  %82 = getelementptr inbounds %union.anon.4, ptr %81, i32 0, i32 0
  %83 = getelementptr inbounds { double, double }, ptr %82, i32 0, i32 0
  %84 = extractvalue { double, double } %79, 0
  store double %84, ptr %83, align 16
  %85 = getelementptr inbounds { double, double }, ptr %82, i32 0, i32 1
  %86 = extractvalue { double, double } %79, 1
  store double %86, ptr %85, align 8
  %87 = getelementptr inbounds { double, double }, ptr %14, i32 0, i32 0
  %88 = load double, ptr %87, align 16
  %89 = getelementptr inbounds { double, double }, ptr %14, i32 0, i32 1
  %90 = load double, ptr %89, align 8
  %91 = getelementptr inbounds { double, double }, ptr %15, i32 0, i32 0
  %92 = load double, ptr %91, align 16
  %93 = getelementptr inbounds { double, double }, ptr %15, i32 0, i32 1
  %94 = load double, ptr %93, align 8
  call void @_ZN3JPH20BodyCreationSettingsC2EPKNS_5ShapeENS_4Vec3ENS_4QuatENS_11EMotionTypeEt(ptr noundef nonnull align 16 dereferenceable(256) %10, ptr noundef %65, double %88, double %90, double %92, double %94, i8 noundef zeroext 2, i16 noundef zeroext 1)
  call void @llvm.lifetime.start.p0(i64 16, ptr %16) #10
  invoke void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %16, float noundef 2.000000e+01, float noundef 0.000000e+00, float noundef 0.000000e+00)
          to label %95 unwind label %195

95:                                               ; preds = %78
  %96 = getelementptr inbounds %"class.JPH::BodyCreationSettings", ptr %10, i32 0, i32 2
  call void @llvm.memcpy.p0.p0.i64(ptr align 16 %96, ptr align 16 %16, i64 16, i1 false), !tbaa.struct !11
  call void @llvm.lifetime.end.p0(i64 16, ptr %16) #10
  %97 = load i32, ptr %8, align 4, !tbaa !9
  %98 = icmp eq i32 %97, 1
  %99 = getelementptr inbounds %"class.JPH::BodyCreationSettings", ptr %10, i32 0, i32 15
  %100 = zext i1 %98 to i8
  store i8 %100, ptr %99, align 8, !tbaa !13
  call void @llvm.lifetime.start.p0(i64 4, ptr %17) #10
  %101 = getelementptr inbounds %class.Test, ptr %47, i32 0, i32 3
  %102 = load ptr, ptr %101, align 8, !tbaa !32
  %103 = invoke i32 @_ZN3JPH13BodyInterface16CreateAndAddBodyERKNS_20BodyCreationSettingsENS_11EActivationE(ptr noundef nonnull align 8 dereferenceable(24) %102, ptr noundef nonnull align 16 dereferenceable(256) %10, i32 noundef 0)
          to label %104 unwind label %199

104:                                              ; preds = %95
  %105 = getelementptr inbounds %"class.JPH::BodyID", ptr %17, i32 0, i32 0
  store i32 %103, ptr %105, align 4
  call void @llvm.lifetime.start.p0(i64 32, ptr %18) #10
  %106 = load i32, ptr %8, align 4, !tbaa !9
  %107 = sext i32 %106 to i64
  %108 = getelementptr inbounds [2 x ptr], ptr @_ZZN31EnhancedInternalEdgeRemovalTest20CreateSlidingObjectsEN3JPH4Vec3EE6labels, i64 0, i64 %107
  %109 = load ptr, ptr %108, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 1, ptr %19) #10
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcEN3JPH12STLAllocatorIcEEEC2IS5_EEPKcRKS5_(ptr noundef nonnull align 8 dereferenceable(32) %18, ptr noundef %109, ptr noundef nonnull align 1 dereferenceable(1) %19)
          to label %110 unwind label %203

110:                                              ; preds = %104
  invoke void @_ZN4Test12SetBodyLabelERKN3JPH6BodyIDERKNSt7__cxx1112basic_stringIcSt11char_traitsIcENS0_12STLAllocatorIcEEEE(ptr noundef nonnull align 8 dereferenceable(112) %47, ptr noundef nonnull align 4 dereferenceable(4) %17, ptr noundef nonnull align 8 dereferenceable(32) %18)
          to label %111 unwind label %207

111:                                              ; preds = %110
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcEN3JPH12STLAllocatorIcEEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %18) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr %19) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr %18) #10
  %112 = invoke noundef float @_ZN3JPH8literalsli2_rEe(x86_fp80 noundef 0xK4001A000000000000000)
          to label %113 unwind label %199

113:                                              ; preds = %111
  invoke void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %20, float noundef 0.000000e+00, float noundef 0.000000e+00, float noundef %112)
          to label %114 unwind label %199

114:                                              ; preds = %113
  %115 = getelementptr inbounds { double, double }, ptr %20, i32 0, i32 0
  %116 = load double, ptr %115, align 16
  %117 = getelementptr inbounds { double, double }, ptr %20, i32 0, i32 1
  %118 = load double, ptr %117, align 8
  %119 = invoke noundef nonnull align 16 dereferenceable(16) ptr @_ZN3JPH4Vec3pLES0_(ptr noundef nonnull align 16 dereferenceable(16) %6, double %116, double %118)
          to label %120 unwind label %199

120:                                              ; preds = %114
  call void @llvm.lifetime.start.p0(i64 256, ptr %21) #10
  %121 = invoke noundef ptr @_ZN3JPH11SphereShapenwEm(i64 noundef 48)
          to label %122 unwind label %212

122:                                              ; preds = %120
  invoke void @_ZN3JPH11SphereShapeC2EfPKNS_15PhysicsMaterialE(ptr noundef nonnull align 8 dereferenceable(48) %121, float noundef 2.000000e+00, ptr noundef null)
          to label %123 unwind label %216

123:                                              ; preds = %122
  call void @llvm.memcpy.p0.p0.i64(ptr align 16 %22, ptr align 16 %6, i64 16, i1 false), !tbaa.struct !11
  %124 = invoke { double, double } @_ZN3JPH4Quat9sIdentityEv()
          to label %125 unwind label %212

125:                                              ; preds = %123
  %126 = getelementptr inbounds %"class.JPH::Quat", ptr %23, i32 0, i32 0
  %127 = getelementptr inbounds %"class.JPH::Vec4", ptr %126, i32 0, i32 0
  %128 = getelementptr inbounds %union.anon.4, ptr %127, i32 0, i32 0
  %129 = getelementptr inbounds { double, double }, ptr %128, i32 0, i32 0
  %130 = extractvalue { double, double } %124, 0
  store double %130, ptr %129, align 16
  %131 = getelementptr inbounds { double, double }, ptr %128, i32 0, i32 1
  %132 = extractvalue { double, double } %124, 1
  store double %132, ptr %131, align 8
  %133 = getelementptr inbounds { double, double }, ptr %22, i32 0, i32 0
  %134 = load double, ptr %133, align 16
  %135 = getelementptr inbounds { double, double }, ptr %22, i32 0, i32 1
  %136 = load double, ptr %135, align 8
  %137 = getelementptr inbounds { double, double }, ptr %23, i32 0, i32 0
  %138 = load double, ptr %137, align 16
  %139 = getelementptr inbounds { double, double }, ptr %23, i32 0, i32 1
  %140 = load double, ptr %139, align 8
  invoke void @_ZN3JPH20BodyCreationSettingsC2EPKNS_5ShapeENS_4Vec3ENS_4QuatENS_11EMotionTypeEt(ptr noundef nonnull align 16 dereferenceable(256) %21, ptr noundef %121, double %134, double %136, double %138, double %140, i8 noundef zeroext 2, i16 noundef zeroext 1)
          to label %141 unwind label %212

141:                                              ; preds = %125
  call void @llvm.lifetime.start.p0(i64 16, ptr %24) #10
  invoke void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %24, float noundef 2.000000e+01, float noundef 0.000000e+00, float noundef 0.000000e+00)
          to label %142 unwind label %220

142:                                              ; preds = %141
  %143 = getelementptr inbounds %"class.JPH::BodyCreationSettings", ptr %21, i32 0, i32 2
  call void @llvm.memcpy.p0.p0.i64(ptr align 16 %143, ptr align 16 %24, i64 16, i1 false), !tbaa.struct !11
  call void @llvm.lifetime.end.p0(i64 16, ptr %24) #10
  %144 = load i32, ptr %8, align 4, !tbaa !9
  %145 = icmp eq i32 %144, 1
  %146 = getelementptr inbounds %"class.JPH::BodyCreationSettings", ptr %21, i32 0, i32 15
  %147 = zext i1 %145 to i8
  store i8 %147, ptr %146, align 8, !tbaa !13
  call void @llvm.lifetime.start.p0(i64 4, ptr %25) #10
  %148 = getelementptr inbounds %class.Test, ptr %47, i32 0, i32 3
  %149 = load ptr, ptr %148, align 8, !tbaa !32
  %150 = invoke i32 @_ZN3JPH13BodyInterface16CreateAndAddBodyERKNS_20BodyCreationSettingsENS_11EActivationE(ptr noundef nonnull align 8 dereferenceable(24) %149, ptr noundef nonnull align 16 dereferenceable(256) %21, i32 noundef 0)
          to label %151 unwind label %224

151:                                              ; preds = %142
  %152 = getelementptr inbounds %"class.JPH::BodyID", ptr %25, i32 0, i32 0
  store i32 %150, ptr %152, align 4
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %17, ptr align 4 %25, i64 4, i1 false), !tbaa.struct !38
  call void @llvm.lifetime.end.p0(i64 4, ptr %25) #10
  call void @llvm.lifetime.start.p0(i64 32, ptr %26) #10
  %153 = load i32, ptr %8, align 4, !tbaa !9
  %154 = sext i32 %153 to i64
  %155 = getelementptr inbounds [2 x ptr], ptr @_ZZN31EnhancedInternalEdgeRemovalTest20CreateSlidingObjectsEN3JPH4Vec3EE6labels, i64 0, i64 %154
  %156 = load ptr, ptr %155, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 1, ptr %27) #10
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcEN3JPH12STLAllocatorIcEEEC2IS5_EEPKcRKS5_(ptr noundef nonnull align 8 dereferenceable(32) %26, ptr noundef %156, ptr noundef nonnull align 1 dereferenceable(1) %27)
          to label %157 unwind label %228

157:                                              ; preds = %151
  invoke void @_ZN4Test12SetBodyLabelERKN3JPH6BodyIDERKNSt7__cxx1112basic_stringIcSt11char_traitsIcENS0_12STLAllocatorIcEEEE(ptr noundef nonnull align 8 dereferenceable(112) %47, ptr noundef nonnull align 4 dereferenceable(4) %17, ptr noundef nonnull align 8 dereferenceable(32) %26)
          to label %158 unwind label %232

158:                                              ; preds = %157
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcEN3JPH12STLAllocatorIcEEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %26) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr %27) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr %26) #10
  %159 = invoke noundef float @_ZN3JPH8literalsli2_rEe(x86_fp80 noundef 0xK4001A000000000000000)
          to label %160 unwind label %237

160:                                              ; preds = %158
  invoke void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %28, float noundef 0.000000e+00, float noundef 0.000000e+00, float noundef %159)
          to label %161 unwind label %237

161:                                              ; preds = %160
  %162 = getelementptr inbounds { double, double }, ptr %28, i32 0, i32 0
  %163 = load double, ptr %162, align 16
  %164 = getelementptr inbounds { double, double }, ptr %28, i32 0, i32 1
  %165 = load double, ptr %164, align 8
  %166 = invoke noundef nonnull align 16 dereferenceable(16) ptr @_ZN3JPH4Vec3pLES0_(ptr noundef nonnull align 16 dereferenceable(16) %6, double %163, double %165)
          to label %167 unwind label %237

167:                                              ; preds = %161
  call void @llvm.lifetime.start.p0(i64 8, ptr %29) #10
  %168 = invoke noundef ptr @_ZN3JPH8BoxShapenwEm(i64 noundef 80)
          to label %169 unwind label %241

169:                                              ; preds = %167
  %170 = invoke { double, double } @_ZN3JPH4Vec310sReplicateEf(float noundef 0x3FB99999A0000000)
          to label %171 unwind label %245

171:                                              ; preds = %169
  %172 = getelementptr inbounds %"class.JPH::Vec3", ptr %30, i32 0, i32 0
  %173 = getelementptr inbounds %union.anon, ptr %172, i32 0, i32 0
  %174 = getelementptr inbounds { double, double }, ptr %173, i32 0, i32 0
  %175 = extractvalue { double, double } %170, 0
  store double %175, ptr %174, align 16
  %176 = getelementptr inbounds { double, double }, ptr %173, i32 0, i32 1
  %177 = extractvalue { double, double } %170, 1
  store double %177, ptr %176, align 8
  %178 = getelementptr inbounds { double, double }, ptr %30, i32 0, i32 0
  %179 = load double, ptr %178, align 16
  %180 = getelementptr inbounds { double, double }, ptr %30, i32 0, i32 1
  %181 = load double, ptr %180, align 8
  invoke void @_ZN3JPH8BoxShapeC2ENS_4Vec3EfPKNS_15PhysicsMaterialE(ptr noundef nonnull align 16 dereferenceable(80) %168, double %179, double %181, float noundef 0x3FA99999A0000000, ptr noundef null)
          to label %182 unwind label %245

182:                                              ; preds = %171
  invoke void @_ZN3JPH8RefConstINS_5ShapeEEC2EPKS1_(ptr noundef nonnull align 8 dereferenceable(8) %29, ptr noundef %168)
          to label %183 unwind label %241

183:                                              ; preds = %182
  call void @llvm.lifetime.start.p0(i64 88, ptr %31) #10
  invoke void @_ZN3JPH27StaticCompoundShapeSettingsC2Ev(ptr noundef nonnull align 8 dereferenceable(88) %31)
          to label %184 unwind label %249

184:                                              ; preds = %183
  %185 = getelementptr inbounds i8, ptr %31, i64 8
  invoke void @_ZNK3JPH9RefTargetINS_13ShapeSettingsEE11SetEmbeddedEv(ptr noundef nonnull align 4 dereferenceable(4) %185)
          to label %186 unwind label %253

186:                                              ; preds = %184
  call void @llvm.lifetime.start.p0(i64 4, ptr %32) #10
  store i32 0, ptr %32, align 4, !tbaa !9
  br label %187

187:                                              ; preds = %313, %186
  %188 = load i32, ptr %32, align 4, !tbaa !9
  %189 = icmp slt i32 %188, 2
  br i1 %189, label %257, label %190

190:                                              ; preds = %187
  store i32 5, ptr %9, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %32) #10
  br label %316

191:                                              ; preds = %67, %64
  %192 = landingpad { ptr, i32 }
          cleanup
  %193 = extractvalue { ptr, i32 } %192, 0
  store ptr %193, ptr %12, align 8
  %194 = extractvalue { ptr, i32 } %192, 1
  store i32 %194, ptr %13, align 4
  call void @_ZN3JPH8BoxShapedlEPv(ptr noundef %65) #10
  br label %398

195:                                              ; preds = %78
  %196 = landingpad { ptr, i32 }
          cleanup
  %197 = extractvalue { ptr, i32 } %196, 0
  store ptr %197, ptr %12, align 8
  %198 = extractvalue { ptr, i32 } %196, 1
  store i32 %198, ptr %13, align 4
  call void @llvm.lifetime.end.p0(i64 16, ptr %16) #10
  br label %397

199:                                              ; preds = %114, %113, %111, %95
  %200 = landingpad { ptr, i32 }
          cleanup
  %201 = extractvalue { ptr, i32 } %200, 0
  store ptr %201, ptr %12, align 8
  %202 = extractvalue { ptr, i32 } %200, 1
  store i32 %202, ptr %13, align 4
  br label %396

203:                                              ; preds = %104
  %204 = landingpad { ptr, i32 }
          cleanup
  %205 = extractvalue { ptr, i32 } %204, 0
  store ptr %205, ptr %12, align 8
  %206 = extractvalue { ptr, i32 } %204, 1
  store i32 %206, ptr %13, align 4
  br label %211

207:                                              ; preds = %110
  %208 = landingpad { ptr, i32 }
          cleanup
  %209 = extractvalue { ptr, i32 } %208, 0
  store ptr %209, ptr %12, align 8
  %210 = extractvalue { ptr, i32 } %208, 1
  store i32 %210, ptr %13, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcEN3JPH12STLAllocatorIcEEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %18) #10
  br label %211

211:                                              ; preds = %207, %203
  call void @llvm.lifetime.end.p0(i64 1, ptr %19) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr %18) #10
  br label %396

212:                                              ; preds = %125, %123, %120
  %213 = landingpad { ptr, i32 }
          cleanup
  %214 = extractvalue { ptr, i32 } %213, 0
  store ptr %214, ptr %12, align 8
  %215 = extractvalue { ptr, i32 } %213, 1
  store i32 %215, ptr %13, align 4
  br label %395

216:                                              ; preds = %122
  %217 = landingpad { ptr, i32 }
          cleanup
  %218 = extractvalue { ptr, i32 } %217, 0
  store ptr %218, ptr %12, align 8
  %219 = extractvalue { ptr, i32 } %217, 1
  store i32 %219, ptr %13, align 4
  call void @_ZN3JPH11SphereShapedlEPv(ptr noundef %121) #10
  br label %395

220:                                              ; preds = %141
  %221 = landingpad { ptr, i32 }
          cleanup
  %222 = extractvalue { ptr, i32 } %221, 0
  store ptr %222, ptr %12, align 8
  %223 = extractvalue { ptr, i32 } %221, 1
  store i32 %223, ptr %13, align 4
  call void @llvm.lifetime.end.p0(i64 16, ptr %24) #10
  br label %394

224:                                              ; preds = %142
  %225 = landingpad { ptr, i32 }
          cleanup
  %226 = extractvalue { ptr, i32 } %225, 0
  store ptr %226, ptr %12, align 8
  %227 = extractvalue { ptr, i32 } %225, 1
  store i32 %227, ptr %13, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %25) #10
  br label %394

228:                                              ; preds = %151
  %229 = landingpad { ptr, i32 }
          cleanup
  %230 = extractvalue { ptr, i32 } %229, 0
  store ptr %230, ptr %12, align 8
  %231 = extractvalue { ptr, i32 } %229, 1
  store i32 %231, ptr %13, align 4
  br label %236

232:                                              ; preds = %157
  %233 = landingpad { ptr, i32 }
          cleanup
  %234 = extractvalue { ptr, i32 } %233, 0
  store ptr %234, ptr %12, align 8
  %235 = extractvalue { ptr, i32 } %233, 1
  store i32 %235, ptr %13, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcEN3JPH12STLAllocatorIcEEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %26) #10
  br label %236

236:                                              ; preds = %232, %228
  call void @llvm.lifetime.end.p0(i64 1, ptr %27) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr %26) #10
  br label %394

237:                                              ; preds = %161, %160, %158
  %238 = landingpad { ptr, i32 }
          cleanup
  %239 = extractvalue { ptr, i32 } %238, 0
  store ptr %239, ptr %12, align 8
  %240 = extractvalue { ptr, i32 } %238, 1
  store i32 %240, ptr %13, align 4
  br label %394

241:                                              ; preds = %182, %167
  %242 = landingpad { ptr, i32 }
          cleanup
  %243 = extractvalue { ptr, i32 } %242, 0
  store ptr %243, ptr %12, align 8
  %244 = extractvalue { ptr, i32 } %242, 1
  store i32 %244, ptr %13, align 4
  br label %393

245:                                              ; preds = %171, %169
  %246 = landingpad { ptr, i32 }
          cleanup
  %247 = extractvalue { ptr, i32 } %246, 0
  store ptr %247, ptr %12, align 8
  %248 = extractvalue { ptr, i32 } %246, 1
  store i32 %248, ptr %13, align 4
  call void @_ZN3JPH8BoxShapedlEPv(ptr noundef %168) #10
  br label %393

249:                                              ; preds = %183
  %250 = landingpad { ptr, i32 }
          cleanup
  %251 = extractvalue { ptr, i32 } %250, 0
  store ptr %251, ptr %12, align 8
  %252 = extractvalue { ptr, i32 } %250, 1
  store i32 %252, ptr %13, align 4
  br label %392

253:                                              ; preds = %184
  %254 = landingpad { ptr, i32 }
          cleanup
  %255 = extractvalue { ptr, i32 } %254, 0
  store ptr %255, ptr %12, align 8
  %256 = extractvalue { ptr, i32 } %254, 1
  store i32 %256, ptr %13, align 4
  br label %391

257:                                              ; preds = %187
  call void @llvm.lifetime.start.p0(i64 4, ptr %33) #10
  store i32 0, ptr %33, align 4, !tbaa !9
  br label %258

258:                                              ; preds = %309, %257
  %259 = load i32, ptr %33, align 4, !tbaa !9
  %260 = icmp slt i32 %259, 2
  br i1 %260, label %262, label %261

261:                                              ; preds = %258
  store i32 8, ptr %9, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %33) #10
  br label %312

262:                                              ; preds = %258
  call void @llvm.lifetime.start.p0(i64 4, ptr %34) #10
  store i32 0, ptr %34, align 4, !tbaa !9
  br label %263

263:                                              ; preds = %301, %262
  %264 = load i32, ptr %34, align 4, !tbaa !9
  %265 = icmp slt i32 %264, 2
  br i1 %265, label %267, label %266

266:                                              ; preds = %263
  store i32 11, ptr %9, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %34) #10
  br label %308

267:                                              ; preds = %263
  %268 = load i32, ptr %32, align 4, !tbaa !9
  %269 = icmp eq i32 %268, 0
  %270 = zext i1 %269 to i64
  %271 = select i1 %269, float 0xBFFE666660000000, float 0x3FFE666660000000
  %272 = load i32, ptr %33, align 4, !tbaa !9
  %273 = icmp eq i32 %272, 0
  %274 = zext i1 %273 to i64
  %275 = select i1 %273, float 0xBFFE666660000000, float 0x3FFE666660000000
  %276 = load i32, ptr %34, align 4, !tbaa !9
  %277 = icmp eq i32 %276, 0
  %278 = zext i1 %277 to i64
  %279 = select i1 %277, float 0xBFFE666660000000, float 0x3FFE666660000000
  invoke void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %35, float noundef %271, float noundef %275, float noundef %279)
          to label %280 unwind label %304

280:                                              ; preds = %267
  %281 = invoke { double, double } @_ZN3JPH4Quat9sIdentityEv()
          to label %282 unwind label %304

282:                                              ; preds = %280
  %283 = getelementptr inbounds %"class.JPH::Quat", ptr %36, i32 0, i32 0
  %284 = getelementptr inbounds %"class.JPH::Vec4", ptr %283, i32 0, i32 0
  %285 = getelementptr inbounds %union.anon.4, ptr %284, i32 0, i32 0
  %286 = getelementptr inbounds { double, double }, ptr %285, i32 0, i32 0
  %287 = extractvalue { double, double } %281, 0
  store double %287, ptr %286, align 16
  %288 = getelementptr inbounds { double, double }, ptr %285, i32 0, i32 1
  %289 = extractvalue { double, double } %281, 1
  store double %289, ptr %288, align 8
  %290 = invoke noundef ptr @_ZNK3JPH8RefConstINS_5ShapeEEcvPKS1_Ev(ptr noundef nonnull align 8 dereferenceable(8) %29)
          to label %291 unwind label %304

291:                                              ; preds = %282
  %292 = getelementptr inbounds { double, double }, ptr %35, i32 0, i32 0
  %293 = load double, ptr %292, align 16
  %294 = getelementptr inbounds { double, double }, ptr %35, i32 0, i32 1
  %295 = load double, ptr %294, align 8
  %296 = getelementptr inbounds { double, double }, ptr %36, i32 0, i32 0
  %297 = load double, ptr %296, align 16
  %298 = getelementptr inbounds { double, double }, ptr %36, i32 0, i32 1
  %299 = load double, ptr %298, align 8
  invoke void @_ZN3JPH21CompoundShapeSettings8AddShapeENS_4Vec3ENS_4QuatEPKNS_5ShapeEj(ptr noundef nonnull align 8 dereferenceable(88) %31, double %293, double %295, double %297, double %299, ptr noundef %290, i32 noundef 0)
          to label %300 unwind label %304

300:                                              ; preds = %291
  br label %301

301:                                              ; preds = %300
  %302 = load i32, ptr %34, align 4, !tbaa !9
  %303 = add nsw i32 %302, 1
  store i32 %303, ptr %34, align 4, !tbaa !9
  br label %263, !llvm.loop !39

304:                                              ; preds = %291, %282, %280, %267
  %305 = landingpad { ptr, i32 }
          cleanup
  %306 = extractvalue { ptr, i32 } %305, 0
  store ptr %306, ptr %12, align 8
  %307 = extractvalue { ptr, i32 } %305, 1
  store i32 %307, ptr %13, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %34) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %33) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %32) #10
  br label %391

308:                                              ; preds = %266
  br label %309

309:                                              ; preds = %308
  %310 = load i32, ptr %33, align 4, !tbaa !9
  %311 = add nsw i32 %310, 1
  store i32 %311, ptr %33, align 4, !tbaa !9
  br label %258, !llvm.loop !41

312:                                              ; preds = %261
  br label %313

313:                                              ; preds = %312
  %314 = load i32, ptr %32, align 4, !tbaa !9
  %315 = add nsw i32 %314, 1
  store i32 %315, ptr %32, align 4, !tbaa !9
  br label %187, !llvm.loop !42

316:                                              ; preds = %190
  call void @llvm.lifetime.start.p0(i64 256, ptr %37) #10
  call void @llvm.memcpy.p0.p0.i64(ptr align 16 %38, ptr align 16 %6, i64 16, i1 false), !tbaa.struct !11
  %317 = invoke { double, double } @_ZN3JPH4Quat9sIdentityEv()
          to label %318 unwind label %364

318:                                              ; preds = %316
  %319 = getelementptr inbounds %"class.JPH::Quat", ptr %39, i32 0, i32 0
  %320 = getelementptr inbounds %"class.JPH::Vec4", ptr %319, i32 0, i32 0
  %321 = getelementptr inbounds %union.anon.4, ptr %320, i32 0, i32 0
  %322 = getelementptr inbounds { double, double }, ptr %321, i32 0, i32 0
  %323 = extractvalue { double, double } %317, 0
  store double %323, ptr %322, align 16
  %324 = getelementptr inbounds { double, double }, ptr %321, i32 0, i32 1
  %325 = extractvalue { double, double } %317, 1
  store double %325, ptr %324, align 8
  %326 = getelementptr inbounds { double, double }, ptr %38, i32 0, i32 0
  %327 = load double, ptr %326, align 16
  %328 = getelementptr inbounds { double, double }, ptr %38, i32 0, i32 1
  %329 = load double, ptr %328, align 8
  %330 = getelementptr inbounds { double, double }, ptr %39, i32 0, i32 0
  %331 = load double, ptr %330, align 16
  %332 = getelementptr inbounds { double, double }, ptr %39, i32 0, i32 1
  %333 = load double, ptr %332, align 8
  invoke void @_ZN3JPH20BodyCreationSettingsC2EPKNS_13ShapeSettingsENS_4Vec3ENS_4QuatENS_11EMotionTypeEt(ptr noundef nonnull align 16 dereferenceable(256) %37, ptr noundef %31, double %327, double %329, double %331, double %333, i8 noundef zeroext 2, i16 noundef zeroext 1)
          to label %334 unwind label %364

334:                                              ; preds = %318
  call void @llvm.lifetime.start.p0(i64 16, ptr %40) #10
  invoke void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %40, float noundef 2.000000e+01, float noundef 0.000000e+00, float noundef 0.000000e+00)
          to label %335 unwind label %368

335:                                              ; preds = %334
  %336 = getelementptr inbounds %"class.JPH::BodyCreationSettings", ptr %37, i32 0, i32 2
  call void @llvm.memcpy.p0.p0.i64(ptr align 16 %336, ptr align 16 %40, i64 16, i1 false), !tbaa.struct !11
  call void @llvm.lifetime.end.p0(i64 16, ptr %40) #10
  %337 = load i32, ptr %8, align 4, !tbaa !9
  %338 = icmp eq i32 %337, 1
  %339 = getelementptr inbounds %"class.JPH::BodyCreationSettings", ptr %37, i32 0, i32 15
  %340 = zext i1 %338 to i8
  store i8 %340, ptr %339, align 8, !tbaa !13
  call void @llvm.lifetime.start.p0(i64 4, ptr %41) #10
  %341 = getelementptr inbounds %class.Test, ptr %47, i32 0, i32 3
  %342 = load ptr, ptr %341, align 8, !tbaa !32
  %343 = invoke i32 @_ZN3JPH13BodyInterface16CreateAndAddBodyERKNS_20BodyCreationSettingsENS_11EActivationE(ptr noundef nonnull align 8 dereferenceable(24) %342, ptr noundef nonnull align 16 dereferenceable(256) %37, i32 noundef 0)
          to label %344 unwind label %372

344:                                              ; preds = %335
  %345 = getelementptr inbounds %"class.JPH::BodyID", ptr %41, i32 0, i32 0
  store i32 %343, ptr %345, align 4
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %17, ptr align 4 %41, i64 4, i1 false), !tbaa.struct !38
  call void @llvm.lifetime.end.p0(i64 4, ptr %41) #10
  call void @llvm.lifetime.start.p0(i64 32, ptr %42) #10
  %346 = load i32, ptr %8, align 4, !tbaa !9
  %347 = sext i32 %346 to i64
  %348 = getelementptr inbounds [2 x ptr], ptr @_ZZN31EnhancedInternalEdgeRemovalTest20CreateSlidingObjectsEN3JPH4Vec3EE6labels, i64 0, i64 %347
  %349 = load ptr, ptr %348, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 1, ptr %43) #10
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcEN3JPH12STLAllocatorIcEEEC2IS5_EEPKcRKS5_(ptr noundef nonnull align 8 dereferenceable(32) %42, ptr noundef %349, ptr noundef nonnull align 1 dereferenceable(1) %43)
          to label %350 unwind label %376

350:                                              ; preds = %344
  invoke void @_ZN4Test12SetBodyLabelERKN3JPH6BodyIDERKNSt7__cxx1112basic_stringIcSt11char_traitsIcENS0_12STLAllocatorIcEEEE(ptr noundef nonnull align 8 dereferenceable(112) %47, ptr noundef nonnull align 4 dereferenceable(4) %17, ptr noundef nonnull align 8 dereferenceable(32) %42)
          to label %351 unwind label %380

351:                                              ; preds = %350
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcEN3JPH12STLAllocatorIcEEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %42) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr %43) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr %42) #10
  %352 = invoke noundef float @_ZN3JPH8literalsli2_rEe(x86_fp80 noundef 0xK4001E000000000000000)
          to label %353 unwind label %385

353:                                              ; preds = %351
  invoke void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %44, float noundef 0.000000e+00, float noundef 0.000000e+00, float noundef %352)
          to label %354 unwind label %385

354:                                              ; preds = %353
  %355 = getelementptr inbounds { double, double }, ptr %44, i32 0, i32 0
  %356 = load double, ptr %355, align 16
  %357 = getelementptr inbounds { double, double }, ptr %44, i32 0, i32 1
  %358 = load double, ptr %357, align 8
  %359 = invoke noundef nonnull align 16 dereferenceable(16) ptr @_ZN3JPH4Vec3pLES0_(ptr noundef nonnull align 16 dereferenceable(16) %6, double %356, double %358)
          to label %360 unwind label %385

360:                                              ; preds = %354
  call void @_ZN3JPH20BodyCreationSettingsD2Ev(ptr noundef nonnull align 16 dereferenceable(256) %37) #10
  call void @llvm.lifetime.end.p0(i64 256, ptr %37) #10
  call void @_ZN3JPH21CompoundShapeSettingsD2Ev(ptr noundef nonnull align 8 dereferenceable(88) %31) #10
  call void @llvm.lifetime.end.p0(i64 88, ptr %31) #10
  call void @_ZN3JPH8RefConstINS_5ShapeEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %29) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %29) #10
  call void @_ZN3JPH20BodyCreationSettingsD2Ev(ptr noundef nonnull align 16 dereferenceable(256) %21) #10
  call void @llvm.lifetime.end.p0(i64 256, ptr %21) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %17) #10
  call void @_ZN3JPH20BodyCreationSettingsD2Ev(ptr noundef nonnull align 16 dereferenceable(256) %10) #10
  call void @llvm.lifetime.end.p0(i64 256, ptr %10) #10
  br label %361

361:                                              ; preds = %360
  %362 = load i32, ptr %8, align 4, !tbaa !9
  %363 = add nsw i32 %362, 1
  store i32 %363, ptr %8, align 4, !tbaa !9
  br label %60, !llvm.loop !43

364:                                              ; preds = %318, %316
  %365 = landingpad { ptr, i32 }
          cleanup
  %366 = extractvalue { ptr, i32 } %365, 0
  store ptr %366, ptr %12, align 8
  %367 = extractvalue { ptr, i32 } %365, 1
  store i32 %367, ptr %13, align 4
  br label %390

368:                                              ; preds = %334
  %369 = landingpad { ptr, i32 }
          cleanup
  %370 = extractvalue { ptr, i32 } %369, 0
  store ptr %370, ptr %12, align 8
  %371 = extractvalue { ptr, i32 } %369, 1
  store i32 %371, ptr %13, align 4
  call void @llvm.lifetime.end.p0(i64 16, ptr %40) #10
  br label %389

372:                                              ; preds = %335
  %373 = landingpad { ptr, i32 }
          cleanup
  %374 = extractvalue { ptr, i32 } %373, 0
  store ptr %374, ptr %12, align 8
  %375 = extractvalue { ptr, i32 } %373, 1
  store i32 %375, ptr %13, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %41) #10
  br label %389

376:                                              ; preds = %344
  %377 = landingpad { ptr, i32 }
          cleanup
  %378 = extractvalue { ptr, i32 } %377, 0
  store ptr %378, ptr %12, align 8
  %379 = extractvalue { ptr, i32 } %377, 1
  store i32 %379, ptr %13, align 4
  br label %384

380:                                              ; preds = %350
  %381 = landingpad { ptr, i32 }
          cleanup
  %382 = extractvalue { ptr, i32 } %381, 0
  store ptr %382, ptr %12, align 8
  %383 = extractvalue { ptr, i32 } %381, 1
  store i32 %383, ptr %13, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcEN3JPH12STLAllocatorIcEEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %42) #10
  br label %384

384:                                              ; preds = %380, %376
  call void @llvm.lifetime.end.p0(i64 1, ptr %43) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr %42) #10
  br label %389

385:                                              ; preds = %354, %353, %351
  %386 = landingpad { ptr, i32 }
          cleanup
  %387 = extractvalue { ptr, i32 } %386, 0
  store ptr %387, ptr %12, align 8
  %388 = extractvalue { ptr, i32 } %386, 1
  store i32 %388, ptr %13, align 4
  br label %389

389:                                              ; preds = %385, %384, %372, %368
  call void @_ZN3JPH20BodyCreationSettingsD2Ev(ptr noundef nonnull align 16 dereferenceable(256) %37) #10
  br label %390

390:                                              ; preds = %389, %364
  call void @llvm.lifetime.end.p0(i64 256, ptr %37) #10
  br label %391

391:                                              ; preds = %390, %304, %253
  call void @_ZN3JPH21CompoundShapeSettingsD2Ev(ptr noundef nonnull align 8 dereferenceable(88) %31) #10
  br label %392

392:                                              ; preds = %391, %249
  call void @llvm.lifetime.end.p0(i64 88, ptr %31) #10
  call void @_ZN3JPH8RefConstINS_5ShapeEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %29) #10
  br label %393

393:                                              ; preds = %392, %245, %241
  call void @llvm.lifetime.end.p0(i64 8, ptr %29) #10
  br label %394

394:                                              ; preds = %393, %237, %236, %224, %220
  call void @_ZN3JPH20BodyCreationSettingsD2Ev(ptr noundef nonnull align 16 dereferenceable(256) %21) #10
  br label %395

395:                                              ; preds = %394, %216, %212
  call void @llvm.lifetime.end.p0(i64 256, ptr %21) #10
  br label %396

396:                                              ; preds = %395, %211, %199
  call void @llvm.lifetime.end.p0(i64 4, ptr %17) #10
  br label %397

397:                                              ; preds = %396, %195
  call void @_ZN3JPH20BodyCreationSettingsD2Ev(ptr noundef nonnull align 16 dereferenceable(256) %10) #10
  br label %398

398:                                              ; preds = %397, %191
  call void @llvm.lifetime.end.p0(i64 256, ptr %10) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %8) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr %6) #10
  br label %400

399:                                              ; preds = %63
  call void @llvm.lifetime.end.p0(i64 16, ptr %6) #10
  ret void

400:                                              ; preds = %398
  %401 = load ptr, ptr %12, align 8
  %402 = load i32, ptr %13, align 4
  %403 = insertvalue { ptr, i32 } poison, ptr %401, 0
  %404 = insertvalue { ptr, i32 } %403, i32 %402, 1
  resume { ptr, i32 } %404
}

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef float @_ZN3JPH8literalsli2_rEe(x86_fp80 noundef) #3

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

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

; Function Attrs: alwaysinline mustprogress uwtable
declare dso_local { double, double } @_ZN3JPH4Vec310sReplicateEf(float noundef) #2 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: nocallback nofree nounwind willreturn memory(argmem: readwrite)
declare void @llvm.memcpy.p0.p0.i64(ptr noalias nocapture writeonly, ptr noalias nocapture readonly, i64, i1 immarg) #6

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN4Test12SetBodyLabelERKN3JPH6BodyIDERKNSt7__cxx1112basic_stringIcSt11char_traitsIcENS0_12STLAllocatorIcEEEE(ptr noundef nonnull align 8 dereferenceable(112), ptr noundef nonnull align 4 dereferenceable(4), ptr noundef nonnull align 8 dereferenceable(32)) #1 align 2

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

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

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

; Function Attrs: alwaysinline mustprogress uwtable
declare dso_local noundef ptr @_ZN3JPH11SphereShapenwEm(i64 noundef) #4 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: inlinehint mustprogress uwtable
declare dso_local void @_ZN3JPH8RefConstINS_5ShapeEEC2EPKS1_(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef) unnamed_addr #8 align 2

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

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

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

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

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

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

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

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

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

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

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


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

%"class.JPH::Vec3" = type { %union.anon }
%union.anon = type { <4 x float> }
%"class.JPH::BodyCreationSettings" = type { %"class.JPH::Vec3", %"class.JPH::Quat", %"class.JPH::Vec3", %"class.JPH::Vec3", i64, i16, %"class.JPH::CollisionGroup", i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, float, float, float, float, float, float, float, i32, i32, i8, float, %"class.JPH::MassProperties", %"class.JPH::RefConst.5", %"class.JPH::RefConst.6" }
%"class.JPH::Quat" = type { %"class.JPH::Vec4" }
%"class.JPH::Vec4" = type { %union.anon.4 }
%union.anon.4 = type { <4 x float> }
%"class.JPH::CollisionGroup" = type { %"class.JPH::RefConst", i32, i32 }
%"class.JPH::RefConst" = type { ptr }
%"class.JPH::MassProperties" = type { float, %"class.JPH::Mat44" }
%"class.JPH::Mat44" = type { [4 x %"class.JPH::Vec4"] }
%"class.JPH::RefConst.5" = type { ptr }
%"class.JPH::RefConst.6" = type { ptr }
%"class.JPH::BodyID" = type { i32 }
%"class.std::__cxx11::basic_string" = type { %"struct.std::__cxx11::basic_string<char, std::char_traits<char>, JPH::STLAllocator<char>>::_Alloc_hider", i64, %union.anon.8 }
%"struct.std::__cxx11::basic_string<char, std::char_traits<char>, JPH::STLAllocator<char>>::_Alloc_hider" = type { ptr }
%union.anon.8 = type { i64, [8 x i8] }
%"class.JPH::STLAllocator" = type { i8 }
%"class.JPH::StaticCompoundShapeSettings" = type { %"class.JPH::CompoundShapeSettings" }
%"class.JPH::CompoundShapeSettings" = type { %"class.JPH::ShapeSettings", %"class.JPH::Array" }
%"class.JPH::ShapeSettings" = type { %"class.JPH::SerializableObject", %"class.JPH::RefTarget.9", i64, %"class.JPH::Result" }
%"class.JPH::SerializableObject" = type { ptr }
%"class.JPH::RefTarget.9" = type { %"struct.std::atomic" }
%"struct.std::atomic" = type { %"struct.std::__atomic_base" }
%"struct.std::__atomic_base" = type { i32 }
%"class.JPH::Result" = type <{ %union.anon.10, i8, [7 x i8] }>
%union.anon.10 = type { %"class.std::__cxx11::basic_string" }
%"class.JPH::Array" = type { i64, i64, ptr }

@_ZZN31EnhancedInternalEdgeRemovalTest20CreateSlidingObjectsEN3JPH4Vec3EE6labels = external hidden local_unnamed_addr global [2 x ptr], align 16

; 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 @_ZN31EnhancedInternalEdgeRemovalTest20CreateSlidingObjectsEN3JPH4Vec3E(ptr noundef nonnull align 8 dereferenceable(116) %0, double %1, double %2) local_unnamed_addr #1 align 2 personality ptr @__gxx_personality_v0 {
  %4 = alloca %"class.JPH::Vec3", align 16
  %5 = alloca %"class.JPH::Vec3", align 16
  %6 = alloca %"class.JPH::Vec3", align 16
  %7 = alloca %"class.JPH::BodyCreationSettings", align 16
  %8 = alloca %"class.JPH::Vec3", align 16
  %9 = alloca %"class.JPH::BodyID", align 4
  %10 = alloca %"class.std::__cxx11::basic_string", align 8
  %11 = alloca %"class.JPH::STLAllocator", align 1
  %12 = alloca %"class.JPH::Vec3", align 16
  %13 = alloca %"class.JPH::BodyCreationSettings", align 16
  %14 = alloca %"class.JPH::Vec3", align 16
  %15 = alloca %"class.std::__cxx11::basic_string", align 8
  %16 = alloca %"class.JPH::STLAllocator", align 1
  %17 = alloca %"class.JPH::Vec3", align 16
  %18 = alloca %"class.JPH::RefConst.6", align 8
  %19 = alloca %"class.JPH::StaticCompoundShapeSettings", align 8
  %20 = alloca %"class.JPH::Vec3", align 16
  %21 = alloca %"class.JPH::BodyCreationSettings", align 16
  %22 = alloca %"class.JPH::Vec3", align 16
  %23 = alloca %"class.std::__cxx11::basic_string", align 8
  %24 = alloca %"class.JPH::STLAllocator", align 1
  %25 = alloca %"class.JPH::Vec3", align 16
  store double %1, ptr %4, align 16
  %26 = getelementptr inbounds i8, ptr %4, i64 8
  store double %2, ptr %26, align 8
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %5) #10
  %27 = tail call noundef float @_ZN3JPH8literalsli2_rEe(x86_fp80 noundef 0xK4002C000000000000000)
  call void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %6, float noundef 0.000000e+00, float noundef 0.000000e+00, float noundef %27)
  %28 = load double, ptr %6, align 16
  %29 = getelementptr inbounds i8, ptr %6, i64 8
  %30 = load double, ptr %29, align 8
  %31 = call { double, double } @_ZNK3JPH4Vec3miES0_(ptr noundef nonnull align 16 dereferenceable(16) %4, double %28, double %30)
  %32 = extractvalue { double, double } %31, 0
  store double %32, ptr %5, align 16
  %33 = getelementptr inbounds i8, ptr %5, i64 8
  %34 = extractvalue { double, double } %31, 1
  store double %34, ptr %33, align 8
  %35 = getelementptr inbounds i8, ptr %7, i64 32
  %36 = getelementptr inbounds i8, ptr %7, i64 104
  %37 = getelementptr inbounds i8, ptr %0, i64 24
  %38 = getelementptr inbounds i8, ptr %12, i64 8
  %39 = getelementptr inbounds i8, ptr %13, i64 32
  %40 = getelementptr inbounds i8, ptr %13, i64 104
  %41 = getelementptr inbounds i8, ptr %17, i64 8
  %42 = getelementptr inbounds i8, ptr %19, i64 8
  %43 = getelementptr inbounds i8, ptr %20, i64 8
  %44 = getelementptr inbounds i8, ptr %21, i64 32
  %45 = getelementptr inbounds i8, ptr %21, i64 104
  %46 = getelementptr inbounds i8, ptr %25, i64 8
  br label %48

47:                                               ; preds = %226
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %5) #10
  ret void

48:                                               ; preds = %3, %226
  %49 = phi i8 [ 0, %3 ], [ 1, %226 ]
  %50 = phi i1 [ true, %3 ], [ false, %226 ]
  %indvars.iv = phi i64 [ 0, %3 ], [ 1, %226 ]
  call void @llvm.lifetime.start.p0(i64 256, ptr nonnull %7) #10
  %51 = call noundef ptr @_ZN3JPH8BoxShapenwEm(i64 noundef 80)
  %52 = invoke { double, double } @_ZN3JPH4Vec310sReplicateEf(float noundef 2.000000e+00)
          to label %53 unwind label %104

53:                                               ; preds = %48
  %54 = extractvalue { double, double } %52, 0
  %55 = extractvalue { double, double } %52, 1
  invoke void @_ZN3JPH8BoxShapeC2ENS_4Vec3EfPKNS_15PhysicsMaterialE(ptr noundef nonnull align 16 dereferenceable(80) %51, double %54, double %55, float noundef 0x3FA99999A0000000, ptr noundef null)
          to label %56 unwind label %104

56:                                               ; preds = %53
  %.sroa.023.0.copyload = load double, ptr %5, align 16
  %.sroa.224.0.copyload = load double, ptr %33, align 8, !tbaa !5
  %57 = call { double, double } @_ZN3JPH4Quat9sIdentityEv()
  %58 = extractvalue { double, double } %57, 0
  %59 = extractvalue { double, double } %57, 1
  call void @_ZN3JPH20BodyCreationSettingsC2EPKNS_5ShapeENS_4Vec3ENS_4QuatENS_11EMotionTypeEt(ptr noundef nonnull align 16 dereferenceable(256) %7, ptr noundef nonnull %51, double %.sroa.023.0.copyload, double %.sroa.224.0.copyload, double %58, double %59, i8 noundef zeroext 2, i16 noundef zeroext 1)
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %8) #10
  invoke void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %8, float noundef 2.000000e+01, float noundef 0.000000e+00, float noundef 0.000000e+00)
          to label %60 unwind label %106

60:                                               ; preds = %56
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 16 dereferenceable(16) %35, ptr noundef nonnull align 16 dereferenceable(16) %8, i64 16, i1 false), !tbaa.struct !8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %8) #10
  store i8 %49, ptr %36, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %9) #10
  %61 = load ptr, ptr %37, align 8, !tbaa !30
  %62 = invoke i32 @_ZN3JPH13BodyInterface16CreateAndAddBodyERKNS_20BodyCreationSettingsENS_11EActivationE(ptr noundef nonnull align 8 dereferenceable(24) %61, ptr noundef nonnull align 16 dereferenceable(256) %7, i32 noundef 0)
          to label %63 unwind label %108

63:                                               ; preds = %60
  store i32 %62, ptr %9, align 4
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %10) #10
  %64 = getelementptr inbounds [2 x ptr], ptr @_ZZN31EnhancedInternalEdgeRemovalTest20CreateSlidingObjectsEN3JPH4Vec3EE6labels, i64 0, i64 %indvars.iv
  %65 = load ptr, ptr %64, align 8, !tbaa !36
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %11) #10
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcEN3JPH12STLAllocatorIcEEEC2IS5_EEPKcRKS5_(ptr noundef nonnull align 8 dereferenceable(32) %10, ptr noundef %65, ptr noundef nonnull align 1 dereferenceable(1) %11)
          to label %66 unwind label %110

66:                                               ; preds = %63
  invoke void @_ZN4Test12SetBodyLabelERKN3JPH6BodyIDERKNSt7__cxx1112basic_stringIcSt11char_traitsIcENS0_12STLAllocatorIcEEEE(ptr noundef nonnull align 8 dereferenceable(112) %0, ptr noundef nonnull align 4 dereferenceable(4) %9, ptr noundef nonnull align 8 dereferenceable(32) %10)
          to label %67 unwind label %112

67:                                               ; preds = %66
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcEN3JPH12STLAllocatorIcEEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %10) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %11) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %10) #10
  %68 = call noundef float @_ZN3JPH8literalsli2_rEe(x86_fp80 noundef 0xK4001A000000000000000)
  invoke void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %12, float noundef 0.000000e+00, float noundef 0.000000e+00, float noundef %68)
          to label %69 unwind label %108

69:                                               ; preds = %67
  %70 = load double, ptr %12, align 16
  %71 = load double, ptr %38, align 8
  %72 = invoke noundef nonnull align 16 dereferenceable(16) ptr @_ZN3JPH4Vec3pLES0_(ptr noundef nonnull align 16 dereferenceable(16) %5, double %70, double %71)
          to label %73 unwind label %108

73:                                               ; preds = %69
  call void @llvm.lifetime.start.p0(i64 256, ptr nonnull %13) #10
  %74 = invoke noundef ptr @_ZN3JPH11SphereShapenwEm(i64 noundef 48)
          to label %75 unwind label %115

75:                                               ; preds = %73
  invoke void @_ZN3JPH11SphereShapeC2EfPKNS_15PhysicsMaterialE(ptr noundef nonnull align 8 dereferenceable(48) %74, float noundef 2.000000e+00, ptr noundef null)
          to label %76 unwind label %117

76:                                               ; preds = %75
  %.sroa.019.0.copyload = load double, ptr %5, align 16
  %.sroa.220.0.copyload = load double, ptr %33, align 8, !tbaa !5
  %77 = invoke { double, double } @_ZN3JPH4Quat9sIdentityEv()
          to label %78 unwind label %115

78:                                               ; preds = %76
  %79 = extractvalue { double, double } %77, 0
  %80 = extractvalue { double, double } %77, 1
  invoke void @_ZN3JPH20BodyCreationSettingsC2EPKNS_5ShapeENS_4Vec3ENS_4QuatENS_11EMotionTypeEt(ptr noundef nonnull align 16 dereferenceable(256) %13, ptr noundef nonnull %74, double %.sroa.019.0.copyload, double %.sroa.220.0.copyload, double %79, double %80, i8 noundef zeroext 2, i16 noundef zeroext 1)
          to label %81 unwind label %115

81:                                               ; preds = %78
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %14) #10
  invoke void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %14, float noundef 2.000000e+01, float noundef 0.000000e+00, float noundef 0.000000e+00)
          to label %82 unwind label %119

82:                                               ; preds = %81
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 16 dereferenceable(16) %39, ptr noundef nonnull align 16 dereferenceable(16) %14, i64 16, i1 false), !tbaa.struct !8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %14) #10
  store i8 %49, ptr %40, align 8, !tbaa !9
  %83 = load ptr, ptr %37, align 8, !tbaa !30
  %84 = invoke i32 @_ZN3JPH13BodyInterface16CreateAndAddBodyERKNS_20BodyCreationSettingsENS_11EActivationE(ptr noundef nonnull align 8 dereferenceable(24) %83, ptr noundef nonnull align 16 dereferenceable(256) %13, i32 noundef 0)
          to label %85 unwind label %121

85:                                               ; preds = %82
  store i32 %84, ptr %9, align 4, !tbaa !37
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %15) #10
  %86 = load ptr, ptr %64, align 8, !tbaa !36
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %16) #10
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcEN3JPH12STLAllocatorIcEEEC2IS5_EEPKcRKS5_(ptr noundef nonnull align 8 dereferenceable(32) %15, ptr noundef %86, ptr noundef nonnull align 1 dereferenceable(1) %16)
          to label %87 unwind label %123

87:                                               ; preds = %85
  invoke void @_ZN4Test12SetBodyLabelERKN3JPH6BodyIDERKNSt7__cxx1112basic_stringIcSt11char_traitsIcENS0_12STLAllocatorIcEEEE(ptr noundef nonnull align 8 dereferenceable(112) %0, ptr noundef nonnull align 4 dereferenceable(4) %9, ptr noundef nonnull align 8 dereferenceable(32) %15)
          to label %88 unwind label %125

88:                                               ; preds = %87
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcEN3JPH12STLAllocatorIcEEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %15) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %16) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %15) #10
  %89 = call noundef float @_ZN3JPH8literalsli2_rEe(x86_fp80 noundef 0xK4001A000000000000000)
  invoke void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %17, float noundef 0.000000e+00, float noundef 0.000000e+00, float noundef %89)
          to label %90 unwind label %128

90:                                               ; preds = %88
  %91 = load double, ptr %17, align 16
  %92 = load double, ptr %41, align 8
  %93 = invoke noundef nonnull align 16 dereferenceable(16) ptr @_ZN3JPH4Vec3pLES0_(ptr noundef nonnull align 16 dereferenceable(16) %5, double %91, double %92)
          to label %94 unwind label %128

94:                                               ; preds = %90
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %18) #10
  %95 = invoke noundef ptr @_ZN3JPH8BoxShapenwEm(i64 noundef 80)
          to label %96 unwind label %130

96:                                               ; preds = %94
  %97 = invoke { double, double } @_ZN3JPH4Vec310sReplicateEf(float noundef 0x3FB99999A0000000)
          to label %98 unwind label %132

98:                                               ; preds = %96
  %99 = extractvalue { double, double } %97, 0
  %100 = extractvalue { double, double } %97, 1
  invoke void @_ZN3JPH8BoxShapeC2ENS_4Vec3EfPKNS_15PhysicsMaterialE(ptr noundef nonnull align 16 dereferenceable(80) %95, double %99, double %100, float noundef 0x3FA99999A0000000, ptr noundef null)
          to label %101 unwind label %132

101:                                              ; preds = %98
  invoke void @_ZN3JPH8RefConstINS_5ShapeEEC2EPKS1_(ptr noundef nonnull align 8 dereferenceable(8) %18, ptr noundef nonnull %95)
          to label %102 unwind label %130

102:                                              ; preds = %101
  call void @llvm.lifetime.start.p0(i64 88, ptr nonnull %19) #10
  invoke void @_ZN3JPH27StaticCompoundShapeSettingsC2Ev(ptr noundef nonnull align 8 dereferenceable(88) %19)
          to label %103 unwind label %134

103:                                              ; preds = %102
  invoke void @_ZNK3JPH9RefTargetINS_13ShapeSettingsEE11SetEmbeddedEv(ptr noundef nonnull align 4 dereferenceable(4) %42)
          to label %.preheader71.preheader unwind label %136

.preheader71.preheader:                           ; preds = %103
  invoke void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %20, float noundef 0xBFFE666660000000, float noundef 0xBFFE666660000000, float noundef 0xBFFE666660000000)
          to label %138 unwind label %208

104:                                              ; preds = %53, %48
  %105 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3JPH8BoxShapedlEPv(ptr noundef %51) #10
  br label %249

106:                                              ; preds = %56
  %107 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %8) #10
  br label %248

108:                                              ; preds = %69, %67, %60
  %109 = landingpad { ptr, i32 }
          cleanup
  br label %247

110:                                              ; preds = %63
  %111 = landingpad { ptr, i32 }
          cleanup
  br label %114

112:                                              ; preds = %66
  %113 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcEN3JPH12STLAllocatorIcEEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %10) #10
  br label %114

114:                                              ; preds = %112, %110
  %.pn = phi { ptr, i32 } [ %113, %112 ], [ %111, %110 ]
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %11) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %10) #10
  br label %247

115:                                              ; preds = %78, %76, %73
  %116 = landingpad { ptr, i32 }
          cleanup
  br label %246

117:                                              ; preds = %75
  %118 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3JPH11SphereShapedlEPv(ptr noundef %74) #10
  br label %246

119:                                              ; preds = %81
  %120 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %14) #10
  br label %245

121:                                              ; preds = %82
  %122 = landingpad { ptr, i32 }
          cleanup
  br label %245

123:                                              ; preds = %85
  %124 = landingpad { ptr, i32 }
          cleanup
  br label %127

125:                                              ; preds = %87
  %126 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcEN3JPH12STLAllocatorIcEEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %15) #10
  br label %127

127:                                              ; preds = %125, %123
  %.pn55 = phi { ptr, i32 } [ %126, %125 ], [ %124, %123 ]
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %16) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %15) #10
  br label %245

128:                                              ; preds = %90, %88
  %129 = landingpad { ptr, i32 }
          cleanup
  br label %245

130:                                              ; preds = %101, %94
  %131 = landingpad { ptr, i32 }
          cleanup
  br label %244

132:                                              ; preds = %98, %96
  %133 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3JPH8BoxShapedlEPv(ptr noundef %95) #10
  br label %244

134:                                              ; preds = %102
  %135 = landingpad { ptr, i32 }
          cleanup
  br label %243

136:                                              ; preds = %103
  %137 = landingpad { ptr, i32 }
          cleanup
  br label %242

138:                                              ; preds = %.preheader71.preheader
  %139 = invoke { double, double } @_ZN3JPH4Quat9sIdentityEv()
          to label %140 unwind label %208

140:                                              ; preds = %138
  %141 = extractvalue { double, double } %139, 0
  %142 = extractvalue { double, double } %139, 1
  %143 = call noundef ptr @_ZNK3JPH8RefConstINS_5ShapeEEcvPKS1_Ev(ptr noundef nonnull align 8 dereferenceable(8) %18)
  %144 = load double, ptr %20, align 16
  %145 = load double, ptr %43, align 8
  invoke void @_ZN3JPH21CompoundShapeSettings8AddShapeENS_4Vec3ENS_4QuatEPKNS_5ShapeEj(ptr noundef nonnull align 8 dereferenceable(88) %19, double %144, double %145, double %141, double %142, ptr noundef %143, i32 noundef 0)
          to label %146 unwind label %208

146:                                              ; preds = %140
  invoke void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %20, float noundef 0xBFFE666660000000, float noundef 0xBFFE666660000000, float noundef 0x3FFE666660000000)
          to label %147 unwind label %208

147:                                              ; preds = %146
  %148 = invoke { double, double } @_ZN3JPH4Quat9sIdentityEv()
          to label %149 unwind label %208

149:                                              ; preds = %147
  %150 = extractvalue { double, double } %148, 0
  %151 = extractvalue { double, double } %148, 1
  %152 = call noundef ptr @_ZNK3JPH8RefConstINS_5ShapeEEcvPKS1_Ev(ptr noundef nonnull align 8 dereferenceable(8) %18)
  %153 = load double, ptr %20, align 16
  %154 = load double, ptr %43, align 8
  invoke void @_ZN3JPH21CompoundShapeSettings8AddShapeENS_4Vec3ENS_4QuatEPKNS_5ShapeEj(ptr noundef nonnull align 8 dereferenceable(88) %19, double %153, double %154, double %150, double %151, ptr noundef %152, i32 noundef 0)
          to label %.preheader.1 unwind label %208

.preheader.1:                                     ; preds = %149
  invoke void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %20, float noundef 0xBFFE666660000000, float noundef 0x3FFE666660000000, float noundef 0xBFFE666660000000)
          to label %155 unwind label %208

155:                                              ; preds = %.preheader.1
  %156 = invoke { double, double } @_ZN3JPH4Quat9sIdentityEv()
          to label %157 unwind label %208

157:                                              ; preds = %155
  %158 = extractvalue { double, double } %156, 0
  %159 = extractvalue { double, double } %156, 1
  %160 = call noundef ptr @_ZNK3JPH8RefConstINS_5ShapeEEcvPKS1_Ev(ptr noundef nonnull align 8 dereferenceable(8) %18)
  %161 = load double, ptr %20, align 16
  %162 = load double, ptr %43, align 8
  invoke void @_ZN3JPH21CompoundShapeSettings8AddShapeENS_4Vec3ENS_4QuatEPKNS_5ShapeEj(ptr noundef nonnull align 8 dereferenceable(88) %19, double %161, double %162, double %158, double %159, ptr noundef %160, i32 noundef 0)
          to label %163 unwind label %208

163:                                              ; preds = %157
  invoke void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %20, float noundef 0xBFFE666660000000, float noundef 0x3FFE666660000000, float noundef 0x3FFE666660000000)
          to label %164 unwind label %208

164:                                              ; preds = %163
  %165 = invoke { double, double } @_ZN3JPH4Quat9sIdentityEv()
          to label %166 unwind label %208

166:                                              ; preds = %164
  %167 = extractvalue { double, double } %165, 0
  %168 = extractvalue { double, double } %165, 1
  %169 = call noundef ptr @_ZNK3JPH8RefConstINS_5ShapeEEcvPKS1_Ev(ptr noundef nonnull align 8 dereferenceable(8) %18)
  %170 = load double, ptr %20, align 16
  %171 = load double, ptr %43, align 8
  invoke void @_ZN3JPH21CompoundShapeSettings8AddShapeENS_4Vec3ENS_4QuatEPKNS_5ShapeEj(ptr noundef nonnull align 8 dereferenceable(88) %19, double %170, double %171, double %167, double %168, ptr noundef %169, i32 noundef 0)
          to label %.preheader71.1 unwind label %208

.preheader71.1:                                   ; preds = %166
  invoke void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %20, float noundef 0x3FFE666660000000, float noundef 0xBFFE666660000000, float noundef 0xBFFE666660000000)
          to label %172 unwind label %208

172:                                              ; preds = %.preheader71.1
  %173 = invoke { double, double } @_ZN3JPH4Quat9sIdentityEv()
          to label %174 unwind label %208

174:                                              ; preds = %172
  %175 = extractvalue { double, double } %173, 0
  %176 = extractvalue { double, double } %173, 1
  %177 = call noundef ptr @_ZNK3JPH8RefConstINS_5ShapeEEcvPKS1_Ev(ptr noundef nonnull align 8 dereferenceable(8) %18)
  %178 = load double, ptr %20, align 16
  %179 = load double, ptr %43, align 8
  invoke void @_ZN3JPH21CompoundShapeSettings8AddShapeENS_4Vec3ENS_4QuatEPKNS_5ShapeEj(ptr noundef nonnull align 8 dereferenceable(88) %19, double %178, double %179, double %175, double %176, ptr noundef %177, i32 noundef 0)
          to label %180 unwind label %208

180:                                              ; preds = %174
  invoke void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %20, float noundef 0x3FFE666660000000, float noundef 0xBFFE666660000000, float noundef 0x3FFE666660000000)
          to label %181 unwind label %208

181:                                              ; preds = %180
  %182 = invoke { double, double } @_ZN3JPH4Quat9sIdentityEv()
          to label %183 unwind label %208

183:                                              ; preds = %181
  %184 = extractvalue { double, double } %182, 0
  %185 = extractvalue { double, double } %182, 1
  %186 = call noundef ptr @_ZNK3JPH8RefConstINS_5ShapeEEcvPKS1_Ev(ptr noundef nonnull align 8 dereferenceable(8) %18)
  %187 = load double, ptr %20, align 16
  %188 = load double, ptr %43, align 8
  invoke void @_ZN3JPH21CompoundShapeSettings8AddShapeENS_4Vec3ENS_4QuatEPKNS_5ShapeEj(ptr noundef nonnull align 8 dereferenceable(88) %19, double %187, double %188, double %184, double %185, ptr noundef %186, i32 noundef 0)
          to label %.preheader.1.1 unwind label %208

.preheader.1.1:                                   ; preds = %183
  invoke void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %20, float noundef 0x3FFE666660000000, float noundef 0x3FFE666660000000, float noundef 0xBFFE666660000000)
          to label %189 unwind label %208

189:                                              ; preds = %.preheader.1.1
  %190 = invoke { double, double } @_ZN3JPH4Quat9sIdentityEv()
          to label %191 unwind label %208

191:                                              ; preds = %189
  %192 = extractvalue { double, double } %190, 0
  %193 = extractvalue { double, double } %190, 1
  %194 = call noundef ptr @_ZNK3JPH8RefConstINS_5ShapeEEcvPKS1_Ev(ptr noundef nonnull align 8 dereferenceable(8) %18)
  %195 = load double, ptr %20, align 16
  %196 = load double, ptr %43, align 8
  invoke void @_ZN3JPH21CompoundShapeSettings8AddShapeENS_4Vec3ENS_4QuatEPKNS_5ShapeEj(ptr noundef nonnull align 8 dereferenceable(88) %19, double %195, double %196, double %192, double %193, ptr noundef %194, i32 noundef 0)
          to label %197 unwind label %208

197:                                              ; preds = %191
  invoke void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %20, float noundef 0x3FFE666660000000, float noundef 0x3FFE666660000000, float noundef 0x3FFE666660000000)
          to label %198 unwind label %208

198:                                              ; preds = %197
  %199 = invoke { double, double } @_ZN3JPH4Quat9sIdentityEv()
          to label %200 unwind label %208

200:                                              ; preds = %198
  %201 = extractvalue { double, double } %199, 0
  %202 = extractvalue { double, double } %199, 1
  %203 = call noundef ptr @_ZNK3JPH8RefConstINS_5ShapeEEcvPKS1_Ev(ptr noundef nonnull align 8 dereferenceable(8) %18)
  %204 = load double, ptr %20, align 16
  %205 = load double, ptr %43, align 8
  invoke void @_ZN3JPH21CompoundShapeSettings8AddShapeENS_4Vec3ENS_4QuatEPKNS_5ShapeEj(ptr noundef nonnull align 8 dereferenceable(88) %19, double %204, double %205, double %201, double %202, ptr noundef %203, i32 noundef 0)
          to label %206 unwind label %208

206:                                              ; preds = %200
  call void @llvm.lifetime.start.p0(i64 256, ptr nonnull %21) #10
  %.sroa.02.0.copyload = load double, ptr %5, align 16
  %.sroa.23.0.copyload = load double, ptr %33, align 8, !tbaa !5
  %207 = invoke { double, double } @_ZN3JPH4Quat9sIdentityEv()
          to label %210 unwind label %227

208:                                              ; preds = %200, %198, %197, %191, %189, %.preheader.1.1, %183, %181, %180, %174, %172, %.preheader71.1, %166, %164, %163, %157, %155, %.preheader.1, %149, %147, %146, %140, %138, %.preheader71.preheader
  %209 = landingpad { ptr, i32 }
          cleanup
  br label %242

210:                                              ; preds = %206
  %211 = extractvalue { double, double } %207, 0
  %212 = extractvalue { double, double } %207, 1
  invoke void @_ZN3JPH20BodyCreationSettingsC2EPKNS_13ShapeSettingsENS_4Vec3ENS_4QuatENS_11EMotionTypeEt(ptr noundef nonnull align 16 dereferenceable(256) %21, ptr noundef nonnull %19, double %.sroa.02.0.copyload, double %.sroa.23.0.copyload, double %211, double %212, i8 noundef zeroext 2, i16 noundef zeroext 1)
          to label %213 unwind label %227

213:                                              ; preds = %210
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %22) #10
  invoke void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %22, float noundef 2.000000e+01, float noundef 0.000000e+00, float noundef 0.000000e+00)
          to label %214 unwind label %229

214:                                              ; preds = %213
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 16 dereferenceable(16) %44, ptr noundef nonnull align 16 dereferenceable(16) %22, i64 16, i1 false), !tbaa.struct !8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %22) #10
  store i8 %49, ptr %45, align 8, !tbaa !9
  %215 = load ptr, ptr %37, align 8, !tbaa !30
  %216 = invoke i32 @_ZN3JPH13BodyInterface16CreateAndAddBodyERKNS_20BodyCreationSettingsENS_11EActivationE(ptr noundef nonnull align 8 dereferenceable(24) %215, ptr noundef nonnull align 16 dereferenceable(256) %21, i32 noundef 0)
          to label %217 unwind label %231

217:                                              ; preds = %214
  store i32 %216, ptr %9, align 4, !tbaa !37
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %23) #10
  %218 = load ptr, ptr %64, align 8, !tbaa !36
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %24) #10
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcEN3JPH12STLAllocatorIcEEEC2IS5_EEPKcRKS5_(ptr noundef nonnull align 8 dereferenceable(32) %23, ptr noundef %218, ptr noundef nonnull align 1 dereferenceable(1) %24)
          to label %219 unwind label %233

219:                                              ; preds = %217
  invoke void @_ZN4Test12SetBodyLabelERKN3JPH6BodyIDERKNSt7__cxx1112basic_stringIcSt11char_traitsIcENS0_12STLAllocatorIcEEEE(ptr noundef nonnull align 8 dereferenceable(112) %0, ptr noundef nonnull align 4 dereferenceable(4) %9, ptr noundef nonnull align 8 dereferenceable(32) %23)
          to label %220 unwind label %235

220:                                              ; preds = %219
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcEN3JPH12STLAllocatorIcEEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %23) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %24) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %23) #10
  %221 = call noundef float @_ZN3JPH8literalsli2_rEe(x86_fp80 noundef 0xK4001E000000000000000)
  invoke void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %25, float noundef 0.000000e+00, float noundef 0.000000e+00, float noundef %221)
          to label %222 unwind label %238

222:                                              ; preds = %220
  %223 = load double, ptr %25, align 16
  %224 = load double, ptr %46, align 8
  %225 = invoke noundef nonnull align 16 dereferenceable(16) ptr @_ZN3JPH4Vec3pLES0_(ptr noundef nonnull align 16 dereferenceable(16) %5, double %223, double %224)
          to label %226 unwind label %238

226:                                              ; preds = %222
  call void @_ZN3JPH20BodyCreationSettingsD2Ev(ptr noundef nonnull align 16 dereferenceable(256) %21) #10
  call void @llvm.lifetime.end.p0(i64 256, ptr nonnull %21) #10
  call void @_ZN3JPH21CompoundShapeSettingsD2Ev(ptr noundef nonnull align 8 dereferenceable(88) %19) #10
  call void @llvm.lifetime.end.p0(i64 88, ptr nonnull %19) #10
  call void @_ZN3JPH8RefConstINS_5ShapeEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %18) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %18) #10
  call void @_ZN3JPH20BodyCreationSettingsD2Ev(ptr noundef nonnull align 16 dereferenceable(256) %13) #10
  call void @llvm.lifetime.end.p0(i64 256, ptr nonnull %13) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %9) #10
  call void @_ZN3JPH20BodyCreationSettingsD2Ev(ptr noundef nonnull align 16 dereferenceable(256) %7) #10
  call void @llvm.lifetime.end.p0(i64 256, ptr nonnull %7) #10
  br i1 %50, label %48, label %47, !llvm.loop !38

227:                                              ; preds = %210, %206
  %228 = landingpad { ptr, i32 }
          cleanup
  br label %241

229:                                              ; preds = %213
  %230 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %22) #10
  br label %240

231:                                              ; preds = %214
  %232 = landingpad { ptr, i32 }
          cleanup
  br label %240

233:                                              ; preds = %217
  %234 = landingpad { ptr, i32 }
          cleanup
  br label %237

235:                                              ; preds = %219
  %236 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcEN3JPH12STLAllocatorIcEEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %23) #10
  br label %237

237:                                              ; preds = %235, %233
  %.pn57 = phi { ptr, i32 } [ %236, %235 ], [ %234, %233 ]
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %24) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %23) #10
  br label %240

238:                                              ; preds = %222, %220
  %239 = landingpad { ptr, i32 }
          cleanup
  br label %240

240:                                              ; preds = %238, %237, %231, %229
  %.pn59 = phi { ptr, i32 } [ %239, %238 ], [ %.pn57, %237 ], [ %232, %231 ], [ %230, %229 ]
  call void @_ZN3JPH20BodyCreationSettingsD2Ev(ptr noundef nonnull align 16 dereferenceable(256) %21) #10
  br label %241

241:                                              ; preds = %240, %227
  %.pn59.pn = phi { ptr, i32 } [ %.pn59, %240 ], [ %228, %227 ]
  call void @llvm.lifetime.end.p0(i64 256, ptr nonnull %21) #10
  br label %242

242:                                              ; preds = %241, %208, %136
  %.pn62 = phi { ptr, i32 } [ %209, %208 ], [ %.pn59.pn, %241 ], [ %137, %136 ]
  call void @_ZN3JPH21CompoundShapeSettingsD2Ev(ptr noundef nonnull align 8 dereferenceable(88) %19) #10
  br label %243

243:                                              ; preds = %242, %134
  %.pn62.pn = phi { ptr, i32 } [ %.pn62, %242 ], [ %135, %134 ]
  call void @llvm.lifetime.end.p0(i64 88, ptr nonnull %19) #10
  call void @_ZN3JPH8RefConstINS_5ShapeEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %18) #10
  br label %244

244:                                              ; preds = %243, %132, %130
  %.pn62.pn.pn = phi { ptr, i32 } [ %.pn62.pn, %243 ], [ %131, %130 ], [ %133, %132 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %18) #10
  br label %245

245:                                              ; preds = %244, %128, %127, %121, %119
  %.pn62.pn.pn.pn = phi { ptr, i32 } [ %.pn62.pn.pn, %244 ], [ %129, %128 ], [ %.pn55, %127 ], [ %122, %121 ], [ %120, %119 ]
  call void @_ZN3JPH20BodyCreationSettingsD2Ev(ptr noundef nonnull align 16 dereferenceable(256) %13) #10
  br label %246

246:                                              ; preds = %245, %117, %115
  %.pn62.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn62.pn.pn.pn, %245 ], [ %116, %115 ], [ %118, %117 ]
  call void @llvm.lifetime.end.p0(i64 256, ptr nonnull %13) #10
  br label %247

247:                                              ; preds = %246, %114, %108
  %.pn62.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn62.pn.pn.pn.pn, %246 ], [ %109, %108 ], [ %.pn, %114 ]
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %9) #10
  br label %248

248:                                              ; preds = %247, %106
  %.pn62.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn62.pn.pn.pn.pn.pn, %247 ], [ %107, %106 ]
  call void @_ZN3JPH20BodyCreationSettingsD2Ev(ptr noundef nonnull align 16 dereferenceable(256) %7) #10
  br label %249

249:                                              ; preds = %248, %104
  %.pn62.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn62.pn.pn.pn.pn.pn.pn, %248 ], [ %105, %104 ]
  call void @llvm.lifetime.end.p0(i64 256, ptr nonnull %7) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %5) #10
  resume { ptr, i32 } %.pn62.pn.pn.pn.pn.pn.pn.pn
}

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef float @_ZN3JPH8literalsli2_rEe(x86_fp80 noundef) local_unnamed_addr #3

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

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

; Function Attrs: alwaysinline mustprogress uwtable
declare dso_local { double, double } @_ZN3JPH4Vec310sReplicateEf(float noundef) local_unnamed_addr #2 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: mustprogress nocallback nofree nounwind willreturn memory(argmem: readwrite)
declare void @llvm.memcpy.p0.p0.i64(ptr noalias nocapture writeonly, ptr noalias nocapture readonly, i64, i1 immarg) #6

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN4Test12SetBodyLabelERKN3JPH6BodyIDERKNSt7__cxx1112basic_stringIcSt11char_traitsIcENS0_12STLAllocatorIcEEEE(ptr noundef nonnull align 8 dereferenceable(112), ptr noundef nonnull align 4 dereferenceable(4), ptr noundef nonnull align 8 dereferenceable(32)) local_unnamed_addr #1 align 2

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

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

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

; Function Attrs: alwaysinline mustprogress uwtable
declare dso_local noundef ptr @_ZN3JPH11SphereShapenwEm(i64 noundef) local_unnamed_addr #4 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: inlinehint mustprogress uwtable
declare dso_local void @_ZN3JPH8RefConstINS_5ShapeEEC2EPKS1_(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef) unnamed_addr #8 align 2

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

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

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

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

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

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local void @_ZN3JPH8RefConstINS_5ShapeEED2Ev(ptr noundef nonnull align 8 dereferenceable(8)) unnamed_addr #9 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 = { 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 #3 = { mustprogress nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #4 = { 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 #5 = { alwaysinline mustprogress nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #6 = { mustprogress nocallback nofree nounwind willreturn memory(argmem: readwrite) }
attributes #7 = { "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #8 = { inlinehint mustprogress uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #9 = { inlinehint mustprogress nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #10 = { nounwind }

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

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


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