; LLVM IR from jrouwe/JoltPhysics :: Samples/Tests/ScaledShapes (ScaledHeightFieldShapeTest)

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

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

declare i32 @__gxx_personality_v0(...)

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

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN26ScaledHeightFieldShapeTest10InitializeEv(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 i32, align 4
  %4 = alloca float, align 4
  %5 = alloca float, align 4
  %6 = alloca [4096 x float], align 16
  %7 = alloca i32, align 4
  %8 = alloca i32, align 4
  %9 = alloca i32, align 4
  %10 = alloca i32, align 4
  %11 = alloca i32, align 4
  %12 = alloca %"class.JPH::RefConst.6", align 8
  %13 = alloca %"class.JPH::Vec3", align 16
  %14 = alloca ptr, align 8
  %15 = alloca i32, align 4
  %16 = alloca %"class.JPH::Vec3", align 16
  %17 = alloca %"class.JPH::Array.16", align 8
  %18 = alloca i1, align 1
  %19 = alloca %"class.JPH::BodyCreationSettings", align 16
  %20 = alloca %"class.JPH::Vec3", align 16
  %21 = alloca %"class.JPH::Quat", align 16
  %22 = alloca %"class.JPH::BodyID", align 4
  %23 = alloca %"class.JPH::BodyCreationSettings", align 16
  %24 = alloca %"class.JPH::Vec3", align 16
  %25 = alloca %"class.JPH::Vec3", align 16
  %26 = alloca %"class.JPH::Quat", align 16
  %27 = alloca %"class.JPH::BodyID", align 4
  %28 = alloca %"class.JPH::BodyCreationSettings", align 16
  %29 = alloca %"class.JPH::Vec3", align 16
  %30 = alloca %"class.JPH::Vec3", align 16
  %31 = alloca %"class.JPH::Quat", align 16
  %32 = alloca %"class.JPH::BodyID", align 4
  %33 = alloca %"class.JPH::BodyCreationSettings", align 16
  %34 = alloca %"class.JPH::Vec3", align 16
  %35 = alloca %"class.JPH::Vec3", align 16
  %36 = alloca %"class.JPH::Quat", align 16
  %37 = alloca %"class.JPH::BodyID", align 4
  %38 = alloca %"class.JPH::BodyCreationSettings", align 16
  %39 = alloca %"class.JPH::Vec3", align 16
  %40 = alloca %"class.JPH::Vec3", align 16
  %41 = alloca %"class.JPH::Quat", align 16
  %42 = alloca %"class.JPH::BodyID", align 4
  %43 = alloca %"class.JPH::BodyCreationSettings", align 16
  %44 = alloca %"class.JPH::Vec3", align 16
  %45 = alloca %"class.JPH::Vec3", align 16
  %46 = alloca %"class.JPH::Quat", align 16
  %47 = alloca %"class.JPH::BodyID", align 4
  %48 = alloca %"class.JPH::BodyCreationSettings", align 16
  %49 = alloca %"class.JPH::Vec3", align 16
  %50 = alloca %"class.JPH::Vec3", align 16
  %51 = alloca %"class.JPH::Quat", align 16
  %52 = alloca %"class.JPH::BodyID", align 4
  %53 = alloca %"class.JPH::RefConst", align 8
  %54 = alloca %"class.JPH::RefConst", align 8
  %55 = alloca %"class.JPH::Vec3", align 16
  %56 = alloca i32, align 4
  %57 = alloca i32, align 4
  %58 = alloca %"class.JPH::BodyCreationSettings", align 16
  %59 = alloca %"class.JPH::Vec3", align 16
  %60 = alloca %"class.JPH::Quat", align 16
  %61 = alloca %"class.JPH::BodyID", align 4
  store ptr %0, ptr %2, align 8, !tbaa !5
  %62 = load ptr, ptr %2, align 8
  %63 = call noundef nonnull align 16 dereferenceable(122) ptr @_ZN4Test11CreateFloorEf(ptr noundef nonnull align 8 dereferenceable(112) %62, float noundef 2.000000e+02)
  call void @llvm.lifetime.start.p0(i64 4, ptr %3) #11
  store i32 64, ptr %3, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %4) #11
  store float 2.500000e-01, ptr %4, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 4, ptr %5) #11
  store float 4.000000e+00, ptr %5, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 16384, ptr %6) #11
  call void @llvm.lifetime.start.p0(i64 4, ptr %7) #11
  store i32 0, ptr %7, align 4, !tbaa !9
  br label %64

64:                                               ; preds = %94, %1
  %65 = load i32, ptr %7, align 4, !tbaa !9
  %66 = icmp slt i32 %65, 64
  br i1 %66, label %68, label %67

67:                                               ; preds = %64
  store i32 2, ptr %8, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %7) #11
  br label %97

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

69:                                               ; preds = %90, %68
  %70 = load i32, ptr %9, align 4, !tbaa !9
  %71 = icmp slt i32 %70, 64
  br i1 %71, label %73, label %72

72:                                               ; preds = %69
  store i32 5, ptr %8, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %9) #11
  br label %93

73:                                               ; preds = %69
  %74 = load i32, ptr %9, align 4, !tbaa !9
  %75 = sitofp i32 %74 to float
  %76 = fmul float %75, 2.000000e+00
  %77 = fdiv float %76, 6.400000e+01
  %78 = load i32, ptr %7, align 4, !tbaa !9
  %79 = sitofp i32 %78 to float
  %80 = fmul float %79, 2.000000e+00
  %81 = fdiv float %80, 6.400000e+01
  %82 = call noundef float @_Z12PerlinNoise3fffiii(float noundef %77, float noundef 0.000000e+00, float noundef %81, i32 noundef 256, i32 noundef 256, i32 noundef 256)
  %83 = fmul float 4.000000e+00, %82
  %84 = load i32, ptr %7, align 4, !tbaa !9
  %85 = mul nsw i32 %84, 64
  %86 = load i32, ptr %9, align 4, !tbaa !9
  %87 = add nsw i32 %85, %86
  %88 = sext i32 %87 to i64
  %89 = getelementptr inbounds [4096 x float], ptr %6, i64 0, i64 %88
  store float %83, ptr %89, align 4, !tbaa !11
  br label %90

90:                                               ; preds = %73
  %91 = load i32, ptr %9, align 4, !tbaa !9
  %92 = add nsw i32 %91, 1
  store i32 %92, ptr %9, align 4, !tbaa !9
  br label %69, !llvm.loop !13

93:                                               ; preds = %72
  br label %94

94:                                               ; preds = %93
  %95 = load i32, ptr %7, align 4, !tbaa !9
  %96 = add nsw i32 %95, 1
  store i32 %96, ptr %7, align 4, !tbaa !9
  br label %64, !llvm.loop !15

97:                                               ; preds = %67
  call void @llvm.lifetime.start.p0(i64 4, ptr %10) #11
  store i32 0, ptr %10, align 4, !tbaa !9
  br label %98

98:                                               ; preds = %114, %97
  %99 = load i32, ptr %10, align 4, !tbaa !9
  %100 = icmp slt i32 %99, 64
  br i1 %100, label %102, label %101

101:                                              ; preds = %98
  store i32 8, ptr %8, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %10) #11
  br label %117

102:                                              ; preds = %98
  %103 = load i32, ptr %10, align 4, !tbaa !9
  %104 = sext i32 %103 to i64
  %105 = getelementptr inbounds [4096 x float], ptr %6, i64 0, i64 %104
  %106 = load float, ptr %105, align 4, !tbaa !11
  %107 = fadd float %106, 2.000000e+00
  store float %107, ptr %105, align 4, !tbaa !11
  %108 = load i32, ptr %10, align 4, !tbaa !9
  %109 = add nsw i32 %108, 4032
  %110 = sext i32 %109 to i64
  %111 = getelementptr inbounds [4096 x float], ptr %6, i64 0, i64 %110
  %112 = load float, ptr %111, align 4, !tbaa !11
  %113 = fadd float %112, 2.000000e+00
  store float %113, ptr %111, align 4, !tbaa !11
  br label %114

114:                                              ; preds = %102
  %115 = load i32, ptr %10, align 4, !tbaa !9
  %116 = add nsw i32 %115, 1
  store i32 %116, ptr %10, align 4, !tbaa !9
  br label %98, !llvm.loop !16

117:                                              ; preds = %101
  call void @llvm.lifetime.start.p0(i64 4, ptr %11) #11
  store i32 1, ptr %11, align 4, !tbaa !9
  br label %118

118:                                              ; preds = %136, %117
  %119 = load i32, ptr %11, align 4, !tbaa !9
  %120 = icmp slt i32 %119, 63
  br i1 %120, label %122, label %121

121:                                              ; preds = %118
  store i32 11, ptr %8, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %11) #11
  br label %139

122:                                              ; preds = %118
  %123 = load i32, ptr %11, align 4, !tbaa !9
  %124 = mul nsw i32 64, %123
  %125 = sext i32 %124 to i64
  %126 = getelementptr inbounds [4096 x float], ptr %6, i64 0, i64 %125
  %127 = load float, ptr %126, align 4, !tbaa !11
  %128 = fadd float %127, 2.000000e+00
  store float %128, ptr %126, align 4, !tbaa !11
  %129 = load i32, ptr %11, align 4, !tbaa !9
  %130 = mul nsw i32 64, %129
  %131 = add nsw i32 63, %130
  %132 = sext i32 %131 to i64
  %133 = getelementptr inbounds [4096 x float], ptr %6, i64 0, i64 %132
  %134 = load float, ptr %133, align 4, !tbaa !11
  %135 = fadd float %134, 2.000000e+00
  store float %135, ptr %133, align 4, !tbaa !11
  br label %136

136:                                              ; preds = %122
  %137 = load i32, ptr %11, align 4, !tbaa !9
  %138 = add nsw i32 %137, 1
  store i32 %138, ptr %11, align 4, !tbaa !9
  br label %118, !llvm.loop !17

139:                                              ; preds = %121
  call void @llvm.lifetime.start.p0(i64 8, ptr %12) #11
  %140 = call noundef ptr @_ZN3JPH24HeightFieldShapeSettingsnwEm(i64 noundef 208)
  store i1 true, ptr %18, align 1
  %141 = getelementptr inbounds [4096 x float], ptr %6, i64 0, i64 0
  invoke void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %13, float noundef -8.000000e+00, float noundef 0.000000e+00, float noundef -8.000000e+00)
          to label %142 unwind label %415

142:                                              ; preds = %139
  invoke void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %16, float noundef 2.500000e-01, float noundef 1.000000e+00, float noundef 2.500000e-01)
          to label %143 unwind label %415

143:                                              ; preds = %142
  call void @llvm.lifetime.start.p0(i64 24, ptr %17) #11
  call void @llvm.memset.p0.i64(ptr align 8 %17, i8 0, i64 24, i1 false)
  call void @_ZN3JPH5ArrayINS_8RefConstINS_15PhysicsMaterialEEENS_12STLAllocatorIS3_EEEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %17) #11
  %144 = getelementptr inbounds { double, double }, ptr %13, i32 0, i32 0
  %145 = load double, ptr %144, align 16
  %146 = getelementptr inbounds { double, double }, ptr %13, i32 0, i32 1
  %147 = load double, ptr %146, align 8
  %148 = getelementptr inbounds { double, double }, ptr %16, i32 0, i32 0
  %149 = load double, ptr %148, align 16
  %150 = getelementptr inbounds { double, double }, ptr %16, i32 0, i32 1
  %151 = load double, ptr %150, align 8
  invoke void @_ZN3JPH24HeightFieldShapeSettingsC1EPKfNS_4Vec3ES3_jPKhRKNS_5ArrayINS_8RefConstINS_15PhysicsMaterialEEENS_12STLAllocatorIS9_EEEE(ptr noundef nonnull align 16 dereferenceable(208) %140, ptr noundef %141, double %145, double %147, double %149, double %151, i32 noundef 64, ptr noundef null, ptr noundef nonnull align 8 dereferenceable(24) %17)
          to label %152 unwind label %419

152:                                              ; preds = %143
  store i1 false, ptr %18, align 1
  invoke void @_ZN3JPH8RefConstINS_13ShapeSettingsEEC2EPKS1_(ptr noundef nonnull align 8 dereferenceable(8) %12, ptr noundef %140)
          to label %153 unwind label %419

153:                                              ; preds = %152
  call void @_ZN3JPH5ArrayINS_8RefConstINS_15PhysicsMaterialEEENS_12STLAllocatorIS3_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %17) #11
  call void @llvm.lifetime.end.p0(i64 24, ptr %17) #11
  %154 = getelementptr inbounds %class.Test, ptr %62, i32 0, i32 3
  %155 = load ptr, ptr %154, align 8, !tbaa !18
  call void @llvm.lifetime.start.p0(i64 256, ptr %19) #11
  %156 = invoke noundef ptr @_ZNK3JPH8RefConstINS_13ShapeSettingsEEcvPKS1_Ev(ptr noundef nonnull align 8 dereferenceable(8) %12)
          to label %157 unwind label %427

157:                                              ; preds = %153
  invoke void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %20, float noundef -6.000000e+01, float noundef 1.000000e+01, float noundef 0.000000e+00)
          to label %158 unwind label %427

158:                                              ; preds = %157
  %159 = invoke { double, double } @_ZN3JPH4Quat9sIdentityEv()
          to label %160 unwind label %427

160:                                              ; preds = %158
  %161 = getelementptr inbounds %"class.JPH::Quat", ptr %21, i32 0, i32 0
  %162 = getelementptr inbounds %"class.JPH::Vec4", ptr %161, i32 0, i32 0
  %163 = getelementptr inbounds %union.anon.4, ptr %162, i32 0, i32 0
  %164 = getelementptr inbounds { double, double }, ptr %163, i32 0, i32 0
  %165 = extractvalue { double, double } %159, 0
  store double %165, ptr %164, align 16
  %166 = getelementptr inbounds { double, double }, ptr %163, i32 0, i32 1
  %167 = extractvalue { double, double } %159, 1
  store double %167, ptr %166, align 8
  %168 = getelementptr inbounds { double, double }, ptr %20, i32 0, i32 0
  %169 = load double, ptr %168, align 16
  %170 = getelementptr inbounds { double, double }, ptr %20, i32 0, i32 1
  %171 = load double, ptr %170, align 8
  %172 = getelementptr inbounds { double, double }, ptr %21, i32 0, i32 0
  %173 = load double, ptr %172, align 16
  %174 = getelementptr inbounds { double, double }, ptr %21, i32 0, i32 1
  %175 = load double, ptr %174, align 8
  invoke void @_ZN3JPH20BodyCreationSettingsC2EPKNS_13ShapeSettingsENS_4Vec3ENS_4QuatENS_11EMotionTypeEt(ptr noundef nonnull align 16 dereferenceable(256) %19, ptr noundef %156, double %169, double %171, double %173, double %175, i8 noundef zeroext 0, i16 noundef zeroext 0)
          to label %176 unwind label %427

176:                                              ; preds = %160
  %177 = invoke i32 @_ZN3JPH13BodyInterface16CreateAndAddBodyERKNS_20BodyCreationSettingsENS_11EActivationE(ptr noundef nonnull align 8 dereferenceable(24) %155, ptr noundef nonnull align 16 dereferenceable(256) %19, i32 noundef 1)
          to label %178 unwind label %431

178:                                              ; preds = %176
  %179 = getelementptr inbounds %"class.JPH::BodyID", ptr %22, i32 0, i32 0
  store i32 %177, ptr %179, align 4
  call void @_ZN3JPH20BodyCreationSettingsD2Ev(ptr noundef nonnull align 16 dereferenceable(256) %19) #11
  call void @llvm.lifetime.end.p0(i64 256, ptr %19) #11
  %180 = getelementptr inbounds %class.Test, ptr %62, i32 0, i32 3
  %181 = load ptr, ptr %180, align 8, !tbaa !18
  call void @llvm.lifetime.start.p0(i64 256, ptr %23) #11
  %182 = invoke noundef ptr @_ZN3JPH19ScaledShapeSettingsnwEm(i64 noundef 96)
          to label %183 unwind label %436

