; LLVM IR from jrouwe/JoltPhysics :: Samples/Tests/SoftBody/SoftBodyStressTest.ll (ZN18SoftBodyStressTest10InitializeEv)

; 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::SoftBodyCreationSettings" = type <{ %"class.JPH::RefConst.6", [8 x i8], %"class.JPH::Vec3", %"class.JPH::Quat", i64, i16, [6 x i8], %"class.JPH::CollisionGroup", i32, float, float, float, float, float, float, i8, i8, i8, i8 }>
%"class.JPH::RefConst.6" = type { ptr }
%"class.JPH::Vec3" = type { %union.anon }
%union.anon = type { <4 x float> }
%"class.JPH::Quat" = type { %"class.JPH::Vec4" }
%"class.JPH::Vec4" = type { %union.anon.4 }
%union.anon.4 = type { <4 x float> }
%"class.JPH::CollisionGroup" = type { %"class.JPH::RefConst.5", i32, i32 }
%"class.JPH::RefConst.5" = type { ptr }
%"class.JPH::Ref" = type { ptr }
%"struct.JPH::SoftBodySharedSettings::VertexAttributes" = type { float, float, float, i32, 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.7", %"class.JPH::RefConst" }
%"class.JPH::MassProperties" = type { float, %"class.JPH::Mat44" }
%"class.JPH::Mat44" = type { [4 x %"class.JPH::Vec4"] }
%"class.JPH::RefConst.7" = type { ptr }
%"class.JPH::RefConst" = type { ptr }
%"class.JPH::BodyID" = type { i32 }
%class.Test = type { ptr, ptr, ptr, ptr, ptr, ptr, i8, %"class.std::unordered_map" }
%"class.std::unordered_map" = type { %"class.std::_Hashtable" }
%"class.std::_Hashtable" = type { ptr, i64, %"struct.std::__detail::_Hash_node_base", i64, %"struct.std::__detail::_Prime_rehash_policy", ptr }
%"struct.std::__detail::_Hash_node_base" = type { ptr }
%"struct.std::__detail::_Prime_rehash_policy" = type { float, i64 }

@.str.1 = external hidden unnamed_addr constant [15 x i8], align 1
@.str.2 = external hidden unnamed_addr constant [11 x i8], align 1
@_ZN18SoftBodyStressTest10sSceneNameE = external dso_local global ptr, align 8

; 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 @_ZN18SoftBodyStressTest10InitializeEv(ptr noundef nonnull align 8 dereferenceable(112) %0) unnamed_addr #1 align 2 personality ptr @__gxx_personality_v0 {
  %2 = alloca ptr, align 8
  %3 = alloca %"class.JPH::SoftBodyCreationSettings", align 16
  %4 = alloca %"class.JPH::Ref", align 8
  %5 = alloca %"struct.JPH::SoftBodySharedSettings::VertexAttributes", align 4
  %6 = alloca ptr, align 8
  %7 = alloca i32, align 4
  %8 = alloca %"class.JPH::Vec3", align 16
  %9 = alloca %"class.JPH::Quat", align 16
  %10 = alloca %"class.JPH::BodyCreationSettings", align 16
  %11 = alloca %"class.JPH::Vec3", align 16
  %12 = alloca %"class.JPH::Vec3", align 16
  %13 = alloca %"class.JPH::Quat", align 16
  %14 = alloca i32, align 4
  %15 = alloca i32, align 4
  %16 = alloca i32, align 4
  %17 = alloca %"class.JPH::Vec3", align 16
  %18 = alloca %"class.JPH::BodyID", align 4
  %19 = alloca %"class.JPH::Vec3", align 16
  %20 = alloca %"class.JPH::Vec3", align 16
  %21 = alloca %"class.JPH::BodyID", align 4
  %22 = alloca %"class.JPH::SoftBodyCreationSettings", align 16
  %23 = alloca %"class.JPH::Ref", align 8
  %24 = alloca %"class.JPH::Vec3", align 16
  %25 = alloca %"class.JPH::Quat", align 16
  %26 = alloca %"class.JPH::BodyID", align 4
  %27 = alloca %"class.JPH::BodyCreationSettings", align 16
  %28 = alloca %"class.JPH::Vec3", align 16
  %29 = alloca %"class.JPH::Vec3", align 16
  %30 = alloca %"class.JPH::Quat", align 16
  %31 = alloca i32, align 4
  %32 = alloca i32, align 4
  %33 = alloca %"class.JPH::Vec3", align 16
  %34 = alloca %"class.JPH::Vec3", align 16
  %35 = alloca %"class.JPH::BodyID", align 4
  store ptr %0, ptr %2, align 8, !tbaa !5
  %36 = load ptr, ptr %2, align 8
  %37 = load ptr, ptr @_ZN18SoftBodyStressTest10sSceneNameE, align 8, !tbaa !5
  %38 = call i32 @strcmp(ptr noundef %37, ptr noundef @.str.1) #12
  %39 = icmp eq i32 %38, 0
  br i1 %39, label %40, label %205

40:                                               ; preds = %1
  %41 = call noundef nonnull align 16 dereferenceable(122) ptr @_ZN4Test17CreateMeshTerrainEv(ptr noundef nonnull align 8 dereferenceable(112) %36)
  call void @llvm.lifetime.start.p0(i64 112, ptr %3) #13
  call void @llvm.lifetime.start.p0(i64 8, ptr %4) #13
  call void @llvm.lifetime.start.p0(i64 20, ptr %5) #13
  call void @_ZN3JPH22SoftBodySharedSettings16VertexAttributesC2EfffNS0_8ELRATypeEf(ptr noundef nonnull align 4 dereferenceable(20) %5, float noundef 0x3F1A36E2E0000000, float noundef 0x3F1A36E2E0000000, float noundef 0x3F50624DE0000000, i32 noundef 0, float noundef 1.000000e+00)
  call void @_ZN15SoftBodyCreator12CreateSphereEfjjN3JPH22SoftBodySharedSettings9EBendTypeERKNS1_16VertexAttributesE(ptr dead_on_unwind writable sret(%"class.JPH::Ref") align 8 %4, float noundef 1.000000e+00, i32 noundef 10, i32 noundef 20, i32 noundef 0, ptr noundef nonnull align 4 dereferenceable(20) %5)
  %42 = invoke noundef ptr @_ZNK3JPH3RefINS_22SoftBodySharedSettingsEEcvPS1_Ev(ptr noundef nonnull align 8 dereferenceable(8) %4)
          to label %43 unwind label %119

43:                                               ; preds = %40
  %44 = invoke { double, double } @_ZN3JPH4Vec35sZeroEv()
          to label %45 unwind label %119

45:                                               ; preds = %43
  %46 = getelementptr inbounds %"class.JPH::Vec3", ptr %8, i32 0, i32 0
  %47 = getelementptr inbounds %union.anon, ptr %46, i32 0, i32 0
  %48 = getelementptr inbounds { double, double }, ptr %47, i32 0, i32 0
  %49 = extractvalue { double, double } %44, 0
  store double %49, ptr %48, align 16
  %50 = getelementptr inbounds { double, double }, ptr %47, i32 0, i32 1
  %51 = extractvalue { double, double } %44, 1
  store double %51, ptr %50, align 8
  %52 = invoke { double, double } @_ZN3JPH4Quat9sIdentityEv()
          to label %53 unwind label %119

53:                                               ; preds = %45
  %54 = getelementptr inbounds %"class.JPH::Quat", ptr %9, i32 0, i32 0
  %55 = getelementptr inbounds %"class.JPH::Vec4", ptr %54, i32 0, i32 0
  %56 = getelementptr inbounds %union.anon.4, ptr %55, i32 0, i32 0
  %57 = getelementptr inbounds { double, double }, ptr %56, i32 0, i32 0
  %58 = extractvalue { double, double } %52, 0
  store double %58, ptr %57, align 16
  %59 = getelementptr inbounds { double, double }, ptr %56, i32 0, i32 1
  %60 = extractvalue { double, double } %52, 1
  store double %60, ptr %59, align 8
  %61 = getelementptr inbounds { double, double }, ptr %8, i32 0, i32 0
  %62 = load double, ptr %61, align 16
  %63 = getelementptr inbounds { double, double }, ptr %8, i32 0, i32 1
  %64 = load double, ptr %63, align 8
  %65 = getelementptr inbounds { double, double }, ptr %9, i32 0, i32 0
  %66 = load double, ptr %65, align 16
  %67 = getelementptr inbounds { double, double }, ptr %9, i32 0, i32 1
  %68 = load double, ptr %67, align 8
  invoke void @_ZN3JPH24SoftBodyCreationSettingsC2EPKNS_22SoftBodySharedSettingsENS_4Vec3ENS_4QuatEt(ptr noundef nonnull align 16 dereferenceable(111) %3, ptr noundef %42, double %62, double %64, double %66, double %68, i16 noundef zeroext 1)
          to label %69 unwind label %119

69:                                               ; preds = %53
  call void @_ZN3JPH3RefINS_22SoftBodySharedSettingsEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %4) #13
  call void @llvm.lifetime.end.p0(i64 20, ptr %5) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %4) #13
  %70 = getelementptr inbounds %"class.JPH::SoftBodyCreationSettings", ptr %3, i32 0, i32 13
  store float 2.000000e+03, ptr %70, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 256, ptr %10) #13
  %71 = invoke noundef ptr @_ZN3JPH8BoxShapenwEm(i64 noundef 80)
          to label %72 unwind label %123