183:                                              ; preds = %178
  %184 = invoke noundef ptr @_ZNK3JPH8RefConstINS_13ShapeSettingsEEcvPKS1_Ev(ptr noundef nonnull align 8 dereferenceable(8) %12)
          to label %185 unwind label %440

185:                                              ; preds = %183
  %186 = invoke { double, double } @_ZN3JPH4Vec310sReplicateEf(float noundef 5.000000e-01)
          to label %187 unwind label %440

187:                                              ; preds = %185
  %188 = getelementptr inbounds %"class.JPH::Vec3", ptr %24, i32 0, i32 0
  %189 = getelementptr inbounds %union.anon, ptr %188, i32 0, i32 0
  %190 = getelementptr inbounds { double, double }, ptr %189, i32 0, i32 0
  %191 = extractvalue { double, double } %186, 0
  store double %191, ptr %190, align 16
  %192 = getelementptr inbounds { double, double }, ptr %189, i32 0, i32 1
  %193 = extractvalue { double, double } %186, 1
  store double %193, ptr %192, align 8
  %194 = getelementptr inbounds { double, double }, ptr %24, i32 0, i32 0
  %195 = load double, ptr %194, align 16
  %196 = getelementptr inbounds { double, double }, ptr %24, i32 0, i32 1
  %197 = load double, ptr %196, align 8
  invoke void @_ZN3JPH19ScaledShapeSettingsC2EPKNS_13ShapeSettingsENS_4Vec3E(ptr noundef nonnull align 16 dereferenceable(96) %182, ptr noundef %184, double %195, double %197)
          to label %198 unwind label %440

198:                                              ; preds = %187
  invoke void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %25, float noundef -4.000000e+01, float noundef 1.000000e+01, float noundef 0.000000e+00)
          to label %199 unwind label %436

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

201:                                              ; preds = %199
  %202 = getelementptr inbounds %"class.JPH::Quat", ptr %26, i32 0, i32 0
  %203 = getelementptr inbounds %"class.JPH::Vec4", ptr %202, i32 0, i32 0
  %204 = getelementptr inbounds %union.anon.4, ptr %203, i32 0, i32 0
  %205 = getelementptr inbounds { double, double }, ptr %204, i32 0, i32 0
  %206 = extractvalue { double, double } %200, 0
  store double %206, ptr %205, align 16
  %207 = getelementptr inbounds { double, double }, ptr %204, i32 0, i32 1
  %208 = extractvalue { double, double } %200, 1
  store double %208, ptr %207, align 8
  %209 = getelementptr inbounds { double, double }, ptr %25, i32 0, i32 0
  %210 = load double, ptr %209, align 16
  %211 = getelementptr inbounds { double, double }, ptr %25, i32 0, i32 1
  %212 = load double, ptr %211, align 8
  %213 = getelementptr inbounds { double, double }, ptr %26, i32 0, i32 0
  %214 = load double, ptr %213, align 16
  %215 = getelementptr inbounds { double, double }, ptr %26, i32 0, i32 1
  %216 = load double, ptr %215, align 8
  invoke void @_ZN3JPH20BodyCreationSettingsC2EPKNS_13ShapeSettingsENS_4Vec3ENS_4QuatENS_11EMotionTypeEt(ptr noundef nonnull align 16 dereferenceable(256) %23, ptr noundef %182, double %210, double %212, double %214, double %216, i8 noundef zeroext 0, i16 noundef zeroext 0)
          to label %217 unwind label %436

217:                                              ; preds = %201
  %218 = invoke i32 @_ZN3JPH13BodyInterface16CreateAndAddBodyERKNS_20BodyCreationSettingsENS_11EActivationE(ptr noundef nonnull align 8 dereferenceable(24) %181, ptr noundef nonnull align 16 dereferenceable(256) %23, i32 noundef 1)
          to label %219 unwind label %444

219:                                              ; preds = %217
  %220 = getelementptr inbounds %"class.JPH::BodyID", ptr %27, i32 0, i32 0
  store i32 %218, ptr %220, align 4
  call void @_ZN3JPH20BodyCreationSettingsD2Ev(ptr noundef nonnull align 16 dereferenceable(256) %23) #11
  call void @llvm.lifetime.end.p0(i64 256, ptr %23) #11
  %221 = getelementptr inbounds %class.Test, ptr %62, i32 0, i32 3
  %222 = load ptr, ptr %221, align 8, !tbaa !18
  call void @llvm.lifetime.start.p0(i64 256, ptr %28) #11
  %223 = invoke noundef ptr @_ZN3JPH19ScaledShapeSettingsnwEm(i64 noundef 96)
          to label %224 unwind label %449

224:                                              ; preds = %219
  %225 = invoke noundef ptr @_ZNK3JPH8RefConstINS_13ShapeSettingsEEcvPKS1_Ev(ptr noundef nonnull align 8 dereferenceable(8) %12)
          to label %226 unwind label %453

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

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

239:                                              ; preds = %228
  invoke void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %30, float noundef -2.000000e+01, float noundef 1.000000e+01, float noundef 0.000000e+00)
          to label %240 unwind label %449

240:                                              ; preds = %239
  %241 = invoke { double, double } @_ZN3JPH4Quat9sIdentityEv()
          to label %242 unwind label %449

242:                                              ; preds = %240
  %243 = getelementptr inbounds %"class.JPH::Quat", ptr %31, i32 0, i32 0
  %244 = getelementptr inbounds %"class.JPH::Vec4", ptr %243, i32 0, i32 0
  %245 = getelementptr inbounds %union.anon.4, ptr %244, i32 0, i32 0
  %246 = getelementptr inbounds { double, double }, ptr %245, i32 0, i32 0
  %247 = extractvalue { double, double } %241, 0
  store double %247, ptr %246, align 16
  %248 = getelementptr inbounds { double, double }, ptr %245, i32 0, i32 1
  %249 = extractvalue { double, double } %241, 1
  store double %249, ptr %248, align 8
  %250 = getelementptr inbounds { double, double }, ptr %30, i32 0, i32 0
  %251 = load double, ptr %250, align 16
  %252 = getelementptr inbounds { double, double }, ptr %30, i32 0, i32 1
  %253 = load double, ptr %252, align 8
  %254 = getelementptr inbounds { double, double }, ptr %31, i32 0, i32 0
  %255 = load double, ptr %254, align 16
  %256 = getelementptr inbounds { double, double }, ptr %31, i32 0, i32 1
  %257 = load double, ptr %256, align 8
  invoke void @_ZN3JPH20BodyCreationSettingsC2EPKNS_13ShapeSettingsENS_4Vec3ENS_4QuatENS_11EMotionTypeEt(ptr noundef nonnull align 16 dereferenceable(256) %28, ptr noundef %223, double %251, double %253, double %255, double %257, i8 noundef zeroext 0, i16 noundef zeroext 0)
          to label %258 unwind label %449

258:                                              ; preds = %242
  %259 = invoke i32 @_ZN3JPH13BodyInterface16CreateAndAddBodyERKNS_20BodyCreationSettingsENS_11EActivationE(ptr noundef nonnull align 8 dereferenceable(24) %222, ptr noundef nonnull align 16 dereferenceable(256) %28, i32 noundef 1)
          to label %260 unwind label %457

260:                                              ; preds = %258
  %261 = getelementptr inbounds %"class.JPH::BodyID", ptr %32, i32 0, i32 0
  store i32 %259, ptr %261, align 4
  call void @_ZN3JPH20BodyCreationSettingsD2Ev(ptr noundef nonnull align 16 dereferenceable(256) %28) #11
  call void @llvm.lifetime.end.p0(i64 256, ptr %28) #11
  %262 = getelementptr inbounds %class.Test, ptr %62, i32 0, i32 3
  %263 = load ptr, ptr %262, align 8, !tbaa !18
  call void @llvm.lifetime.start.p0(i64 256, ptr %33) #11
  %264 = invoke noundef ptr @_ZN3JPH19ScaledShapeSettingsnwEm(i64 noundef 96)
          to label %265 unwind label %462

265:                                              ; preds = %260
  %266 = invoke noundef ptr @_ZNK3JPH8RefConstINS_13ShapeSettingsEEcvPKS1_Ev(ptr noundef nonnull align 8 dereferenceable(8) %12)
          to label %267 unwind label %466

267:                                              ; preds = %265
  invoke void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %34, float noundef 5.000000e-01, float noundef 1.000000e+00, float noundef 1.500000e+00)
          to label %268 unwind label %466

268:                                              ; preds = %267
  %269 = getelementptr inbounds { double, double }, ptr %34, i32 0, i32 0
  %270 = load double, ptr %269, align 16
  %271 = getelementptr inbounds { double, double }, ptr %34, i32 0, i32 1
  %272 = load double, ptr %271, align 8
  invoke void @_ZN3JPH19ScaledShapeSettingsC2EPKNS_13ShapeSettingsENS_4Vec3E(ptr noundef nonnull align 16 dereferenceable(96) %264, ptr noundef %266, double %270, double %272)
          to label %273 unwind label %466

273:                                              ; preds = %268
  invoke void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %35, float noundef 0.000000e+00, float noundef 1.000000e+01, float noundef 0.000000e+00)
          to label %274 unwind label %462

274:                                              ; preds = %273
  %275 = invoke { double, double } @_ZN3JPH4Quat9sIdentityEv()
          to label %276 unwind label %462

276:                                              ; preds = %274
  %277 = getelementptr inbounds %"class.JPH::Quat", ptr %36, i32 0, i32 0
  %278 = getelementptr inbounds %"class.JPH::Vec4", ptr %277, i32 0, i32 0
  %279 = getelementptr inbounds %union.anon.4, ptr %278, i32 0, i32 0
  %280 = getelementptr inbounds { double, double }, ptr %279, i32 0, i32 0
  %281 = extractvalue { double, double } %275, 0
  store double %281, ptr %280, align 16
  %282 = getelementptr inbounds { double, double }, ptr %279, i32 0, i32 1
  %283 = extractvalue { double, double } %275, 1
  store double %283, ptr %282, align 8
  %284 = getelementptr inbounds { double, double }, ptr %35, i32 0, i32 0
  %285 = load double, ptr %284, align 16
  %286 = getelementptr inbounds { double, double }, ptr %35, i32 0, i32 1
  %287 = load double, ptr %286, align 8
  %288 = getelementptr inbounds { double, double }, ptr %36, i32 0, i32 0
  %289 = load double, ptr %288, align 16
  %290 = getelementptr inbounds { double, double }, ptr %36, i32 0, i32 1
  %291 = load double, ptr %290, align 8
  invoke void @_ZN3JPH20BodyCreationSettingsC2EPKNS_13ShapeSettingsENS_4Vec3ENS_4QuatENS_11EMotionTypeEt(ptr noundef nonnull align 16 dereferenceable(256) %33, ptr noundef %264, double %285, double %287, double %289, double %291, i8 noundef zeroext 0, i16 noundef zeroext 0)
          to label %292 unwind label %462

292:                                              ; preds = %276
  %293 = invoke i32 @_ZN3JPH13BodyInterface16CreateAndAddBodyERKNS_20BodyCreationSettingsENS_11EActivationE(ptr noundef nonnull align 8 dereferenceable(24) %263, ptr noundef nonnull align 16 dereferenceable(256) %33, i32 noundef 1)
          to label %294 unwind label %470

294:                                              ; preds = %292
  %295 = getelementptr inbounds %"class.JPH::BodyID", ptr %37, i32 0, i32 0
  store i32 %293, ptr %295, align 4
  call void @_ZN3JPH20BodyCreationSettingsD2Ev(ptr noundef nonnull align 16 dereferenceable(256) %33) #11
  call void @llvm.lifetime.end.p0(i64 256, ptr %33) #11
  %296 = getelementptr inbounds %class.Test, ptr %62, i32 0, i32 3
  %297 = load ptr, ptr %296, align 8, !tbaa !18
  call void @llvm.lifetime.start.p0(i64 256, ptr %38) #11
  %298 = invoke noundef ptr @_ZN3JPH19ScaledShapeSettingsnwEm(i64 noundef 96)
          to label %299 unwind label %475

299:                                              ; preds = %294
  %300 = invoke noundef ptr @_ZNK3JPH8RefConstINS_13ShapeSettingsEEcvPKS1_Ev(ptr noundef nonnull align 8 dereferenceable(8) %12)
          to label %301 unwind label %479

301:                                              ; preds = %299
  invoke void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %39, float noundef -5.000000e-01, float noundef 1.000000e+00, float noundef -1.500000e+00)
          to label %302 unwind label %479

302:                                              ; preds = %301
  %303 = getelementptr inbounds { double, double }, ptr %39, i32 0, i32 0
  %304 = load double, ptr %303, align 16
  %305 = getelementptr inbounds { double, double }, ptr %39, i32 0, i32 1
  %306 = load double, ptr %305, align 8
  invoke void @_ZN3JPH19ScaledShapeSettingsC2EPKNS_13ShapeSettingsENS_4Vec3E(ptr noundef nonnull align 16 dereferenceable(96) %298, ptr noundef %300, double %304, double %306)
          to label %307 unwind label %479

307:                                              ; preds = %302
  invoke void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %40, float noundef 2.000000e+01, float noundef 1.000000e+01, float noundef 0.000000e+00)
          to label %308 unwind label %475

308:                                              ; preds = %307
  %309 = invoke { double, double } @_ZN3JPH4Quat9sIdentityEv()
          to label %310 unwind label %475

310:                                              ; preds = %308
  %311 = getelementptr inbounds %"class.JPH::Quat", ptr %41, i32 0, i32 0
  %312 = getelementptr inbounds %"class.JPH::Vec4", ptr %311, i32 0, i32 0
  %313 = getelementptr inbounds %union.anon.4, ptr %312, i32 0, i32 0
  %314 = getelementptr inbounds { double, double }, ptr %313, i32 0, i32 0
  %315 = extractvalue { double, double } %309, 0
  store double %315, ptr %314, align 16
  %316 = getelementptr inbounds { double, double }, ptr %313, i32 0, i32 1
  %317 = extractvalue { double, double } %309, 1
  store double %317, ptr %316, align 8
  %318 = getelementptr inbounds { double, double }, ptr %40, i32 0, i32 0
  %319 = load double, ptr %318, align 16
  %320 = getelementptr inbounds { double, double }, ptr %40, i32 0, i32 1
  %321 = load double, ptr %320, align 8
  %322 = getelementptr inbounds { double, double }, ptr %41, i32 0, i32 0
  %323 = load double, ptr %322, align 16
  %324 = getelementptr inbounds { double, double }, ptr %41, i32 0, i32 1
  %325 = load double, ptr %324, align 8
  invoke void @_ZN3JPH20BodyCreationSettingsC2EPKNS_13ShapeSettingsENS_4Vec3ENS_4QuatENS_11EMotionTypeEt(ptr noundef nonnull align 16 dereferenceable(256) %38, ptr noundef %298, double %319, double %321, double %323, double %325, i8 noundef zeroext 0, i16 noundef zeroext 0)
          to label %326 unwind label %475

326:                                              ; preds = %310
  %327 = invoke i32 @_ZN3JPH13BodyInterface16CreateAndAddBodyERKNS_20BodyCreationSettingsENS_11EActivationE(ptr noundef nonnull align 8 dereferenceable(24) %297, ptr noundef nonnull align 16 dereferenceable(256) %38, i32 noundef 1)
          to label %328 unwind label %483