72:                                               ; preds = %69
  %73 = invoke { double, double } @_ZN3JPH4Vec34sOneEv()
          to label %74 unwind label %127

74:                                               ; preds = %72
  %75 = getelementptr inbounds %"class.JPH::Vec3", ptr %11, i32 0, i32 0
  %76 = getelementptr inbounds %union.anon, ptr %75, i32 0, i32 0
  %77 = getelementptr inbounds { double, double }, ptr %76, i32 0, i32 0
  %78 = extractvalue { double, double } %73, 0
  store double %78, ptr %77, align 16
  %79 = getelementptr inbounds { double, double }, ptr %76, i32 0, i32 1
  %80 = extractvalue { double, double } %73, 1
  store double %80, ptr %79, align 8
  %81 = getelementptr inbounds { double, double }, ptr %11, i32 0, i32 0
  %82 = load double, ptr %81, align 16
  %83 = getelementptr inbounds { double, double }, ptr %11, i32 0, i32 1
  %84 = load double, ptr %83, align 8
  invoke void @_ZN3JPH8BoxShapeC2ENS_4Vec3EfPKNS_15PhysicsMaterialE(ptr noundef nonnull align 16 dereferenceable(80) %71, double %82, double %84, float noundef 0x3FA99999A0000000, ptr noundef null)
          to label %85 unwind label %127

85:                                               ; preds = %74
  %86 = invoke { double, double } @_ZN3JPH4Vec35sZeroEv()
          to label %87 unwind label %123

87:                                               ; preds = %85
  %88 = getelementptr inbounds %"class.JPH::Vec3", ptr %12, i32 0, i32 0
  %89 = getelementptr inbounds %union.anon, ptr %88, i32 0, i32 0
  %90 = getelementptr inbounds { double, double }, ptr %89, i32 0, i32 0
  %91 = extractvalue { double, double } %86, 0
  store double %91, ptr %90, align 16
  %92 = getelementptr inbounds { double, double }, ptr %89, i32 0, i32 1
  %93 = extractvalue { double, double } %86, 1
  store double %93, ptr %92, align 8
  %94 = invoke { double, double } @_ZN3JPH4Quat9sIdentityEv()
          to label %95 unwind label %123

95:                                               ; preds = %87
  %96 = getelementptr inbounds %"class.JPH::Quat", ptr %13, i32 0, i32 0
  %97 = getelementptr inbounds %"class.JPH::Vec4", ptr %96, i32 0, i32 0
  %98 = getelementptr inbounds %union.anon.4, ptr %97, i32 0, i32 0
  %99 = getelementptr inbounds { double, double }, ptr %98, i32 0, i32 0
  %100 = extractvalue { double, double } %94, 0
  store double %100, ptr %99, align 16
  %101 = getelementptr inbounds { double, double }, ptr %98, i32 0, i32 1
  %102 = extractvalue { double, double } %94, 1
  store double %102, ptr %101, align 8
  %103 = getelementptr inbounds { double, double }, ptr %12, i32 0, i32 0
  %104 = load double, ptr %103, align 16
  %105 = getelementptr inbounds { double, double }, ptr %12, i32 0, i32 1
  %106 = load double, ptr %105, align 8
  %107 = getelementptr inbounds { double, double }, ptr %13, i32 0, i32 0
  %108 = load double, ptr %107, align 16
  %109 = getelementptr inbounds { double, double }, ptr %13, i32 0, i32 1
  %110 = load double, ptr %109, align 8
  invoke void @_ZN3JPH20BodyCreationSettingsC2EPKNS_5ShapeENS_4Vec3ENS_4QuatENS_11EMotionTypeEt(ptr noundef nonnull align 16 dereferenceable(256) %10, ptr noundef %71, double %104, double %106, double %108, double %110, i8 noundef zeroext 2, i16 noundef zeroext 1)
          to label %111 unwind label %123

111:                                              ; preds = %95
  %112 = getelementptr inbounds %"class.JPH::BodyCreationSettings", ptr %10, i32 0, i32 26
  store i8 1, ptr %112, align 16, !tbaa !22
  %113 = getelementptr inbounds %"class.JPH::BodyCreationSettings", ptr %10, i32 0, i32 28
  %114 = getelementptr inbounds %"class.JPH::MassProperties", ptr %113, i32 0, i32 0
  store float 1.000000e+02, ptr %114, align 16, !tbaa !32
  call void @llvm.lifetime.start.p0(i64 4, ptr %14) #13
  store i32 0, ptr %14, align 4, !tbaa !33
  br label %115

115:                                              ; preds = %199, %111
  %116 = load i32, ptr %14, align 4, !tbaa !33
  %117 = icmp sle i32 %116, 10
  br i1 %117, label %131, label %118

118:                                              ; preds = %115
  store i32 2, ptr %15, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %14) #13
  br label %202

119:                                              ; preds = %53, %45, %43, %40
  %120 = landingpad { ptr, i32 }
          cleanup
  %121 = extractvalue { ptr, i32 } %120, 0
  store ptr %121, ptr %6, align 8
  %122 = extractvalue { ptr, i32 } %120, 1
  store i32 %122, ptr %7, align 4
  call void @_ZN3JPH3RefINS_22SoftBodySharedSettingsEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %4) #13
  call void @llvm.lifetime.end.p0(i64 20, ptr %5) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %4) #13
  br label %204

123:                                              ; preds = %95, %87, %85, %69
  %124 = landingpad { ptr, i32 }
          cleanup
  %125 = extractvalue { ptr, i32 } %124, 0
  store ptr %125, ptr %6, align 8
  %126 = extractvalue { ptr, i32 } %124, 1
  store i32 %126, ptr %7, align 4
  br label %203

127:                                              ; preds = %74, %72
  %128 = landingpad { ptr, i32 }
          cleanup
  %129 = extractvalue { ptr, i32 } %128, 0
  store ptr %129, ptr %6, align 8
  %130 = extractvalue { ptr, i32 } %128, 1
  store i32 %130, ptr %7, align 4
  call void @_ZN3JPH8BoxShapedlEPv(ptr noundef %71) #13
  br label %203

131:                                              ; preds = %115
  call void @llvm.lifetime.start.p0(i64 4, ptr %16) #13
  store i32 0, ptr %16, align 4, !tbaa !33
  br label %132

132:                                              ; preds = %182, %131
  %133 = load i32, ptr %16, align 4, !tbaa !33
  %134 = icmp sle i32 %133, 10
  br i1 %134, label %136, label %135

135:                                              ; preds = %132
  store i32 5, ptr %15, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %16) #13
  br label %198

136:                                              ; preds = %132
  call void @llvm.lifetime.start.p0(i64 16, ptr %17) #13
  %137 = invoke noundef float @_ZN3JPH8literalsli2_rEe(x86_fp80 noundef 0xK4003A000000000000000)
          to label %138 unwind label %185

138:                                              ; preds = %136
  %139 = fneg float %137
  %140 = invoke noundef float @_ZN3JPH8literalsli2_rEe(x86_fp80 noundef 0xK40018000000000000000)
          to label %141 unwind label %185

141:                                              ; preds = %138
  %142 = load i32, ptr %14, align 4, !tbaa !33
  %143 = sitofp i32 %142 to float
  %144 = call float @llvm.fmuladd.f32(float %140, float %143, float %139)
  %145 = invoke noundef float @_ZN3JPH8literalsli2_rEe(x86_fp80 noundef 0xK4001A000000000000000)
          to label %146 unwind label %185

146:                                              ; preds = %141
  %147 = invoke noundef float @_ZN3JPH8literalsli2_rEe(x86_fp80 noundef 0xK4003A000000000000000)
          to label %148 unwind label %185

148:                                              ; preds = %146
  %149 = fneg float %147
  %150 = invoke noundef float @_ZN3JPH8literalsli2_rEe(x86_fp80 noundef 0xK40018000000000000000)
          to label %151 unwind label %185

151:                                              ; preds = %148
  %152 = load i32, ptr %16, align 4, !tbaa !33
  %153 = sitofp i32 %152 to float
  %154 = call float @llvm.fmuladd.f32(float %150, float %153, float %149)
  invoke void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %17, float noundef %144, float noundef %145, float noundef %154)
          to label %155 unwind label %185

155:                                              ; preds = %151
  %156 = getelementptr inbounds %"class.JPH::SoftBodyCreationSettings", ptr %3, i32 0, i32 2
  call void @llvm.memcpy.p0.p0.i64(ptr align 16 %156, ptr align 16 %17, i64 16, i1 false), !tbaa.struct !34
  call void @llvm.lifetime.end.p0(i64 16, ptr %17) #13
  %157 = getelementptr inbounds %class.Test, ptr %36, i32 0, i32 3
  %158 = load ptr, ptr %157, align 8, !tbaa !36
  %159 = invoke i32 @_ZN3JPH13BodyInterface20CreateAndAddSoftBodyERKNS_24SoftBodyCreationSettingsENS_11EActivationE(ptr noundef nonnull align 8 dereferenceable(24) %158, ptr noundef nonnull align 16 dereferenceable(111) %3, i32 noundef 0)
          to label %160 unwind label %189

160:                                              ; preds = %155
  %161 = getelementptr inbounds %"class.JPH::BodyID", ptr %18, i32 0, i32 0
  store i32 %159, ptr %161, align 4
  call void @llvm.lifetime.start.p0(i64 16, ptr %19) #13
  %162 = getelementptr inbounds %"class.JPH::SoftBodyCreationSettings", ptr %3, i32 0, i32 2
  invoke void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %20, float noundef 0.000000e+00, float noundef 4.000000e+00, float noundef 0.000000e+00)
          to label %163 unwind label %193

163:                                              ; preds = %160
  %164 = getelementptr inbounds { double, double }, ptr %20, i32 0, i32 0
  %165 = load double, ptr %164, align 16
  %166 = getelementptr inbounds { double, double }, ptr %20, i32 0, i32 1
  %167 = load double, ptr %166, align 8
  %168 = invoke { double, double } @_ZNK3JPH4Vec3plES0_(ptr noundef nonnull align 16 dereferenceable(16) %162, double %165, double %167)
          to label %169 unwind label %193

169:                                              ; preds = %163
  %170 = getelementptr inbounds %"class.JPH::Vec3", ptr %19, i32 0, i32 0
  %171 = getelementptr inbounds %union.anon, ptr %170, i32 0, i32 0
  %172 = getelementptr inbounds { double, double }, ptr %171, i32 0, i32 0
  %173 = extractvalue { double, double } %168, 0
  store double %173, ptr %172, align 16
  %174 = getelementptr inbounds { double, double }, ptr %171, i32 0, i32 1
  %175 = extractvalue { double, double } %168, 1
  store double %175, ptr %174, align 8
  %176 = getelementptr inbounds %"class.JPH::BodyCreationSettings", ptr %10, i32 0, i32 0
  call void @llvm.memcpy.p0.p0.i64(ptr align 16 %176, ptr align 16 %19, i64 16, i1 false), !tbaa.struct !34
  call void @llvm.lifetime.end.p0(i64 16, ptr %19) #13
  %177 = getelementptr inbounds %class.Test, ptr %36, i32 0, i32 3
  %178 = load ptr, ptr %177, align 8, !tbaa !36
  %179 = invoke i32 @_ZN3JPH13BodyInterface16CreateAndAddBodyERKNS_20BodyCreationSettingsENS_11EActivationE(ptr noundef nonnull align 8 dereferenceable(24) %178, ptr noundef nonnull align 16 dereferenceable(256) %10, i32 noundef 0)
          to label %180 unwind label %189

180:                                              ; preds = %169
  %181 = getelementptr inbounds %"class.JPH::BodyID", ptr %21, i32 0, i32 0
  store i32 %179, ptr %181, align 4
  br label %182

182:                                              ; preds = %180
  %183 = load i32, ptr %16, align 4, !tbaa !33
  %184 = add nsw i32 %183, 1
  store i32 %184, ptr %16, align 4, !tbaa !33
  br label %132, !llvm.loop !42

185:                                              ; preds = %151, %148, %146, %141, %138, %136
  %186 = landingpad { ptr, i32 }
          cleanup
  %187 = extractvalue { ptr, i32 } %186, 0
  store ptr %187, ptr %6, align 8
  %188 = extractvalue { ptr, i32 } %186, 1
  store i32 %188, ptr %7, align 4
  call void @llvm.lifetime.end.p0(i64 16, ptr %17) #13
  br label %197

189:                                              ; preds = %169, %155
  %190 = landingpad { ptr, i32 }
          cleanup
  %191 = extractvalue { ptr, i32 } %190, 0
  store ptr %191, ptr %6, align 8
  %192 = extractvalue { ptr, i32 } %190, 1
  store i32 %192, ptr %7, align 4
  br label %197

193:                                              ; preds = %163, %160
  %194 = landingpad { ptr, i32 }
          cleanup
  %195 = extractvalue { ptr, i32 } %194, 0
  store ptr %195, ptr %6, align 8
  %196 = extractvalue { ptr, i32 } %194, 1
  store i32 %196, ptr %7, align 4
  call void @llvm.lifetime.end.p0(i64 16, ptr %19) #13
  br label %197

197:                                              ; preds = %193, %189, %185
  call void @llvm.lifetime.end.p0(i64 4, ptr %16) #13
  call void @llvm.lifetime.end.p0(i64 4, ptr %14) #13
  call void @_ZN3JPH20BodyCreationSettingsD2Ev(ptr noundef nonnull align 16 dereferenceable(256) %10) #13
  br label %203

198:                                              ; preds = %135
  br label %199

199:                                              ; preds = %198
  %200 = load i32, ptr %14, align 4, !tbaa !33
  %201 = add nsw i32 %200, 1
  store i32 %201, ptr %14, align 4, !tbaa !33
  br label %115, !llvm.loop !44

202:                                              ; preds = %118
  call void @_ZN3JPH20BodyCreationSettingsD2Ev(ptr noundef nonnull align 16 dereferenceable(256) %10) #13
  call void @llvm.lifetime.end.p0(i64 256, ptr %10) #13
  call void @_ZN3JPH24SoftBodyCreationSettingsD2Ev(ptr noundef nonnull align 16 dereferenceable(111) %3) #13
  call void @llvm.lifetime.end.p0(i64 112, ptr %3) #13
  br label %367

203:                                              ; preds = %197, %127, %123
  call void @llvm.lifetime.end.p0(i64 256, ptr %10) #13
  call void @_ZN3JPH24SoftBodyCreationSettingsD2Ev(ptr noundef nonnull align 16 dereferenceable(111) %3) #13
  br label %204

204:                                              ; preds = %203, %119
  call void @llvm.lifetime.end.p0(i64 112, ptr %3) #13
  br label %368

205:                                              ; preds = %1
  %206 = load ptr, ptr @_ZN18SoftBodyStressTest10sSceneNameE, align 8, !tbaa !5
  %207 = call i32 @strcmp(ptr noundef %206, ptr noundef @.str.2) #12
  %208 = icmp eq i32 %207, 0
  br i1 %208, label %209, label %366

209:                                              ; preds = %205
  %210 = call noundef nonnull align 16 dereferenceable(122) ptr @_ZN4Test11CreateFloorEf(ptr noundef nonnull align 8 dereferenceable(112) %36, float noundef 2.000000e+02)
  call void @llvm.lifetime.start.p0(i64 112, ptr %22) #13
  call void @llvm.lifetime.start.p0(i64 8, ptr %23) #13
  call void @_ZN15SoftBodyCreator29CreateClothWithFixatedCornersEjjf(ptr dead_on_unwind writable sret(%"class.JPH::Ref") align 8 %23, i32 noundef 100, i32 noundef 100, float noundef 2.500000e-01)
  %211 = invoke noundef ptr @_ZNK3JPH3RefINS_22SoftBodySharedSettingsEEcvPS1_Ev(ptr noundef nonnull align 8 dereferenceable(8) %23)
          to label %212 unwind label %286

212:                                              ; preds = %209
  invoke void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %24, float noundef 0.000000e+00, float noundef 1.500000e+01, float noundef 0.000000e+00)
          to label %213 unwind label %286

213:                                              ; preds = %212
  %214 = invoke { double, double } @_ZN3JPH4Quat9sIdentityEv()
          to label %215 unwind label %286