328:                                              ; preds = %326
  %329 = getelementptr inbounds %"class.JPH::BodyID", ptr %42, i32 0, i32 0
  store i32 %327, ptr %329, align 4
  call void @_ZN3JPH20BodyCreationSettingsD2Ev(ptr noundef nonnull align 16 dereferenceable(256) %38) #11
  call void @llvm.lifetime.end.p0(i64 256, ptr %38) #11
  %330 = getelementptr inbounds %class.Test, ptr %62, i32 0, i32 3
  %331 = load ptr, ptr %330, align 8, !tbaa !18
  call void @llvm.lifetime.start.p0(i64 256, ptr %43) #11
  %332 = invoke noundef ptr @_ZN3JPH19ScaledShapeSettingsnwEm(i64 noundef 96)
          to label %333 unwind label %488

333:                                              ; preds = %328
  %334 = invoke noundef ptr @_ZNK3JPH8RefConstINS_13ShapeSettingsEEcvPKS1_Ev(ptr noundef nonnull align 8 dereferenceable(8) %12)
          to label %335 unwind label %492

335:                                              ; preds = %333
  invoke void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %44, float noundef -5.000000e-01, float noundef 1.000000e+00, float noundef 1.500000e+00)
          to label %336 unwind label %492

336:                                              ; preds = %335
  %337 = getelementptr inbounds { double, double }, ptr %44, i32 0, i32 0
  %338 = load double, ptr %337, align 16
  %339 = getelementptr inbounds { double, double }, ptr %44, i32 0, i32 1
  %340 = load double, ptr %339, align 8
  invoke void @_ZN3JPH19ScaledShapeSettingsC2EPKNS_13ShapeSettingsENS_4Vec3E(ptr noundef nonnull align 16 dereferenceable(96) %332, ptr noundef %334, double %338, double %340)
          to label %341 unwind label %492

341:                                              ; preds = %336
  invoke void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %45, float noundef 4.000000e+01, float noundef 1.000000e+01, float noundef 0.000000e+00)
          to label %342 unwind label %488

342:                                              ; preds = %341
  %343 = invoke { double, double } @_ZN3JPH4Quat9sIdentityEv()
          to label %344 unwind label %488

344:                                              ; preds = %342
  %345 = getelementptr inbounds %"class.JPH::Quat", ptr %46, i32 0, i32 0
  %346 = getelementptr inbounds %"class.JPH::Vec4", ptr %345, i32 0, i32 0
  %347 = getelementptr inbounds %union.anon.4, ptr %346, i32 0, i32 0
  %348 = getelementptr inbounds { double, double }, ptr %347, i32 0, i32 0
  %349 = extractvalue { double, double } %343, 0
  store double %349, ptr %348, align 16
  %350 = getelementptr inbounds { double, double }, ptr %347, i32 0, i32 1
  %351 = extractvalue { double, double } %343, 1
  store double %351, ptr %350, align 8
  %352 = getelementptr inbounds { double, double }, ptr %45, i32 0, i32 0
  %353 = load double, ptr %352, align 16
  %354 = getelementptr inbounds { double, double }, ptr %45, i32 0, i32 1
  %355 = load double, ptr %354, align 8
  %356 = getelementptr inbounds { double, double }, ptr %46, i32 0, i32 0
  %357 = load double, ptr %356, align 16
  %358 = getelementptr inbounds { double, double }, ptr %46, i32 0, i32 1
  %359 = load double, ptr %358, align 8
  invoke void @_ZN3JPH20BodyCreationSettingsC2EPKNS_13ShapeSettingsENS_4Vec3ENS_4QuatENS_11EMotionTypeEt(ptr noundef nonnull align 16 dereferenceable(256) %43, ptr noundef %332, double %353, double %355, double %357, double %359, i8 noundef zeroext 0, i16 noundef zeroext 0)
          to label %360 unwind label %488

360:                                              ; preds = %344
  %361 = invoke i32 @_ZN3JPH13BodyInterface16CreateAndAddBodyERKNS_20BodyCreationSettingsENS_11EActivationE(ptr noundef nonnull align 8 dereferenceable(24) %331, ptr noundef nonnull align 16 dereferenceable(256) %43, i32 noundef 1)
          to label %362 unwind label %496

362:                                              ; preds = %360
  %363 = getelementptr inbounds %"class.JPH::BodyID", ptr %47, i32 0, i32 0
  store i32 %361, ptr %363, align 4
  call void @_ZN3JPH20BodyCreationSettingsD2Ev(ptr noundef nonnull align 16 dereferenceable(256) %43) #11
  call void @llvm.lifetime.end.p0(i64 256, ptr %43) #11
  %364 = getelementptr inbounds %class.Test, ptr %62, i32 0, i32 3
  %365 = load ptr, ptr %364, align 8, !tbaa !18
  call void @llvm.lifetime.start.p0(i64 256, ptr %48) #11
  %366 = invoke noundef ptr @_ZN3JPH19ScaledShapeSettingsnwEm(i64 noundef 96)
          to label %367 unwind label %501

367:                                              ; preds = %362
  %368 = invoke noundef ptr @_ZNK3JPH8RefConstINS_13ShapeSettingsEEcvPKS1_Ev(ptr noundef nonnull align 8 dereferenceable(8) %12)
          to label %369 unwind label %505

369:                                              ; preds = %367
  invoke void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %49, float noundef 5.000000e-01, float noundef -1.000000e+00, float noundef 1.500000e+00)
          to label %370 unwind label %505

370:                                              ; preds = %369
  %371 = getelementptr inbounds { double, double }, ptr %49, i32 0, i32 0
  %372 = load double, ptr %371, align 16
  %373 = getelementptr inbounds { double, double }, ptr %49, i32 0, i32 1
  %374 = load double, ptr %373, align 8
  invoke void @_ZN3JPH19ScaledShapeSettingsC2EPKNS_13ShapeSettingsENS_4Vec3E(ptr noundef nonnull align 16 dereferenceable(96) %366, ptr noundef %368, double %372, double %374)
          to label %375 unwind label %505

375:                                              ; preds = %370
  invoke void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %50, float noundef 6.000000e+01, float noundef 1.000000e+01, float noundef 0.000000e+00)
          to label %376 unwind label %501

376:                                              ; preds = %375
  %377 = invoke { double, double } @_ZN3JPH4Quat9sIdentityEv()
          to label %378 unwind label %501

378:                                              ; preds = %376
  %379 = getelementptr inbounds %"class.JPH::Quat", ptr %51, i32 0, i32 0
  %380 = getelementptr inbounds %"class.JPH::Vec4", ptr %379, i32 0, i32 0
  %381 = getelementptr inbounds %union.anon.4, ptr %380, i32 0, i32 0
  %382 = getelementptr inbounds { double, double }, ptr %381, i32 0, i32 0
  %383 = extractvalue { double, double } %377, 0
  store double %383, ptr %382, align 16
  %384 = getelementptr inbounds { double, double }, ptr %381, i32 0, i32 1
  %385 = extractvalue { double, double } %377, 1
  store double %385, ptr %384, align 8
  %386 = getelementptr inbounds { double, double }, ptr %50, i32 0, i32 0
  %387 = load double, ptr %386, align 16
  %388 = getelementptr inbounds { double, double }, ptr %50, i32 0, i32 1
  %389 = load double, ptr %388, align 8
  %390 = getelementptr inbounds { double, double }, ptr %51, i32 0, i32 0
  %391 = load double, ptr %390, align 16
  %392 = getelementptr inbounds { double, double }, ptr %51, i32 0, i32 1
  %393 = load double, ptr %392, align 8
  invoke void @_ZN3JPH20BodyCreationSettingsC2EPKNS_13ShapeSettingsENS_4Vec3ENS_4QuatENS_11EMotionTypeEt(ptr noundef nonnull align 16 dereferenceable(256) %48, ptr noundef %366, double %387, double %389, double %391, double %393, i8 noundef zeroext 0, i16 noundef zeroext 0)
          to label %394 unwind label %501

394:                                              ; preds = %378
  %395 = invoke i32 @_ZN3JPH13BodyInterface16CreateAndAddBodyERKNS_20BodyCreationSettingsENS_11EActivationE(ptr noundef nonnull align 8 dereferenceable(24) %365, ptr noundef nonnull align 16 dereferenceable(256) %48, i32 noundef 1)
          to label %396 unwind label %509

396:                                              ; preds = %394
  %397 = getelementptr inbounds %"class.JPH::BodyID", ptr %52, i32 0, i32 0
  store i32 %395, ptr %397, align 4
  call void @_ZN3JPH20BodyCreationSettingsD2Ev(ptr noundef nonnull align 16 dereferenceable(256) %48) #11
  call void @llvm.lifetime.end.p0(i64 256, ptr %48) #11
  call void @llvm.lifetime.start.p0(i64 8, ptr %53) #11
  %398 = invoke noundef ptr @_ZN3JPH11SphereShapenwEm(i64 noundef 48)
          to label %399 unwind label %514

399:                                              ; preds = %396
  invoke void @_ZN3JPH11SphereShapeC2EfPKNS_15PhysicsMaterialE(ptr noundef nonnull align 8 dereferenceable(48) %398, float noundef 0x3FC99999A0000000, ptr noundef null)
          to label %400 unwind label %518

400:                                              ; preds = %399
  invoke void @_ZN3JPH8RefConstINS_5ShapeEEC2EPKS1_(ptr noundef nonnull align 8 dereferenceable(8) %53, ptr noundef %398)
          to label %401 unwind label %514

401:                                              ; preds = %400
  call void @llvm.lifetime.start.p0(i64 8, ptr %54) #11
  %402 = invoke noundef ptr @_ZN3JPH8BoxShapenwEm(i64 noundef 80)
          to label %403 unwind label %522

403:                                              ; preds = %401
  invoke void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %55, float noundef 0x3FC99999A0000000, float noundef 0x3FC99999A0000000, float noundef 0x3FD99999A0000000)
          to label %404 unwind label %526

404:                                              ; preds = %403
  %405 = getelementptr inbounds { double, double }, ptr %55, i32 0, i32 0
  %406 = load double, ptr %405, align 16
  %407 = getelementptr inbounds { double, double }, ptr %55, i32 0, i32 1
  %408 = load double, ptr %407, align 8
  invoke void @_ZN3JPH8BoxShapeC2ENS_4Vec3EfPKNS_15PhysicsMaterialE(ptr noundef nonnull align 16 dereferenceable(80) %402, double %406, double %408, float noundef 0x3F847AE140000000, ptr noundef null)
          to label %409 unwind label %526

409:                                              ; preds = %404
  invoke void @_ZN3JPH8RefConstINS_5ShapeEEC2EPKS1_(ptr noundef nonnull align 8 dereferenceable(8) %54, ptr noundef %402)
          to label %410 unwind label %522

410:                                              ; preds = %409
  call void @llvm.lifetime.start.p0(i64 4, ptr %56) #11
  store i32 0, ptr %56, align 4, !tbaa !9
  br label %411

411:                                              ; preds = %588, %410
  %412 = load i32, ptr %56, align 4, !tbaa !9
  %413 = icmp slt i32 %412, 7
  br i1 %413, label %530, label %414

414:                                              ; preds = %411
  store i32 14, ptr %8, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %56) #11
  br label %591

415:                                              ; preds = %142, %139
  %416 = landingpad { ptr, i32 }
          cleanup
  %417 = extractvalue { ptr, i32 } %416, 0
  store ptr %417, ptr %14, align 8
  %418 = extractvalue { ptr, i32 } %416, 1
  store i32 %418, ptr %15, align 4
  br label %423

419:                                              ; preds = %152, %143
  %420 = landingpad { ptr, i32 }
          cleanup
  %421 = extractvalue { ptr, i32 } %420, 0
  store ptr %421, ptr %14, align 8
  %422 = extractvalue { ptr, i32 } %420, 1
  store i32 %422, ptr %15, align 4
  call void @_ZN3JPH5ArrayINS_8RefConstINS_15PhysicsMaterialEEENS_12STLAllocatorIS3_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %17) #11
  call void @llvm.lifetime.end.p0(i64 24, ptr %17) #11
  br label %423

423:                                              ; preds = %419, %415
  %424 = load i1, ptr %18, align 1
  br i1 %424, label %425, label %426

425:                                              ; preds = %423
  call void @_ZN3JPH24HeightFieldShapeSettingsdlEPv(ptr noundef %140) #11
  br label %426

426:                                              ; preds = %425, %423
  br label %595

427:                                              ; preds = %160, %158, %157, %153
  %428 = landingpad { ptr, i32 }
          cleanup
  %429 = extractvalue { ptr, i32 } %428, 0
  store ptr %429, ptr %14, align 8
  %430 = extractvalue { ptr, i32 } %428, 1
  store i32 %430, ptr %15, align 4
  br label %435

431:                                              ; preds = %176
  %432 = landingpad { ptr, i32 }
          cleanup
  %433 = extractvalue { ptr, i32 } %432, 0
  store ptr %433, ptr %14, align 8
  %434 = extractvalue { ptr, i32 } %432, 1
  store i32 %434, ptr %15, align 4
  call void @_ZN3JPH20BodyCreationSettingsD2Ev(ptr noundef nonnull align 16 dereferenceable(256) %19) #11
  br label %435

435:                                              ; preds = %431, %427
  call void @llvm.lifetime.end.p0(i64 256, ptr %19) #11
  br label %594

436:                                              ; preds = %201, %199, %198, %178
  %437 = landingpad { ptr, i32 }
          cleanup
  %438 = extractvalue { ptr, i32 } %437, 0
  store ptr %438, ptr %14, align 8
  %439 = extractvalue { ptr, i32 } %437, 1
  store i32 %439, ptr %15, align 4
  br label %448

440:                                              ; preds = %187, %185, %183
  %441 = landingpad { ptr, i32 }
          cleanup
  %442 = extractvalue { ptr, i32 } %441, 0
  store ptr %442, ptr %14, align 8
  %443 = extractvalue { ptr, i32 } %441, 1
  store i32 %443, ptr %15, align 4
  call void @_ZN3JPH19ScaledShapeSettingsdlEPv(ptr noundef %182) #11
  br label %448

444:                                              ; preds = %217
  %445 = landingpad { ptr, i32 }
          cleanup
  %446 = extractvalue { ptr, i32 } %445, 0
  store ptr %446, ptr %14, align 8
  %447 = extractvalue { ptr, i32 } %445, 1
  store i32 %447, ptr %15, align 4
  call void @_ZN3JPH20BodyCreationSettingsD2Ev(ptr noundef nonnull align 16 dereferenceable(256) %23) #11
  br label %448

448:                                              ; preds = %444, %440, %436
  call void @llvm.lifetime.end.p0(i64 256, ptr %23) #11
  br label %594

449:                                              ; preds = %242, %240, %239, %219
  %450 = landingpad { ptr, i32 }
          cleanup
  %451 = extractvalue { ptr, i32 } %450, 0
  store ptr %451, ptr %14, align 8
  %452 = extractvalue { ptr, i32 } %450, 1
  store i32 %452, ptr %15, align 4
  br label %461

453:                                              ; preds = %228, %226, %224
  %454 = landingpad { ptr, i32 }
          cleanup
  %455 = extractvalue { ptr, i32 } %454, 0
  store ptr %455, ptr %14, align 8
  %456 = extractvalue { ptr, i32 } %454, 1
  store i32 %456, ptr %15, align 4
  call void @_ZN3JPH19ScaledShapeSettingsdlEPv(ptr noundef %223) #11
  br label %461

457:                                              ; preds = %258
  %458 = landingpad { ptr, i32 }
          cleanup
  %459 = extractvalue { ptr, i32 } %458, 0
  store ptr %459, ptr %14, align 8
  %460 = extractvalue { ptr, i32 } %458, 1
  store i32 %460, ptr %15, align 4
  call void @_ZN3JPH20BodyCreationSettingsD2Ev(ptr noundef nonnull align 16 dereferenceable(256) %28) #11
  br label %461