215:                                              ; preds = %213
  %216 = getelementptr inbounds %"class.JPH::Quat", ptr %25, i32 0, i32 0
  %217 = getelementptr inbounds %"class.JPH::Vec4", ptr %216, i32 0, i32 0
  %218 = getelementptr inbounds %union.anon.4, ptr %217, i32 0, i32 0
  %219 = getelementptr inbounds { double, double }, ptr %218, i32 0, i32 0
  %220 = extractvalue { double, double } %214, 0
  store double %220, ptr %219, align 16
  %221 = getelementptr inbounds { double, double }, ptr %218, i32 0, i32 1
  %222 = extractvalue { double, double } %214, 1
  store double %222, ptr %221, align 8
  %223 = getelementptr inbounds { double, double }, ptr %24, i32 0, i32 0
  %224 = load double, ptr %223, align 16
  %225 = getelementptr inbounds { double, double }, ptr %24, i32 0, i32 1
  %226 = load double, ptr %225, align 8
  %227 = getelementptr inbounds { double, double }, ptr %25, i32 0, i32 0
  %228 = load double, ptr %227, align 16
  %229 = getelementptr inbounds { double, double }, ptr %25, i32 0, i32 1
  %230 = load double, ptr %229, align 8
  invoke void @_ZN3JPH24SoftBodyCreationSettingsC2EPKNS_22SoftBodySharedSettingsENS_4Vec3ENS_4QuatEt(ptr noundef nonnull align 16 dereferenceable(111) %22, ptr noundef %211, double %224, double %226, double %228, double %230, i16 noundef zeroext 1)
          to label %231 unwind label %286

231:                                              ; preds = %215
  call void @_ZN3JPH3RefINS_22SoftBodySharedSettingsEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %23) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %23) #13
  %232 = getelementptr inbounds %"class.JPH::SoftBodyCreationSettings", ptr %22, i32 0, i32 15
  store i8 0, ptr %232, align 4, !tbaa !45
  %233 = getelementptr inbounds %class.Test, ptr %36, i32 0, i32 3
  %234 = load ptr, ptr %233, align 8, !tbaa !36
  %235 = invoke i32 @_ZN3JPH13BodyInterface20CreateAndAddSoftBodyERKNS_24SoftBodyCreationSettingsENS_11EActivationE(ptr noundef nonnull align 8 dereferenceable(24) %234, ptr noundef nonnull align 16 dereferenceable(111) %22, i32 noundef 0)
          to label %236 unwind label %290

236:                                              ; preds = %231
  %237 = getelementptr inbounds %"class.JPH::BodyID", ptr %26, i32 0, i32 0
  store i32 %235, ptr %237, align 4
  call void @llvm.lifetime.start.p0(i64 256, ptr %27) #13
  %238 = invoke noundef ptr @_ZN3JPH8BoxShapenwEm(i64 noundef 80)
          to label %239 unwind label %294

239:                                              ; preds = %236
  %240 = invoke { double, double } @_ZN3JPH4Vec310sReplicateEf(float noundef 5.000000e-01)
          to label %241 unwind label %298

241:                                              ; preds = %239
  %242 = getelementptr inbounds %"class.JPH::Vec3", ptr %28, i32 0, i32 0
  %243 = getelementptr inbounds %union.anon, ptr %242, i32 0, i32 0
  %244 = getelementptr inbounds { double, double }, ptr %243, i32 0, i32 0
  %245 = extractvalue { double, double } %240, 0
  store double %245, ptr %244, align 16
  %246 = getelementptr inbounds { double, double }, ptr %243, i32 0, i32 1
  %247 = extractvalue { double, double } %240, 1
  store double %247, ptr %246, align 8
  %248 = getelementptr inbounds { double, double }, ptr %28, i32 0, i32 0
  %249 = load double, ptr %248, align 16
  %250 = getelementptr inbounds { double, double }, ptr %28, i32 0, i32 1
  %251 = load double, ptr %250, align 8
  invoke void @_ZN3JPH8BoxShapeC2ENS_4Vec3EfPKNS_15PhysicsMaterialE(ptr noundef nonnull align 16 dereferenceable(80) %238, double %249, double %251, float noundef 0x3FA99999A0000000, ptr noundef null)
          to label %252 unwind label %298

252:                                              ; preds = %241
  %253 = invoke { double, double } @_ZN3JPH4Vec35sZeroEv()
          to label %254 unwind label %294

254:                                              ; preds = %252
  %255 = getelementptr inbounds %"class.JPH::Vec3", ptr %29, i32 0, i32 0
  %256 = getelementptr inbounds %union.anon, ptr %255, i32 0, i32 0
  %257 = getelementptr inbounds { double, double }, ptr %256, i32 0, i32 0
  %258 = extractvalue { double, double } %253, 0
  store double %258, ptr %257, align 16
  %259 = getelementptr inbounds { double, double }, ptr %256, i32 0, i32 1
  %260 = extractvalue { double, double } %253, 1
  store double %260, ptr %259, align 8
  %261 = invoke { double, double } @_ZN3JPH4Quat9sIdentityEv()
          to label %262 unwind label %294

262:                                              ; preds = %254
  %263 = getelementptr inbounds %"class.JPH::Quat", ptr %30, i32 0, i32 0
  %264 = getelementptr inbounds %"class.JPH::Vec4", ptr %263, i32 0, i32 0
  %265 = getelementptr inbounds %union.anon.4, ptr %264, i32 0, i32 0
  %266 = getelementptr inbounds { double, double }, ptr %265, i32 0, i32 0
  %267 = extractvalue { double, double } %261, 0
  store double %267, ptr %266, align 16
  %268 = getelementptr inbounds { double, double }, ptr %265, i32 0, i32 1
  %269 = extractvalue { double, double } %261, 1
  store double %269, ptr %268, align 8
  %270 = getelementptr inbounds { double, double }, ptr %29, i32 0, i32 0
  %271 = load double, ptr %270, align 16
  %272 = getelementptr inbounds { double, double }, ptr %29, i32 0, i32 1
  %273 = load double, ptr %272, align 8
  %274 = getelementptr inbounds { double, double }, ptr %30, i32 0, i32 0
  %275 = load double, ptr %274, align 16
  %276 = getelementptr inbounds { double, double }, ptr %30, i32 0, i32 1
  %277 = load double, ptr %276, align 8
  invoke void @_ZN3JPH20BodyCreationSettingsC2EPKNS_5ShapeENS_4Vec3ENS_4QuatENS_11EMotionTypeEt(ptr noundef nonnull align 16 dereferenceable(256) %27, ptr noundef %238, double %271, double %273, double %275, double %277, i8 noundef zeroext 2, i16 noundef zeroext 1)
          to label %278 unwind label %294

278:                                              ; preds = %262
  %279 = getelementptr inbounds %"class.JPH::BodyCreationSettings", ptr %27, i32 0, i32 26
  store i8 1, ptr %279, align 16, !tbaa !22
  %280 = getelementptr inbounds %"class.JPH::BodyCreationSettings", ptr %27, i32 0, i32 28
  %281 = getelementptr inbounds %"class.JPH::MassProperties", ptr %280, i32 0, i32 0
  store float 1.000000e+01, ptr %281, align 16, !tbaa !32
  call void @llvm.lifetime.start.p0(i64 4, ptr %31) #13
  store i32 0, ptr %31, align 4, !tbaa !33
  br label %282

282:                                              ; preds = %359, %278
  %283 = load i32, ptr %31, align 4, !tbaa !33
  %284 = icmp sle i32 %283, 10
  br i1 %284, label %302, label %285

285:                                              ; preds = %282
  store i32 8, ptr %15, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %31) #13
  br label %362

286:                                              ; preds = %215, %213, %212, %209
  %287 = landingpad { ptr, i32 }
          cleanup
  %288 = extractvalue { ptr, i32 } %287, 0
  store ptr %288, ptr %6, align 8
  %289 = extractvalue { ptr, i32 } %287, 1
  store i32 %289, ptr %7, align 4
  call void @_ZN3JPH3RefINS_22SoftBodySharedSettingsEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %23) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %23) #13
  br label %365

290:                                              ; preds = %231
  %291 = landingpad { ptr, i32 }
          cleanup
  %292 = extractvalue { ptr, i32 } %291, 0
  store ptr %292, ptr %6, align 8
  %293 = extractvalue { ptr, i32 } %291, 1
  store i32 %293, ptr %7, align 4
  br label %364