461:                                              ; preds = %457, %453, %449
  call void @llvm.lifetime.end.p0(i64 256, ptr %28) #11
  br label %594

462:                                              ; preds = %276, %274, %273, %260
  %463 = landingpad { ptr, i32 }
          cleanup
  %464 = extractvalue { ptr, i32 } %463, 0
  store ptr %464, ptr %14, align 8
  %465 = extractvalue { ptr, i32 } %463, 1
  store i32 %465, ptr %15, align 4
  br label %474

466:                                              ; preds = %268, %267, %265
  %467 = landingpad { ptr, i32 }
          cleanup
  %468 = extractvalue { ptr, i32 } %467, 0
  store ptr %468, ptr %14, align 8
  %469 = extractvalue { ptr, i32 } %467, 1
  store i32 %469, ptr %15, align 4
  call void @_ZN3JPH19ScaledShapeSettingsdlEPv(ptr noundef %264) #11
  br label %474

470:                                              ; preds = %292
  %471 = landingpad { ptr, i32 }
          cleanup
  %472 = extractvalue { ptr, i32 } %471, 0
  store ptr %472, ptr %14, align 8
  %473 = extractvalue { ptr, i32 } %471, 1
  store i32 %473, ptr %15, align 4
  call void @_ZN3JPH20BodyCreationSettingsD2Ev(ptr noundef nonnull align 16 dereferenceable(256) %33) #11
  br label %474

474:                                              ; preds = %470, %466, %462
  call void @llvm.lifetime.end.p0(i64 256, ptr %33) #11
  br label %594

475:                                              ; preds = %310, %308, %307, %294
  %476 = landingpad { ptr, i32 }
          cleanup
  %477 = extractvalue { ptr, i32 } %476, 0
  store ptr %477, ptr %14, align 8
  %478 = extractvalue { ptr, i32 } %476, 1
  store i32 %478, ptr %15, align 4
  br label %487

479:                                              ; preds = %302, %301, %299
  %480 = landingpad { ptr, i32 }
          cleanup
  %481 = extractvalue { ptr, i32 } %480, 0
  store ptr %481, ptr %14, align 8
  %482 = extractvalue { ptr, i32 } %480, 1
  store i32 %482, ptr %15, align 4
  call void @_ZN3JPH19ScaledShapeSettingsdlEPv(ptr noundef %298) #11
  br label %487

483:                                              ; preds = %326
  %484 = landingpad { ptr, i32 }
          cleanup
  %485 = extractvalue { ptr, i32 } %484, 0
  store ptr %485, ptr %14, align 8
  %486 = extractvalue { ptr, i32 } %484, 1
  store i32 %486, ptr %15, align 4
  call void @_ZN3JPH20BodyCreationSettingsD2Ev(ptr noundef nonnull align 16 dereferenceable(256) %38) #11
  br label %487

487:                                              ; preds = %483, %479, %475
  call void @llvm.lifetime.end.p0(i64 256, ptr %38) #11
  br label %594

488:                                              ; preds = %344, %342, %341, %328
  %489 = landingpad { ptr, i32 }
          cleanup
  %490 = extractvalue { ptr, i32 } %489, 0
  store ptr %490, ptr %14, align 8
  %491 = extractvalue { ptr, i32 } %489, 1
  store i32 %491, ptr %15, align 4
  br label %500

492:                                              ; preds = %336, %335, %333
  %493 = landingpad { ptr, i32 }
          cleanup
  %494 = extractvalue { ptr, i32 } %493, 0
  store ptr %494, ptr %14, align 8
  %495 = extractvalue { ptr, i32 } %493, 1
  store i32 %495, ptr %15, align 4
  call void @_ZN3JPH19ScaledShapeSettingsdlEPv(ptr noundef %332) #11
  br label %500

496:                                              ; preds = %360
  %497 = landingpad { ptr, i32 }
          cleanup
  %498 = extractvalue { ptr, i32 } %497, 0
  store ptr %498, ptr %14, align 8
  %499 = extractvalue { ptr, i32 } %497, 1
  store i32 %499, ptr %15, align 4
  call void @_ZN3JPH20BodyCreationSettingsD2Ev(ptr noundef nonnull align 16 dereferenceable(256) %43) #11
  br label %500

500:                                              ; preds = %496, %492, %488
  call void @llvm.lifetime.end.p0(i64 256, ptr %43) #11
  br label %594

501:                                              ; preds = %378, %376, %375, %362
  %502 = landingpad { ptr, i32 }
          cleanup
  %503 = extractvalue { ptr, i32 } %502, 0
  store ptr %503, ptr %14, align 8
  %504 = extractvalue { ptr, i32 } %502, 1
  store i32 %504, ptr %15, align 4
  br label %513

505:                                              ; preds = %370, %369, %367
  %506 = landingpad { ptr, i32 }
          cleanup
  %507 = extractvalue { ptr, i32 } %506, 0
  store ptr %507, ptr %14, align 8
  %508 = extractvalue { ptr, i32 } %506, 1
  store i32 %508, ptr %15, align 4
  call void @_ZN3JPH19ScaledShapeSettingsdlEPv(ptr noundef %366) #11
  br label %513

509:                                              ; preds = %394
  %510 = landingpad { ptr, i32 }
          cleanup
  %511 = extractvalue { ptr, i32 } %510, 0
  store ptr %511, ptr %14, align 8
  %512 = extractvalue { ptr, i32 } %510, 1
  store i32 %512, ptr %15, align 4
  call void @_ZN3JPH20BodyCreationSettingsD2Ev(ptr noundef nonnull align 16 dereferenceable(256) %48) #11
  br label %513

513:                                              ; preds = %509, %505, %501
  call void @llvm.lifetime.end.p0(i64 256, ptr %48) #11
  br label %594

514:                                              ; preds = %400, %396
  %515 = landingpad { ptr, i32 }
          cleanup
  %516 = extractvalue { ptr, i32 } %515, 0
  store ptr %516, ptr %14, align 8
  %517 = extractvalue { ptr, i32 } %515, 1
  store i32 %517, ptr %15, align 4
  br label %593

518:                                              ; preds = %399
  %519 = landingpad { ptr, i32 }
          cleanup
  %520 = extractvalue { ptr, i32 } %519, 0
  store ptr %520, ptr %14, align 8
  %521 = extractvalue { ptr, i32 } %519, 1
  store i32 %521, ptr %15, align 4
  call void @_ZN3JPH11SphereShapedlEPv(ptr noundef %398) #11
  br label %593

522:                                              ; preds = %409, %401
  %523 = landingpad { ptr, i32 }
          cleanup
  %524 = extractvalue { ptr, i32 } %523, 0
  store ptr %524, ptr %14, align 8
  %525 = extractvalue { ptr, i32 } %523, 1
  store i32 %525, ptr %15, align 4
  br label %592

526:                                              ; preds = %404, %403
  %527 = landingpad { ptr, i32 }
          cleanup
  %528 = extractvalue { ptr, i32 } %527, 0
  store ptr %528, ptr %14, align 8
  %529 = extractvalue { ptr, i32 } %527, 1
  store i32 %529, ptr %15, align 4
  call void @_ZN3JPH8BoxShapedlEPv(ptr noundef %402) #11
  br label %592

530:                                              ; preds = %411
  call void @llvm.lifetime.start.p0(i64 4, ptr %57) #11
  store i32 0, ptr %57, align 4, !tbaa !9
  br label %531

531:                                              ; preds = %575, %530
  %532 = load i32, ptr %57, align 4, !tbaa !9
  %533 = icmp slt i32 %532, 5
  br i1 %533, label %535, label %534

534:                                              ; preds = %531
  store i32 17, ptr %8, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %57) #11
  br label %587

535:                                              ; preds = %531
  %536 = getelementptr inbounds %class.Test, ptr %62, i32 0, i32 3
  %537 = load ptr, ptr %536, align 8, !tbaa !18
  call void @llvm.lifetime.start.p0(i64 256, ptr %58) #11
  %538 = load i32, ptr %57, align 4, !tbaa !9
  %539 = and i32 %538, 1
  %540 = icmp ne i32 %539, 0
  br i1 %540, label %541, label %542

541:                                              ; preds = %535
  br label %543

542:                                              ; preds = %535
  br label %543

543:                                              ; preds = %542, %541
  %544 = phi ptr [ %54, %541 ], [ %53, %542 ]
  %545 = invoke noundef ptr @_ZNK3JPH8RefConstINS_5ShapeEEcvPKS1_Ev(ptr noundef nonnull align 8 dereferenceable(8) %544)
          to label %546 unwind label %578

546:                                              ; preds = %543
  %547 = load i32, ptr %56, align 4, !tbaa !9
  %548 = sitofp i32 %547 to float
  %549 = call float @llvm.fmuladd.f32(float 2.000000e+01, float %548, float -6.000000e+01)
  %550 = load i32, ptr %57, align 4, !tbaa !9
  %551 = sitofp i32 %550 to float
  %552 = call float @llvm.fmuladd.f32(float 5.000000e-01, float %551, float 1.400000e+01)
  invoke void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %59, float noundef %549, float noundef %552, float noundef 0.000000e+00)
          to label %553 unwind label %578

553:                                              ; preds = %546
  %554 = invoke { double, double } @_ZN3JPH4Quat9sIdentityEv()
          to label %555 unwind label %578

555:                                              ; preds = %553
  %556 = getelementptr inbounds %"class.JPH::Quat", ptr %60, i32 0, i32 0
  %557 = getelementptr inbounds %"class.JPH::Vec4", ptr %556, i32 0, i32 0
  %558 = getelementptr inbounds %union.anon.4, ptr %557, i32 0, i32 0
  %559 = getelementptr inbounds { double, double }, ptr %558, i32 0, i32 0
  %560 = extractvalue { double, double } %554, 0
  store double %560, ptr %559, align 16
  %561 = getelementptr inbounds { double, double }, ptr %558, i32 0, i32 1
  %562 = extractvalue { double, double } %554, 1
  store double %562, ptr %561, align 8
  %563 = getelementptr inbounds { double, double }, ptr %59, i32 0, i32 0
  %564 = load double, ptr %563, align 16
  %565 = getelementptr inbounds { double, double }, ptr %59, i32 0, i32 1
  %566 = load double, ptr %565, align 8
  %567 = getelementptr inbounds { double, double }, ptr %60, i32 0, i32 0
  %568 = load double, ptr %567, align 16
  %569 = getelementptr inbounds { double, double }, ptr %60, i32 0, i32 1
  %570 = load double, ptr %569, align 8
  invoke void @_ZN3JPH20BodyCreationSettingsC2EPKNS_5ShapeENS_4Vec3ENS_4QuatENS_11EMotionTypeEt(ptr noundef nonnull align 16 dereferenceable(256) %58, ptr noundef %545, double %564, double %566, double %568, double %570, i8 noundef zeroext 2, i16 noundef zeroext 1)
          to label %571 unwind label %578

571:                                              ; preds = %555
  %572 = invoke i32 @_ZN3JPH13BodyInterface16CreateAndAddBodyERKNS_20BodyCreationSettingsENS_11EActivationE(ptr noundef nonnull align 8 dereferenceable(24) %537, ptr noundef nonnull align 16 dereferenceable(256) %58, i32 noundef 0)
          to label %573 unwind label %582

573:                                              ; preds = %571
  %574 = getelementptr inbounds %"class.JPH::BodyID", ptr %61, i32 0, i32 0
  store i32 %572, ptr %574, align 4
  call void @_ZN3JPH20BodyCreationSettingsD2Ev(ptr noundef nonnull align 16 dereferenceable(256) %58) #11
  call void @llvm.lifetime.end.p0(i64 256, ptr %58) #11
  br label %575

575:                                              ; preds = %573
  %576 = load i32, ptr %57, align 4, !tbaa !9
  %577 = add nsw i32 %576, 1
  store i32 %577, ptr %57, align 4, !tbaa !9
  br label %531, !llvm.loop !26

578:                                              ; preds = %555, %553, %546, %543
  %579 = landingpad { ptr, i32 }
          cleanup
  %580 = extractvalue { ptr, i32 } %579, 0
  store ptr %580, ptr %14, align 8
  %581 = extractvalue { ptr, i32 } %579, 1
  store i32 %581, ptr %15, align 4
  br label %586

582:                                              ; preds = %571
  %583 = landingpad { ptr, i32 }
          cleanup
  %584 = extractvalue { ptr, i32 } %583, 0
  store ptr %584, ptr %14, align 8
  %585 = extractvalue { ptr, i32 } %583, 1
  store i32 %585, ptr %15, align 4
  call void @_ZN3JPH20BodyCreationSettingsD2Ev(ptr noundef nonnull align 16 dereferenceable(256) %58) #11
  br label %586

586:                                              ; preds = %582, %578
  call void @llvm.lifetime.end.p0(i64 256, ptr %58) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr %57) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr %56) #11
  call void @_ZN3JPH8RefConstINS_5ShapeEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %54) #11
  br label %592

587:                                              ; preds = %534
  br label %588

588:                                              ; preds = %587
  %589 = load i32, ptr %56, align 4, !tbaa !9
  %590 = add nsw i32 %589, 1
  store i32 %590, ptr %56, align 4, !tbaa !9
  br label %411, !llvm.loop !27

591:                                              ; preds = %414
  call void @_ZN3JPH8RefConstINS_5ShapeEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %54) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %54) #11
  call void @_ZN3JPH8RefConstINS_5ShapeEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %53) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %53) #11
  call void @_ZN3JPH8RefConstINS_13ShapeSettingsEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %12) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %12) #11
  call void @llvm.lifetime.end.p0(i64 16384, ptr %6) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr %5) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr %4) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr %3) #11
  ret void

592:                                              ; preds = %586, %526, %522
  call void @llvm.lifetime.end.p0(i64 8, ptr %54) #11
  call void @_ZN3JPH8RefConstINS_5ShapeEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %53) #11
  br label %593

593:                                              ; preds = %592, %518, %514
  call void @llvm.lifetime.end.p0(i64 8, ptr %53) #11
  br label %594

594:                                              ; preds = %593, %513, %500, %487, %474, %461, %448, %435
  call void @_ZN3JPH8RefConstINS_13ShapeSettingsEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %12) #11
  br label %595

595:                                              ; preds = %594, %426
  call void @llvm.lifetime.end.p0(i64 8, ptr %12) #11
  call void @llvm.lifetime.end.p0(i64 16384, ptr %6) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr %5) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr %4) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr %3) #11
  br label %596

596:                                              ; preds = %595
  %597 = load ptr, ptr %14, align 8
  %598 = load i32, ptr %15, align 4
  %599 = insertvalue { ptr, i32 } poison, ptr %597, 0
  %600 = insertvalue { ptr, i32 } %599, i32 %598, 1
  resume { ptr, i32 } %600
}

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

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

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

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

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

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