294:                                              ; preds = %262, %254, %252, %236
  %295 = landingpad { ptr, i32 }
          cleanup
  %296 = extractvalue { ptr, i32 } %295, 0
  store ptr %296, ptr %6, align 8
  %297 = extractvalue { ptr, i32 } %295, 1
  store i32 %297, ptr %7, align 4
  br label %363

298:                                              ; preds = %241, %239
  %299 = landingpad { ptr, i32 }
          cleanup
  %300 = extractvalue { ptr, i32 } %299, 0
  store ptr %300, ptr %6, align 8
  %301 = extractvalue { ptr, i32 } %299, 1
  store i32 %301, ptr %7, align 4
  call void @_ZN3JPH8BoxShapedlEPv(ptr noundef %238) #13
  br label %363

302:                                              ; preds = %282
  call void @llvm.lifetime.start.p0(i64 4, ptr %32) #13
  store i32 0, ptr %32, align 4, !tbaa !33
  br label %303

303:                                              ; preds = %346, %302
  %304 = load i32, ptr %32, align 4, !tbaa !33
  %305 = icmp sle i32 %304, 10
  br i1 %305, label %307, label %306

306:                                              ; preds = %303
  store i32 11, ptr %15, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %32) #13
  br label %358

307:                                              ; preds = %303
  call void @llvm.lifetime.start.p0(i64 16, ptr %33) #13
  %308 = getelementptr inbounds %"class.JPH::SoftBodyCreationSettings", ptr %22, i32 0, i32 2
  %309 = invoke noundef float @_ZN3JPH8literalsli2_rEe(x86_fp80 noundef 0xK4002A000000000000000)
          to label %310 unwind label %349

310:                                              ; preds = %307
  %311 = fneg float %309
  %312 = invoke noundef float @_ZN3JPH8literalsli2_rEe(x86_fp80 noundef 0xK40008000000000000000)
          to label %313 unwind label %349

313:                                              ; preds = %310
  %314 = load i32, ptr %31, align 4, !tbaa !33
  %315 = sitofp i32 %314 to float
  %316 = call float @llvm.fmuladd.f32(float %312, float %315, float %311)
  %317 = invoke noundef float @_ZN3JPH8literalsli2_rEe(x86_fp80 noundef 0xK40008000000000000000)
          to label %318 unwind label %349

318:                                              ; preds = %313
  %319 = invoke noundef float @_ZN3JPH8literalsli2_rEe(x86_fp80 noundef 0xK4002A000000000000000)
          to label %320 unwind label %349

320:                                              ; preds = %318
  %321 = fneg float %319
  %322 = invoke noundef float @_ZN3JPH8literalsli2_rEe(x86_fp80 noundef 0xK40008000000000000000)
          to label %323 unwind label %349

323:                                              ; preds = %320
  %324 = load i32, ptr %32, align 4, !tbaa !33
  %325 = sitofp i32 %324 to float
  %326 = call float @llvm.fmuladd.f32(float %322, float %325, float %321)
  invoke void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %34, float noundef %316, float noundef %317, float noundef %326)
          to label %327 unwind label %349

327:                                              ; preds = %323
  %328 = getelementptr inbounds { double, double }, ptr %34, i32 0, i32 0
  %329 = load double, ptr %328, align 16
  %330 = getelementptr inbounds { double, double }, ptr %34, i32 0, i32 1
  %331 = load double, ptr %330, align 8
  %332 = invoke { double, double } @_ZNK3JPH4Vec3plES0_(ptr noundef nonnull align 16 dereferenceable(16) %308, double %329, double %331)
          to label %333 unwind label %349

333:                                              ; preds = %327
  %334 = getelementptr inbounds %"class.JPH::Vec3", ptr %33, i32 0, i32 0
  %335 = getelementptr inbounds %union.anon, ptr %334, i32 0, i32 0
  %336 = getelementptr inbounds { double, double }, ptr %335, i32 0, i32 0
  %337 = extractvalue { double, double } %332, 0
  store double %337, ptr %336, align 16
  %338 = getelementptr inbounds { double, double }, ptr %335, i32 0, i32 1
  %339 = extractvalue { double, double } %332, 1
  store double %339, ptr %338, align 8
  %340 = getelementptr inbounds %"class.JPH::BodyCreationSettings", ptr %27, i32 0, i32 0
  call void @llvm.memcpy.p0.p0.i64(ptr align 16 %340, ptr align 16 %33, i64 16, i1 false), !tbaa.struct !34
  call void @llvm.lifetime.end.p0(i64 16, ptr %33) #13
  %341 = getelementptr inbounds %class.Test, ptr %36, i32 0, i32 3
  %342 = load ptr, ptr %341, align 8, !tbaa !36
  %343 = invoke i32 @_ZN3JPH13BodyInterface16CreateAndAddBodyERKNS_20BodyCreationSettingsENS_11EActivationE(ptr noundef nonnull align 8 dereferenceable(24) %342, ptr noundef nonnull align 16 dereferenceable(256) %27, i32 noundef 0)
          to label %344 unwind label %353

344:                                              ; preds = %333
  %345 = getelementptr inbounds %"class.JPH::BodyID", ptr %35, i32 0, i32 0
  store i32 %343, ptr %345, align 4
  br label %346

346:                                              ; preds = %344
  %347 = load i32, ptr %32, align 4, !tbaa !33
  %348 = add nsw i32 %347, 1
  store i32 %348, ptr %32, align 4, !tbaa !33
  br label %303, !llvm.loop !46

349:                                              ; preds = %327, %323, %320, %318, %313, %310, %307
  %350 = landingpad { ptr, i32 }
          cleanup
  %351 = extractvalue { ptr, i32 } %350, 0
  store ptr %351, ptr %6, align 8
  %352 = extractvalue { ptr, i32 } %350, 1
  store i32 %352, ptr %7, align 4
  call void @llvm.lifetime.end.p0(i64 16, ptr %33) #13
  br label %357

353:                                              ; preds = %333
  %354 = landingpad { ptr, i32 }
          cleanup
  %355 = extractvalue { ptr, i32 } %354, 0
  store ptr %355, ptr %6, align 8
  %356 = extractvalue { ptr, i32 } %354, 1
  store i32 %356, ptr %7, align 4
  br label %357

357:                                              ; preds = %353, %349
  call void @llvm.lifetime.end.p0(i64 4, ptr %32) #13
  call void @llvm.lifetime.end.p0(i64 4, ptr %31) #13
  call void @_ZN3JPH20BodyCreationSettingsD2Ev(ptr noundef nonnull align 16 dereferenceable(256) %27) #13
  br label %363

358:                                              ; preds = %306
  br label %359

359:                                              ; preds = %358
  %360 = load i32, ptr %31, align 4, !tbaa !33
  %361 = add nsw i32 %360, 1
  store i32 %361, ptr %31, align 4, !tbaa !33
  br label %282, !llvm.loop !47

362:                                              ; preds = %285
  call void @_ZN3JPH20BodyCreationSettingsD2Ev(ptr noundef nonnull align 16 dereferenceable(256) %27) #13
  call void @llvm.lifetime.end.p0(i64 256, ptr %27) #13
  call void @_ZN3JPH24SoftBodyCreationSettingsD2Ev(ptr noundef nonnull align 16 dereferenceable(111) %22) #13
  call void @llvm.lifetime.end.p0(i64 112, ptr %22) #13
  br label %366

363:                                              ; preds = %357, %298, %294
  call void @llvm.lifetime.end.p0(i64 256, ptr %27) #13
  br label %364

364:                                              ; preds = %363, %290
  call void @_ZN3JPH24SoftBodyCreationSettingsD2Ev(ptr noundef nonnull align 16 dereferenceable(111) %22) #13
  br label %365

365:                                              ; preds = %364, %286
  call void @llvm.lifetime.end.p0(i64 112, ptr %22) #13
  br label %368

366:                                              ; preds = %362, %205
  br label %367

367:                                              ; preds = %366, %202
  ret void

368:                                              ; preds = %365, %204
  %369 = load ptr, ptr %6, align 8
  %370 = load i32, ptr %7, align 4
  %371 = insertvalue { ptr, i32 } poison, ptr %369, 0
  %372 = insertvalue { ptr, i32 } %371, i32 %370, 1
  resume { ptr, i32 } %372
}

; Function Attrs: nounwind willreturn memory(read)
declare i32 @strcmp(ptr noundef, ptr noundef) #2

declare noundef nonnull align 16 dereferenceable(122) ptr @_ZN4Test17CreateMeshTerrainEv(ptr noundef nonnull align 8 dereferenceable(112)) #3

declare void @_ZN15SoftBodyCreator12CreateSphereEfjjN3JPH22SoftBodySharedSettings9EBendTypeERKNS1_16VertexAttributesE(ptr dead_on_unwind writable sret(%"class.JPH::Ref") align 8, float noundef, i32 noundef, i32 noundef, i32 noundef, ptr noundef nonnull align 4 dereferenceable(20)) #3

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

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

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

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

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

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

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

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

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

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

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

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

; Function Attrs: 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) #11

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

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

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

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local void @_ZN3JPH24SoftBodyCreationSettingsD2Ev(ptr noundef nonnull align 16 dereferenceable(111)) unnamed_addr #5 align 2

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

declare void @_ZN15SoftBodyCreator29CreateClothWithFixatedCornersEjjf(ptr dead_on_unwind writable sret(%"class.JPH::Ref") align 8, i32 noundef, i32 noundef, float noundef) #3

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

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


; 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::SoftBodyCreationSettings" = type <{ %"class.JPH::RefConst.6", [8 x i8], %"class.JPH::Vec3", %"class.JPH::Quat", i64, i16, [6 x i8], %"class.JPH::CollisionGroup", i32, float, float, float, float, float, float, i8, i8, i8, i8 }>
%"class.JPH::RefConst.6" = type { ptr }
%"class.JPH::Vec3" = type { %union.anon }
%union.anon = type { <4 x float> }
%"class.JPH::Quat" = type { %"class.JPH::Vec4" }
%"class.JPH::Vec4" = type { %union.anon.4 }
%union.anon.4 = type { <4 x float> }
%"class.JPH::CollisionGroup" = type { %"class.JPH::RefConst.5", i32, i32 }
%"class.JPH::RefConst.5" = type { ptr }
%"class.JPH::Ref" = type { ptr }
%"struct.JPH::SoftBodySharedSettings::VertexAttributes" = type { float, float, float, i32, 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.7", %"class.JPH::RefConst" }
%"class.JPH::MassProperties" = type { float, %"class.JPH::Mat44" }
%"class.JPH::Mat44" = type { [4 x %"class.JPH::Vec4"] }
%"class.JPH::RefConst.7" = type { ptr }
%"class.JPH::RefConst" = type { ptr }

@.str.1 = external hidden unnamed_addr constant [15 x i8], align 1
@.str.2 = external hidden unnamed_addr constant [11 x i8], align 1
@_ZN18SoftBodyStressTest10sSceneNameE = external dso_local local_unnamed_addr global ptr, align 8

; 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 @_ZN18SoftBodyStressTest10InitializeEv(ptr noundef nonnull align 8 dereferenceable(112) %0) unnamed_addr #1 align 2 personality ptr @__gxx_personality_v0 {
  %2 = alloca %"class.JPH::SoftBodyCreationSettings", align 16
  %3 = alloca %"class.JPH::Ref", align 8
  %4 = alloca %"struct.JPH::SoftBodySharedSettings::VertexAttributes", align 4
  %5 = alloca %"class.JPH::BodyCreationSettings", align 16
  %6 = alloca %"class.JPH::Vec3", align 16
  %7 = alloca %"class.JPH::Vec3", align 16
  %8 = alloca %"class.JPH::SoftBodyCreationSettings", align 16
  %9 = alloca %"class.JPH::Ref", align 8
  %10 = alloca %"class.JPH::Vec3", align 16
  %11 = alloca %"class.JPH::BodyCreationSettings", align 16
  %12 = alloca %"class.JPH::Vec3", align 16
  %13 = load ptr, ptr @_ZN18SoftBodyStressTest10sSceneNameE, align 8, !tbaa !5
  %14 = tail call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %13, ptr noundef nonnull dereferenceable(1) @.str.1) #12
  %15 = icmp eq i32 %14, 0
  br i1 %15, label %16, label %91

16:                                               ; preds = %1
  %17 = tail call noundef nonnull align 16 dereferenceable(122) ptr @_ZN4Test17CreateMeshTerrainEv(ptr noundef nonnull align 8 dereferenceable(112) %0)
  call void @llvm.lifetime.start.p0(i64 112, ptr nonnull %2) #13
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %3) #13
  call void @llvm.lifetime.start.p0(i64 20, ptr nonnull %4) #13
  call void @_ZN3JPH22SoftBodySharedSettings16VertexAttributesC2EfffNS0_8ELRATypeEf(ptr noundef nonnull align 4 dereferenceable(20) %4, float noundef 0x3F1A36E2E0000000, float noundef 0x3F1A36E2E0000000, float noundef 0x3F50624DE0000000, i32 noundef 0, float noundef 1.000000e+00)
  call void @_ZN15SoftBodyCreator12CreateSphereEfjjN3JPH22SoftBodySharedSettings9EBendTypeERKNS1_16VertexAttributesE(ptr dead_on_unwind nonnull writable sret(%"class.JPH::Ref") align 8 %3, float noundef 1.000000e+00, i32 noundef 10, i32 noundef 20, i32 noundef 0, ptr noundef nonnull align 4 dereferenceable(20) %4)
  %18 = call noundef ptr @_ZNK3JPH3RefINS_22SoftBodySharedSettingsEEcvPS1_Ev(ptr noundef nonnull align 8 dereferenceable(8) %3)
  %19 = invoke { double, double } @_ZN3JPH4Vec35sZeroEv()
          to label %20 unwind label %52

20:                                               ; preds = %16
  %21 = invoke { double, double } @_ZN3JPH4Quat9sIdentityEv()
          to label %22 unwind label %52

22:                                               ; preds = %20
  %23 = extractvalue { double, double } %19, 1
  %24 = extractvalue { double, double } %19, 0
  %25 = extractvalue { double, double } %21, 0
  %26 = extractvalue { double, double } %21, 1
  invoke void @_ZN3JPH24SoftBodyCreationSettingsC2EPKNS_22SoftBodySharedSettingsENS_4Vec3ENS_4QuatEt(ptr noundef nonnull align 16 dereferenceable(111) %2, ptr noundef %18, double %24, double %23, double %25, double %26, i16 noundef zeroext 1)
          to label %27 unwind label %52

27:                                               ; preds = %22
  call void @_ZN3JPH3RefINS_22SoftBodySharedSettingsEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %3) #13
  call void @llvm.lifetime.end.p0(i64 20, ptr nonnull %4) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %3) #13
  %28 = getelementptr inbounds i8, ptr %2, i64 100
  store float 2.000000e+03, ptr %28, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 256, ptr nonnull %5) #13
  %29 = invoke noundef ptr @_ZN3JPH8BoxShapenwEm(i64 noundef 80)
          to label %30 unwind label %54

30:                                               ; preds = %27
  %31 = invoke { double, double } @_ZN3JPH4Vec34sOneEv()
          to label %32 unwind label %56

32:                                               ; preds = %30
  %33 = extractvalue { double, double } %31, 0
  %34 = extractvalue { double, double } %31, 1
  invoke void @_ZN3JPH8BoxShapeC2ENS_4Vec3EfPKNS_15PhysicsMaterialE(ptr noundef nonnull align 16 dereferenceable(80) %29, double %33, double %34, float noundef 0x3FA99999A0000000, ptr noundef null)
          to label %35 unwind label %56

35:                                               ; preds = %32
  %36 = invoke { double, double } @_ZN3JPH4Vec35sZeroEv()
          to label %37 unwind label %54

37:                                               ; preds = %35
  %38 = invoke { double, double } @_ZN3JPH4Quat9sIdentityEv()
          to label %39 unwind label %54

39:                                               ; preds = %37
  %40 = extractvalue { double, double } %36, 1
  %41 = extractvalue { double, double } %36, 0
  %42 = extractvalue { double, double } %38, 0
  %43 = extractvalue { double, double } %38, 1
  invoke void @_ZN3JPH20BodyCreationSettingsC2EPKNS_5ShapeENS_4Vec3ENS_4QuatENS_11EMotionTypeEt(ptr noundef nonnull align 16 dereferenceable(256) %5, ptr noundef nonnull %29, double %41, double %40, double %42, double %43, i8 noundef zeroext 2, i16 noundef zeroext 1)
          to label %44 unwind label %54

44:                                               ; preds = %39
  %45 = getelementptr inbounds i8, ptr %5, i64 144
  store i8 1, ptr %45, align 16, !tbaa !22
  %46 = getelementptr inbounds i8, ptr %5, i64 160
  store float 1.000000e+02, ptr %46, align 16, !tbaa !32
  %47 = getelementptr inbounds i8, ptr %2, i64 16
  %48 = getelementptr inbounds i8, ptr %0, i64 24
  %49 = getelementptr inbounds i8, ptr %7, i64 8
  %.sroa.517.0..sroa_idx = getelementptr inbounds i8, ptr %5, i64 8
  br label %.preheader