declare void @_ZN3JPH24HeightFieldShapeSettingsC1EPKfNS_4Vec3ES3_jPKhRKNS_5ArrayINS_8RefConstINS_15PhysicsMaterialEEENS_12STLAllocatorIS9_EEEE(ptr noundef nonnull align 16 dereferenceable(208), ptr noundef, double, double, double, double, i32 noundef, ptr noundef, ptr noundef nonnull align 8 dereferenceable(24)) unnamed_addr #2

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"int", !7, i64 0}
!11 = !{!12, !12, i64 0}
!12 = !{!"float", !7, i64 0}
!13 = distinct !{!13, !14}
!14 = !{!"llvm.loop.mustprogress"}
!15 = distinct !{!15, !14}
!16 = distinct !{!16, !14}
!17 = distinct !{!17, !14}
!18 = !{!19, !6, i64 24}
!19 = !{!"_ZTS4Test", !6, i64 8, !6, i64 16, !6, i64 24, !6, i64 32, !6, i64 40, !20, i64 48, !21, i64 56}
!20 = !{!"bool", !7, i64 0}
!21 = !{!"_ZTSSt13unordered_mapIN3JPH6BodyIDENSt7__cxx1112basic_stringIcSt11char_traitsIcENS0_12STLAllocatorIcEEEESt4hashIS1_ESt8equal_toIS1_ESaISt4pairIKS1_S8_EEE", !22, i64 0}
!22 = !{!"_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, !23, i64 8, !24, i64 16, !23, i64 24, !25, i64 32, !6, i64 48}
!23 = !{!"long", !7, i64 0}
!24 = !{!"_ZTSNSt8__detail15_Hash_node_baseE", !6, i64 0}
!25 = !{!"_ZTSNSt8__detail20_Prime_rehash_policyE", !12, i64 0, !23, i64 8}
!26 = distinct !{!26, !14}
!27 = distinct !{!27, !14}


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

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

declare i32 @__gxx_personality_v0(...)

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

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN26ScaledHeightFieldShapeTest10InitializeEv(ptr noundef nonnull align 8 dereferenceable(112) %0) unnamed_addr #1 align 2 personality ptr @__gxx_personality_v0 {
  %2 = alloca [4096 x float], align 16
  %3 = alloca %"class.JPH::RefConst.6", align 8
  %4 = alloca %"class.JPH::Vec3", align 16
  %5 = alloca %"class.JPH::Vec3", align 16
  %6 = alloca %"class.JPH::Array.16", align 8
  %7 = alloca %"class.JPH::BodyCreationSettings", align 16
  %8 = alloca %"class.JPH::Vec3", align 16
  %9 = alloca %"class.JPH::BodyCreationSettings", align 16
  %10 = alloca %"class.JPH::Vec3", align 16
  %11 = alloca %"class.JPH::BodyCreationSettings", align 16
  %12 = alloca %"class.JPH::Vec3", align 16
  %13 = alloca %"class.JPH::BodyCreationSettings", align 16
  %14 = alloca %"class.JPH::Vec3", align 16
  %15 = alloca %"class.JPH::Vec3", align 16
  %16 = alloca %"class.JPH::BodyCreationSettings", align 16
  %17 = alloca %"class.JPH::Vec3", align 16
  %18 = alloca %"class.JPH::Vec3", align 16
  %19 = alloca %"class.JPH::BodyCreationSettings", align 16
  %20 = alloca %"class.JPH::Vec3", align 16
  %21 = alloca %"class.JPH::Vec3", align 16
  %22 = alloca %"class.JPH::BodyCreationSettings", align 16
  %23 = alloca %"class.JPH::Vec3", align 16
  %24 = alloca %"class.JPH::Vec3", align 16
  %25 = alloca %"class.JPH::RefConst", align 8
  %26 = alloca %"class.JPH::RefConst", align 8
  %27 = alloca %"class.JPH::Vec3", align 16
  %28 = alloca %"class.JPH::BodyCreationSettings", align 16
  %29 = alloca %"class.JPH::Vec3", align 16
  %30 = 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 16384, ptr nonnull %2) #11
  br label %.preheader102

.preheader102:                                    ; preds = %1, %36
  %indvars.iv110 = phi i64 [ 0, %1 ], [ %indvars.iv.next111, %36 ]
  %31 = trunc nuw nsw i64 %indvars.iv110 to i32
  %32 = uitofp nneg i32 %31 to float
  %33 = fmul float %32, 2.000000e+00
  %34 = fmul float %33, 1.562500e-02
  %35 = shl nuw nsw i64 %indvars.iv110, 6
  br label %100

36:                                               ; preds = %100
  %indvars.iv.next111 = add nuw nsw i64 %indvars.iv110, 1
  %exitcond113.not = icmp eq i64 %indvars.iv.next111, 64
  br i1 %exitcond113.not, label %vector.body, label %.preheader102, !llvm.loop !5

vector.body:                                      ; preds = %36
  %wide.load = load <4 x float>, ptr %2, align 16, !tbaa !7
  %37 = fadd <4 x float> %wide.load, <float 2.000000e+00, float 2.000000e+00, float 2.000000e+00, float 2.000000e+00>
  store <4 x float> %37, ptr %2, align 16, !tbaa !7
  %38 = getelementptr inbounds i8, ptr %2, i64 16128
  %wide.load124 = load <4 x float>, ptr %38, align 16, !tbaa !7
  %39 = fadd <4 x float> %wide.load124, <float 2.000000e+00, float 2.000000e+00, float 2.000000e+00, float 2.000000e+00>
  store <4 x float> %39, ptr %38, align 16, !tbaa !7
  %40 = getelementptr inbounds i8, ptr %2, i64 16
  %wide.load.1 = load <4 x float>, ptr %40, align 16, !tbaa !7
  %41 = fadd <4 x float> %wide.load.1, <float 2.000000e+00, float 2.000000e+00, float 2.000000e+00, float 2.000000e+00>
  store <4 x float> %41, ptr %40, align 16, !tbaa !7
  %42 = getelementptr inbounds i8, ptr %2, i64 16144
  %wide.load124.1 = load <4 x float>, ptr %42, align 16, !tbaa !7
  %43 = fadd <4 x float> %wide.load124.1, <float 2.000000e+00, float 2.000000e+00, float 2.000000e+00, float 2.000000e+00>
  store <4 x float> %43, ptr %42, align 16, !tbaa !7
  %44 = getelementptr inbounds i8, ptr %2, i64 32
  %wide.load.2 = load <4 x float>, ptr %44, align 16, !tbaa !7
  %45 = fadd <4 x float> %wide.load.2, <float 2.000000e+00, float 2.000000e+00, float 2.000000e+00, float 2.000000e+00>
  store <4 x float> %45, ptr %44, align 16, !tbaa !7
  %46 = getelementptr inbounds i8, ptr %2, i64 16160
  %wide.load124.2 = load <4 x float>, ptr %46, align 16, !tbaa !7
  %47 = fadd <4 x float> %wide.load124.2, <float 2.000000e+00, float 2.000000e+00, float 2.000000e+00, float 2.000000e+00>
  store <4 x float> %47, ptr %46, align 16, !tbaa !7
  %48 = getelementptr inbounds i8, ptr %2, i64 48
  %wide.load.3 = load <4 x float>, ptr %48, align 16, !tbaa !7
  %49 = fadd <4 x float> %wide.load.3, <float 2.000000e+00, float 2.000000e+00, float 2.000000e+00, float 2.000000e+00>
  store <4 x float> %49, ptr %48, align 16, !tbaa !7
  %50 = getelementptr inbounds i8, ptr %2, i64 16176
  %wide.load124.3 = load <4 x float>, ptr %50, align 16, !tbaa !7
  %51 = fadd <4 x float> %wide.load124.3, <float 2.000000e+00, float 2.000000e+00, float 2.000000e+00, float 2.000000e+00>
  store <4 x float> %51, ptr %50, align 16, !tbaa !7
  %52 = getelementptr inbounds i8, ptr %2, i64 64
  %wide.load.4 = load <4 x float>, ptr %52, align 16, !tbaa !7
  %53 = fadd <4 x float> %wide.load.4, <float 2.000000e+00, float 2.000000e+00, float 2.000000e+00, float 2.000000e+00>
  store <4 x float> %53, ptr %52, align 16, !tbaa !7
  %54 = getelementptr inbounds i8, ptr %2, i64 16192
  %wide.load124.4 = load <4 x float>, ptr %54, align 16, !tbaa !7
  %55 = fadd <4 x float> %wide.load124.4, <float 2.000000e+00, float 2.000000e+00, float 2.000000e+00, float 2.000000e+00>
  store <4 x float> %55, ptr %54, align 16, !tbaa !7
  %56 = getelementptr inbounds i8, ptr %2, i64 80
  %wide.load.5 = load <4 x float>, ptr %56, align 16, !tbaa !7
  %57 = fadd <4 x float> %wide.load.5, <float 2.000000e+00, float 2.000000e+00, float 2.000000e+00, float 2.000000e+00>
  store <4 x float> %57, ptr %56, align 16, !tbaa !7
  %58 = getelementptr inbounds i8, ptr %2, i64 16208
  %wide.load124.5 = load <4 x float>, ptr %58, align 16, !tbaa !7
  %59 = fadd <4 x float> %wide.load124.5, <float 2.000000e+00, float 2.000000e+00, float 2.000000e+00, float 2.000000e+00>
  store <4 x float> %59, ptr %58, align 16, !tbaa !7
  %60 = getelementptr inbounds i8, ptr %2, i64 96
  %wide.load.6 = load <4 x float>, ptr %60, align 16, !tbaa !7
  %61 = fadd <4 x float> %wide.load.6, <float 2.000000e+00, float 2.000000e+00, float 2.000000e+00, float 2.000000e+00>
  store <4 x float> %61, ptr %60, align 16, !tbaa !7
  %62 = getelementptr inbounds i8, ptr %2, i64 16224
  %wide.load124.6 = load <4 x float>, ptr %62, align 16, !tbaa !7
  %63 = fadd <4 x float> %wide.load124.6, <float 2.000000e+00, float 2.000000e+00, float 2.000000e+00, float 2.000000e+00>
  store <4 x float> %63, ptr %62, align 16, !tbaa !7
  %64 = getelementptr inbounds i8, ptr %2, i64 112
  %wide.load.7 = load <4 x float>, ptr %64, align 16, !tbaa !7
  %65 = fadd <4 x float> %wide.load.7, <float 2.000000e+00, float 2.000000e+00, float 2.000000e+00, float 2.000000e+00>
  store <4 x float> %65, ptr %64, align 16, !tbaa !7
  %66 = getelementptr inbounds i8, ptr %2, i64 16240
  %wide.load124.7 = load <4 x float>, ptr %66, align 16, !tbaa !7
  %67 = fadd <4 x float> %wide.load124.7, <float 2.000000e+00, float 2.000000e+00, float 2.000000e+00, float 2.000000e+00>
  store <4 x float> %67, ptr %66, align 16, !tbaa !7
  %68 = getelementptr inbounds i8, ptr %2, i64 128
  %wide.load.8 = load <4 x float>, ptr %68, align 16, !tbaa !7
  %69 = fadd <4 x float> %wide.load.8, <float 2.000000e+00, float 2.000000e+00, float 2.000000e+00, float 2.000000e+00>
  store <4 x float> %69, ptr %68, align 16, !tbaa !7
  %70 = getelementptr inbounds i8, ptr %2, i64 16256
  %wide.load124.8 = load <4 x float>, ptr %70, align 16, !tbaa !7
  %71 = fadd <4 x float> %wide.load124.8, <float 2.000000e+00, float 2.000000e+00, float 2.000000e+00, float 2.000000e+00>
  store <4 x float> %71, ptr %70, align 16, !tbaa !7
  %72 = getelementptr inbounds i8, ptr %2, i64 144
  %wide.load.9 = load <4 x float>, ptr %72, align 16, !tbaa !7
  %73 = fadd <4 x float> %wide.load.9, <float 2.000000e+00, float 2.000000e+00, float 2.000000e+00, float 2.000000e+00>
  store <4 x float> %73, ptr %72, align 16, !tbaa !7
  %74 = getelementptr inbounds i8, ptr %2, i64 16272
  %wide.load124.9 = load <4 x float>, ptr %74, align 16, !tbaa !7
  %75 = fadd <4 x float> %wide.load124.9, <float 2.000000e+00, float 2.000000e+00, float 2.000000e+00, float 2.000000e+00>
  store <4 x float> %75, ptr %74, align 16, !tbaa !7
  %76 = getelementptr inbounds i8, ptr %2, i64 160
  %wide.load.10 = load <4 x float>, ptr %76, align 16, !tbaa !7
  %77 = fadd <4 x float> %wide.load.10, <float 2.000000e+00, float 2.000000e+00, float 2.000000e+00, float 2.000000e+00>
  store <4 x float> %77, ptr %76, align 16, !tbaa !7
  %78 = getelementptr inbounds i8, ptr %2, i64 16288
  %wide.load124.10 = load <4 x float>, ptr %78, align 16, !tbaa !7
  %79 = fadd <4 x float> %wide.load124.10, <float 2.000000e+00, float 2.000000e+00, float 2.000000e+00, float 2.000000e+00>
  store <4 x float> %79, ptr %78, align 16, !tbaa !7
  %80 = getelementptr inbounds i8, ptr %2, i64 176
  %wide.load.11 = load <4 x float>, ptr %80, align 16, !tbaa !7
  %81 = fadd <4 x float> %wide.load.11, <float 2.000000e+00, float 2.000000e+00, float 2.000000e+00, float 2.000000e+00>
  store <4 x float> %81, ptr %80, align 16, !tbaa !7
  %82 = getelementptr inbounds i8, ptr %2, i64 16304
  %wide.load124.11 = load <4 x float>, ptr %82, align 16, !tbaa !7
  %83 = fadd <4 x float> %wide.load124.11, <float 2.000000e+00, float 2.000000e+00, float 2.000000e+00, float 2.000000e+00>
  store <4 x float> %83, ptr %82, align 16, !tbaa !7
  %84 = getelementptr inbounds i8, ptr %2, i64 192
  %wide.load.12 = load <4 x float>, ptr %84, align 16, !tbaa !7
  %85 = fadd <4 x float> %wide.load.12, <float 2.000000e+00, float 2.000000e+00, float 2.000000e+00, float 2.000000e+00>
  store <4 x float> %85, ptr %84, align 16, !tbaa !7
  %86 = getelementptr inbounds i8, ptr %2, i64 16320
  %wide.load124.12 = load <4 x float>, ptr %86, align 16, !tbaa !7
  %87 = fadd <4 x float> %wide.load124.12, <float 2.000000e+00, float 2.000000e+00, float 2.000000e+00, float 2.000000e+00>
  store <4 x float> %87, ptr %86, align 16, !tbaa !7
  %88 = getelementptr inbounds i8, ptr %2, i64 208
  %wide.load.13 = load <4 x float>, ptr %88, align 16, !tbaa !7
  %89 = fadd <4 x float> %wide.load.13, <float 2.000000e+00, float 2.000000e+00, float 2.000000e+00, float 2.000000e+00>
  store <4 x float> %89, ptr %88, align 16, !tbaa !7
  %90 = getelementptr inbounds i8, ptr %2, i64 16336
  %wide.load124.13 = load <4 x float>, ptr %90, align 16, !tbaa !7
  %91 = fadd <4 x float> %wide.load124.13, <float 2.000000e+00, float 2.000000e+00, float 2.000000e+00, float 2.000000e+00>
  store <4 x float> %91, ptr %90, align 16, !tbaa !7
  %92 = getelementptr inbounds i8, ptr %2, i64 224
  %wide.load.14 = load <4 x float>, ptr %92, align 16, !tbaa !7
  %93 = fadd <4 x float> %wide.load.14, <float 2.000000e+00, float 2.000000e+00, float 2.000000e+00, float 2.000000e+00>
  store <4 x float> %93, ptr %92, align 16, !tbaa !7
  %94 = getelementptr inbounds i8, ptr %2, i64 16352
  %wide.load124.14 = load <4 x float>, ptr %94, align 16, !tbaa !7
  %95 = fadd <4 x float> %wide.load124.14, <float 2.000000e+00, float 2.000000e+00, float 2.000000e+00, float 2.000000e+00>
  store <4 x float> %95, ptr %94, align 16, !tbaa !7
  %96 = getelementptr inbounds i8, ptr %2, i64 240
  %wide.load.15 = load <4 x float>, ptr %96, align 16, !tbaa !7
  %97 = fadd <4 x float> %wide.load.15, <float 2.000000e+00, float 2.000000e+00, float 2.000000e+00, float 2.000000e+00>
  store <4 x float> %97, ptr %96, align 16, !tbaa !7
  %98 = getelementptr inbounds i8, ptr %2, i64 16368
  %wide.load124.15 = load <4 x float>, ptr %98, align 16, !tbaa !7
  %99 = fadd <4 x float> %wide.load124.15, <float 2.000000e+00, float 2.000000e+00, float 2.000000e+00, float 2.000000e+00>
  store <4 x float> %99, ptr %98, align 16, !tbaa !7
  br label %.preheader100

100:                                              ; preds = %.preheader102, %100
  %indvars.iv = phi i64 [ 0, %.preheader102 ], [ %indvars.iv.next, %100 ]
  %101 = trunc nuw nsw i64 %indvars.iv to i32
  %102 = uitofp nneg i32 %101 to float
  %103 = fmul float %102, 2.000000e+00
  %104 = fmul float %103, 1.562500e-02
  %105 = tail call noundef float @_Z12PerlinNoise3fffiii(float noundef %104, float noundef 0.000000e+00, float noundef %34, i32 noundef 256, i32 noundef 256, i32 noundef 256)
  %106 = fmul float %105, 4.000000e+00
  %107 = add nuw nsw i64 %indvars.iv, %35
  %108 = getelementptr inbounds [4096 x float], ptr %2, i64 0, i64 %107
  store float %106, ptr %108, align 4, !tbaa !7
  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
  %exitcond.not = icmp eq i64 %indvars.iv.next, 64
  br i1 %exitcond.not, label %36, label %100, !llvm.loop !11

109:                                              ; preds = %.preheader100
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %3) #11
  %110 = tail call noundef ptr @_ZN3JPH24HeightFieldShapeSettingsnwEm(i64 noundef 208)
  invoke void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %4, float noundef -8.000000e+00, float noundef 0.000000e+00, float noundef -8.000000e+00)
          to label %127 unwind label %.thread

.preheader100:                                    ; preds = %.preheader100, %vector.body
  %indvars.iv118 = phi i64 [ 1, %vector.body ], [ %indvars.iv.next119.1, %.preheader100 ]
  %111 = shl nuw nsw i64 %indvars.iv118, 6
  %112 = getelementptr inbounds [4096 x float], ptr %2, i64 0, i64 %111
  %113 = load float, ptr %112, align 16, !tbaa !7
  %114 = fadd float %113, 2.000000e+00
  store float %114, ptr %112, align 16, !tbaa !7
  %115 = or disjoint i64 %111, 63
  %116 = getelementptr inbounds [4096 x float], ptr %2, i64 0, i64 %115
  %117 = load float, ptr %116, align 4, !tbaa !7
  %118 = fadd float %117, 2.000000e+00
  store float %118, ptr %116, align 4, !tbaa !7
  %indvars.iv.next119 = shl i64 %indvars.iv118, 6
  %119 = add i64 %indvars.iv.next119, 64
  %120 = getelementptr inbounds [4096 x float], ptr %2, i64 0, i64 %119
  %121 = load float, ptr %120, align 16, !tbaa !7
  %122 = fadd float %121, 2.000000e+00
  store float %122, ptr %120, align 16, !tbaa !7
  %123 = or disjoint i64 %119, 63
  %124 = getelementptr inbounds [4096 x float], ptr %2, i64 0, i64 %123
  %125 = load float, ptr %124, align 4, !tbaa !7
  %126 = fadd float %125, 2.000000e+00
  store float %126, ptr %124, align 4, !tbaa !7
  %indvars.iv.next119.1 = add nuw nsw i64 %indvars.iv118, 2
  %exitcond121.not.1 = icmp eq i64 %indvars.iv.next119.1, 63
  br i1 %exitcond121.not.1, label %109, label %.preheader100, !llvm.loop !12

127:                                              ; preds = %109
  invoke void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %5, float noundef 2.500000e-01, float noundef 1.000000e+00, float noundef 2.500000e-01)
          to label %128 unwind label %.thread

128:                                              ; preds = %127
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %6) #11
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %6, i8 0, i64 24, i1 false)
  call void @_ZN3JPH5ArrayINS_8RefConstINS_15PhysicsMaterialEEENS_12STLAllocatorIS3_EEEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %6) #11
  %129 = load double, ptr %4, align 16
  %130 = getelementptr inbounds i8, ptr %4, i64 8
  %131 = load double, ptr %130, align 8
  %132 = load double, ptr %5, align 16
  %133 = getelementptr inbounds i8, ptr %5, i64 8
  %134 = load double, ptr %133, align 8
  invoke void @_ZN3JPH24HeightFieldShapeSettingsC1EPKfNS_4Vec3ES3_jPKhRKNS_5ArrayINS_8RefConstINS_15PhysicsMaterialEEENS_12STLAllocatorIS9_EEEE(ptr noundef nonnull align 16 dereferenceable(208) %110, ptr noundef nonnull %2, double %129, double %131, double %132, double %134, i32 noundef 64, ptr noundef null, ptr noundef nonnull align 8 dereferenceable(24) %6)
          to label %136 unwind label %.thread97

.thread97:                                        ; preds = %128
  %135 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3JPH5ArrayINS_8RefConstINS_15PhysicsMaterialEEENS_12STLAllocatorIS3_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %6) #11
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %6) #11
  br label %292

136:                                              ; preds = %128
  invoke void @_ZN3JPH8RefConstINS_13ShapeSettingsEEC2EPKS1_(ptr noundef nonnull align 8 dereferenceable(8) %3, ptr noundef nonnull %110)
          to label %137 unwind label %290

137:                                              ; preds = %136
  call void @_ZN3JPH5ArrayINS_8RefConstINS_15PhysicsMaterialEEENS_12STLAllocatorIS3_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %6) #11
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %6) #11
  %138 = getelementptr inbounds i8, ptr %0, i64 24
  %139 = load ptr, ptr %138, align 8, !tbaa !13
  call void @llvm.lifetime.start.p0(i64 256, ptr nonnull %7) #11
  %140 = call noundef ptr @_ZNK3JPH8RefConstINS_13ShapeSettingsEEcvPKS1_Ev(ptr noundef nonnull align 8 dereferenceable(8) %3)
  invoke void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %8, float noundef -6.000000e+01, float noundef 1.000000e+01, float noundef 0.000000e+00)
          to label %141 unwind label %293

141:                                              ; preds = %137
  %142 = invoke { double, double } @_ZN3JPH4Quat9sIdentityEv()
          to label %143 unwind label %293

143:                                              ; preds = %141
  %144 = extractvalue { double, double } %142, 0
  %145 = extractvalue { double, double } %142, 1
  %146 = load double, ptr %8, align 16
  %147 = getelementptr inbounds i8, ptr %8, i64 8
  %148 = load double, ptr %147, align 8
  invoke void @_ZN3JPH20BodyCreationSettingsC2EPKNS_13ShapeSettingsENS_4Vec3ENS_4QuatENS_11EMotionTypeEt(ptr noundef nonnull align 16 dereferenceable(256) %7, ptr noundef %140, double %146, double %148, double %144, double %145, i8 noundef zeroext 0, i16 noundef zeroext 0)
          to label %149 unwind label %293

149:                                              ; preds = %143
  %150 = invoke i32 @_ZN3JPH13BodyInterface16CreateAndAddBodyERKNS_20BodyCreationSettingsENS_11EActivationE(ptr noundef nonnull align 8 dereferenceable(24) %139, ptr noundef nonnull align 16 dereferenceable(256) %7, i32 noundef 1)
          to label %151 unwind label %295

151:                                              ; preds = %149
  call void @_ZN3JPH20BodyCreationSettingsD2Ev(ptr noundef nonnull align 16 dereferenceable(256) %7) #11
  call void @llvm.lifetime.end.p0(i64 256, ptr nonnull %7) #11
  %152 = load ptr, ptr %138, align 8, !tbaa !13
  call void @llvm.lifetime.start.p0(i64 256, ptr nonnull %9) #11
  %153 = invoke noundef ptr @_ZN3JPH19ScaledShapeSettingsnwEm(i64 noundef 96)
          to label %154 unwind label %298

154:                                              ; preds = %151
  %155 = call noundef ptr @_ZNK3JPH8RefConstINS_13ShapeSettingsEEcvPKS1_Ev(ptr noundef nonnull align 8 dereferenceable(8) %3)
  %156 = invoke { double, double } @_ZN3JPH4Vec310sReplicateEf(float noundef 5.000000e-01)
          to label %157 unwind label %300

157:                                              ; preds = %154
  %158 = extractvalue { double, double } %156, 0
  %159 = extractvalue { double, double } %156, 1
  invoke void @_ZN3JPH19ScaledShapeSettingsC2EPKNS_13ShapeSettingsENS_4Vec3E(ptr noundef nonnull align 16 dereferenceable(96) %153, ptr noundef %155, double %158, double %159)
          to label %160 unwind label %300

160:                                              ; preds = %157
  invoke void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %10, float noundef -4.000000e+01, float noundef 1.000000e+01, float noundef 0.000000e+00)
          to label %161 unwind label %298

161:                                              ; preds = %160
  %162 = invoke { double, double } @_ZN3JPH4Quat9sIdentityEv()
          to label %163 unwind label %298

163:                                              ; preds = %161
  %164 = extractvalue { double, double } %162, 0
  %165 = extractvalue { double, double } %162, 1
  %166 = load double, ptr %10, align 16
  %167 = getelementptr inbounds i8, ptr %10, i64 8
  %168 = load double, ptr %167, align 8
  invoke void @_ZN3JPH20BodyCreationSettingsC2EPKNS_13ShapeSettingsENS_4Vec3ENS_4QuatENS_11EMotionTypeEt(ptr noundef nonnull align 16 dereferenceable(256) %9, ptr noundef nonnull %153, double %166, double %168, double %164, double %165, i8 noundef zeroext 0, i16 noundef zeroext 0)
          to label %169 unwind label %298

169:                                              ; preds = %163
  %170 = invoke i32 @_ZN3JPH13BodyInterface16CreateAndAddBodyERKNS_20BodyCreationSettingsENS_11EActivationE(ptr noundef nonnull align 8 dereferenceable(24) %152, ptr noundef nonnull align 16 dereferenceable(256) %9, i32 noundef 1)
          to label %171 unwind label %302

171:                                              ; preds = %169
  call void @_ZN3JPH20BodyCreationSettingsD2Ev(ptr noundef nonnull align 16 dereferenceable(256) %9) #11
  call void @llvm.lifetime.end.p0(i64 256, ptr nonnull %9) #11
  %172 = load ptr, ptr %138, align 8, !tbaa !13
  call void @llvm.lifetime.start.p0(i64 256, ptr nonnull %11) #11
  %173 = invoke noundef ptr @_ZN3JPH19ScaledShapeSettingsnwEm(i64 noundef 96)
          to label %174 unwind label %305

174:                                              ; preds = %171
  %175 = call noundef ptr @_ZNK3JPH8RefConstINS_13ShapeSettingsEEcvPKS1_Ev(ptr noundef nonnull align 8 dereferenceable(8) %3)
  %176 = invoke { double, double } @_ZN3JPH4Vec310sReplicateEf(float noundef 1.500000e+00)
          to label %177 unwind label %307

177:                                              ; preds = %174
  %178 = extractvalue { double, double } %176, 0
  %179 = extractvalue { double, double } %176, 1
  invoke void @_ZN3JPH19ScaledShapeSettingsC2EPKNS_13ShapeSettingsENS_4Vec3E(ptr noundef nonnull align 16 dereferenceable(96) %173, ptr noundef %175, double %178, double %179)
          to label %180 unwind label %307

180:                                              ; preds = %177
  invoke void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %12, float noundef -2.000000e+01, float noundef 1.000000e+01, float noundef 0.000000e+00)
          to label %181 unwind label %305

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

183:                                              ; preds = %181
  %184 = extractvalue { double, double } %182, 0
  %185 = extractvalue { double, double } %182, 1
  %186 = load double, ptr %12, align 16
  %187 = getelementptr inbounds i8, ptr %12, i64 8
  %188 = load double, ptr %187, align 8
  invoke void @_ZN3JPH20BodyCreationSettingsC2EPKNS_13ShapeSettingsENS_4Vec3ENS_4QuatENS_11EMotionTypeEt(ptr noundef nonnull align 16 dereferenceable(256) %11, ptr noundef nonnull %173, double %186, double %188, double %184, double %185, i8 noundef zeroext 0, i16 noundef zeroext 0)
          to label %189 unwind label %305

189:                                              ; preds = %183
  %190 = invoke i32 @_ZN3JPH13BodyInterface16CreateAndAddBodyERKNS_20BodyCreationSettingsENS_11EActivationE(ptr noundef nonnull align 8 dereferenceable(24) %172, ptr noundef nonnull align 16 dereferenceable(256) %11, i32 noundef 1)
          to label %191 unwind label %309

191:                                              ; preds = %189
  call void @_ZN3JPH20BodyCreationSettingsD2Ev(ptr noundef nonnull align 16 dereferenceable(256) %11) #11
  call void @llvm.lifetime.end.p0(i64 256, ptr nonnull %11) #11
  %192 = load ptr, ptr %138, align 8, !tbaa !13
  call void @llvm.lifetime.start.p0(i64 256, ptr nonnull %13) #11
  %193 = invoke noundef ptr @_ZN3JPH19ScaledShapeSettingsnwEm(i64 noundef 96)
          to label %194 unwind label %312

194:                                              ; preds = %191
  %195 = call noundef ptr @_ZNK3JPH8RefConstINS_13ShapeSettingsEEcvPKS1_Ev(ptr noundef nonnull align 8 dereferenceable(8) %3)
  invoke void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %14, float noundef 5.000000e-01, float noundef 1.000000e+00, float noundef 1.500000e+00)
          to label %196 unwind label %314

196:                                              ; preds = %194
  %197 = load double, ptr %14, align 16
  %198 = getelementptr inbounds i8, ptr %14, i64 8
  %199 = load double, ptr %198, align 8
  invoke void @_ZN3JPH19ScaledShapeSettingsC2EPKNS_13ShapeSettingsENS_4Vec3E(ptr noundef nonnull align 16 dereferenceable(96) %193, ptr noundef %195, double %197, double %199)
          to label %200 unwind label %314

200:                                              ; preds = %196
  invoke void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %15, float noundef 0.000000e+00, float noundef 1.000000e+01, float noundef 0.000000e+00)
          to label %201 unwind label %312

201:                                              ; preds = %200
  %202 = invoke { double, double } @_ZN3JPH4Quat9sIdentityEv()
          to label %203 unwind label %312

203:                                              ; preds = %201
  %204 = extractvalue { double, double } %202, 0
  %205 = extractvalue { double, double } %202, 1
  %206 = load double, ptr %15, align 16
  %207 = getelementptr inbounds i8, ptr %15, i64 8
  %208 = load double, ptr %207, align 8
  invoke void @_ZN3JPH20BodyCreationSettingsC2EPKNS_13ShapeSettingsENS_4Vec3ENS_4QuatENS_11EMotionTypeEt(ptr noundef nonnull align 16 dereferenceable(256) %13, ptr noundef nonnull %193, double %206, double %208, double %204, double %205, i8 noundef zeroext 0, i16 noundef zeroext 0)
          to label %209 unwind label %312

209:                                              ; preds = %203
  %210 = invoke i32 @_ZN3JPH13BodyInterface16CreateAndAddBodyERKNS_20BodyCreationSettingsENS_11EActivationE(ptr noundef nonnull align 8 dereferenceable(24) %192, ptr noundef nonnull align 16 dereferenceable(256) %13, i32 noundef 1)
          to label %211 unwind label %316