.preheader:                                       ; preds = %44, %58
  %.04562 = phi i32 [ 0, %44 ], [ %59, %58 ]
  %50 = uitofp nneg i32 %.04562 to float
  br label %60

51:                                               ; preds = %58
  call void @_ZN3JPH20BodyCreationSettingsD2Ev(ptr noundef nonnull align 16 dereferenceable(256) %5) #13
  call void @llvm.lifetime.end.p0(i64 256, ptr nonnull %5) #13
  call void @_ZN3JPH24SoftBodyCreationSettingsD2Ev(ptr noundef nonnull align 16 dereferenceable(111) %2) #13
  call void @llvm.lifetime.end.p0(i64 112, ptr nonnull %2) #13
  br label %171

52:                                               ; preds = %22, %20, %16
  %53 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3JPH3RefINS_22SoftBodySharedSettingsEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %3) #13
  call void @llvm.lifetime.end.p0(i64 20, ptr nonnull %4) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %3) #13
  br label %90

54:                                               ; preds = %39, %37, %35, %27
  %55 = landingpad { ptr, i32 }
          cleanup
  br label %89

56:                                               ; preds = %32, %30
  %57 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3JPH8BoxShapedlEPv(ptr noundef %29) #13
  br label %89

58:                                               ; preds = %82
  %59 = add nuw nsw i32 %.04562, 1
  %exitcond65.not = icmp eq i32 %59, 11
  br i1 %exitcond65.not, label %51, label %.preheader, !llvm.loop !33

60:                                               ; preds = %.preheader, %82
  %.04861 = phi i32 [ 0, %.preheader ], [ %83, %82 ]
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %6) #13
  %61 = call noundef float @_ZN3JPH8literalsli2_rEe(x86_fp80 noundef 0xK4003A000000000000000)
  %62 = fneg float %61
  %63 = call noundef float @_ZN3JPH8literalsli2_rEe(x86_fp80 noundef 0xK40018000000000000000)
  %64 = call float @llvm.fmuladd.f32(float %63, float %50, float %62)
  %65 = call noundef float @_ZN3JPH8literalsli2_rEe(x86_fp80 noundef 0xK4001A000000000000000)
  %66 = call noundef float @_ZN3JPH8literalsli2_rEe(x86_fp80 noundef 0xK4003A000000000000000)
  %67 = fneg float %66
  %68 = call noundef float @_ZN3JPH8literalsli2_rEe(x86_fp80 noundef 0xK40018000000000000000)
  %69 = uitofp nneg i32 %.04861 to float
  %70 = call float @llvm.fmuladd.f32(float %68, float %69, float %67)
  call void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %6, float noundef %64, float noundef %65, float noundef %70)
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 16 dereferenceable(16) %47, ptr noundef nonnull align 16 dereferenceable(16) %6, i64 16, i1 false), !tbaa.struct !35
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %6) #13
  %71 = load ptr, ptr %48, align 8, !tbaa !37
  %72 = invoke i32 @_ZN3JPH13BodyInterface20CreateAndAddSoftBodyERKNS_24SoftBodyCreationSettingsENS_11EActivationE(ptr noundef nonnull align 8 dereferenceable(24) %71, ptr noundef nonnull align 16 dereferenceable(111) %2, i32 noundef 0)
          to label %73 unwind label %84

73:                                               ; preds = %60
  call void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %7, float noundef 0.000000e+00, float noundef 4.000000e+00, float noundef 0.000000e+00)
  %74 = load double, ptr %7, align 16
  %75 = load double, ptr %49, align 8
  %76 = invoke { double, double } @_ZNK3JPH4Vec3plES0_(ptr noundef nonnull align 16 dereferenceable(16) %47, double %74, double %75)
          to label %77 unwind label %86

77:                                               ; preds = %73
  %78 = extractvalue { double, double } %76, 0
  %79 = extractvalue { double, double } %76, 1
  store double %78, ptr %5, align 16
  store double %79, ptr %.sroa.517.0..sroa_idx, align 8, !tbaa !36
  %80 = load ptr, ptr %48, align 8, !tbaa !37
  %81 = invoke i32 @_ZN3JPH13BodyInterface16CreateAndAddBodyERKNS_20BodyCreationSettingsENS_11EActivationE(ptr noundef nonnull align 8 dereferenceable(24) %80, ptr noundef nonnull align 16 dereferenceable(256) %5, i32 noundef 0)
          to label %82 unwind label %84

82:                                               ; preds = %77
  %83 = add nuw nsw i32 %.04861, 1
  %exitcond64.not = icmp eq i32 %83, 11
  br i1 %exitcond64.not, label %58, label %60, !llvm.loop !43

84:                                               ; preds = %77, %60
  %85 = landingpad { ptr, i32 }
          cleanup
  br label %88

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

88:                                               ; preds = %86, %84
  %.pn53 = phi { ptr, i32 } [ %85, %84 ], [ %87, %86 ]
  call void @_ZN3JPH20BodyCreationSettingsD2Ev(ptr noundef nonnull align 16 dereferenceable(256) %5) #13
  br label %89

89:                                               ; preds = %88, %56, %54
  %.pn53.pn = phi { ptr, i32 } [ %.pn53, %88 ], [ %55, %54 ], [ %57, %56 ]
  call void @llvm.lifetime.end.p0(i64 256, ptr nonnull %5) #13
  call void @_ZN3JPH24SoftBodyCreationSettingsD2Ev(ptr noundef nonnull align 16 dereferenceable(111) %2) #13
  br label %90

90:                                               ; preds = %89, %52
  %.pn53.pn.pn = phi { ptr, i32 } [ %.pn53.pn, %89 ], [ %53, %52 ]
  call void @llvm.lifetime.end.p0(i64 112, ptr nonnull %2) #13
  br label %172

91:                                               ; preds = %1
  %92 = tail call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %13, ptr noundef nonnull dereferenceable(1) @.str.2) #12
  %93 = icmp eq i32 %92, 0
  br i1 %93, label %94, label %171

94:                                               ; preds = %91
  %95 = tail call noundef nonnull align 16 dereferenceable(122) ptr @_ZN4Test11CreateFloorEf(ptr noundef nonnull align 8 dereferenceable(112) %0, float noundef 2.000000e+02)
  call void @llvm.lifetime.start.p0(i64 112, ptr nonnull %8) #13
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %9) #13
  call void @_ZN15SoftBodyCreator29CreateClothWithFixatedCornersEjjf(ptr dead_on_unwind nonnull writable sret(%"class.JPH::Ref") align 8 %9, i32 noundef 100, i32 noundef 100, float noundef 2.500000e-01)
  %96 = call noundef ptr @_ZNK3JPH3RefINS_22SoftBodySharedSettingsEEcvPS1_Ev(ptr noundef nonnull align 8 dereferenceable(8) %9)
  call void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %10, float noundef 0.000000e+00, float noundef 1.500000e+01, float noundef 0.000000e+00)
  %97 = invoke { double, double } @_ZN3JPH4Quat9sIdentityEv()
          to label %98 unwind label %132

98:                                               ; preds = %94
  %99 = extractvalue { double, double } %97, 0
  %100 = extractvalue { double, double } %97, 1
  %101 = load double, ptr %10, align 16
  %102 = getelementptr inbounds i8, ptr %10, i64 8
  %103 = load double, ptr %102, align 8
  invoke void @_ZN3JPH24SoftBodyCreationSettingsC2EPKNS_22SoftBodySharedSettingsENS_4Vec3ENS_4QuatEt(ptr noundef nonnull align 16 dereferenceable(111) %8, ptr noundef %96, double %101, double %103, double %99, double %100, i16 noundef zeroext 1)
          to label %104 unwind label %132

104:                                              ; preds = %98
  call void @_ZN3JPH3RefINS_22SoftBodySharedSettingsEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %9) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %9) #13
  %105 = getelementptr inbounds i8, ptr %8, i64 108
  store i8 0, ptr %105, align 4, !tbaa !44
  %106 = getelementptr inbounds i8, ptr %0, i64 24
  %107 = load ptr, ptr %106, align 8, !tbaa !37
  %108 = invoke i32 @_ZN3JPH13BodyInterface20CreateAndAddSoftBodyERKNS_24SoftBodyCreationSettingsENS_11EActivationE(ptr noundef nonnull align 8 dereferenceable(24) %107, ptr noundef nonnull align 16 dereferenceable(111) %8, i32 noundef 0)
          to label %109 unwind label %134

109:                                              ; preds = %104
  call void @llvm.lifetime.start.p0(i64 256, ptr nonnull %11) #13
  %110 = invoke noundef ptr @_ZN3JPH8BoxShapenwEm(i64 noundef 80)
          to label %111 unwind label %136