211:                                              ; preds = %209
  call void @_ZN3JPH20BodyCreationSettingsD2Ev(ptr noundef nonnull align 16 dereferenceable(256) %13) #11
  call void @llvm.lifetime.end.p0(i64 256, ptr nonnull %13) #11
  %212 = load ptr, ptr %138, align 8, !tbaa !13
  call void @llvm.lifetime.start.p0(i64 256, ptr nonnull %16) #11
  %213 = invoke noundef ptr @_ZN3JPH19ScaledShapeSettingsnwEm(i64 noundef 96)
          to label %214 unwind label %319

214:                                              ; preds = %211
  %215 = call noundef ptr @_ZNK3JPH8RefConstINS_13ShapeSettingsEEcvPKS1_Ev(ptr noundef nonnull align 8 dereferenceable(8) %3)
  invoke void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %17, float noundef -5.000000e-01, float noundef 1.000000e+00, float noundef -1.500000e+00)
          to label %216 unwind label %321

216:                                              ; preds = %214
  %217 = load double, ptr %17, align 16
  %218 = getelementptr inbounds i8, ptr %17, i64 8
  %219 = load double, ptr %218, align 8
  invoke void @_ZN3JPH19ScaledShapeSettingsC2EPKNS_13ShapeSettingsENS_4Vec3E(ptr noundef nonnull align 16 dereferenceable(96) %213, ptr noundef %215, double %217, double %219)
          to label %220 unwind label %321

220:                                              ; preds = %216
  invoke void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %18, float noundef 2.000000e+01, float noundef 1.000000e+01, float noundef 0.000000e+00)
          to label %221 unwind label %319

221:                                              ; preds = %220
  %222 = invoke { double, double } @_ZN3JPH4Quat9sIdentityEv()
          to label %223 unwind label %319

223:                                              ; preds = %221
  %224 = extractvalue { double, double } %222, 0
  %225 = extractvalue { double, double } %222, 1
  %226 = load double, ptr %18, align 16
  %227 = getelementptr inbounds i8, ptr %18, i64 8
  %228 = load double, ptr %227, align 8
  invoke void @_ZN3JPH20BodyCreationSettingsC2EPKNS_13ShapeSettingsENS_4Vec3ENS_4QuatENS_11EMotionTypeEt(ptr noundef nonnull align 16 dereferenceable(256) %16, ptr noundef nonnull %213, double %226, double %228, double %224, double %225, i8 noundef zeroext 0, i16 noundef zeroext 0)
          to label %229 unwind label %319

229:                                              ; preds = %223
  %230 = invoke i32 @_ZN3JPH13BodyInterface16CreateAndAddBodyERKNS_20BodyCreationSettingsENS_11EActivationE(ptr noundef nonnull align 8 dereferenceable(24) %212, ptr noundef nonnull align 16 dereferenceable(256) %16, i32 noundef 1)
          to label %231 unwind label %323

231:                                              ; preds = %229
  call void @_ZN3JPH20BodyCreationSettingsD2Ev(ptr noundef nonnull align 16 dereferenceable(256) %16) #11
  call void @llvm.lifetime.end.p0(i64 256, ptr nonnull %16) #11
  %232 = load ptr, ptr %138, align 8, !tbaa !13
  call void @llvm.lifetime.start.p0(i64 256, ptr nonnull %19) #11
  %233 = invoke noundef ptr @_ZN3JPH19ScaledShapeSettingsnwEm(i64 noundef 96)
          to label %234 unwind label %326

234:                                              ; preds = %231
  %235 = call noundef ptr @_ZNK3JPH8RefConstINS_13ShapeSettingsEEcvPKS1_Ev(ptr noundef nonnull align 8 dereferenceable(8) %3)
  invoke void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %20, float noundef -5.000000e-01, float noundef 1.000000e+00, float noundef 1.500000e+00)
          to label %236 unwind label %328

236:                                              ; preds = %234
  %237 = load double, ptr %20, align 16
  %238 = getelementptr inbounds i8, ptr %20, i64 8
  %239 = load double, ptr %238, align 8
  invoke void @_ZN3JPH19ScaledShapeSettingsC2EPKNS_13ShapeSettingsENS_4Vec3E(ptr noundef nonnull align 16 dereferenceable(96) %233, ptr noundef %235, double %237, double %239)
          to label %240 unwind label %328

240:                                              ; preds = %236
  invoke void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %21, float noundef 4.000000e+01, float noundef 1.000000e+01, float noundef 0.000000e+00)
          to label %241 unwind label %326

241:                                              ; preds = %240
  %242 = invoke { double, double } @_ZN3JPH4Quat9sIdentityEv()
          to label %243 unwind label %326

243:                                              ; preds = %241
  %244 = extractvalue { double, double } %242, 0
  %245 = extractvalue { double, double } %242, 1
  %246 = load double, ptr %21, align 16
  %247 = getelementptr inbounds i8, ptr %21, i64 8
  %248 = load double, ptr %247, align 8
  invoke void @_ZN3JPH20BodyCreationSettingsC2EPKNS_13ShapeSettingsENS_4Vec3ENS_4QuatENS_11EMotionTypeEt(ptr noundef nonnull align 16 dereferenceable(256) %19, ptr noundef nonnull %233, double %246, double %248, double %244, double %245, i8 noundef zeroext 0, i16 noundef zeroext 0)
          to label %249 unwind label %326

249:                                              ; preds = %243
  %250 = invoke i32 @_ZN3JPH13BodyInterface16CreateAndAddBodyERKNS_20BodyCreationSettingsENS_11EActivationE(ptr noundef nonnull align 8 dereferenceable(24) %232, ptr noundef nonnull align 16 dereferenceable(256) %19, i32 noundef 1)
          to label %251 unwind label %330

251:                                              ; preds = %249
  call void @_ZN3JPH20BodyCreationSettingsD2Ev(ptr noundef nonnull align 16 dereferenceable(256) %19) #11
  call void @llvm.lifetime.end.p0(i64 256, ptr nonnull %19) #11
  %252 = load ptr, ptr %138, align 8, !tbaa !13
  call void @llvm.lifetime.start.p0(i64 256, ptr nonnull %22) #11
  %253 = invoke noundef ptr @_ZN3JPH19ScaledShapeSettingsnwEm(i64 noundef 96)
          to label %254 unwind label %333

254:                                              ; preds = %251
  %255 = call noundef ptr @_ZNK3JPH8RefConstINS_13ShapeSettingsEEcvPKS1_Ev(ptr noundef nonnull align 8 dereferenceable(8) %3)
  invoke void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %23, float noundef 5.000000e-01, float noundef -1.000000e+00, float noundef 1.500000e+00)
          to label %256 unwind label %335

256:                                              ; preds = %254
  %257 = load double, ptr %23, align 16
  %258 = getelementptr inbounds i8, ptr %23, i64 8
  %259 = load double, ptr %258, align 8
  invoke void @_ZN3JPH19ScaledShapeSettingsC2EPKNS_13ShapeSettingsENS_4Vec3E(ptr noundef nonnull align 16 dereferenceable(96) %253, ptr noundef %255, double %257, double %259)
          to label %260 unwind label %335

260:                                              ; preds = %256
  invoke void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %24, float noundef 6.000000e+01, float noundef 1.000000e+01, float noundef 0.000000e+00)
          to label %261 unwind label %333

261:                                              ; preds = %260
  %262 = invoke { double, double } @_ZN3JPH4Quat9sIdentityEv()
          to label %263 unwind label %333

263:                                              ; preds = %261
  %264 = extractvalue { double, double } %262, 0
  %265 = extractvalue { double, double } %262, 1
  %266 = load double, ptr %24, align 16
  %267 = getelementptr inbounds i8, ptr %24, i64 8
  %268 = load double, ptr %267, align 8
  invoke void @_ZN3JPH20BodyCreationSettingsC2EPKNS_13ShapeSettingsENS_4Vec3ENS_4QuatENS_11EMotionTypeEt(ptr noundef nonnull align 16 dereferenceable(256) %22, ptr noundef nonnull %253, double %266, double %268, double %264, double %265, i8 noundef zeroext 0, i16 noundef zeroext 0)
          to label %269 unwind label %333

269:                                              ; preds = %263
  %270 = invoke i32 @_ZN3JPH13BodyInterface16CreateAndAddBodyERKNS_20BodyCreationSettingsENS_11EActivationE(ptr noundef nonnull align 8 dereferenceable(24) %252, ptr noundef nonnull align 16 dereferenceable(256) %22, i32 noundef 1)
          to label %271 unwind label %337

271:                                              ; preds = %269
  call void @_ZN3JPH20BodyCreationSettingsD2Ev(ptr noundef nonnull align 16 dereferenceable(256) %22) #11
  call void @llvm.lifetime.end.p0(i64 256, ptr nonnull %22) #11
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %25) #11
  %272 = invoke noundef ptr @_ZN3JPH11SphereShapenwEm(i64 noundef 48)
          to label %273 unwind label %340

273:                                              ; preds = %271
  invoke void @_ZN3JPH11SphereShapeC2EfPKNS_15PhysicsMaterialE(ptr noundef nonnull align 8 dereferenceable(48) %272, float noundef 0x3FC99999A0000000, ptr noundef null)
          to label %274 unwind label %342

274:                                              ; preds = %273
  invoke void @_ZN3JPH8RefConstINS_5ShapeEEC2EPKS1_(ptr noundef nonnull align 8 dereferenceable(8) %25, ptr noundef nonnull %272)
          to label %275 unwind label %340

275:                                              ; preds = %274
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %26) #11
  %276 = invoke noundef ptr @_ZN3JPH8BoxShapenwEm(i64 noundef 80)
          to label %277 unwind label %344

277:                                              ; preds = %275
  invoke void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %27, float noundef 0x3FC99999A0000000, float noundef 0x3FC99999A0000000, float noundef 0x3FD99999A0000000)
          to label %278 unwind label %346

278:                                              ; preds = %277
  %279 = load double, ptr %27, align 16
  %280 = getelementptr inbounds i8, ptr %27, i64 8
  %281 = load double, ptr %280, align 8
  invoke void @_ZN3JPH8BoxShapeC2ENS_4Vec3EfPKNS_15PhysicsMaterialE(ptr noundef nonnull align 16 dereferenceable(80) %276, double %279, double %281, float noundef 0x3F847AE140000000, ptr noundef null)
          to label %282 unwind label %346

282:                                              ; preds = %278
  invoke void @_ZN3JPH8RefConstINS_5ShapeEEC2EPKS1_(ptr noundef nonnull align 8 dereferenceable(8) %26, ptr noundef nonnull %276)
          to label %.preheader99 unwind label %344

.preheader99:                                     ; preds = %282
  %283 = getelementptr inbounds i8, ptr %29, i64 8
  br label %.preheader

.preheader:                                       ; preds = %.preheader99, %405
  %.054108 = phi i32 [ 0, %.preheader99 ], [ %406, %405 ]
  %284 = uitofp nneg i32 %.054108 to float
  %285 = call float @llvm.fmuladd.f32(float %284, float 2.000000e+01, float -6.000000e+01)
  %286 = load ptr, ptr %138, align 8, !tbaa !13
  call void @llvm.lifetime.start.p0(i64 256, ptr nonnull %28) #11
  %287 = call noundef ptr @_ZNK3JPH8RefConstINS_5ShapeEEcvPKS1_Ev(ptr noundef nonnull align 8 dereferenceable(8) %25)
  invoke void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %29, float noundef %285, float noundef 1.400000e+01, float noundef 0.000000e+00)
          to label %348 unwind label %407

288:                                              ; preds = %405
  call void @_ZN3JPH8RefConstINS_5ShapeEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %26) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %26) #11
  call void @_ZN3JPH8RefConstINS_5ShapeEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %25) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %25) #11
  call void @_ZN3JPH8RefConstINS_13ShapeSettingsEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %3) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %3) #11
  call void @llvm.lifetime.end.p0(i64 16384, ptr nonnull %2) #11
  ret void

.thread:                                          ; preds = %109, %127
  %289 = landingpad { ptr, i32 }
          cleanup
  br label %292

290:                                              ; preds = %136
  %291 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3JPH5ArrayINS_8RefConstINS_15PhysicsMaterialEEENS_12STLAllocatorIS3_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %6) #11
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %6) #11
  br label %415

292:                                              ; preds = %.thread97, %.thread
  %.pn96 = phi { ptr, i32 } [ %289, %.thread ], [ %135, %.thread97 ]
  call void @_ZN3JPH24HeightFieldShapeSettingsdlEPv(ptr noundef %110) #11
  br label %415

293:                                              ; preds = %143, %141, %137
  %294 = landingpad { ptr, i32 }
          cleanup
  br label %297

295:                                              ; preds = %149
  %296 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3JPH20BodyCreationSettingsD2Ev(ptr noundef nonnull align 16 dereferenceable(256) %7) #11
  br label %297

297:                                              ; preds = %295, %293
  %.pn74 = phi { ptr, i32 } [ %296, %295 ], [ %294, %293 ]
  call void @llvm.lifetime.end.p0(i64 256, ptr nonnull %7) #11
  br label %414

298:                                              ; preds = %163, %161, %160, %151
  %299 = landingpad { ptr, i32 }
          cleanup
  br label %304

300:                                              ; preds = %157, %154
  %301 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3JPH19ScaledShapeSettingsdlEPv(ptr noundef %153) #11
  br label %304

302:                                              ; preds = %169
  %303 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3JPH20BodyCreationSettingsD2Ev(ptr noundef nonnull align 16 dereferenceable(256) %9) #11
  br label %304

304:                                              ; preds = %302, %300, %298
  %.pn76 = phi { ptr, i32 } [ %303, %302 ], [ %299, %298 ], [ %301, %300 ]
  call void @llvm.lifetime.end.p0(i64 256, ptr nonnull %9) #11
  br label %414

305:                                              ; preds = %183, %181, %180, %171
  %306 = landingpad { ptr, i32 }
          cleanup
  br label %311

307:                                              ; preds = %177, %174
  %308 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3JPH19ScaledShapeSettingsdlEPv(ptr noundef %173) #11
  br label %311

309:                                              ; preds = %189
  %310 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3JPH20BodyCreationSettingsD2Ev(ptr noundef nonnull align 16 dereferenceable(256) %11) #11
  br label %311

311:                                              ; preds = %309, %307, %305
  %.pn78 = phi { ptr, i32 } [ %310, %309 ], [ %306, %305 ], [ %308, %307 ]
  call void @llvm.lifetime.end.p0(i64 256, ptr nonnull %11) #11
  br label %414

312:                                              ; preds = %203, %201, %200, %191
  %313 = landingpad { ptr, i32 }
          cleanup
  br label %318

314:                                              ; preds = %196, %194
  %315 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3JPH19ScaledShapeSettingsdlEPv(ptr noundef %193) #11
  br label %318

316:                                              ; preds = %209
  %317 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3JPH20BodyCreationSettingsD2Ev(ptr noundef nonnull align 16 dereferenceable(256) %13) #11
  br label %318

318:                                              ; preds = %316, %314, %312
  %.pn80 = phi { ptr, i32 } [ %317, %316 ], [ %313, %312 ], [ %315, %314 ]
  call void @llvm.lifetime.end.p0(i64 256, ptr nonnull %13) #11
  br label %414

319:                                              ; preds = %223, %221, %220, %211
  %320 = landingpad { ptr, i32 }
          cleanup
  br label %325

321:                                              ; preds = %216, %214
  %322 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3JPH19ScaledShapeSettingsdlEPv(ptr noundef %213) #11
  br label %325

323:                                              ; preds = %229
  %324 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3JPH20BodyCreationSettingsD2Ev(ptr noundef nonnull align 16 dereferenceable(256) %16) #11
  br label %325

325:                                              ; preds = %323, %321, %319
  %.pn82 = phi { ptr, i32 } [ %324, %323 ], [ %320, %319 ], [ %322, %321 ]
  call void @llvm.lifetime.end.p0(i64 256, ptr nonnull %16) #11
  br label %414

326:                                              ; preds = %243, %241, %240, %231
  %327 = landingpad { ptr, i32 }
          cleanup
  br label %332

328:                                              ; preds = %236, %234
  %329 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3JPH19ScaledShapeSettingsdlEPv(ptr noundef %233) #11
  br label %332

330:                                              ; preds = %249
  %331 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3JPH20BodyCreationSettingsD2Ev(ptr noundef nonnull align 16 dereferenceable(256) %19) #11
  br label %332

332:                                              ; preds = %330, %328, %326
  %.pn84 = phi { ptr, i32 } [ %331, %330 ], [ %327, %326 ], [ %329, %328 ]
  call void @llvm.lifetime.end.p0(i64 256, ptr nonnull %19) #11
  br label %414

333:                                              ; preds = %263, %261, %260, %251
  %334 = landingpad { ptr, i32 }
          cleanup
  br label %339

335:                                              ; preds = %256, %254
  %336 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3JPH19ScaledShapeSettingsdlEPv(ptr noundef %253) #11
  br label %339

337:                                              ; preds = %269
  %338 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3JPH20BodyCreationSettingsD2Ev(ptr noundef nonnull align 16 dereferenceable(256) %22) #11
  br label %339

339:                                              ; preds = %337, %335, %333
  %.pn86 = phi { ptr, i32 } [ %338, %337 ], [ %334, %333 ], [ %336, %335 ]
  call void @llvm.lifetime.end.p0(i64 256, ptr nonnull %22) #11
  br label %414

340:                                              ; preds = %274, %271
  %341 = landingpad { ptr, i32 }
          cleanup
  br label %413

342:                                              ; preds = %273
  %343 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3JPH11SphereShapedlEPv(ptr noundef %272) #11
  br label %413

344:                                              ; preds = %282, %275
  %345 = landingpad { ptr, i32 }
          cleanup
  br label %412

346:                                              ; preds = %278, %277
  %347 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3JPH8BoxShapedlEPv(ptr noundef %276) #11
  br label %412

348:                                              ; preds = %.preheader
  %349 = invoke { double, double } @_ZN3JPH4Quat9sIdentityEv()
          to label %350 unwind label %407

350:                                              ; preds = %348
  %351 = extractvalue { double, double } %349, 0
  %352 = extractvalue { double, double } %349, 1
  %353 = load double, ptr %29, align 16
  %354 = load double, ptr %283, align 8
  invoke void @_ZN3JPH20BodyCreationSettingsC2EPKNS_5ShapeENS_4Vec3ENS_4QuatENS_11EMotionTypeEt(ptr noundef nonnull align 16 dereferenceable(256) %28, ptr noundef %287, double %353, double %354, double %351, double %352, i8 noundef zeroext 2, i16 noundef zeroext 1)
          to label %355 unwind label %407

355:                                              ; preds = %350
  %356 = invoke i32 @_ZN3JPH13BodyInterface16CreateAndAddBodyERKNS_20BodyCreationSettingsENS_11EActivationE(ptr noundef nonnull align 8 dereferenceable(24) %286, ptr noundef nonnull align 16 dereferenceable(256) %28, i32 noundef 0)
          to label %357 unwind label %409

357:                                              ; preds = %355
  call void @_ZN3JPH20BodyCreationSettingsD2Ev(ptr noundef nonnull align 16 dereferenceable(256) %28) #11
  call void @llvm.lifetime.end.p0(i64 256, ptr nonnull %28) #11
  %358 = load ptr, ptr %138, align 8, !tbaa !13
  call void @llvm.lifetime.start.p0(i64 256, ptr nonnull %28) #11
  %359 = call noundef ptr @_ZNK3JPH8RefConstINS_5ShapeEEcvPKS1_Ev(ptr noundef nonnull align 8 dereferenceable(8) %26)
  invoke void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %29, float noundef %285, float noundef 1.450000e+01, float noundef 0.000000e+00)
          to label %360 unwind label %407

360:                                              ; preds = %357
  %361 = invoke { double, double } @_ZN3JPH4Quat9sIdentityEv()
          to label %362 unwind label %407

362:                                              ; preds = %360
  %363 = extractvalue { double, double } %361, 0
  %364 = extractvalue { double, double } %361, 1
  %365 = load double, ptr %29, align 16
  %366 = load double, ptr %283, align 8
  invoke void @_ZN3JPH20BodyCreationSettingsC2EPKNS_5ShapeENS_4Vec3ENS_4QuatENS_11EMotionTypeEt(ptr noundef nonnull align 16 dereferenceable(256) %28, ptr noundef %359, double %365, double %366, double %363, double %364, i8 noundef zeroext 2, i16 noundef zeroext 1)
          to label %367 unwind label %407

367:                                              ; preds = %362
  %368 = invoke i32 @_ZN3JPH13BodyInterface16CreateAndAddBodyERKNS_20BodyCreationSettingsENS_11EActivationE(ptr noundef nonnull align 8 dereferenceable(24) %358, ptr noundef nonnull align 16 dereferenceable(256) %28, i32 noundef 0)
          to label %369 unwind label %409

369:                                              ; preds = %367
  call void @_ZN3JPH20BodyCreationSettingsD2Ev(ptr noundef nonnull align 16 dereferenceable(256) %28) #11
  call void @llvm.lifetime.end.p0(i64 256, ptr nonnull %28) #11
  %370 = load ptr, ptr %138, align 8, !tbaa !13
  call void @llvm.lifetime.start.p0(i64 256, ptr nonnull %28) #11
  %371 = call noundef ptr @_ZNK3JPH8RefConstINS_5ShapeEEcvPKS1_Ev(ptr noundef nonnull align 8 dereferenceable(8) %25)
  invoke void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %29, float noundef %285, float noundef 1.500000e+01, float noundef 0.000000e+00)
          to label %372 unwind label %407

372:                                              ; preds = %369
  %373 = invoke { double, double } @_ZN3JPH4Quat9sIdentityEv()
          to label %374 unwind label %407

374:                                              ; preds = %372
  %375 = extractvalue { double, double } %373, 0
  %376 = extractvalue { double, double } %373, 1
  %377 = load double, ptr %29, align 16
  %378 = load double, ptr %283, align 8
  invoke void @_ZN3JPH20BodyCreationSettingsC2EPKNS_5ShapeENS_4Vec3ENS_4QuatENS_11EMotionTypeEt(ptr noundef nonnull align 16 dereferenceable(256) %28, ptr noundef %371, double %377, double %378, double %375, double %376, i8 noundef zeroext 2, i16 noundef zeroext 1)
          to label %379 unwind label %407

379:                                              ; preds = %374
  %380 = invoke i32 @_ZN3JPH13BodyInterface16CreateAndAddBodyERKNS_20BodyCreationSettingsENS_11EActivationE(ptr noundef nonnull align 8 dereferenceable(24) %370, ptr noundef nonnull align 16 dereferenceable(256) %28, i32 noundef 0)
          to label %381 unwind label %409

381:                                              ; preds = %379
  call void @_ZN3JPH20BodyCreationSettingsD2Ev(ptr noundef nonnull align 16 dereferenceable(256) %28) #11
  call void @llvm.lifetime.end.p0(i64 256, ptr nonnull %28) #11
  %382 = load ptr, ptr %138, align 8, !tbaa !13
  call void @llvm.lifetime.start.p0(i64 256, ptr nonnull %28) #11
  %383 = call noundef ptr @_ZNK3JPH8RefConstINS_5ShapeEEcvPKS1_Ev(ptr noundef nonnull align 8 dereferenceable(8) %26)
  invoke void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %29, float noundef %285, float noundef 1.550000e+01, float noundef 0.000000e+00)
          to label %384 unwind label %407

384:                                              ; preds = %381
  %385 = invoke { double, double } @_ZN3JPH4Quat9sIdentityEv()
          to label %386 unwind label %407

386:                                              ; preds = %384
  %387 = extractvalue { double, double } %385, 0
  %388 = extractvalue { double, double } %385, 1
  %389 = load double, ptr %29, align 16
  %390 = load double, ptr %283, align 8
  invoke void @_ZN3JPH20BodyCreationSettingsC2EPKNS_5ShapeENS_4Vec3ENS_4QuatENS_11EMotionTypeEt(ptr noundef nonnull align 16 dereferenceable(256) %28, ptr noundef %383, double %389, double %390, double %387, double %388, i8 noundef zeroext 2, i16 noundef zeroext 1)
          to label %391 unwind label %407

391:                                              ; preds = %386
  %392 = invoke i32 @_ZN3JPH13BodyInterface16CreateAndAddBodyERKNS_20BodyCreationSettingsENS_11EActivationE(ptr noundef nonnull align 8 dereferenceable(24) %382, ptr noundef nonnull align 16 dereferenceable(256) %28, i32 noundef 0)
          to label %393 unwind label %409

393:                                              ; preds = %391
  call void @_ZN3JPH20BodyCreationSettingsD2Ev(ptr noundef nonnull align 16 dereferenceable(256) %28) #11
  call void @llvm.lifetime.end.p0(i64 256, ptr nonnull %28) #11
  %394 = load ptr, ptr %138, align 8, !tbaa !13
  call void @llvm.lifetime.start.p0(i64 256, ptr nonnull %28) #11
  %395 = call noundef ptr @_ZNK3JPH8RefConstINS_5ShapeEEcvPKS1_Ev(ptr noundef nonnull align 8 dereferenceable(8) %25)
  invoke void @_ZN3JPH4Vec3C2Efff(ptr noundef nonnull align 16 dereferenceable(16) %29, float noundef %285, float noundef 1.600000e+01, float noundef 0.000000e+00)
          to label %396 unwind label %407

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

398:                                              ; preds = %396
  %399 = extractvalue { double, double } %397, 0
  %400 = extractvalue { double, double } %397, 1
  %401 = load double, ptr %29, align 16
  %402 = load double, ptr %283, align 8
  invoke void @_ZN3JPH20BodyCreationSettingsC2EPKNS_5ShapeENS_4Vec3ENS_4QuatENS_11EMotionTypeEt(ptr noundef nonnull align 16 dereferenceable(256) %28, ptr noundef %395, double %401, double %402, double %399, double %400, i8 noundef zeroext 2, i16 noundef zeroext 1)
          to label %403 unwind label %407

403:                                              ; preds = %398
  %404 = invoke i32 @_ZN3JPH13BodyInterface16CreateAndAddBodyERKNS_20BodyCreationSettingsENS_11EActivationE(ptr noundef nonnull align 8 dereferenceable(24) %394, ptr noundef nonnull align 16 dereferenceable(256) %28, i32 noundef 0)
          to label %405 unwind label %409

405:                                              ; preds = %403
  call void @_ZN3JPH20BodyCreationSettingsD2Ev(ptr noundef nonnull align 16 dereferenceable(256) %28) #11
  call void @llvm.lifetime.end.p0(i64 256, ptr nonnull %28) #11
  %406 = add nuw nsw i32 %.054108, 1
  %exitcond123.not = icmp eq i32 %406, 7
  br i1 %exitcond123.not, label %288, label %.preheader, !llvm.loop !22

407:                                              ; preds = %398, %396, %393, %386, %384, %381, %374, %372, %369, %362, %360, %357, %350, %348, %.preheader
  %408 = landingpad { ptr, i32 }
          cleanup
  br label %411

409:                                              ; preds = %403, %391, %379, %367, %355
  %410 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3JPH20BodyCreationSettingsD2Ev(ptr noundef nonnull align 16 dereferenceable(256) %28) #11
  br label %411

411:                                              ; preds = %409, %407
  %.pn88 = phi { ptr, i32 } [ %410, %409 ], [ %408, %407 ]
  call void @llvm.lifetime.end.p0(i64 256, ptr nonnull %28) #11
  call void @_ZN3JPH8RefConstINS_5ShapeEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %26) #11
  br label %412

412:                                              ; preds = %411, %346, %344
  %.pn88.pn = phi { ptr, i32 } [ %.pn88, %411 ], [ %345, %344 ], [ %347, %346 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %26) #11
  call void @_ZN3JPH8RefConstINS_5ShapeEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %25) #11
  br label %413

413:                                              ; preds = %412, %342, %340
  %.pn88.pn.pn = phi { ptr, i32 } [ %.pn88.pn, %412 ], [ %341, %340 ], [ %343, %342 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %25) #11
  br label %414

414:                                              ; preds = %413, %339, %332, %325, %318, %311, %304, %297
  %.pn88.pn.pn.pn = phi { ptr, i32 } [ %.pn88.pn.pn, %413 ], [ %.pn86, %339 ], [ %.pn84, %332 ], [ %.pn82, %325 ], [ %.pn80, %318 ], [ %.pn78, %311 ], [ %.pn76, %304 ], [ %.pn74, %297 ]
  call void @_ZN3JPH8RefConstINS_13ShapeSettingsEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %3) #11
  br label %415

415:                                              ; preds = %290, %292, %414
  %.pn88.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn88.pn.pn.pn, %414 ], [ %.pn96, %292 ], [ %291, %290 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %3) #11
  call void @llvm.lifetime.end.p0(i64 16384, ptr nonnull %2) #11
  resume { ptr, i32 } %.pn88.pn.pn.pn.pn
}

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

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

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

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

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

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

declare void @_ZN3JPH24HeightFieldShapeSettingsC1EPKfNS_4Vec3ES3_jPKhRKNS_5ArrayINS_8RefConstINS_15PhysicsMaterialEEENS_12STLAllocatorIS9_EEEE(ptr noundef nonnull align 16 dereferenceable(208), ptr noundef, double, double, double, double, i32 noundef, ptr noundef, ptr noundef nonnull align 8 dereferenceable(24)) unnamed_addr #2

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = distinct !{!5, !6}
!6 = !{!"llvm.loop.mustprogress"}
!7 = !{!8, !8, i64 0}
!8 = !{!"float", !9, i64 0}
!9 = !{!"omnipotent char", !10, i64 0}
!10 = !{!"Simple C++ TBAA"}
!11 = distinct !{!11, !6}
!12 = distinct !{!12, !6}
!13 = !{!14, !15, i64 24}
!14 = !{!"_ZTS4Test", !15, i64 8, !15, i64 16, !15, i64 24, !15, i64 32, !15, i64 40, !16, i64 48, !17, i64 56}
!15 = !{!"any pointer", !9, i64 0}
!16 = !{!"bool", !9, i64 0}
!17 = !{!"_ZTSSt13unordered_mapIN3JPH6BodyIDENSt7__cxx1112basic_stringIcSt11char_traitsIcENS0_12STLAllocatorIcEEEESt4hashIS1_ESt8equal_toIS1_ESaISt4pairIKS1_S8_EEE", !18, i64 0}
!18 = !{!"_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", !15, i64 0, !19, i64 8, !20, i64 16, !19, i64 24, !21, i64 32, !15, i64 48}
!19 = !{!"long", !9, i64 0}
!20 = !{!"_ZTSNSt8__detail15_Hash_node_baseE", !15, i64 0}
!21 = !{!"_ZTSNSt8__detail20_Prime_rehash_policyE", !8, i64 0, !19, i64 8}
!22 = distinct !{!22, !6}


; Effective O3 passes: EarlyCSEPass,GVNPass,GlobalOptPass,IndVarSimplifyPass,InferAlignmentPass,InferFunctionAttrsPass,InstCombinePass,JumpThreadingPass,LICMPass,LoopLoadEliminationPass,LoopRotatePass,LoopSimplifyPass,LoopUnrollPass,LoopVectorizePass,ReassociatePass,SROAPass,SimplifyCFGPass,TailCallElimPass