111:                                              ; preds = %109
  %112 = invoke { double, double } @_ZN3JPH4Vec310sReplicateEf(float noundef 5.000000e-01)
          to label %113 unwind label %138

113:                                              ; preds = %111
  %114 = extractvalue { double, double } %112, 0
  %115 = extractvalue { double, double } %112, 1
  invoke void @_ZN3JPH8BoxShapeC2ENS_4Vec3EfPKNS_15PhysicsMaterialE(ptr noundef nonnull align 16 dereferenceable(80) %110, double %114, double %115, float noundef 0x3FA99999A0000000, ptr noundef null)
          to label %116 unwind label %138

116:                                              ; preds = %113
  %117 = invoke { double, double } @_ZN3JPH4Vec35sZeroEv()
          to label %118 unwind label %136

118:                                              ; preds = %116
  %119 = invoke { double, double } @_ZN3JPH4Quat9sIdentityEv()
          to label %120 unwind label %136

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

125:                                              ; preds = %120
  %126 = getelementptr inbounds i8, ptr %11, i64 144
  store i8 1, ptr %126, align 16, !tbaa !22
  %127 = getelementptr inbounds i8, ptr %11, i64 160
  store float 1.000000e+01, ptr %127, align 16, !tbaa !32
  %128 = getelementptr inbounds i8, ptr %8, i64 16
  %129 = getelementptr inbounds i8, ptr %12, i64 8
  %.sroa.5.0..sroa_idx = getelementptr inbounds i8, ptr %11, i64 8
  br label %.preheader58

.preheader58:                                     ; preds = %125, %140
  %.04760 = phi i32 [ 0, %125 ], [ %141, %140 ]
  %130 = uitofp nneg i32 %.04760 to float
  br label %142

131:                                              ; preds = %140
  call void @_ZN3JPH20BodyCreationSettingsD2Ev(ptr noundef nonnull align 16 dereferenceable(256) %11) #13
  call void @llvm.lifetime.end.p0(i64 256, ptr nonnull %11) #13
  call void @_ZN3JPH24SoftBodyCreationSettingsD2Ev(ptr noundef nonnull align 16 dereferenceable(111) %8) #13
  call void @llvm.lifetime.end.p0(i64 112, ptr nonnull %8) #13
  br label %171

132:                                              ; preds = %98, %94
  %133 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3JPH3RefINS_22SoftBodySharedSettingsEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %9) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %9) #13
  br label %170

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

136:                                              ; preds = %120, %118, %116, %109
  %137 = landingpad { ptr, i32 }
          cleanup
  br label %168

138:                                              ; preds = %113, %111
  %139 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3JPH8BoxShapedlEPv(ptr noundef %110) #13
  br label %168

140:                                              ; preds = %161
  %141 = add nuw nsw i32 %.04760, 1
  %exitcond63.not = icmp eq i32 %141, 11
  br i1 %exitcond63.not, label %131, label %.preheader58, !llvm.loop !45

142:                                              ; preds = %.preheader58, %161
  %.04659 = phi i32 [ 0, %.preheader58 ], [ %162, %161 ]
  %143 = call noundef float @_ZN3JPH8literalsli2_rEe(x86_fp80 noundef 0xK4002A000000000000000)
  %144 = fneg float %143
  %145 = call noundef float @_ZN3JPH8literalsli2_rEe(x86_fp80 noundef 0xK40008000000000000000)
  %146 = call float @llvm.fmuladd.f32(float %145, float %130, float %144)
  %147 = call noundef float @_ZN3JPH8literalsli2_rEe(x86_fp80 noundef 0xK40008000000000000000)
  %148 = call noundef float @_ZN3JPH8literalsli2_rEe(x86_fp80 noundef 0xK4002A000000000000000)
  %149 = fneg float %148
  %150 = call noundef float @_ZN3JPH8literalsli2_rEe(x86_fp80 noundef 0xK40008000000000000000)
  %151 = uitofp nneg i32 %.04659 to float
  %152 = call float @llvm.fmuladd.f32(float %150, float %151, float %149)
  call void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %12, float noundef %146, float noundef %147, float noundef %152)
  %153 = load double, ptr %12, align 16
  %154 = load double, ptr %129, align 8
  %155 = invoke { double, double } @_ZNK3JPH4Vec3plES0_(ptr noundef nonnull align 16 dereferenceable(16) %128, double %153, double %154)
          to label %156 unwind label %163

156:                                              ; preds = %142
  %157 = extractvalue { double, double } %155, 0
  %158 = extractvalue { double, double } %155, 1
  store double %157, ptr %11, align 16
  store double %158, ptr %.sroa.5.0..sroa_idx, align 8, !tbaa !36
  %159 = load ptr, ptr %106, align 8, !tbaa !37
  %160 = invoke i32 @_ZN3JPH13BodyInterface16CreateAndAddBodyERKNS_20BodyCreationSettingsENS_11EActivationE(ptr noundef nonnull align 8 dereferenceable(24) %159, ptr noundef nonnull align 16 dereferenceable(256) %11, i32 noundef 0)
          to label %161 unwind label %165

161:                                              ; preds = %156
  %162 = add nuw nsw i32 %.04659, 1
  %exitcond.not = icmp eq i32 %162, 11
  br i1 %exitcond.not, label %140, label %142, !llvm.loop !46

163:                                              ; preds = %142
  %164 = landingpad { ptr, i32 }
          cleanup
  br label %167

165:                                              ; preds = %156
  %166 = landingpad { ptr, i32 }
          cleanup
  br label %167

167:                                              ; preds = %165, %163
  %.pn = phi { ptr, i32 } [ %166, %165 ], [ %164, %163 ]
  call void @_ZN3JPH20BodyCreationSettingsD2Ev(ptr noundef nonnull align 16 dereferenceable(256) %11) #13
  br label %168

168:                                              ; preds = %167, %138, %136
  %.pn.pn = phi { ptr, i32 } [ %.pn, %167 ], [ %137, %136 ], [ %139, %138 ]
  call void @llvm.lifetime.end.p0(i64 256, ptr nonnull %11) #13
  br label %169

169:                                              ; preds = %168, %134
  %.pn.pn.pn = phi { ptr, i32 } [ %.pn.pn, %168 ], [ %135, %134 ]
  call void @_ZN3JPH24SoftBodyCreationSettingsD2Ev(ptr noundef nonnull align 16 dereferenceable(111) %8) #13
  br label %170

170:                                              ; preds = %169, %132
  %.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn.pn.pn, %169 ], [ %133, %132 ]
  call void @llvm.lifetime.end.p0(i64 112, ptr nonnull %8) #13
  br label %172

171:                                              ; preds = %91, %131, %51
  ret void

172:                                              ; preds = %170, %90
  %.pn53.pn.pn.pn = phi { ptr, i32 } [ %.pn53.pn.pn, %90 ], [ %.pn.pn.pn.pn, %170 ]
  resume { ptr, i32 } %.pn53.pn.pn.pn
}

; Function Attrs: mustprogress nofree nounwind willreturn memory(argmem: read)
declare i32 @strcmp(ptr nocapture noundef, ptr nocapture noundef) local_unnamed_addr #2

declare noundef nonnull align 16 dereferenceable(122) ptr @_ZN4Test17CreateMeshTerrainEv(ptr noundef nonnull align 8 dereferenceable(112)) local_unnamed_addr #3

declare void @_ZN15SoftBodyCreator12CreateSphereEfjjN3JPH22SoftBodySharedSettings9EBendTypeERKNS1_16VertexAttributesE(ptr dead_on_unwind writable sret(%"class.JPH::Ref") align 8, float noundef, i32 noundef, i32 noundef, i32 noundef, ptr noundef nonnull align 4 dereferenceable(20)) local_unnamed_addr #3

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

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

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

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

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

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

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

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

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

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

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

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

; Function Attrs: 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) #11

declare i32 @_ZN3JPH13BodyInterface20CreateAndAddSoftBodyERKNS_24SoftBodyCreationSettingsENS_11EActivationE(ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 16 dereferenceable(111), i32 noundef) local_unnamed_addr #3

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

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

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local void @_ZN3JPH24SoftBodyCreationSettingsD2Ev(ptr noundef nonnull align 16 dereferenceable(111)) unnamed_addr #5 align 2

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

declare void @_ZN15SoftBodyCreator29CreateClothWithFixatedCornersEjjf(ptr dead_on_unwind writable sret(%"class.JPH::Ref") align 8, i32 noundef, i32 noundef, float noundef) local_unnamed_addr #3

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

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


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