; LLVM IR from Xingyu-Lin/softgym :: PyFlex/extensions (flexExtRigid)

; 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.XVector3 = type { float, float, float }
%"class.std::vector" = type { %"struct.std::_Vector_base" }
%"struct.std::_Vector_base" = type { %"struct.std::_Vector_base<XVector4<float>, std::allocator<XVector4<float>>>::_Vector_impl" }
%"struct.std::_Vector_base<XVector4<float>, std::allocator<XVector4<float>>>::_Vector_impl" = type { %"struct.std::_Vector_base<XVector4<float>, std::allocator<XVector4<float>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<XVector4<float>, std::allocator<XVector4<float>>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.0" = type { %"struct.std::_Vector_base.1" }
%"struct.std::_Vector_base.1" = type { %"struct.std::_Vector_base<int, std::allocator<int>>::_Vector_impl" }
%"struct.std::_Vector_base<int, std::allocator<int>>::_Vector_impl" = type { %"struct.std::_Vector_base<int, std::allocator<int>>::_Vector_impl_data" }
%"struct.std::_Vector_base<int, std::allocator<int>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.5" = type { %"struct.std::_Vector_base.6" }
%"struct.std::_Vector_base.6" = type { %"struct.std::_Vector_base<unsigned int, std::allocator<unsigned int>>::_Vector_impl" }
%"struct.std::_Vector_base<unsigned int, std::allocator<unsigned int>>::_Vector_impl" = type { %"struct.std::_Vector_base<unsigned int, std::allocator<unsigned int>>::_Vector_impl_data" }
%"struct.std::_Vector_base<unsigned int, std::allocator<unsigned int>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::allocator.7" = type { i8 }
%"class.std::vector.10" = type { %"struct.std::_Vector_base.11" }
%"struct.std::_Vector_base.11" = type { %"struct.std::_Vector_base<float, std::allocator<float>>::_Vector_impl" }
%"struct.std::_Vector_base<float, std::allocator<float>>::_Vector_impl" = type { %"struct.std::_Vector_base<float, std::allocator<float>>::_Vector_impl_data" }
%"struct.std::_Vector_base<float, std::allocator<float>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::allocator.12" = type { i8 }
%class.XVector4 = type { float, float, float, float }
%struct.NvFlexExtAsset = type { ptr, i32, i32, ptr, ptr, ptr, i32, ptr, i32, ptr, ptr, ptr, i32, ptr, ptr, ptr, i32, i8, float, float, float }

; Function Attrs: mustprogress uwtable
define dso_local ptr @NvFlexExtCreateRigidFromMesh(ptr noundef %0, i32 noundef %1, ptr noundef %2, i32 noundef %3, float noundef %4, float noundef %5) #0 personality ptr @__gxx_personality_v0 {
  %7 = alloca ptr, align 8
  %8 = alloca ptr, align 8
  %9 = alloca i32, align 4
  %10 = alloca ptr, align 8
  %11 = alloca i32, align 4
  %12 = alloca float, align 4
  %13 = alloca float, align 4
  %14 = alloca %class.XVector3, align 4
  %15 = alloca i32, align 4
  %16 = alloca ptr, align 8
  %17 = alloca ptr, align 8
  %18 = alloca i32, align 4
  %19 = alloca i32, align 4
  %20 = alloca %class.XVector3, align 4
  %21 = alloca { <2 x float>, float }, align 8
  %22 = alloca %"class.std::vector", align 8
  %23 = alloca %"class.std::vector", align 8
  %24 = alloca %"class.std::vector.0", align 8
  %25 = alloca ptr, align 8
  %26 = alloca %class.XVector3, align 4
  %27 = alloca %class.XVector3, align 4
  %28 = alloca i32, align 4
  %29 = alloca %class.XVector3, align 4
  %30 = alloca { <2 x float>, float }, align 8
  %31 = alloca %class.XVector3, align 4
  %32 = alloca { <2 x float>, float }, align 8
  %33 = alloca %class.XVector3, align 4
  %34 = alloca { <2 x float>, float }, align 8
  %35 = alloca float, align 4
  %36 = alloca float, align 4
  %37 = alloca i32, align 4
  %38 = alloca i32, align 4
  %39 = alloca i32, align 4
  %40 = alloca i32, align 4
  %41 = alloca %class.XVector3, align 4
  %42 = alloca %class.XVector3, align 4
  %43 = alloca { <2 x float>, float }, align 8
  %44 = alloca %class.XVector3, align 4
  %45 = alloca %class.XVector3, align 4
  %46 = alloca { <2 x float>, float }, align 8
  %47 = alloca %class.XVector3, align 4
  %48 = alloca i32, align 4
  %49 = alloca %"class.std::vector.5", align 8
  %50 = alloca %"class.std::allocator.7", align 1
  %51 = alloca %class.XVector3, align 4
  %52 = alloca %class.XVector3, align 4
  %53 = alloca %class.XVector3, align 4
  %54 = alloca { <2 x float>, float }, align 8
  %55 = alloca { <2 x float>, float }, align 4
  %56 = alloca { <2 x float>, float }, align 4
  %57 = alloca %"class.std::vector.10", align 8
  %58 = alloca %"class.std::allocator.12", align 1
  %59 = alloca %class.XVector3, align 4
  %60 = alloca i32, align 4
  %61 = alloca i32, align 4
  %62 = alloca i32, align 4
  %63 = alloca i32, align 4
  %64 = alloca %class.XVector3, align 4
  %65 = alloca %class.XVector3, align 4
  %66 = alloca %class.XVector3, align 4
  %67 = alloca { <2 x float>, float }, align 8
  %68 = alloca { <2 x float>, float }, align 8
  %69 = alloca %class.XVector3, align 4
  %70 = alloca %class.XVector3, align 4
  %71 = alloca { <2 x float>, float }, align 8
  %72 = alloca %class.XVector3, align 4
  %73 = alloca { <2 x float>, float }, align 8
  %74 = alloca float, align 4
  %75 = alloca %class.XVector3, align 4
  %76 = alloca { <2 x float>, float }, align 8
  %77 = alloca %class.XVector4, align 4
  %78 = alloca %class.XVector4, align 4
  %79 = alloca i32, align 4
  %80 = alloca i32, align 4
  %81 = alloca i32, align 4
  %82 = alloca %class.XVector4, align 4
  %83 = alloca ptr, align 8
  %84 = alloca i32, align 4
  store ptr %0, ptr %8, align 8, !tbaa !5
  store i32 %1, ptr %9, align 4, !tbaa !9
  store ptr %2, ptr %10, align 8, !tbaa !5
  store i32 %3, ptr %11, align 4, !tbaa !9
  store float %4, ptr %12, align 4, !tbaa !11
  store float %5, ptr %13, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 12, ptr %14) #13
  call void @_ZN8XVector3IfEC2Ef(ptr noundef nonnull align 4 dereferenceable(12) %14, float noundef 0.000000e+00)
  call void @llvm.lifetime.start.p0(i64 4, ptr %15) #13
  store i32 0, ptr %15, align 4, !tbaa !9
  br label %85

85:                                               ; preds = %96, %6
  %86 = load i32, ptr %15, align 4, !tbaa !9
  %87 = load i32, ptr %9, align 4, !tbaa !9
  %88 = icmp slt i32 %86, %87
  br i1 %88, label %90, label %89

89:                                               ; preds = %85
  call void @llvm.lifetime.end.p0(i64 4, ptr %15) #13
  br label %99

90:                                               ; preds = %85
  %91 = load ptr, ptr %8, align 8, !tbaa !5
  %92 = load i32, ptr %15, align 4, !tbaa !9
  %93 = sext i32 %92 to i64
  %94 = getelementptr inbounds %class.XVector3, ptr %91, i64 %93
  %95 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZN8XVector3IfEpLERKS0_(ptr noundef nonnull align 4 dereferenceable(12) %14, ptr noundef nonnull align 4 dereferenceable(12) %94)
  br label %96

96:                                               ; preds = %90
  %97 = load i32, ptr %15, align 4, !tbaa !9
  %98 = add nsw i32 %97, 1
  store i32 %98, ptr %15, align 4, !tbaa !9
  br label %85, !llvm.loop !13

99:                                               ; preds = %89
  %100 = load i32, ptr %9, align 4, !tbaa !9
  %101 = sitofp i32 %100 to float
  %102 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZN8XVector3IfEdVEf(ptr noundef nonnull align 4 dereferenceable(12) %14, float noundef %101)
  call void @llvm.lifetime.start.p0(i64 8, ptr %16) #13
  %103 = load i32, ptr %9, align 4, !tbaa !9
  %104 = sext i32 %103 to i64
  %105 = call { i64, i1 } @llvm.umul.with.overflow.i64(i64 %104, i64 12)
  %106 = extractvalue { i64, i1 } %105, 1
  %107 = extractvalue { i64, i1 } %105, 0
  %108 = select i1 %106, i64 -1, i64 %107
  %109 = call noalias noundef nonnull ptr @_Znam(i64 noundef %108) #14
  %110 = icmp eq i64 %104, 0
  br i1 %110, label %118, label %111

111:                                              ; preds = %99
  %112 = getelementptr inbounds %class.XVector3, ptr %109, i64 %104
  br label %113

113:                                              ; preds = %115, %111
  %114 = phi ptr [ %109, %111 ], [ %116, %115 ]
  invoke void @_ZN8XVector3IfEC2Ev(ptr noundef nonnull align 4 dereferenceable(12) %114)
          to label %115 unwind label %124

115:                                              ; preds = %113
  %116 = getelementptr inbounds %class.XVector3, ptr %114, i64 1
  %117 = icmp eq ptr %116, %112
  br i1 %117, label %118, label %113

118:                                              ; preds = %115, %99
  store ptr %109, ptr %16, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %19) #13
  store i32 0, ptr %19, align 4, !tbaa !9
  br label %119

119:                                              ; preds = %139, %118
  %120 = load i32, ptr %19, align 4, !tbaa !9
  %121 = load i32, ptr %9, align 4, !tbaa !9
  %122 = icmp slt i32 %120, %121
  br i1 %122, label %128, label %123

123:                                              ; preds = %119
  call void @llvm.lifetime.end.p0(i64 4, ptr %19) #13
  br label %142

124:                                              ; preds = %113
  %125 = landingpad { ptr, i32 }
          cleanup
  %126 = extractvalue { ptr, i32 } %125, 0
  store ptr %126, ptr %17, align 8
  %127 = extractvalue { ptr, i32 } %125, 1
  store i32 %127, ptr %18, align 4
  call void @_ZdaPvm(ptr noundef %109, i64 noundef %108) #15
  br label %682

128:                                              ; preds = %119
  call void @llvm.lifetime.start.p0(i64 12, ptr %20) #13
  %129 = load ptr, ptr %8, align 8, !tbaa !5
  %130 = load i32, ptr %19, align 4, !tbaa !9
  %131 = sext i32 %130 to i64
  %132 = getelementptr inbounds %class.XVector3, ptr %129, i64 %131
  %133 = call { <2 x float>, float } @_ZNK8XVector3IfEmiERKS0_(ptr noundef nonnull align 4 dereferenceable(12) %132, ptr noundef nonnull align 4 dereferenceable(12) %14)
  store { <2 x float>, float } %133, ptr %21, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %20, ptr align 8 %21, i64 12, i1 false)
  %134 = load ptr, ptr %16, align 8, !tbaa !5
  %135 = load i32, ptr %19, align 4, !tbaa !9
  %136 = sext i32 %135 to i64
  %137 = getelementptr inbounds %class.XVector3, ptr %134, i64 %136
  %138 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZN8XVector3IfEpLERKS0_(ptr noundef nonnull align 4 dereferenceable(12) %137, ptr noundef nonnull align 4 dereferenceable(12) %20)
  call void @llvm.lifetime.end.p0(i64 12, ptr %20) #13
  br label %139

139:                                              ; preds = %128
  %140 = load i32, ptr %19, align 4, !tbaa !9
  %141 = add nsw i32 %140, 1
  store i32 %141, ptr %19, align 4, !tbaa !9
  br label %119, !llvm.loop !15

142:                                              ; preds = %123
  call void @llvm.lifetime.start.p0(i64 24, ptr %22) #13
  call void @_ZNSt6vectorI8XVector4IfESaIS1_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %22) #13
  call void @llvm.lifetime.start.p0(i64 24, ptr %23) #13
  call void @_ZNSt6vectorI8XVector4IfESaIS1_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %23) #13
  call void @llvm.lifetime.start.p0(i64 24, ptr %24) #13
  call void @_ZNSt6vectorIiSaIiEEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %24) #13
  call void @llvm.lifetime.start.p0(i64 8, ptr %25) #13
  %143 = load ptr, ptr %16, align 8, !tbaa !5
  store ptr %143, ptr %25, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 12, ptr %26) #13
  invoke void @_ZN8XVector3IfEC2Ef(ptr noundef nonnull align 4 dereferenceable(12) %26, float noundef 0x47EFFFFFE0000000)
          to label %144 unwind label %151

144:                                              ; preds = %142
  call void @llvm.lifetime.start.p0(i64 12, ptr %27) #13
  invoke void @_ZN8XVector3IfEC2Ef(ptr noundef nonnull align 4 dereferenceable(12) %27, float noundef 0xC7EFFFFFE0000000)
          to label %145 unwind label %155

145:                                              ; preds = %144
  call void @llvm.lifetime.start.p0(i64 4, ptr %28) #13
  store i32 0, ptr %28, align 4, !tbaa !9
  br label %146

146:                                              ; preds = %172, %145
  %147 = load i32, ptr %28, align 4, !tbaa !9
  %148 = load i32, ptr %9, align 4, !tbaa !9
  %149 = icmp slt i32 %147, %148
  br i1 %149, label %159, label %150

150:                                              ; preds = %146
  call void @llvm.lifetime.end.p0(i64 4, ptr %28) #13
  br label %184

151:                                              ; preds = %142
  %152 = landingpad { ptr, i32 }
          cleanup
  %153 = extractvalue { ptr, i32 } %152, 0
  store ptr %153, ptr %17, align 8
  %154 = extractvalue { ptr, i32 } %152, 1
  store i32 %154, ptr %18, align 4
  br label %681

155:                                              ; preds = %144
  %156 = landingpad { ptr, i32 }
          cleanup
  %157 = extractvalue { ptr, i32 } %156, 0
  store ptr %157, ptr %17, align 8
  %158 = extractvalue { ptr, i32 } %156, 1
  store i32 %158, ptr %18, align 4
  br label %680

159:                                              ; preds = %146
  call void @llvm.lifetime.start.p0(i64 12, ptr %29) #13
  %160 = load ptr, ptr %25, align 8, !tbaa !5
  %161 = load i32, ptr %28, align 4, !tbaa !9
  %162 = sext i32 %161 to i64
  %163 = getelementptr inbounds %class.XVector3, ptr %160, i64 %162
  %164 = invoke { <2 x float>, float } @_Z3MinIfE8XVector3IT_ERKS2_S4_(ptr noundef nonnull align 4 dereferenceable(12) %26, ptr noundef nonnull align 4 dereferenceable(12) %163)
          to label %165 unwind label %175

165:                                              ; preds = %159
  store { <2 x float>, float } %164, ptr %30, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %29, ptr align 8 %30, i64 12, i1 false)
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %26, ptr align 4 %29, i64 12, i1 false), !tbaa.struct !16
  call void @llvm.lifetime.end.p0(i64 12, ptr %29) #13
  call void @llvm.lifetime.start.p0(i64 12, ptr %31) #13
  %166 = load ptr, ptr %25, align 8, !tbaa !5
  %167 = load i32, ptr %28, align 4, !tbaa !9
  %168 = sext i32 %167 to i64
  %169 = getelementptr inbounds %class.XVector3, ptr %166, i64 %168
  %170 = invoke { <2 x float>, float } @_Z3MaxIfE8XVector3IT_ERKS2_S4_(ptr noundef nonnull align 4 dereferenceable(12) %27, ptr noundef nonnull align 4 dereferenceable(12) %169)
          to label %171 unwind label %179

171:                                              ; preds = %165
  store { <2 x float>, float } %170, ptr %32, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %31, ptr align 8 %32, i64 12, i1 false)
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %27, ptr align 4 %31, i64 12, i1 false), !tbaa.struct !16
  call void @llvm.lifetime.end.p0(i64 12, ptr %31) #13
  br label %172

172:                                              ; preds = %171
  %173 = load i32, ptr %28, align 4, !tbaa !9
  %174 = add nsw i32 %173, 1
  store i32 %174, ptr %28, align 4, !tbaa !9
  br label %146, !llvm.loop !17

175:                                              ; preds = %159
  %176 = landingpad { ptr, i32 }
          cleanup
  %177 = extractvalue { ptr, i32 } %176, 0
  store ptr %177, ptr %17, align 8
  %178 = extractvalue { ptr, i32 } %176, 1
  store i32 %178, ptr %18, align 4
  call void @llvm.lifetime.end.p0(i64 12, ptr %29) #13
  br label %183

179:                                              ; preds = %165
  %180 = landingpad { ptr, i32 }
          cleanup
  %181 = extractvalue { ptr, i32 } %180, 0
  store ptr %181, ptr %17, align 8
  %182 = extractvalue { ptr, i32 } %180, 1
  store i32 %182, ptr %18, align 4
  call void @llvm.lifetime.end.p0(i64 12, ptr %31) #13
  br label %183

183:                                              ; preds = %179, %175
  call void @llvm.lifetime.end.p0(i64 4, ptr %28) #13
  br label %680

184:                                              ; preds = %150
  call void @llvm.lifetime.start.p0(i64 12, ptr %33) #13
  %185 = invoke { <2 x float>, float } @_ZNK8XVector3IfEmiERKS0_(ptr noundef nonnull align 4 dereferenceable(12) %27, ptr noundef nonnull align 4 dereferenceable(12) %26)
          to label %186 unwind label %297

186:                                              ; preds = %184
  store { <2 x float>, float } %185, ptr %34, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %33, ptr align 8 %34, i64 12, i1 false)
  call void @llvm.lifetime.start.p0(i64 4, ptr %35) #13
  %187 = getelementptr inbounds %class.XVector3, ptr %33, i32 0, i32 0
  %188 = getelementptr inbounds %class.XVector3, ptr %33, i32 0, i32 1
  %189 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3maxIfERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4) %187, ptr noundef nonnull align 4 dereferenceable(4) %188)
          to label %190 unwind label %301

190:                                              ; preds = %186
  %191 = getelementptr inbounds %class.XVector3, ptr %33, i32 0, i32 2
  %192 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3maxIfERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4) %189, ptr noundef nonnull align 4 dereferenceable(4) %191)
          to label %193 unwind label %301

193:                                              ; preds = %190
  %194 = load float, ptr %192, align 4, !tbaa !11
  store float %194, ptr %35, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 4, ptr %36) #13
  %195 = load float, ptr %12, align 4, !tbaa !11
  %196 = fmul float %195, 0x3FEFFF2E40000000
  store float %196, ptr %36, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 4, ptr %37) #13
  call void @llvm.lifetime.start.p0(i64 4, ptr %38) #13
  call void @llvm.lifetime.start.p0(i64 4, ptr %39) #13
  %197 = load float, ptr %12, align 4, !tbaa !11
  %198 = getelementptr inbounds %class.XVector3, ptr %33, i32 0, i32 0
  %199 = load float, ptr %198, align 4, !tbaa !18
  %200 = fcmp ogt float %197, %199
  br i1 %200, label %201, label %202

201:                                              ; preds = %193
  br label %208

202:                                              ; preds = %193
  %203 = getelementptr inbounds %class.XVector3, ptr %33, i32 0, i32 0
  %204 = load float, ptr %203, align 4, !tbaa !18
  %205 = load float, ptr %36, align 4, !tbaa !11
  %206 = fdiv float %204, %205
  %207 = fptosi float %206 to i32
  br label %208

208:                                              ; preds = %202, %201
  %209 = phi i32 [ 1, %201 ], [ %207, %202 ]
  store i32 %209, ptr %37, align 4, !tbaa !9
  %210 = load float, ptr %12, align 4, !tbaa !11
  %211 = getelementptr inbounds %class.XVector3, ptr %33, i32 0, i32 1
  %212 = load float, ptr %211, align 4, !tbaa !20
  %213 = fcmp ogt float %210, %212
  br i1 %213, label %214, label %215

214:                                              ; preds = %208
  br label %221

215:                                              ; preds = %208
  %216 = getelementptr inbounds %class.XVector3, ptr %33, i32 0, i32 1
  %217 = load float, ptr %216, align 4, !tbaa !20
  %218 = load float, ptr %36, align 4, !tbaa !11
  %219 = fdiv float %217, %218
  %220 = fptosi float %219 to i32
  br label %221

221:                                              ; preds = %215, %214
  %222 = phi i32 [ 1, %214 ], [ %220, %215 ]
  store i32 %222, ptr %38, align 4, !tbaa !9
  %223 = load float, ptr %12, align 4, !tbaa !11
  %224 = getelementptr inbounds %class.XVector3, ptr %33, i32 0, i32 2
  %225 = load float, ptr %224, align 4, !tbaa !21
  %226 = fcmp ogt float %223, %225
  br i1 %226, label %227, label %228

227:                                              ; preds = %221
  br label %234

228:                                              ; preds = %221
  %229 = getelementptr inbounds %class.XVector3, ptr %33, i32 0, i32 2
  %230 = load float, ptr %229, align 4, !tbaa !21
  %231 = load float, ptr %36, align 4, !tbaa !11
  %232 = fdiv float %230, %231
  %233 = fptosi float %232 to i32
  br label %234

234:                                              ; preds = %228, %227
  %235 = phi i32 [ 1, %227 ], [ %233, %228 ]
  store i32 %235, ptr %39, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %40) #13
  %236 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3maxIiERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4) %37, ptr noundef nonnull align 4 dereferenceable(4) %38)
          to label %237 unwind label %305

237:                                              ; preds = %234
  %238 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3maxIiERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4) %236, ptr noundef nonnull align 4 dereferenceable(4) %39)
          to label %239 unwind label %305

239:                                              ; preds = %237
  %240 = load i32, ptr %238, align 4, !tbaa !9
  store i32 %240, ptr %40, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 12, ptr %41) #13
  call void @llvm.lifetime.start.p0(i64 12, ptr %42) #13
  %241 = load float, ptr %12, align 4, !tbaa !11
  invoke void @_ZN8XVector3IfEC2Ef(ptr noundef nonnull align 4 dereferenceable(12) %42, float noundef %241)
          to label %242 unwind label %309

242:                                              ; preds = %239
  %243 = invoke { <2 x float>, float } @_ZmlIfE8XVector3IT_ES1_RKS2_(float noundef 2.000000e+00, ptr noundef nonnull align 4 dereferenceable(12) %42)
          to label %244 unwind label %309

244:                                              ; preds = %242
  store { <2 x float>, float } %243, ptr %43, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %41, ptr align 8 %43, i64 12, i1 false)
  %245 = invoke noundef nonnull align 4 dereferenceable(12) ptr @_ZN8XVector3IfEmIERKS0_(ptr noundef nonnull align 4 dereferenceable(12) %26, ptr noundef nonnull align 4 dereferenceable(12) %41)
          to label %246 unwind label %309

246:                                              ; preds = %244
  call void @llvm.lifetime.end.p0(i64 12, ptr %42) #13
  call void @llvm.lifetime.end.p0(i64 12, ptr %41) #13
  call void @llvm.lifetime.start.p0(i64 12, ptr %44) #13
  call void @llvm.lifetime.start.p0(i64 12, ptr %45) #13
  %247 = load float, ptr %12, align 4, !tbaa !11
  invoke void @_ZN8XVector3IfEC2Ef(ptr noundef nonnull align 4 dereferenceable(12) %45, float noundef %247)
          to label %248 unwind label %313

248:                                              ; preds = %246
  %249 = invoke { <2 x float>, float } @_ZmlIfE8XVector3IT_ES1_RKS2_(float noundef 2.000000e+00, ptr noundef nonnull align 4 dereferenceable(12) %45)
          to label %250 unwind label %313

250:                                              ; preds = %248
  store { <2 x float>, float } %249, ptr %46, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %44, ptr align 8 %46, i64 12, i1 false)
  %251 = invoke noundef nonnull align 4 dereferenceable(12) ptr @_ZN8XVector3IfEpLERKS0_(ptr noundef nonnull align 4 dereferenceable(12) %27, ptr noundef nonnull align 4 dereferenceable(12) %44)
          to label %252 unwind label %313

252:                                              ; preds = %250
  call void @llvm.lifetime.end.p0(i64 12, ptr %45) #13
  call void @llvm.lifetime.end.p0(i64 12, ptr %44) #13
  %253 = load i32, ptr %40, align 4, !tbaa !9
  %254 = add nsw i32 %253, 4
  store i32 %254, ptr %40, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 12, ptr %47) #13
  invoke void @_ZN8XVector3IfEC2Ev(ptr noundef nonnull align 4 dereferenceable(12) %47)
          to label %255 unwind label %317

255:                                              ; preds = %252
  %256 = load float, ptr %12, align 4, !tbaa !11
  %257 = getelementptr inbounds %class.XVector3, ptr %33, i32 0, i32 0
  %258 = load float, ptr %257, align 4, !tbaa !18
  %259 = load i32, ptr %37, align 4, !tbaa !9
  %260 = sub nsw i32 %259, 1
  %261 = sitofp i32 %260 to float
  %262 = load float, ptr %12, align 4, !tbaa !11
  %263 = fneg float %261
  %264 = call float @llvm.fmuladd.f32(float %263, float %262, float %258)
  %265 = fsub float %256, %264
  %266 = fmul float 5.000000e-01, %265
  %267 = getelementptr inbounds %class.XVector3, ptr %47, i32 0, i32 0
  store float %266, ptr %267, align 4, !tbaa !18
  %268 = load float, ptr %12, align 4, !tbaa !11
  %269 = getelementptr inbounds %class.XVector3, ptr %33, i32 0, i32 1
  %270 = load float, ptr %269, align 4, !tbaa !20
  %271 = load i32, ptr %38, align 4, !tbaa !9
  %272 = sub nsw i32 %271, 1
  %273 = sitofp i32 %272 to float
  %274 = load float, ptr %12, align 4, !tbaa !11
  %275 = fneg float %273
  %276 = call float @llvm.fmuladd.f32(float %275, float %274, float %270)
  %277 = fsub float %268, %276
  %278 = fmul float 5.000000e-01, %277
  %279 = getelementptr inbounds %class.XVector3, ptr %47, i32 0, i32 1
  store float %278, ptr %279, align 4, !tbaa !20
  %280 = load float, ptr %12, align 4, !tbaa !11
  %281 = getelementptr inbounds %class.XVector3, ptr %33, i32 0, i32 2
  %282 = load float, ptr %281, align 4, !tbaa !21
  %283 = load i32, ptr %39, align 4, !tbaa !9
  %284 = sub nsw i32 %283, 1
  %285 = sitofp i32 %284 to float
  %286 = load float, ptr %12, align 4, !tbaa !11
  %287 = fneg float %285
  %288 = call float @llvm.fmuladd.f32(float %287, float %286, float %282)
  %289 = fsub float %280, %288
  %290 = fmul float 5.000000e-01, %289
  %291 = getelementptr inbounds %class.XVector3, ptr %47, i32 0, i32 2
  store float %290, ptr %291, align 4, !tbaa !21
  %292 = invoke noundef nonnull align 4 dereferenceable(12) ptr @_ZN8XVector3IfEmIERKS0_(ptr noundef nonnull align 4 dereferenceable(12) %26, ptr noundef nonnull align 4 dereferenceable(12) %47)
          to label %293 unwind label %317

293:                                              ; preds = %255
  %294 = load i32, ptr %40, align 4, !tbaa !9
  %295 = icmp sgt i32 %294, 64
  br i1 %295, label %296, label %321

296:                                              ; preds = %293
  store ptr null, ptr %7, align 8
  store i32 1, ptr %48, align 4
  br label %674

297:                                              ; preds = %184
  %298 = landingpad { ptr, i32 }
          cleanup
  %299 = extractvalue { ptr, i32 } %298, 0
  store ptr %299, ptr %17, align 8
  %300 = extractvalue { ptr, i32 } %298, 1
  store i32 %300, ptr %18, align 4
  br label %679

301:                                              ; preds = %190, %186
  %302 = landingpad { ptr, i32 }
          cleanup
  %303 = extractvalue { ptr, i32 } %302, 0
  store ptr %303, ptr %17, align 8
  %304 = extractvalue { ptr, i32 } %302, 1
  store i32 %304, ptr %18, align 4
  br label %678

305:                                              ; preds = %237, %234
  %306 = landingpad { ptr, i32 }
          cleanup
  %307 = extractvalue { ptr, i32 } %306, 0
  store ptr %307, ptr %17, align 8
  %308 = extractvalue { ptr, i32 } %306, 1
  store i32 %308, ptr %18, align 4
  br label %677

309:                                              ; preds = %244, %242, %239
  %310 = landingpad { ptr, i32 }
          cleanup
  %311 = extractvalue { ptr, i32 } %310, 0
  store ptr %311, ptr %17, align 8
  %312 = extractvalue { ptr, i32 } %310, 1
  store i32 %312, ptr %18, align 4
  call void @llvm.lifetime.end.p0(i64 12, ptr %42) #13
  call void @llvm.lifetime.end.p0(i64 12, ptr %41) #13
  br label %677

313:                                              ; preds = %250, %248, %246
  %314 = landingpad { ptr, i32 }
          cleanup
  %315 = extractvalue { ptr, i32 } %314, 0
  store ptr %315, ptr %17, align 8
  %316 = extractvalue { ptr, i32 } %314, 1
  store i32 %316, ptr %18, align 4
  call void @llvm.lifetime.end.p0(i64 12, ptr %45) #13
  call void @llvm.lifetime.end.p0(i64 12, ptr %44) #13
  br label %677

317:                                              ; preds = %255, %252
  %318 = landingpad { ptr, i32 }
          cleanup
  %319 = extractvalue { ptr, i32 } %318, 0
  store ptr %319, ptr %17, align 8
  %320 = extractvalue { ptr, i32 } %318, 1
  store i32 %320, ptr %18, align 4
  br label %676

321:                                              ; preds = %293
  call void @llvm.lifetime.start.p0(i64 24, ptr %49) #13
  %322 = load i32, ptr %40, align 4, !tbaa !9
  %323 = load i32, ptr %40, align 4, !tbaa !9
  %324 = mul nsw i32 %322, %323
  %325 = load i32, ptr %40, align 4, !tbaa !9
  %326 = mul nsw i32 %324, %325
  %327 = sext i32 %326 to i64
  call void @llvm.lifetime.start.p0(i64 1, ptr %50) #13
  call void @_ZNSaIjEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %50) #13
  invoke void @_ZNSt6vectorIjSaIjEEC2EmRKS0_(ptr noundef nonnull align 8 dereferenceable(24) %49, i64 noundef %327, ptr noundef nonnull align 1 dereferenceable(1) %50)
          to label %328 unwind label %376

328:                                              ; preds = %321
  call void @_ZNSt15__new_allocatorIjED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %50) #13
  call void @llvm.lifetime.end.p0(i64 1, ptr %50) #13
  %329 = load ptr, ptr %16, align 8, !tbaa !5
  %330 = load i32, ptr %9, align 4, !tbaa !9
  %331 = load ptr, ptr %10, align 8, !tbaa !5
  %332 = load i32, ptr %11, align 4, !tbaa !9
  %333 = load i32, ptr %40, align 4, !tbaa !9
  %334 = load i32, ptr %40, align 4, !tbaa !9
  %335 = load i32, ptr %40, align 4, !tbaa !9
  %336 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIjSaIjEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %49, i64 noundef 0) #13
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %51, ptr align 4 %26, i64 12, i1 false), !tbaa.struct !16
  call void @llvm.lifetime.start.p0(i64 12, ptr %53) #13
  %337 = load i32, ptr %40, align 4, !tbaa !9
  %338 = sitofp i32 %337 to float
  %339 = load float, ptr %12, align 4, !tbaa !11
  %340 = fmul float %338, %339
  invoke void @_ZN8XVector3IfEC2Ef(ptr noundef nonnull align 4 dereferenceable(12) %53, float noundef %340)
          to label %341 unwind label %380

341:                                              ; preds = %328
  %342 = invoke { <2 x float>, float } @_ZNK8XVector3IfEplERKS0_(ptr noundef nonnull align 4 dereferenceable(12) %26, ptr noundef nonnull align 4 dereferenceable(12) %53)
          to label %343 unwind label %380

343:                                              ; preds = %341
  store { <2 x float>, float } %342, ptr %54, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %52, ptr align 8 %54, i64 12, i1 false)
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %55, ptr align 4 %51, i64 12, i1 false)
  %344 = getelementptr inbounds { <2 x float>, float }, ptr %55, i32 0, i32 0
  %345 = load <2 x float>, ptr %344, align 4
  %346 = getelementptr inbounds { <2 x float>, float }, ptr %55, i32 0, i32 1
  %347 = load float, ptr %346, align 4
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %56, ptr align 4 %52, i64 12, i1 false)
  %348 = getelementptr inbounds { <2 x float>, float }, ptr %56, i32 0, i32 0
  %349 = load <2 x float>, ptr %348, align 4
  %350 = getelementptr inbounds { <2 x float>, float }, ptr %56, i32 0, i32 1
  %351 = load float, ptr %350, align 4
  invoke void @_Z8VoxelizePK8XVector3IfEiPKiijjjPjS0_S0_(ptr noundef %329, i32 noundef %330, ptr noundef %331, i32 noundef %332, i32 noundef %333, i32 noundef %334, i32 noundef %335, ptr noundef %336, <2 x float> %345, float %347, <2 x float> %349, float %351)
          to label %352 unwind label %380

352:                                              ; preds = %343
  call void @llvm.lifetime.end.p0(i64 12, ptr %53) #13
  %353 = load ptr, ptr %16, align 8, !tbaa !5
  %354 = icmp eq ptr %353, null
  br i1 %354, label %356, label %355

355:                                              ; preds = %352
  call void @_ZdaPv(ptr noundef %353) #15
  br label %356

356:                                              ; preds = %355, %352
  call void @llvm.lifetime.start.p0(i64 24, ptr %57) #13
  %357 = load i32, ptr %40, align 4, !tbaa !9
  %358 = load i32, ptr %40, align 4, !tbaa !9
  %359 = mul nsw i32 %357, %358
  %360 = load i32, ptr %40, align 4, !tbaa !9
  %361 = mul nsw i32 %359, %360
  %362 = sext i32 %361 to i64
  call void @llvm.lifetime.start.p0(i64 1, ptr %58) #13
  call void @_ZNSaIfEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %58) #13
  invoke void @_ZNSt6vectorIfSaIfEEC2EmRKS0_(ptr noundef nonnull align 8 dereferenceable(24) %57, i64 noundef %362, ptr noundef nonnull align 1 dereferenceable(1) %58)
          to label %363 unwind label %384

363:                                              ; preds = %356
  call void @_ZNSt15__new_allocatorIfED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %58) #13
  call void @llvm.lifetime.end.p0(i64 1, ptr %58) #13
  %364 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIjSaIjEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %49, i64 noundef 0) #13
  %365 = load i32, ptr %40, align 4, !tbaa !9
  %366 = load i32, ptr %40, align 4, !tbaa !9
  %367 = load i32, ptr %40, align 4, !tbaa !9
  %368 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIfSaIfEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %57, i64 noundef 0) #13
  invoke void @_Z7MakeSDFPKjjjjPf(ptr noundef %364, i32 noundef %365, i32 noundef %366, i32 noundef %367, ptr noundef %368)
          to label %369 unwind label %388

369:                                              ; preds = %363
  call void @llvm.lifetime.start.p0(i64 12, ptr %59) #13
  invoke void @_ZN8XVector3IfEC2Ev(ptr noundef nonnull align 4 dereferenceable(12) %59)
          to label %370 unwind label %392

370:                                              ; preds = %369
  call void @llvm.lifetime.start.p0(i64 4, ptr %60) #13
  store i32 0, ptr %60, align 4, !tbaa !9
  br label %371

371:                                              ; preds = %521, %370
  %372 = load i32, ptr %60, align 4, !tbaa !9
  %373 = load i32, ptr %40, align 4, !tbaa !9
  %374 = icmp slt i32 %372, %373
  br i1 %374, label %396, label %375

375:                                              ; preds = %371
  store i32 11, ptr %48, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %60) #13
  br label %524

376:                                              ; preds = %321
  %377 = landingpad { ptr, i32 }
          cleanup
  %378 = extractvalue { ptr, i32 } %377, 0
  store ptr %378, ptr %17, align 8
  %379 = extractvalue { ptr, i32 } %377, 1
  store i32 %379, ptr %18, align 4
  call void @_ZNSt15__new_allocatorIjED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %50) #13
  call void @llvm.lifetime.end.p0(i64 1, ptr %50) #13
  br label %673

380:                                              ; preds = %343, %341, %328
  %381 = landingpad { ptr, i32 }
          cleanup
  %382 = extractvalue { ptr, i32 } %381, 0
  store ptr %382, ptr %17, align 8
  %383 = extractvalue { ptr, i32 } %381, 1
  store i32 %383, ptr %18, align 4
  call void @llvm.lifetime.end.p0(i64 12, ptr %53) #13
  br label %672

384:                                              ; preds = %356
  %385 = landingpad { ptr, i32 }
          cleanup
  %386 = extractvalue { ptr, i32 } %385, 0
  store ptr %386, ptr %17, align 8
  %387 = extractvalue { ptr, i32 } %385, 1
  store i32 %387, ptr %18, align 4
  call void @_ZNSt15__new_allocatorIfED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %58) #13
  call void @llvm.lifetime.end.p0(i64 1, ptr %58) #13
  br label %671

388:                                              ; preds = %363
  %389 = landingpad { ptr, i32 }
          cleanup
  %390 = extractvalue { ptr, i32 } %389, 0
  store ptr %390, ptr %17, align 8
  %391 = extractvalue { ptr, i32 } %389, 1
  store i32 %391, ptr %18, align 4
  br label %670

392:                                              ; preds = %369
  %393 = landingpad { ptr, i32 }
          cleanup
  %394 = extractvalue { ptr, i32 } %393, 0
  store ptr %394, ptr %17, align 8
  %395 = extractvalue { ptr, i32 } %393, 1
  store i32 %395, ptr %18, align 4
  br label %669

396:                                              ; preds = %371
  call void @llvm.lifetime.start.p0(i64 4, ptr %61) #13
  store i32 0, ptr %61, align 4, !tbaa !9
  br label %397

397:                                              ; preds = %517, %396
  %398 = load i32, ptr %61, align 4, !tbaa !9
  %399 = load i32, ptr %40, align 4, !tbaa !9
  %400 = icmp slt i32 %398, %399
  br i1 %400, label %402, label %401

401:                                              ; preds = %397
  store i32 14, ptr %48, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %61) #13
  br label %520

402:                                              ; preds = %397
  call void @llvm.lifetime.start.p0(i64 4, ptr %62) #13
  store i32 0, ptr %62, align 4, !tbaa !9
  br label %403

403:                                              ; preds = %513, %402
  %404 = load i32, ptr %62, align 4, !tbaa !9
  %405 = load i32, ptr %40, align 4, !tbaa !9
  %406 = icmp slt i32 %404, %405
  br i1 %406, label %408, label %407

407:                                              ; preds = %403
  store i32 17, ptr %48, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %62) #13
  br label %516

408:                                              ; preds = %403
  call void @llvm.lifetime.start.p0(i64 4, ptr %63) #13
  %409 = load i32, ptr %62, align 4, !tbaa !9
  %410 = load i32, ptr %40, align 4, !tbaa !9
  %411 = mul nsw i32 %409, %410
  %412 = load i32, ptr %40, align 4, !tbaa !9
  %413 = mul nsw i32 %411, %412
  %414 = load i32, ptr %61, align 4, !tbaa !9
  %415 = load i32, ptr %40, align 4, !tbaa !9
  %416 = mul nsw i32 %414, %415
  %417 = add nsw i32 %413, %416
  %418 = load i32, ptr %60, align 4, !tbaa !9
  %419 = add nsw i32 %417, %418
  store i32 %419, ptr %63, align 4, !tbaa !9
  %420 = load i32, ptr %63, align 4, !tbaa !9
  %421 = sext i32 %420 to i64
  %422 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIjSaIjEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %49, i64 noundef %421) #13
  %423 = load i32, ptr %422, align 4, !tbaa !9
  %424 = icmp ne i32 %423, 0
  br i1 %424, label %425, label %512

425:                                              ; preds = %408
  call void @llvm.lifetime.start.p0(i64 12, ptr %64) #13
  call void @llvm.lifetime.start.p0(i64 12, ptr %65) #13
  %426 = load float, ptr %12, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 12, ptr %66) #13
  %427 = load i32, ptr %60, align 4, !tbaa !9
  %428 = sitofp i32 %427 to float
  %429 = fadd float %428, 5.000000e-01
  %430 = load i32, ptr %61, align 4, !tbaa !9
  %431 = sitofp i32 %430 to float
  %432 = fadd float %431, 5.000000e-01
  %433 = load i32, ptr %62, align 4, !tbaa !9
  %434 = sitofp i32 %433 to float
  %435 = fadd float %434, 5.000000e-01
  invoke void @_ZN8XVector3IfEC2Efff(ptr noundef nonnull align 4 dereferenceable(12) %66, float noundef %429, float noundef %432, float noundef %435)
          to label %436 unwind label %476

436:                                              ; preds = %425
  %437 = invoke { <2 x float>, float } @_ZmlIfE8XVector3IT_ES1_RKS2_(float noundef %426, ptr noundef nonnull align 4 dereferenceable(12) %66)
          to label %438 unwind label %476

438:                                              ; preds = %436
  store { <2 x float>, float } %437, ptr %67, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %65, ptr align 8 %67, i64 12, i1 false)
  %439 = invoke { <2 x float>, float } @_ZNK8XVector3IfEplERKS0_(ptr noundef nonnull align 4 dereferenceable(12) %26, ptr noundef nonnull align 4 dereferenceable(12) %65)
          to label %440 unwind label %476

440:                                              ; preds = %438
  store { <2 x float>, float } %439, ptr %68, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %64, ptr align 8 %68, i64 12, i1 false)
  call void @llvm.lifetime.end.p0(i64 12, ptr %66) #13
  call void @llvm.lifetime.end.p0(i64 12, ptr %65) #13
  call void @llvm.lifetime.start.p0(i64 12, ptr %69) #13
  call void @llvm.lifetime.start.p0(i64 12, ptr %70) #13
  %441 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIfSaIfEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %57, i64 noundef 0) #13
  %442 = load i32, ptr %40, align 4, !tbaa !9
  %443 = load i32, ptr %60, align 4, !tbaa !9
  %444 = load i32, ptr %61, align 4, !tbaa !9
  %445 = load i32, ptr %62, align 4, !tbaa !9
  %446 = invoke { <2 x float>, float } @_ZN12_GLOBAL__N_113SampleSDFGradEPKfiiii(ptr noundef %441, i32 noundef %442, i32 noundef %443, i32 noundef %444, i32 noundef %445)
          to label %447 unwind label %480

447:                                              ; preds = %440
  store { <2 x float>, float } %446, ptr %71, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %70, ptr align 8 %71, i64 12, i1 false)
  call void @llvm.lifetime.start.p0(i64 12, ptr %72) #13
  invoke void @_ZN8XVector3IfEC2Ev(ptr noundef nonnull align 4 dereferenceable(12) %72)
          to label %448 unwind label %484

448:                                              ; preds = %447
  %449 = invoke { <2 x float>, float } @_Z13SafeNormalizeI8XVector3IfEET_RKS2_S4_(ptr noundef nonnull align 4 dereferenceable(12) %70, ptr noundef nonnull align 4 dereferenceable(12) %72)
          to label %450 unwind label %484

450:                                              ; preds = %448
  store { <2 x float>, float } %449, ptr %73, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %69, ptr align 8 %73, i64 12, i1 false)
  call void @llvm.lifetime.end.p0(i64 12, ptr %72) #13
  call void @llvm.lifetime.end.p0(i64 12, ptr %70) #13
  call void @llvm.lifetime.start.p0(i64 4, ptr %74) #13
  %451 = load i32, ptr %63, align 4, !tbaa !9
  %452 = sext i32 %451 to i64
  %453 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIfSaIfEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %57, i64 noundef %452) #13
  %454 = load float, ptr %453, align 4, !tbaa !11
  %455 = load float, ptr %35, align 4, !tbaa !11
  %456 = fmul float %454, %455
  store float %456, ptr %74, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 12, ptr %75) #13
  %457 = load float, ptr %13, align 4, !tbaa !11
  %458 = invoke { <2 x float>, float } @_ZNK8XVector3IfEmlEf(ptr noundef nonnull align 4 dereferenceable(12) %69, float noundef %457)
          to label %459 unwind label %489

459:                                              ; preds = %450
  store { <2 x float>, float } %458, ptr %76, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %75, ptr align 8 %76, i64 12, i1 false)
  %460 = invoke noundef nonnull align 4 dereferenceable(12) ptr @_ZN8XVector3IfEpLERKS0_(ptr noundef nonnull align 4 dereferenceable(12) %64, ptr noundef nonnull align 4 dereferenceable(12) %75)
          to label %461 unwind label %489

461:                                              ; preds = %459
  call void @llvm.lifetime.end.p0(i64 12, ptr %75) #13
  call void @llvm.lifetime.start.p0(i64 16, ptr %77) #13
  %462 = load float, ptr %74, align 4, !tbaa !11
  invoke void @_ZN8XVector4IfEC2ERK8XVector3IfEf(ptr noundef nonnull align 4 dereferenceable(16) %77, ptr noundef nonnull align 4 dereferenceable(12) %69, float noundef %462)
          to label %463 unwind label %493

463:                                              ; preds = %461
  invoke void @_ZNSt6vectorI8XVector4IfESaIS1_EE9push_backEOS1_(ptr noundef nonnull align 8 dereferenceable(24) %23, ptr noundef nonnull align 4 dereferenceable(16) %77)
          to label %464 unwind label %493

464:                                              ; preds = %463
  call void @llvm.lifetime.end.p0(i64 16, ptr %77) #13
  call void @llvm.lifetime.start.p0(i64 16, ptr %78) #13
  %465 = getelementptr inbounds %class.XVector3, ptr %64, i32 0, i32 0
  %466 = load float, ptr %465, align 4, !tbaa !18
  %467 = getelementptr inbounds %class.XVector3, ptr %64, i32 0, i32 1
  %468 = load float, ptr %467, align 4, !tbaa !20
  %469 = getelementptr inbounds %class.XVector3, ptr %64, i32 0, i32 2
  %470 = load float, ptr %469, align 4, !tbaa !21
  invoke void @_ZN8XVector4IfEC2Effff(ptr noundef nonnull align 4 dereferenceable(16) %78, float noundef %466, float noundef %468, float noundef %470, float noundef 1.000000e+00)
          to label %471 unwind label %497

471:                                              ; preds = %464
  invoke void @_ZNSt6vectorI8XVector4IfESaIS1_EE9push_backEOS1_(ptr noundef nonnull align 8 dereferenceable(24) %22, ptr noundef nonnull align 4 dereferenceable(16) %78)
          to label %472 unwind label %497

472:                                              ; preds = %471
  call void @llvm.lifetime.end.p0(i64 16, ptr %78) #13
  call void @llvm.lifetime.start.p0(i64 4, ptr %79) #13
  store i32 0, ptr %79, align 4, !tbaa !9
  invoke void @_ZNSt6vectorIiSaIiEE9push_backEOi(ptr noundef nonnull align 8 dereferenceable(24) %24, ptr noundef nonnull align 4 dereferenceable(4) %79)
          to label %473 unwind label %501

473:                                              ; preds = %472
  call void @llvm.lifetime.end.p0(i64 4, ptr %79) #13
  %474 = invoke noundef nonnull align 4 dereferenceable(12) ptr @_ZN8XVector3IfEpLERKS0_(ptr noundef nonnull align 4 dereferenceable(12) %59, ptr noundef nonnull align 4 dereferenceable(12) %64)
          to label %475 unwind label %505

475:                                              ; preds = %473
  call void @llvm.lifetime.end.p0(i64 4, ptr %74) #13
  call void @llvm.lifetime.end.p0(i64 12, ptr %69) #13
  call void @llvm.lifetime.end.p0(i64 12, ptr %64) #13
  br label %512

476:                                              ; preds = %438, %436, %425
  %477 = landingpad { ptr, i32 }
          cleanup
  %478 = extractvalue { ptr, i32 } %477, 0
  store ptr %478, ptr %17, align 8
  %479 = extractvalue { ptr, i32 } %477, 1
  store i32 %479, ptr %18, align 4
  call void @llvm.lifetime.end.p0(i64 12, ptr %66) #13
  call void @llvm.lifetime.end.p0(i64 12, ptr %65) #13
  br label %511

480:                                              ; preds = %440
  %481 = landingpad { ptr, i32 }
          cleanup
  %482 = extractvalue { ptr, i32 } %481, 0
  store ptr %482, ptr %17, align 8
  %483 = extractvalue { ptr, i32 } %481, 1
  store i32 %483, ptr %18, align 4
  br label %488

484:                                              ; preds = %448, %447
  %485 = landingpad { ptr, i32 }
          cleanup
  %486 = extractvalue { ptr, i32 } %485, 0
  store ptr %486, ptr %17, align 8
  %487 = extractvalue { ptr, i32 } %485, 1
  store i32 %487, ptr %18, align 4
  call void @llvm.lifetime.end.p0(i64 12, ptr %72) #13
  br label %488

488:                                              ; preds = %484, %480
  call void @llvm.lifetime.end.p0(i64 12, ptr %70) #13
  br label %510

489:                                              ; preds = %459, %450
  %490 = landingpad { ptr, i32 }
          cleanup
  %491 = extractvalue { ptr, i32 } %490, 0
  store ptr %491, ptr %17, align 8
  %492 = extractvalue { ptr, i32 } %490, 1
  store i32 %492, ptr %18, align 4
  call void @llvm.lifetime.end.p0(i64 12, ptr %75) #13
  br label %509

493:                                              ; preds = %463, %461
  %494 = landingpad { ptr, i32 }
          cleanup
  %495 = extractvalue { ptr, i32 } %494, 0
  store ptr %495, ptr %17, align 8
  %496 = extractvalue { ptr, i32 } %494, 1
  store i32 %496, ptr %18, align 4
  call void @llvm.lifetime.end.p0(i64 16, ptr %77) #13
  br label %509

497:                                              ; preds = %471, %464
  %498 = landingpad { ptr, i32 }
          cleanup
  %499 = extractvalue { ptr, i32 } %498, 0
  store ptr %499, ptr %17, align 8
  %500 = extractvalue { ptr, i32 } %498, 1
  store i32 %500, ptr %18, align 4
  call void @llvm.lifetime.end.p0(i64 16, ptr %78) #13
  br label %509

501:                                              ; preds = %472
  %502 = landingpad { ptr, i32 }
          cleanup
  %503 = extractvalue { ptr, i32 } %502, 0
  store ptr %503, ptr %17, align 8
  %504 = extractvalue { ptr, i32 } %502, 1
  store i32 %504, ptr %18, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %79) #13
  br label %509

505:                                              ; preds = %473
  %506 = landingpad { ptr, i32 }
          cleanup
  %507 = extractvalue { ptr, i32 } %506, 0
  store ptr %507, ptr %17, align 8
  %508 = extractvalue { ptr, i32 } %506, 1
  store i32 %508, ptr %18, align 4
  br label %509

509:                                              ; preds = %505, %501, %497, %493, %489
  call void @llvm.lifetime.end.p0(i64 4, ptr %74) #13
  br label %510

510:                                              ; preds = %509, %488
  call void @llvm.lifetime.end.p0(i64 12, ptr %69) #13
  br label %511

511:                                              ; preds = %510, %476
  call void @llvm.lifetime.end.p0(i64 12, ptr %64) #13
  call void @llvm.lifetime.end.p0(i64 4, ptr %63) #13
  call void @llvm.lifetime.end.p0(i64 4, ptr %62) #13
  call void @llvm.lifetime.end.p0(i64 4, ptr %61) #13
  call void @llvm.lifetime.end.p0(i64 4, ptr %60) #13
  br label %669

512:                                              ; preds = %475, %408
  call void @llvm.lifetime.end.p0(i64 4, ptr %63) #13
  br label %513

513:                                              ; preds = %512
  %514 = load i32, ptr %62, align 4, !tbaa !9
  %515 = add nsw i32 %514, 1
  store i32 %515, ptr %62, align 4, !tbaa !9
  br label %403, !llvm.loop !22

516:                                              ; preds = %407
  br label %517

517:                                              ; preds = %516
  %518 = load i32, ptr %61, align 4, !tbaa !9
  %519 = add nsw i32 %518, 1
  store i32 %519, ptr %61, align 4, !tbaa !9
  br label %397, !llvm.loop !23

520:                                              ; preds = %401
  br label %521

521:                                              ; preds = %520
  %522 = load i32, ptr %60, align 4, !tbaa !9
  %523 = add nsw i32 %522, 1
  store i32 %523, ptr %60, align 4, !tbaa !9
  br label %371, !llvm.loop !24

524:                                              ; preds = %375
  call void @llvm.lifetime.start.p0(i64 4, ptr %80) #13
  %525 = call noundef i64 @_ZNKSt6vectorI8XVector4IfESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %22) #13
  %526 = trunc i64 %525 to i32
  store i32 %526, ptr %80, align 4, !tbaa !9
  %527 = load i32, ptr %80, align 4, !tbaa !9
  %528 = sitofp i32 %527 to float
  %529 = invoke noundef nonnull align 4 dereferenceable(12) ptr @_ZN8XVector3IfEdVEf(ptr noundef nonnull align 4 dereferenceable(12) %59, float noundef %528)
          to label %530 unwind label %538

530:                                              ; preds = %524
  %531 = invoke noundef nonnull align 4 dereferenceable(12) ptr @_ZN8XVector3IfEpLERKS0_(ptr noundef nonnull align 4 dereferenceable(12) %59, ptr noundef nonnull align 4 dereferenceable(12) %14)
          to label %532 unwind label %538

532:                                              ; preds = %530
  call void @llvm.lifetime.start.p0(i64 4, ptr %81) #13
  store i32 0, ptr %81, align 4, !tbaa !9
  br label %533

533:                                              ; preds = %549, %532
  %534 = load i32, ptr %81, align 4, !tbaa !9
  %535 = load i32, ptr %80, align 4, !tbaa !9
  %536 = icmp slt i32 %534, %535
  br i1 %536, label %542, label %537

537:                                              ; preds = %533
  store i32 20, ptr %48, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %81) #13
  br label %556

538:                                              ; preds = %530, %524
  %539 = landingpad { ptr, i32 }
          cleanup
  %540 = extractvalue { ptr, i32 } %539, 0
  store ptr %540, ptr %17, align 8
  %541 = extractvalue { ptr, i32 } %539, 1
  store i32 %541, ptr %18, align 4
  br label %668

542:                                              ; preds = %533
  call void @llvm.lifetime.start.p0(i64 16, ptr %82) #13
  invoke void @_ZN8XVector4IfEC2ERK8XVector3IfEf(ptr noundef nonnull align 4 dereferenceable(16) %82, ptr noundef nonnull align 4 dereferenceable(12) %14, float noundef 0.000000e+00)
          to label %543 unwind label %552

543:                                              ; preds = %542
  %544 = load i32, ptr %81, align 4, !tbaa !9
  %545 = sext i32 %544 to i64
  %546 = call noundef nonnull align 4 dereferenceable(16) ptr @_ZNSt6vectorI8XVector4IfESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %22, i64 noundef %545) #13
  %547 = invoke noundef nonnull align 4 dereferenceable(16) ptr @_ZN8XVector4IfEpLERKS0_(ptr noundef nonnull align 4 dereferenceable(16) %546, ptr noundef nonnull align 4 dereferenceable(16) %82)
          to label %548 unwind label %552

548:                                              ; preds = %543
  call void @llvm.lifetime.end.p0(i64 16, ptr %82) #13
  br label %549

549:                                              ; preds = %548
  %550 = load i32, ptr %81, align 4, !tbaa !9
  %551 = add nsw i32 %550, 1
  store i32 %551, ptr %81, align 4, !tbaa !9
  br label %533, !llvm.loop !25

552:                                              ; preds = %543, %542
  %553 = landingpad { ptr, i32 }
          cleanup
  %554 = extractvalue { ptr, i32 } %553, 0
  store ptr %554, ptr %17, align 8
  %555 = extractvalue { ptr, i32 } %553, 1
  store i32 %555, ptr %18, align 4
  call void @llvm.lifetime.end.p0(i64 16, ptr %82) #13
  call void @llvm.lifetime.end.p0(i64 4, ptr %81) #13
  br label %668

556:                                              ; preds = %537
  call void @llvm.lifetime.start.p0(i64 8, ptr %83) #13
  %557 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef 144) #14
          to label %558 unwind label %607

558:                                              ; preds = %556
  call void @llvm.memset.p0.i64(ptr align 16 %557, i8 0, i64 144, i1 false)
  store ptr %557, ptr %83, align 8, !tbaa !5
  %559 = load ptr, ptr %83, align 8, !tbaa !5
  call void @llvm.memset.p0.i64(ptr align 8 %559, i8 0, i64 144, i1 false)
  %560 = load i32, ptr %80, align 4, !tbaa !9
  %561 = icmp ne i32 %560, 0
  br i1 %561, label %562, label %666

562:                                              ; preds = %558
  %563 = load i32, ptr %80, align 4, !tbaa !9
  %564 = load ptr, ptr %83, align 8, !tbaa !5
  %565 = getelementptr inbounds %struct.NvFlexExtAsset, ptr %564, i32 0, i32 1
  store i32 %563, ptr %565, align 8, !tbaa !26
  %566 = load i32, ptr %80, align 4, !tbaa !9
  %567 = load ptr, ptr %83, align 8, !tbaa !5
  %568 = getelementptr inbounds %struct.NvFlexExtAsset, ptr %567, i32 0, i32 2
  store i32 %566, ptr %568, align 4, !tbaa !29
  %569 = load i32, ptr %80, align 4, !tbaa !9
  %570 = mul nsw i32 %569, 4
  %571 = sext i32 %570 to i64
  %572 = call { i64, i1 } @llvm.umul.with.overflow.i64(i64 %571, i64 4)
  %573 = extractvalue { i64, i1 } %572, 1
  %574 = extractvalue { i64, i1 } %572, 0
  %575 = select i1 %573, i64 -1, i64 %574
  %576 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %575) #14
          to label %577 unwind label %607

577:                                              ; preds = %562
  %578 = load ptr, ptr %83, align 8, !tbaa !5
  %579 = getelementptr inbounds %struct.NvFlexExtAsset, ptr %578, i32 0, i32 0
  store ptr %576, ptr %579, align 8, !tbaa !30
  %580 = load ptr, ptr %83, align 8, !tbaa !5
  %581 = getelementptr inbounds %struct.NvFlexExtAsset, ptr %580, i32 0, i32 0
  %582 = load ptr, ptr %581, align 8, !tbaa !30
  %583 = call noundef nonnull align 4 dereferenceable(16) ptr @_ZNSt6vectorI8XVector4IfESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %22, i64 noundef 0) #13
  %584 = load i32, ptr %80, align 4, !tbaa !9
  %585 = sext i32 %584 to i64
  %586 = mul i64 16, %585
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %582, ptr align 4 %583, i64 %586, i1 false)
  %587 = load ptr, ptr %83, align 8, !tbaa !5
  %588 = getelementptr inbounds %struct.NvFlexExtAsset, ptr %587, i32 0, i32 12
  store i32 1, ptr %588, align 8, !tbaa !31
  %589 = load i32, ptr %80, align 4, !tbaa !9
  %590 = load ptr, ptr %83, align 8, !tbaa !5
  %591 = getelementptr inbounds %struct.NvFlexExtAsset, ptr %590, i32 0, i32 8
  store i32 %589, ptr %591, align 8, !tbaa !32
  %592 = load i32, ptr %80, align 4, !tbaa !9
  %593 = sext i32 %592 to i64
  %594 = call { i64, i1 } @llvm.umul.with.overflow.i64(i64 %593, i64 4)
  %595 = extractvalue { i64, i1 } %594, 1
  %596 = extractvalue { i64, i1 } %594, 0
  %597 = select i1 %595, i64 -1, i64 %596
  %598 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %597) #14
          to label %599 unwind label %607

599:                                              ; preds = %577
  %600 = load ptr, ptr %83, align 8, !tbaa !5
  %601 = getelementptr inbounds %struct.NvFlexExtAsset, ptr %600, i32 0, i32 7
  store ptr %598, ptr %601, align 8, !tbaa !33
  call void @llvm.lifetime.start.p0(i64 4, ptr %84) #13
  store i32 0, ptr %84, align 4, !tbaa !9
  br label %602

602:                                              ; preds = %619, %599
  %603 = load i32, ptr %84, align 4, !tbaa !9
  %604 = load i32, ptr %80, align 4, !tbaa !9
  %605 = icmp slt i32 %603, %604
  br i1 %605, label %611, label %606

606:                                              ; preds = %602
  store i32 23, ptr %48, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %84) #13
  br label %622

607:                                              ; preds = %650, %624, %622, %577, %562, %556
  %608 = landingpad { ptr, i32 }
          cleanup
  %609 = extractvalue { ptr, i32 } %608, 0
  store ptr %609, ptr %17, align 8
  %610 = extractvalue { ptr, i32 } %608, 1
  store i32 %610, ptr %18, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %83) #13
  br label %668

611:                                              ; preds = %602
  %612 = load i32, ptr %84, align 4, !tbaa !9
  %613 = load ptr, ptr %83, align 8, !tbaa !5
  %614 = getelementptr inbounds %struct.NvFlexExtAsset, ptr %613, i32 0, i32 7
  %615 = load ptr, ptr %614, align 8, !tbaa !33
  %616 = load i32, ptr %84, align 4, !tbaa !9
  %617 = sext i32 %616 to i64
  %618 = getelementptr inbounds i32, ptr %615, i64 %617
  store i32 %612, ptr %618, align 4, !tbaa !9
  br label %619

619:                                              ; preds = %611
  %620 = load i32, ptr %84, align 4, !tbaa !9
  %621 = add nsw i32 %620, 1
  store i32 %621, ptr %84, align 4, !tbaa !9
  br label %602, !llvm.loop !34

622:                                              ; preds = %606
  %623 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef 16) #14
          to label %624 unwind label %607

624:                                              ; preds = %622
  %625 = load ptr, ptr %83, align 8, !tbaa !5
  %626 = getelementptr inbounds %struct.NvFlexExtAsset, ptr %625, i32 0, i32 11
  store ptr %623, ptr %626, align 8, !tbaa !35
  %627 = getelementptr inbounds %class.XVector3, ptr %59, i32 0, i32 0
  %628 = load float, ptr %627, align 4, !tbaa !18
  %629 = load ptr, ptr %83, align 8, !tbaa !5
  %630 = getelementptr inbounds %struct.NvFlexExtAsset, ptr %629, i32 0, i32 11
  %631 = load ptr, ptr %630, align 8, !tbaa !35
  %632 = getelementptr inbounds float, ptr %631, i64 0
  store float %628, ptr %632, align 4, !tbaa !11
  %633 = getelementptr inbounds %class.XVector3, ptr %59, i32 0, i32 1
  %634 = load float, ptr %633, align 4, !tbaa !20
  %635 = load ptr, ptr %83, align 8, !tbaa !5
  %636 = getelementptr inbounds %struct.NvFlexExtAsset, ptr %635, i32 0, i32 11
  %637 = load ptr, ptr %636, align 8, !tbaa !35
  %638 = getelementptr inbounds float, ptr %637, i64 1
  store float %634, ptr %638, align 4, !tbaa !11
  %639 = getelementptr inbounds %class.XVector3, ptr %59, i32 0, i32 2
  %640 = load float, ptr %639, align 4, !tbaa !21
  %641 = load ptr, ptr %83, align 8, !tbaa !5
  %642 = getelementptr inbounds %struct.NvFlexExtAsset, ptr %641, i32 0, i32 11
  %643 = load ptr, ptr %642, align 8, !tbaa !35
  %644 = getelementptr inbounds float, ptr %643, i64 2
  store float %640, ptr %644, align 4, !tbaa !11
  %645 = load ptr, ptr %83, align 8, !tbaa !5
  %646 = getelementptr inbounds %struct.NvFlexExtAsset, ptr %645, i32 0, i32 13
  store ptr null, ptr %646, align 8, !tbaa !36
  %647 = load ptr, ptr %83, align 8, !tbaa !5
  %648 = getelementptr inbounds %struct.NvFlexExtAsset, ptr %647, i32 0, i32 14
  store ptr null, ptr %648, align 8, !tbaa !37
  %649 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef 4) #14
          to label %650 unwind label %607

650:                                              ; preds = %624
  %651 = load ptr, ptr %83, align 8, !tbaa !5
  %652 = getelementptr inbounds %struct.NvFlexExtAsset, ptr %651, i32 0, i32 10
  store ptr %649, ptr %652, align 8, !tbaa !38
  %653 = load ptr, ptr %83, align 8, !tbaa !5
  %654 = getelementptr inbounds %struct.NvFlexExtAsset, ptr %653, i32 0, i32 10
  %655 = load ptr, ptr %654, align 8, !tbaa !38
  %656 = getelementptr inbounds float, ptr %655, i64 0
  store float 1.000000e+00, ptr %656, align 4, !tbaa !11
  %657 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef 4) #14
          to label %658 unwind label %607

658:                                              ; preds = %650
  %659 = load ptr, ptr %83, align 8, !tbaa !5
  %660 = getelementptr inbounds %struct.NvFlexExtAsset, ptr %659, i32 0, i32 9
  store ptr %657, ptr %660, align 8, !tbaa !39
  %661 = load i32, ptr %80, align 4, !tbaa !9
  %662 = load ptr, ptr %83, align 8, !tbaa !5
  %663 = getelementptr inbounds %struct.NvFlexExtAsset, ptr %662, i32 0, i32 9
  %664 = load ptr, ptr %663, align 8, !tbaa !39
  %665 = getelementptr inbounds i32, ptr %664, i64 0
  store i32 %661, ptr %665, align 4, !tbaa !9
  br label %666

666:                                              ; preds = %658, %558
  %667 = load ptr, ptr %83, align 8, !tbaa !5
  store ptr %667, ptr %7, align 8
  store i32 1, ptr %48, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %83) #13
  call void @llvm.lifetime.end.p0(i64 4, ptr %80) #13
  call void @llvm.lifetime.end.p0(i64 12, ptr %59) #13
  call void @_ZNSt6vectorIfSaIfEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %57) #13
  call void @llvm.lifetime.end.p0(i64 24, ptr %57) #13
  call void @_ZNSt6vectorIjSaIjEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %49) #13
  call void @llvm.lifetime.end.p0(i64 24, ptr %49) #13
  br label %674

668:                                              ; preds = %607, %552, %538
  call void @llvm.lifetime.end.p0(i64 4, ptr %80) #13
  br label %669

669:                                              ; preds = %668, %511, %392
  call void @llvm.lifetime.end.p0(i64 12, ptr %59) #13
  br label %670

670:                                              ; preds = %669, %388
  call void @_ZNSt6vectorIfSaIfEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %57) #13
  br label %671

671:                                              ; preds = %670, %384
  call void @llvm.lifetime.end.p0(i64 24, ptr %57) #13
  br label %672

672:                                              ; preds = %671, %380
  call void @_ZNSt6vectorIjSaIjEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %49) #13
  br label %673

673:                                              ; preds = %672, %376
  call void @llvm.lifetime.end.p0(i64 24, ptr %49) #13
  br label %676

674:                                              ; preds = %666, %296
  call void @llvm.lifetime.end.p0(i64 12, ptr %47) #13
  call void @llvm.lifetime.end.p0(i64 4, ptr %40) #13
  call void @llvm.lifetime.end.p0(i64 4, ptr %39) #13
  call void @llvm.lifetime.end.p0(i64 4, ptr %38) #13
  call void @llvm.lifetime.end.p0(i64 4, ptr %37) #13
  call void @llvm.lifetime.end.p0(i64 4, ptr %36) #13
  call void @llvm.lifetime.end.p0(i64 4, ptr %35) #13
  call void @llvm.lifetime.end.p0(i64 12, ptr %33) #13
  call void @llvm.lifetime.end.p0(i64 12, ptr %27) #13
  call void @llvm.lifetime.end.p0(i64 12, ptr %26) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %25) #13
  call void @_ZNSt6vectorIiSaIiEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %24) #13
  call void @llvm.lifetime.end.p0(i64 24, ptr %24) #13
  call void @_ZNSt6vectorI8XVector4IfESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %23) #13
  call void @llvm.lifetime.end.p0(i64 24, ptr %23) #13
  call void @_ZNSt6vectorI8XVector4IfESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %22) #13
  call void @llvm.lifetime.end.p0(i64 24, ptr %22) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %16) #13
  call void @llvm.lifetime.end.p0(i64 12, ptr %14) #13
  %675 = load ptr, ptr %7, align 8
  ret ptr %675

676:                                              ; preds = %673, %317
  call void @llvm.lifetime.end.p0(i64 12, ptr %47) #13
  br label %677

677:                                              ; preds = %676, %313, %309, %305
  call void @llvm.lifetime.end.p0(i64 4, ptr %40) #13
  call void @llvm.lifetime.end.p0(i64 4, ptr %39) #13
  call void @llvm.lifetime.end.p0(i64 4, ptr %38) #13
  call void @llvm.lifetime.end.p0(i64 4, ptr %37) #13
  call void @llvm.lifetime.end.p0(i64 4, ptr %36) #13
  br label %678

678:                                              ; preds = %677, %301
  call void @llvm.lifetime.end.p0(i64 4, ptr %35) #13
  br label %679

679:                                              ; preds = %678, %297
  call void @llvm.lifetime.end.p0(i64 12, ptr %33) #13
  br label %680

680:                                              ; preds = %679, %183, %155
  call void @llvm.lifetime.end.p0(i64 12, ptr %27) #13
  br label %681

681:                                              ; preds = %680, %151
  call void @llvm.lifetime.end.p0(i64 12, ptr %26) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %25) #13
  call void @_ZNSt6vectorIiSaIiEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %24) #13
  call void @llvm.lifetime.end.p0(i64 24, ptr %24) #13
  call void @_ZNSt6vectorI8XVector4IfESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %23) #13
  call void @llvm.lifetime.end.p0(i64 24, ptr %23) #13
  call void @_ZNSt6vectorI8XVector4IfESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %22) #13
  call void @llvm.lifetime.end.p0(i64 24, ptr %22) #13
  br label %682

682:                                              ; preds = %681, %124
  call void @llvm.lifetime.end.p0(i64 8, ptr %16) #13
  call void @llvm.lifetime.end.p0(i64 12, ptr %14) #13
  br label %683

683:                                              ; preds = %682
  %684 = load ptr, ptr %17, align 8
  %685 = load i32, ptr %18, align 4
  %686 = insertvalue { ptr, i32 } poison, ptr %684, 0
  %687 = insertvalue { ptr, i32 } %686, i32 %685, 1
  resume { ptr, i32 } %687
}

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

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef nonnull align 4 dereferenceable(12) ptr @_ZN8XVector3IfEpLERKS0_(ptr noundef nonnull align 4 dereferenceable(12), ptr noundef nonnull align 4 dereferenceable(12)) #2 align 2

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

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

; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare { i64, i1 } @llvm.umul.with.overflow.i64(i64, i64) #3

; Function Attrs: nobuiltin allocsize(0)
declare noundef nonnull ptr @_Znam(i64 noundef) #4

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

declare i32 @__gxx_personality_v0(...)

; Function Attrs: nobuiltin nounwind
declare void @_ZdaPvm(ptr noundef, i64 noundef) #5

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local { <2 x float>, float } @_ZNK8XVector3IfEmiERKS0_(ptr noundef nonnull align 4 dereferenceable(12), ptr noundef nonnull align 4 dereferenceable(12)) #6 align 2

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

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

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local { <2 x float>, float } @_Z3MinIfE8XVector3IT_ERKS2_S4_(ptr noundef nonnull align 4 dereferenceable(12), ptr noundef nonnull align 4 dereferenceable(12)) #6

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local { <2 x float>, float } @_Z3MaxIfE8XVector3IT_ERKS2_S4_(ptr noundef nonnull align 4 dereferenceable(12), ptr noundef nonnull align 4 dereferenceable(12)) #6

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local { <2 x float>, float } @_ZmlIfE8XVector3IT_ES1_RKS2_(float noundef, ptr noundef nonnull align 4 dereferenceable(12)) #8

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef nonnull align 4 dereferenceable(12) ptr @_ZN8XVector3IfEmIERKS0_(ptr noundef nonnull align 4 dereferenceable(12), ptr noundef nonnull align 4 dereferenceable(12)) #2 align 2

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNSt6vectorIjSaIjEEC2EmRKS0_(ptr noundef nonnull align 8 dereferenceable(24), i64 noundef, ptr noundef nonnull align 1 dereferenceable(1)) unnamed_addr #9 align 2

declare void @_Z8VoxelizePK8XVector3IfEiPKiijjjPjS0_S0_(ptr noundef, i32 noundef, ptr noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, ptr noundef, <2 x float>, float, <2 x float>, float) #10

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIjSaIjEEixEm(ptr noundef nonnull align 8 dereferenceable(24), i64 noundef) #8 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local { <2 x float>, float } @_ZNK8XVector3IfEplERKS0_(ptr noundef nonnull align 4 dereferenceable(12), ptr noundef nonnull align 4 dereferenceable(12)) #6 align 2

; Function Attrs: nobuiltin nounwind
declare void @_ZdaPv(ptr noundef) #5

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNSt6vectorIfSaIfEEC2EmRKS0_(ptr noundef nonnull align 8 dereferenceable(24), i64 noundef, ptr noundef nonnull align 1 dereferenceable(1)) unnamed_addr #9 align 2

declare void @_Z7MakeSDFPKjjjjPf(ptr noundef, i32 noundef, i32 noundef, i32 noundef, ptr noundef) #10

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIfSaIfEEixEm(ptr noundef nonnull align 8 dereferenceable(24), i64 noundef) #8 align 2

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local { <2 x float>, float } @_Z13SafeNormalizeI8XVector3IfEET_RKS2_S4_(ptr noundef nonnull align 4 dereferenceable(12), ptr noundef nonnull align 4 dereferenceable(12)) #11

; Function Attrs: mustprogress uwtable
declare hidden { <2 x float>, float } @_ZN12_GLOBAL__N_113SampleSDFGradEPKfiiii(ptr noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef) #9

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local { <2 x float>, float } @_ZNK8XVector3IfEmlEf(ptr noundef nonnull align 4 dereferenceable(12), float noundef) #6 align 2

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

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

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 4 dereferenceable(16) ptr @_ZNSt6vectorI8XVector4IfESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24), i64 noundef) #8 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 4 dereferenceable(16) ptr @_ZN8XVector4IfEpLERKS0_(ptr noundef nonnull align 4 dereferenceable(16), ptr noundef nonnull align 4 dereferenceable(16)) #8 align 2

; Function Attrs: nobuiltin allocsize(0)
declare noundef nonnull ptr @_Znwm(i64 noundef) #4

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

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

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

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

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

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

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

attributes #0 = { mustprogress uwtable "min-legal-vector-width"="64" "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 #1 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #2 = { 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 #3 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) }
attributes #4 = { nobuiltin allocsize(0) "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #5 = { nobuiltin nounwind "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #6 = { inlinehint mustprogress 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 = { nocallback nofree nounwind willreturn memory(argmem: readwrite) }
attributes #8 = { mustprogress nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #9 = { mustprogress 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 = { "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #11 = { inlinehint mustprogress uwtable "min-legal-vector-width"="64" "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 #12 = { nocallback nofree nounwind willreturn memory(argmem: write) }
attributes #13 = { nounwind }
attributes #14 = { builtin allocsize(0) }
attributes #15 = { builtin 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 = !{i64 0, i64 4, !11, i64 4, i64 4, !11, i64 8, i64 4, !11}
!17 = distinct !{!17, !14}
!18 = !{!19, !12, i64 0}
!19 = !{!"_ZTS8XVector3IfE", !12, i64 0, !12, i64 4, !12, i64 8}
!20 = !{!19, !12, i64 4}
!21 = !{!19, !12, i64 8}
!22 = distinct !{!22, !14}
!23 = distinct !{!23, !14}
!24 = distinct !{!24, !14}
!25 = distinct !{!25, !14}
!26 = !{!27, !10, i64 8}
!27 = !{!"_ZTS14NvFlexExtAsset", !6, i64 0, !10, i64 8, !10, i64 12, !6, i64 16, !6, i64 24, !6, i64 32, !10, i64 40, !6, i64 48, !10, i64 56, !6, i64 64, !6, i64 72, !6, i64 80, !10, i64 88, !6, i64 96, !6, i64 104, !6, i64 112, !10, i64 120, !28, i64 124, !12, i64 128, !12, i64 132, !12, i64 136}
!28 = !{!"bool", !7, i64 0}
!29 = !{!27, !10, i64 12}
!30 = !{!27, !6, i64 0}
!31 = !{!27, !10, i64 88}
!32 = !{!27, !10, i64 56}
!33 = !{!27, !6, i64 48}
!34 = distinct !{!34, !14}
!35 = !{!27, !6, i64 80}
!36 = !{!27, !6, i64 96}
!37 = !{!27, !6, i64 104}
!38 = !{!27, !6, i64 72}
!39 = !{!27, !6, i64 64}


; 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.XVector3 = type { float, float, float }
%"class.std::vector" = type { %"struct.std::_Vector_base" }
%"struct.std::_Vector_base" = type { %"struct.std::_Vector_base<XVector4<float>, std::allocator<XVector4<float>>>::_Vector_impl" }
%"struct.std::_Vector_base<XVector4<float>, std::allocator<XVector4<float>>>::_Vector_impl" = type { %"struct.std::_Vector_base<XVector4<float>, std::allocator<XVector4<float>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<XVector4<float>, std::allocator<XVector4<float>>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.0" = type { %"struct.std::_Vector_base.1" }
%"struct.std::_Vector_base.1" = type { %"struct.std::_Vector_base<int, std::allocator<int>>::_Vector_impl" }
%"struct.std::_Vector_base<int, std::allocator<int>>::_Vector_impl" = type { %"struct.std::_Vector_base<int, std::allocator<int>>::_Vector_impl_data" }
%"struct.std::_Vector_base<int, std::allocator<int>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.5" = type { %"struct.std::_Vector_base.6" }
%"struct.std::_Vector_base.6" = type { %"struct.std::_Vector_base<unsigned int, std::allocator<unsigned int>>::_Vector_impl" }
%"struct.std::_Vector_base<unsigned int, std::allocator<unsigned int>>::_Vector_impl" = type { %"struct.std::_Vector_base<unsigned int, std::allocator<unsigned int>>::_Vector_impl_data" }
%"struct.std::_Vector_base<unsigned int, std::allocator<unsigned int>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::allocator.7" = type { i8 }
%"class.std::vector.10" = type { %"struct.std::_Vector_base.11" }
%"struct.std::_Vector_base.11" = type { %"struct.std::_Vector_base<float, std::allocator<float>>::_Vector_impl" }
%"struct.std::_Vector_base<float, std::allocator<float>>::_Vector_impl" = type { %"struct.std::_Vector_base<float, std::allocator<float>>::_Vector_impl_data" }
%"struct.std::_Vector_base<float, std::allocator<float>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::allocator.12" = type { i8 }
%class.XVector4 = type { float, float, float, float }

; Function Attrs: mustprogress uwtable
define dso_local noalias noundef ptr @NvFlexExtCreateRigidFromMesh(ptr noundef %0, i32 noundef %1, ptr noundef %2, i32 noundef %3, float noundef %4, float noundef %5) local_unnamed_addr #0 personality ptr @__gxx_personality_v0 {
  %7 = alloca %class.XVector3, align 4
  %8 = alloca %class.XVector3, align 8
  %9 = alloca %"class.std::vector", align 8
  %10 = alloca %"class.std::vector", align 8
  %11 = alloca %"class.std::vector.0", align 8
  %12 = alloca %class.XVector3, align 8
  %13 = alloca %class.XVector3, align 8
  %14 = alloca %class.XVector3, align 8
  %15 = alloca i32, align 4
  %16 = alloca i32, align 4
  %17 = alloca i32, align 4
  %18 = alloca %class.XVector3, align 8
  %19 = alloca %class.XVector3, align 4
  %20 = alloca %class.XVector3, align 8
  %21 = alloca %class.XVector3, align 4
  %22 = alloca %class.XVector3, align 8
  %23 = alloca %"class.std::vector.5", align 8
  %24 = alloca %"class.std::allocator.7", align 1
  %25 = alloca %class.XVector3, align 4
  %26 = alloca %"class.std::vector.10", align 8
  %27 = alloca %"class.std::allocator.12", align 1
  %28 = alloca %class.XVector3, align 8
  %29 = alloca %class.XVector3, align 8
  %30 = alloca %class.XVector3, align 8
  %31 = alloca %class.XVector3, align 4
  %32 = alloca %class.XVector3, align 8
  %33 = alloca %class.XVector3, align 8
  %34 = alloca %class.XVector3, align 4
  %35 = alloca %class.XVector3, align 8
  %36 = alloca %class.XVector4, align 4
  %37 = alloca %class.XVector4, align 4
  %38 = alloca i32, align 4
  %39 = alloca %class.XVector4, align 4
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %7) #14
  call void @_ZN8XVector3IfEC2Ef(ptr noundef nonnull align 4 dereferenceable(12) %7, float noundef 0.000000e+00)
  %40 = icmp sgt i32 %1, 0
  br i1 %40, label %.lr.ph.preheader, label %._crit_edge

.lr.ph.preheader:                                 ; preds = %6
  %wide.trip.count = zext nneg i32 %1 to i64
  br label %.lr.ph

._crit_edge:                                      ; preds = %.lr.ph, %6
  %41 = sitofp i32 %1 to float
  %42 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZN8XVector3IfEdVEf(ptr noundef nonnull align 4 dereferenceable(12) %7, float noundef %41)
  %43 = sext i32 %1 to i64
  %44 = call { i64, i1 } @llvm.umul.with.overflow.i64(i64 %43, i64 12)
  %45 = extractvalue { i64, i1 } %44, 1
  %46 = extractvalue { i64, i1 } %44, 0
  %47 = select i1 %45, i64 -1, i64 %46
  %48 = call noalias noundef nonnull ptr @_Znam(i64 noundef %47) #15
  %49 = icmp eq i32 %1, 0
  br i1 %49, label %._crit_edge226, label %52

.lr.ph:                                           ; preds = %.lr.ph.preheader, %.lr.ph
  %indvars.iv = phi i64 [ 0, %.lr.ph.preheader ], [ %indvars.iv.next, %.lr.ph ]
  %50 = getelementptr inbounds %class.XVector3, ptr %0, i64 %indvars.iv
  %51 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZN8XVector3IfEpLERKS0_(ptr noundef nonnull align 4 dereferenceable(12) %7, ptr noundef nonnull align 4 dereferenceable(12) %50)
  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
  %exitcond.not = icmp eq i64 %indvars.iv.next, %wide.trip.count
  br i1 %exitcond.not, label %._crit_edge, label %.lr.ph, !llvm.loop !5

52:                                               ; preds = %._crit_edge
  %53 = getelementptr inbounds %class.XVector3, ptr %48, i64 %43
  br label %54

54:                                               ; preds = %54, %52
  %55 = phi ptr [ %48, %52 ], [ %56, %54 ]
  call void @_ZN8XVector3IfEC2Ev(ptr noundef nonnull align 4 dereferenceable(12) %55)
  %56 = getelementptr inbounds i8, ptr %55, i64 12
  %57 = icmp eq ptr %56, %53
  br i1 %57, label %.loopexit, label %54

.loopexit:                                        ; preds = %54
  br i1 %40, label %.lr.ph225, label %._crit_edge230.critedge

.lr.ph225:                                        ; preds = %.loopexit
  %.sroa.2141.0..sroa_idx = getelementptr inbounds i8, ptr %8, i64 8
  %wide.trip.count274 = zext nneg i32 %1 to i64
  br label %58

._crit_edge226:                                   ; preds = %58, %._crit_edge
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %9) #14
  call void @_ZNSt6vectorI8XVector4IfESaIS1_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %9) #14
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %10) #14
  call void @_ZNSt6vectorI8XVector4IfESaIS1_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %10) #14
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %11) #14
  call void @_ZNSt6vectorIiSaIiEEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %11) #14
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %12) #14
  call void @_ZN8XVector3IfEC2Ef(ptr noundef nonnull align 4 dereferenceable(12) %12, float noundef 0x47EFFFFFE0000000)
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %13) #14
  call void @_ZN8XVector3IfEC2Ef(ptr noundef nonnull align 4 dereferenceable(12) %13, float noundef 0xC7EFFFFFE0000000)
  br i1 %40, label %.lr.ph229, label %._crit_edge230

.lr.ph229:                                        ; preds = %._crit_edge226
  %.sroa.5131.0..sroa_idx = getelementptr inbounds i8, ptr %12, i64 8
  %.sroa.5.0..sroa_idx = getelementptr inbounds i8, ptr %13, i64 8
  %wide.trip.count279 = zext nneg i32 %1 to i64
  br label %64

58:                                               ; preds = %.lr.ph225, %58
  %indvars.iv271 = phi i64 [ 0, %.lr.ph225 ], [ %indvars.iv.next272, %58 ]
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %8) #14
  %59 = getelementptr inbounds %class.XVector3, ptr %0, i64 %indvars.iv271
  %60 = call { <2 x float>, float } @_ZNK8XVector3IfEmiERKS0_(ptr noundef nonnull align 4 dereferenceable(12) %59, ptr noundef nonnull align 4 dereferenceable(12) %7)
  %.fca.0.extract138 = extractvalue { <2 x float>, float } %60, 0
  %.fca.1.extract139 = extractvalue { <2 x float>, float } %60, 1
  store <2 x float> %.fca.0.extract138, ptr %8, align 8
  store float %.fca.1.extract139, ptr %.sroa.2141.0..sroa_idx, align 8
  %61 = getelementptr inbounds %class.XVector3, ptr %48, i64 %indvars.iv271
  %62 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZN8XVector3IfEpLERKS0_(ptr noundef nonnull align 4 dereferenceable(12) %61, ptr noundef nonnull align 4 dereferenceable(12) %8)
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %8) #14
  %indvars.iv.next272 = add nuw nsw i64 %indvars.iv271, 1
  %exitcond275.not = icmp eq i64 %indvars.iv.next272, %wide.trip.count274
  br i1 %exitcond275.not, label %._crit_edge226, label %58, !llvm.loop !7

._crit_edge230.critedge:                          ; preds = %.loopexit
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %9) #14
  call void @_ZNSt6vectorI8XVector4IfESaIS1_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %9) #14
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %10) #14
  call void @_ZNSt6vectorI8XVector4IfESaIS1_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %10) #14
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %11) #14
  call void @_ZNSt6vectorIiSaIiEEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %11) #14
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %12) #14
  call void @_ZN8XVector3IfEC2Ef(ptr noundef nonnull align 4 dereferenceable(12) %12, float noundef 0x47EFFFFFE0000000)
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %13) #14
  call void @_ZN8XVector3IfEC2Ef(ptr noundef nonnull align 4 dereferenceable(12) %13, float noundef 0xC7EFFFFFE0000000)
  br label %._crit_edge230

._crit_edge230:                                   ; preds = %69, %._crit_edge230.critedge, %._crit_edge226
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %14) #14
  %63 = invoke { <2 x float>, float } @_ZNK8XVector3IfEmiERKS0_(ptr noundef nonnull align 4 dereferenceable(12) %13, ptr noundef nonnull align 4 dereferenceable(12) %12)
          to label %74 unwind label %127

64:                                               ; preds = %.lr.ph229, %69
  %indvars.iv276 = phi i64 [ 0, %.lr.ph229 ], [ %indvars.iv.next277, %69 ]
  %65 = getelementptr inbounds %class.XVector3, ptr %48, i64 %indvars.iv276
  %66 = invoke { <2 x float>, float } @_Z3MinIfE8XVector3IT_ERKS2_S4_(ptr noundef nonnull align 4 dereferenceable(12) %12, ptr noundef nonnull align 4 dereferenceable(12) %65)
          to label %67 unwind label %70

67:                                               ; preds = %64
  %.fca.0.extract126 = extractvalue { <2 x float>, float } %66, 0
  %.fca.1.extract127 = extractvalue { <2 x float>, float } %66, 1
  store <2 x float> %.fca.0.extract126, ptr %12, align 8
  store float %.fca.1.extract127, ptr %.sroa.5131.0..sroa_idx, align 8, !tbaa !8
  %68 = invoke { <2 x float>, float } @_Z3MaxIfE8XVector3IT_ERKS2_S4_(ptr noundef nonnull align 4 dereferenceable(12) %13, ptr noundef nonnull align 4 dereferenceable(12) %65)
          to label %69 unwind label %72

69:                                               ; preds = %67
  %.fca.0.extract121 = extractvalue { <2 x float>, float } %68, 0
  %.fca.1.extract122 = extractvalue { <2 x float>, float } %68, 1
  store <2 x float> %.fca.0.extract121, ptr %13, align 8
  store float %.fca.1.extract122, ptr %.sroa.5.0..sroa_idx, align 8, !tbaa !8
  %indvars.iv.next277 = add nuw nsw i64 %indvars.iv276, 1
  %exitcond280.not = icmp eq i64 %indvars.iv.next277, %wide.trip.count279
  br i1 %exitcond280.not, label %._crit_edge230, label %64, !llvm.loop !12

70:                                               ; preds = %64
  %71 = landingpad { ptr, i32 }
          cleanup
  br label %263

72:                                               ; preds = %67
  %73 = landingpad { ptr, i32 }
          cleanup
  br label %263

74:                                               ; preds = %._crit_edge230
  %.fca.0.extract117 = extractvalue { <2 x float>, float } %63, 0
  %.fca.1.extract118 = extractvalue { <2 x float>, float } %63, 1
  store <2 x float> %.fca.0.extract117, ptr %14, align 8
  %.sroa.2120.0..sroa_idx = getelementptr inbounds i8, ptr %14, i64 8
  store float %.fca.1.extract118, ptr %.sroa.2120.0..sroa_idx, align 8
  %75 = getelementptr inbounds i8, ptr %14, i64 4
  %76 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3maxIfERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4) %14, ptr noundef nonnull align 4 dereferenceable(4) %75)
  %77 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3maxIfERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4) %76, ptr noundef nonnull align 4 dereferenceable(4) %.sroa.2120.0..sroa_idx)
  %78 = load float, ptr %77, align 4, !tbaa !8
  %79 = fmul float %4, 0x3FEFFF2E40000000
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %15) #14
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %16) #14
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %17) #14
  %80 = load float, ptr %14, align 8
  %81 = fcmp olt float %80, %4
  %82 = fdiv float %80, %79
  %83 = fptosi float %82 to i32
  %84 = select i1 %81, i32 1, i32 %83
  store i32 %84, ptr %15, align 4, !tbaa !13
  %85 = load float, ptr %75, align 4
  %86 = fcmp olt float %85, %4
  %87 = fdiv float %85, %79
  %88 = fptosi float %87 to i32
  %89 = select i1 %86, i32 1, i32 %88
  store i32 %89, ptr %16, align 4, !tbaa !13
  %90 = load float, ptr %.sroa.2120.0..sroa_idx, align 8
  %91 = fcmp olt float %90, %4
  %92 = fdiv float %90, %79
  %93 = fptosi float %92 to i32
  %94 = select i1 %91, i32 1, i32 %93
  store i32 %94, ptr %17, align 4, !tbaa !13
  %95 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3maxIiERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4) %15, ptr noundef nonnull align 4 dereferenceable(4) %16)
  %96 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3maxIiERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4) %95, ptr noundef nonnull align 4 dereferenceable(4) %17)
  %97 = load i32, ptr %96, align 4, !tbaa !13
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %18) #14
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %19) #14
  call void @_ZN8XVector3IfEC2Ef(ptr noundef nonnull align 4 dereferenceable(12) %19, float noundef %4)
  %98 = call { <2 x float>, float } @_ZmlIfE8XVector3IT_ES1_RKS2_(float noundef 2.000000e+00, ptr noundef nonnull align 4 dereferenceable(12) %19)
  %.fca.0.extract87 = extractvalue { <2 x float>, float } %98, 0
  %.fca.1.extract88 = extractvalue { <2 x float>, float } %98, 1
  store <2 x float> %.fca.0.extract87, ptr %18, align 8
  %.sroa.290.0..sroa_idx = getelementptr inbounds i8, ptr %18, i64 8
  store float %.fca.1.extract88, ptr %.sroa.290.0..sroa_idx, align 8
  %99 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZN8XVector3IfEmIERKS0_(ptr noundef nonnull align 4 dereferenceable(12) %12, ptr noundef nonnull align 4 dereferenceable(12) %18)
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %19) #14
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %18) #14
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %20) #14
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %21) #14
  call void @_ZN8XVector3IfEC2Ef(ptr noundef nonnull align 4 dereferenceable(12) %21, float noundef %4)
  %100 = call { <2 x float>, float } @_ZmlIfE8XVector3IT_ES1_RKS2_(float noundef 2.000000e+00, ptr noundef nonnull align 4 dereferenceable(12) %21)
  %.fca.0.extract83 = extractvalue { <2 x float>, float } %100, 0
  %.fca.1.extract84 = extractvalue { <2 x float>, float } %100, 1
  store <2 x float> %.fca.0.extract83, ptr %20, align 8
  %.sroa.286.0..sroa_idx = getelementptr inbounds i8, ptr %20, i64 8
  store float %.fca.1.extract84, ptr %.sroa.286.0..sroa_idx, align 8
  %101 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZN8XVector3IfEpLERKS0_(ptr noundef nonnull align 4 dereferenceable(12) %13, ptr noundef nonnull align 4 dereferenceable(12) %20)
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %21) #14
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %20) #14
  %102 = add i32 %97, 4
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %22) #14
  call void @_ZN8XVector3IfEC2Ev(ptr noundef nonnull align 4 dereferenceable(12) %22)
  %103 = load i32, ptr %15, align 4, !tbaa !13
  %104 = load i32, ptr %16, align 4, !tbaa !13
  %105 = load <2 x float>, ptr %14, align 8, !tbaa !8
  %106 = insertelement <2 x i32> poison, i32 %103, i64 0
  %107 = insertelement <2 x i32> %106, i32 %104, i64 1
  %108 = add nsw <2 x i32> %107, <i32 -1, i32 -1>
  %109 = sitofp <2 x i32> %108 to <2 x float>
  %110 = fneg <2 x float> %109
  %111 = insertelement <2 x float> poison, float %4, i64 0
  %112 = shufflevector <2 x float> %111, <2 x float> poison, <2 x i32> zeroinitializer
  %113 = call <2 x float> @llvm.fmuladd.v2f32(<2 x float> %110, <2 x float> %112, <2 x float> %105)
  %114 = fsub <2 x float> %112, %113
  %115 = fmul <2 x float> %114, <float 5.000000e-01, float 5.000000e-01>
  store <2 x float> %115, ptr %22, align 8, !tbaa !8
  %116 = load float, ptr %.sroa.2120.0..sroa_idx, align 8, !tbaa !15
  %117 = load i32, ptr %17, align 4, !tbaa !13
  %118 = add nsw i32 %117, -1
  %119 = sitofp i32 %118 to float
  %120 = fneg float %119
  %121 = call float @llvm.fmuladd.f32(float %120, float %4, float %116)
  %122 = fsub float %4, %121
  %123 = fmul float %122, 5.000000e-01
  %124 = getelementptr inbounds i8, ptr %22, i64 8
  store float %123, ptr %124, align 8, !tbaa !15
  %125 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZN8XVector3IfEmIERKS0_(ptr noundef nonnull align 4 dereferenceable(12) %12, ptr noundef nonnull align 4 dereferenceable(12) %22)
  %126 = icmp sgt i32 %97, 60
  br i1 %126, label %261, label %129

127:                                              ; preds = %._crit_edge230
  %128 = landingpad { ptr, i32 }
          cleanup
  br label %262

129:                                              ; preds = %74
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %23) #14
  %130 = mul nsw i32 %102, %102
  %131 = mul nsw i32 %130, %102
  %132 = sext i32 %131 to i64
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %24) #14
  call void @_ZNSaIjEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %24) #14
  invoke void @_ZNSt6vectorIjSaIjEEC2EmRKS0_(ptr noundef nonnull align 8 dereferenceable(24) %23, i64 noundef %132, ptr noundef nonnull align 1 dereferenceable(1) %24)
          to label %133 unwind label %200

133:                                              ; preds = %129
  call void @_ZNSt15__new_allocatorIjED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %24) #14
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %24) #14
  %134 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIjSaIjEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %23, i64 noundef 0) #14
  %.sroa.081.0.copyload = load <2 x float>, ptr %12, align 8
  %.sroa.282.0..sroa_idx = getelementptr inbounds i8, ptr %12, i64 8
  %.sroa.282.0.copyload = load float, ptr %.sroa.282.0..sroa_idx, align 8, !tbaa !8
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %25) #14
  %135 = sitofp i32 %102 to float
  %136 = fmul float %135, %4
  call void @_ZN8XVector3IfEC2Ef(ptr noundef nonnull align 4 dereferenceable(12) %25, float noundef %136)
  %137 = invoke { <2 x float>, float } @_ZNK8XVector3IfEplERKS0_(ptr noundef nonnull align 4 dereferenceable(12) %12, ptr noundef nonnull align 4 dereferenceable(12) %25)
          to label %138 unwind label %202

138:                                              ; preds = %133
  %.fca.0.extract75 = extractvalue { <2 x float>, float } %137, 0
  %.fca.1.extract76 = extractvalue { <2 x float>, float } %137, 1
  invoke void @_Z8VoxelizePK8XVector3IfEiPKiijjjPjS0_S0_(ptr noundef nonnull %48, i32 noundef %1, ptr noundef %2, i32 noundef %3, i32 noundef %102, i32 noundef %102, i32 noundef %102, ptr noundef nonnull %134, <2 x float> %.sroa.081.0.copyload, float %.sroa.282.0.copyload, <2 x float> %.fca.0.extract75, float %.fca.1.extract76)
          to label %139 unwind label %202

139:                                              ; preds = %138
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %25) #14
  call void @_ZdaPv(ptr noundef nonnull %48) #16
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %26) #14
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %27) #14
  call void @_ZNSaIfEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %27) #14
  invoke void @_ZNSt6vectorIfSaIfEEC2EmRKS0_(ptr noundef nonnull align 8 dereferenceable(24) %26, i64 noundef %132, ptr noundef nonnull align 1 dereferenceable(1) %27)
          to label %140 unwind label %204

140:                                              ; preds = %139
  call void @_ZNSt15__new_allocatorIfED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %27) #14
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %27) #14
  %141 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIjSaIjEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %23, i64 noundef 0) #14
  %142 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIfSaIfEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %26, i64 noundef 0) #14
  invoke void @_Z7MakeSDFPKjjjjPf(ptr noundef nonnull %141, i32 noundef %102, i32 noundef %102, i32 noundef %102, ptr noundef nonnull %142)
          to label %143 unwind label %206

143:                                              ; preds = %140
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %28) #14
  call void @_ZN8XVector3IfEC2Ev(ptr noundef nonnull align 4 dereferenceable(12) %28)
  %144 = icmp sgt i32 %97, -4
  br i1 %144, label %.preheader221.lr.ph, label %._crit_edge255

.preheader221.lr.ph:                              ; preds = %143
  %.sroa.253.0..sroa_idx = getelementptr inbounds i8, ptr %30, i64 8
  %.sroa.249.0..sroa_idx = getelementptr inbounds i8, ptr %29, i64 8
  %.sroa.245.0..sroa_idx = getelementptr inbounds i8, ptr %33, i64 8
  %.sroa.241.0..sroa_idx = getelementptr inbounds i8, ptr %32, i64 8
  %.sroa.2.0..sroa_idx = getelementptr inbounds i8, ptr %35, i64 8
  %145 = getelementptr inbounds i8, ptr %29, i64 4
  %wide.trip.count284 = zext i32 %102 to i64
  br label %.preheader221.us

.preheader221.us:                                 ; preds = %._crit_edge235.split.us.us, %.preheader221.lr.ph
  %.0199254.us = phi i32 [ 0, %.preheader221.lr.ph ], [ %186, %._crit_edge235.split.us.us ]
  %146 = uitofp nneg i32 %.0199254.us to float
  %147 = fadd float %146, 5.000000e-01
  br label %.preheader.us.us

.preheader.us.us:                                 ; preds = %._crit_edge233.us.us, %.preheader221.us
  %.0200234.us.us = phi i32 [ 0, %.preheader221.us ], [ %185, %._crit_edge233.us.us ]
  %148 = uitofp nneg i32 %.0200234.us.us to float
  %149 = fadd float %148, 5.000000e-01
  br label %150

150:                                              ; preds = %184, %.preheader.us.us
  %indvars.iv281 = phi i64 [ %indvars.iv.next282, %184 ], [ 0, %.preheader.us.us ]
  %151 = trunc i64 %indvars.iv281 to i32
  %152 = mul i32 %102, %151
  %153 = add i32 %152, %.0200234.us.us
  %154 = mul i32 %153, %102
  %155 = add nsw i32 %154, %.0199254.us
  %156 = sext i32 %155 to i64
  %157 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIjSaIjEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %23, i64 noundef %156) #14
  %158 = load i32, ptr %157, align 4, !tbaa !13
  %.not206.us.us = icmp eq i32 %158, 0
  br i1 %.not206.us.us, label %184, label %159

159:                                              ; preds = %150
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %29) #14
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %30) #14
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %31) #14
  %160 = trunc nuw nsw i64 %indvars.iv281 to i32
  %161 = uitofp nneg i32 %160 to float
  %162 = fadd float %161, 5.000000e-01
  call void @_ZN8XVector3IfEC2Efff(ptr noundef nonnull align 4 dereferenceable(12) %31, float noundef %147, float noundef %149, float noundef %162)
  %163 = call { <2 x float>, float } @_ZmlIfE8XVector3IT_ES1_RKS2_(float noundef %4, ptr noundef nonnull align 4 dereferenceable(12) %31)
  %.fca.0.extract50.us.us = extractvalue { <2 x float>, float } %163, 0
  %.fca.1.extract51.us.us = extractvalue { <2 x float>, float } %163, 1
  store <2 x float> %.fca.0.extract50.us.us, ptr %30, align 8
  store float %.fca.1.extract51.us.us, ptr %.sroa.253.0..sroa_idx, align 8
  %164 = invoke { <2 x float>, float } @_ZNK8XVector3IfEplERKS0_(ptr noundef nonnull align 4 dereferenceable(12) %12, ptr noundef nonnull align 4 dereferenceable(12) %30)
          to label %165 unwind label %.split.us.split.us

165:                                              ; preds = %159
  %.fca.0.extract46.us.us = extractvalue { <2 x float>, float } %164, 0
  %.fca.1.extract47.us.us = extractvalue { <2 x float>, float } %164, 1
  store <2 x float> %.fca.0.extract46.us.us, ptr %29, align 8
  store float %.fca.1.extract47.us.us, ptr %.sroa.249.0..sroa_idx, align 8
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %31) #14
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %30) #14
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %32) #14
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %33) #14
  %166 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIfSaIfEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %26, i64 noundef 0) #14
  %167 = invoke { <2 x float>, float } @_ZN12_GLOBAL__N_113SampleSDFGradEPKfiiii(ptr noundef nonnull %166, i32 noundef %102, i32 noundef %.0199254.us, i32 noundef %.0200234.us.us, i32 noundef %160)
          to label %168 unwind label %.split237.us.split.us

168:                                              ; preds = %165
  %.fca.0.extract42.us.us = extractvalue { <2 x float>, float } %167, 0
  %.fca.1.extract43.us.us = extractvalue { <2 x float>, float } %167, 1
  store <2 x float> %.fca.0.extract42.us.us, ptr %33, align 8
  store float %.fca.1.extract43.us.us, ptr %.sroa.245.0..sroa_idx, align 8
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %34) #14
  call void @_ZN8XVector3IfEC2Ev(ptr noundef nonnull align 4 dereferenceable(12) %34)
  %169 = invoke { <2 x float>, float } @_Z13SafeNormalizeI8XVector3IfEET_RKS2_S4_(ptr noundef nonnull align 4 dereferenceable(12) %33, ptr noundef nonnull align 4 dereferenceable(12) %34)
          to label %170 unwind label %.split240.us.split.us

170:                                              ; preds = %168
  %.fca.0.extract38.us.us = extractvalue { <2 x float>, float } %169, 0
  %.fca.1.extract39.us.us = extractvalue { <2 x float>, float } %169, 1
  store <2 x float> %.fca.0.extract38.us.us, ptr %32, align 8
  store float %.fca.1.extract39.us.us, ptr %.sroa.241.0..sroa_idx, align 8
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %34) #14
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %33) #14
  %171 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIfSaIfEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %26, i64 noundef %156) #14
  %172 = load float, ptr %171, align 4, !tbaa !8
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %35) #14
  %173 = invoke { <2 x float>, float } @_ZNK8XVector3IfEmlEf(ptr noundef nonnull align 4 dereferenceable(12) %32, float noundef %5)
          to label %174 unwind label %.split243.us.split.us

174:                                              ; preds = %170
  %175 = fmul float %78, %172
  %.fca.0.extract.us.us = extractvalue { <2 x float>, float } %173, 0
  %.fca.1.extract.us.us = extractvalue { <2 x float>, float } %173, 1
  store <2 x float> %.fca.0.extract.us.us, ptr %35, align 8
  store float %.fca.1.extract.us.us, ptr %.sroa.2.0..sroa_idx, align 8
  %176 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZN8XVector3IfEpLERKS0_(ptr noundef nonnull align 4 dereferenceable(12) %29, ptr noundef nonnull align 4 dereferenceable(12) %35)
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %35) #14
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %36) #14
  call void @_ZN8XVector4IfEC2ERK8XVector3IfEf(ptr noundef nonnull align 4 dereferenceable(16) %36, ptr noundef nonnull align 4 dereferenceable(12) %32, float noundef %175)
  invoke void @_ZNSt6vectorI8XVector4IfESaIS1_EE9push_backEOS1_(ptr noundef nonnull align 8 dereferenceable(24) %10, ptr noundef nonnull align 4 dereferenceable(16) %36)
          to label %177 unwind label %.split246.us.split.us

177:                                              ; preds = %174
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %36) #14
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %37) #14
  %178 = load float, ptr %29, align 8, !tbaa !17
  %179 = load float, ptr %145, align 4, !tbaa !18
  %180 = load float, ptr %.sroa.249.0..sroa_idx, align 8, !tbaa !15
  call void @_ZN8XVector4IfEC2Effff(ptr noundef nonnull align 4 dereferenceable(16) %37, float noundef %178, float noundef %179, float noundef %180, float noundef 1.000000e+00)
  invoke void @_ZNSt6vectorI8XVector4IfESaIS1_EE9push_backEOS1_(ptr noundef nonnull align 8 dereferenceable(24) %9, ptr noundef nonnull align 4 dereferenceable(16) %37)
          to label %181 unwind label %.split249.us.split.us

181:                                              ; preds = %177
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %37) #14
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %38) #14
  store i32 0, ptr %38, align 4, !tbaa !13
  invoke void @_ZNSt6vectorIiSaIiEE9push_backEOi(ptr noundef nonnull align 8 dereferenceable(24) %11, ptr noundef nonnull align 4 dereferenceable(4) %38)
          to label %182 unwind label %.split252.us.split.us

182:                                              ; preds = %181
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %38) #14
  %183 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZN8XVector3IfEpLERKS0_(ptr noundef nonnull align 4 dereferenceable(12) %28, ptr noundef nonnull align 4 dereferenceable(12) %29)
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %32) #14
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %29) #14
  br label %184

184:                                              ; preds = %182, %150
  %indvars.iv.next282 = add nuw nsw i64 %indvars.iv281, 1
  %exitcond285.not = icmp eq i64 %indvars.iv.next282, %wide.trip.count284
  br i1 %exitcond285.not, label %._crit_edge233.us.us, label %150, !llvm.loop !19

._crit_edge233.us.us:                             ; preds = %184
  %185 = add nuw nsw i32 %.0200234.us.us, 1
  %exitcond286.not = icmp eq i32 %185, %102
  br i1 %exitcond286.not, label %._crit_edge235.split.us.us, label %.preheader.us.us, !llvm.loop !20

._crit_edge235.split.us.us:                       ; preds = %._crit_edge233.us.us
  %186 = add nuw nsw i32 %.0199254.us, 1
  %exitcond287.not = icmp eq i32 %186, %102
  br i1 %exitcond287.not, label %._crit_edge255, label %.preheader221.us, !llvm.loop !21

.split.us.split.us:                               ; preds = %159
  %187 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %31) #14
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %30) #14
  br label %210

.split237.us.split.us:                            ; preds = %165
  %188 = landingpad { ptr, i32 }
          cleanup
  br label %208

.split240.us.split.us:                            ; preds = %168
  %189 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %34) #14
  br label %208

.split243.us.split.us:                            ; preds = %170
  %190 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %35) #14
  br label %209

.split246.us.split.us:                            ; preds = %174
  %191 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %36) #14
  br label %209

.split249.us.split.us:                            ; preds = %177
  %192 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %37) #14
  br label %209

.split252.us.split.us:                            ; preds = %181
  %193 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %38) #14
  br label %209

._crit_edge255:                                   ; preds = %._crit_edge235.split.us.us, %143
  %194 = call noundef i64 @_ZNKSt6vectorI8XVector4IfESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %9) #14
  %195 = trunc i64 %194 to i32
  %196 = sitofp i32 %195 to float
  %197 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZN8XVector3IfEdVEf(ptr noundef nonnull align 4 dereferenceable(12) %28, float noundef %196)
  %198 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZN8XVector3IfEpLERKS0_(ptr noundef nonnull align 4 dereferenceable(12) %28, ptr noundef nonnull align 4 dereferenceable(12) %7)
  %199 = icmp sgt i32 %195, 0
  br i1 %199, label %.lr.ph264.preheader, label %._crit_edge265

.lr.ph264.preheader:                              ; preds = %._crit_edge255
  %wide.trip.count291 = and i64 %194, 2147483647
  br label %.lr.ph264

200:                                              ; preds = %129
  %201 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIjED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %24) #14
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %24) #14
  br label %260

202:                                              ; preds = %138, %133
  %203 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %25) #14
  br label %259

204:                                              ; preds = %139
  %205 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIfED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %27) #14
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %27) #14
  br label %258

206:                                              ; preds = %140
  %207 = landingpad { ptr, i32 }
          cleanup
  br label %257

208:                                              ; preds = %.split240.us.split.us, %.split237.us.split.us
  %.pn = phi { ptr, i32 } [ %189, %.split240.us.split.us ], [ %188, %.split237.us.split.us ]
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %33) #14
  br label %209

209:                                              ; preds = %.split243.us.split.us, %.split246.us.split.us, %.split249.us.split.us, %.split252.us.split.us, %208
  %.pn208.pn = phi { ptr, i32 } [ %.pn, %208 ], [ %193, %.split252.us.split.us ], [ %192, %.split249.us.split.us ], [ %191, %.split246.us.split.us ], [ %190, %.split243.us.split.us ]
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %32) #14
  br label %210

210:                                              ; preds = %209, %.split.us.split.us
  %.pn208.pn.pn = phi { ptr, i32 } [ %.pn208.pn, %209 ], [ %187, %.split.us.split.us ]
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %29) #14
  br label %256

._crit_edge265:                                   ; preds = %.lr.ph264, %._crit_edge255
  %211 = invoke noalias noundef nonnull dereferenceable(144) ptr @_Znwm(i64 noundef 144) #15
          to label %214 unwind label %238

.lr.ph264:                                        ; preds = %.lr.ph264.preheader, %.lr.ph264
  %indvars.iv288 = phi i64 [ 0, %.lr.ph264.preheader ], [ %indvars.iv.next289, %.lr.ph264 ]
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %39) #14
  call void @_ZN8XVector4IfEC2ERK8XVector3IfEf(ptr noundef nonnull align 4 dereferenceable(16) %39, ptr noundef nonnull align 4 dereferenceable(12) %7, float noundef 0.000000e+00)
  %212 = call noundef nonnull align 4 dereferenceable(16) ptr @_ZNSt6vectorI8XVector4IfESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %9, i64 noundef %indvars.iv288) #14
  %213 = call noundef nonnull align 4 dereferenceable(16) ptr @_ZN8XVector4IfEpLERKS0_(ptr noundef nonnull align 4 dereferenceable(16) %212, ptr noundef nonnull align 4 dereferenceable(16) %39)
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %39) #14
  %indvars.iv.next289 = add nuw nsw i64 %indvars.iv288, 1
  %exitcond292.not = icmp eq i64 %indvars.iv.next289, %wide.trip.count291
  br i1 %exitcond292.not, label %._crit_edge265, label %.lr.ph264, !llvm.loop !22

214:                                              ; preds = %._crit_edge265
  %.not = icmp eq i32 %195, 0
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(144) %211, i8 0, i64 144, i1 false)
  br i1 %.not, label %255, label %215

215:                                              ; preds = %214
  %216 = getelementptr inbounds i8, ptr %211, i64 8
  store i32 %195, ptr %216, align 8, !tbaa !23
  %217 = getelementptr inbounds i8, ptr %211, i64 12
  store i32 %195, ptr %217, align 4, !tbaa !27
  %218 = shl nsw i32 %195, 2
  %219 = sext i32 %218 to i64
  %220 = icmp slt i32 %195, 0
  %221 = shl nsw i64 %219, 2
  %222 = select i1 %220, i64 -1, i64 %221
  %223 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %222) #15
          to label %224 unwind label %238

224:                                              ; preds = %215
  store ptr %223, ptr %211, align 8, !tbaa !28
  %225 = call noundef nonnull align 4 dereferenceable(16) ptr @_ZNSt6vectorI8XVector4IfESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %9, i64 noundef 0) #14
  %sext = shl i64 %194, 32
  %226 = ashr exact i64 %sext, 28
  call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 4 %223, ptr nonnull align 4 %225, i64 %226, i1 false)
  %227 = getelementptr inbounds i8, ptr %211, i64 88
  store i32 1, ptr %227, align 8, !tbaa !29
  %228 = getelementptr inbounds i8, ptr %211, i64 56
  store i32 %195, ptr %228, align 8, !tbaa !30
  %229 = lshr exact i64 %sext, 30
  %.inv = icmp sgt i64 %sext, -1
  %230 = select i1 %.inv, i64 %229, i64 -1
  %231 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %230) #15
          to label %232 unwind label %238

232:                                              ; preds = %224
  %233 = getelementptr inbounds i8, ptr %211, i64 48
  store ptr %231, ptr %233, align 8, !tbaa !31
  br i1 %199, label %.lr.ph268.preheader, label %._crit_edge269

.lr.ph268.preheader:                              ; preds = %232
  %wide.trip.count296 = and i64 %194, 2147483647
  %min.iters.check = icmp ult i64 %wide.trip.count296, 8
  br i1 %min.iters.check, label %.lr.ph268.preheader299, label %vector.ph

.lr.ph268.preheader299:                           ; preds = %middle.block, %.lr.ph268.preheader
  %indvars.iv293.ph = phi i64 [ 0, %.lr.ph268.preheader ], [ %n.vec, %middle.block ]
  br label %.lr.ph268

vector.ph:                                        ; preds = %.lr.ph268.preheader
  %n.mod.vf = and i64 %194, 7
  %n.vec = sub nsw i64 %wide.trip.count296, %n.mod.vf
  br label %vector.body

vector.body:                                      ; preds = %vector.body, %vector.ph
  %index = phi i64 [ 0, %vector.ph ], [ %index.next, %vector.body ]
  %vec.ind = phi <4 x i32> [ <i32 0, i32 1, i32 2, i32 3>, %vector.ph ], [ %vec.ind.next, %vector.body ]
  %step.add = add <4 x i32> %vec.ind, <i32 4, i32 4, i32 4, i32 4>
  %234 = getelementptr inbounds i32, ptr %231, i64 %index
  %235 = getelementptr inbounds i8, ptr %234, i64 16
  store <4 x i32> %vec.ind, ptr %234, align 4, !tbaa !13
  store <4 x i32> %step.add, ptr %235, align 4, !tbaa !13
  %index.next = add nuw i64 %index, 8
  %vec.ind.next = add <4 x i32> %vec.ind, <i32 8, i32 8, i32 8, i32 8>
  %236 = icmp eq i64 %index.next, %n.vec
  br i1 %236, label %middle.block, label %vector.body, !llvm.loop !32

middle.block:                                     ; preds = %vector.body
  %cmp.n = icmp eq i64 %n.mod.vf, 0
  br i1 %cmp.n, label %._crit_edge269, label %.lr.ph268.preheader299

._crit_edge269:                                   ; preds = %.lr.ph268, %middle.block, %232
  %237 = invoke noalias noundef nonnull dereferenceable(16) ptr @_Znam(i64 noundef 16) #15
          to label %242 unwind label %238

238:                                              ; preds = %250, %242, %._crit_edge269, %224, %215, %._crit_edge265
  %239 = landingpad { ptr, i32 }
          cleanup
  br label %256

.lr.ph268:                                        ; preds = %.lr.ph268.preheader299, %.lr.ph268
  %indvars.iv293 = phi i64 [ %indvars.iv.next294, %.lr.ph268 ], [ %indvars.iv293.ph, %.lr.ph268.preheader299 ]
  %240 = getelementptr inbounds i32, ptr %231, i64 %indvars.iv293
  %241 = trunc nuw nsw i64 %indvars.iv293 to i32
  store i32 %241, ptr %240, align 4, !tbaa !13
  %indvars.iv.next294 = add nuw nsw i64 %indvars.iv293, 1
  %exitcond297.not = icmp eq i64 %indvars.iv.next294, %wide.trip.count296
  br i1 %exitcond297.not, label %._crit_edge269, label %.lr.ph268, !llvm.loop !35

242:                                              ; preds = %._crit_edge269
  %243 = getelementptr inbounds i8, ptr %211, i64 80
  store ptr %237, ptr %243, align 8, !tbaa !36
  %244 = load <2 x float>, ptr %28, align 8, !tbaa !8
  store <2 x float> %244, ptr %237, align 4, !tbaa !8
  %245 = getelementptr inbounds i8, ptr %28, i64 8
  %246 = load float, ptr %245, align 8, !tbaa !15
  %247 = getelementptr inbounds i8, ptr %237, i64 8
  store float %246, ptr %247, align 4, !tbaa !8
  %248 = getelementptr inbounds i8, ptr %211, i64 96
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %248, i8 0, i64 16, i1 false)
  %249 = invoke noalias noundef nonnull dereferenceable(4) ptr @_Znam(i64 noundef 4) #15
          to label %250 unwind label %238

250:                                              ; preds = %242
  %251 = getelementptr inbounds i8, ptr %211, i64 72
  store ptr %249, ptr %251, align 8, !tbaa !37
  store float 1.000000e+00, ptr %249, align 4, !tbaa !8
  %252 = invoke noalias noundef nonnull dereferenceable(4) ptr @_Znam(i64 noundef 4) #15
          to label %253 unwind label %238

253:                                              ; preds = %250
  %254 = getelementptr inbounds i8, ptr %211, i64 64
  store ptr %252, ptr %254, align 8, !tbaa !38
  store i32 %195, ptr %252, align 4, !tbaa !13
  br label %255

255:                                              ; preds = %253, %214
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %28) #14
  call void @_ZNSt6vectorIfSaIfEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %26) #14
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %26) #14
  call void @_ZNSt6vectorIjSaIjEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %23) #14
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %23) #14
  br label %261

256:                                              ; preds = %238, %210
  %.pn208.pn.pn.pn = phi { ptr, i32 } [ %.pn208.pn.pn, %210 ], [ %239, %238 ]
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %28) #14
  br label %257

257:                                              ; preds = %256, %206
  %.pn208.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn208.pn.pn.pn, %256 ], [ %207, %206 ]
  call void @_ZNSt6vectorIfSaIfEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %26) #14
  br label %258

258:                                              ; preds = %257, %204
  %.pn208.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn208.pn.pn.pn.pn, %257 ], [ %205, %204 ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %26) #14
  br label %259

259:                                              ; preds = %258, %202
  %.pn208.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn208.pn.pn.pn.pn.pn, %258 ], [ %203, %202 ]
  call void @_ZNSt6vectorIjSaIjEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %23) #14
  br label %260

260:                                              ; preds = %259, %200
  %.pn208.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn208.pn.pn.pn.pn.pn.pn, %259 ], [ %201, %200 ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %23) #14
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %22) #14
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %17) #14
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %16) #14
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %15) #14
  br label %262

261:                                              ; preds = %74, %255
  %.0181 = phi ptr [ %211, %255 ], [ null, %74 ]
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %22) #14
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %17) #14
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %16) #14
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %15) #14
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %14) #14
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %13) #14
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %12) #14
  call void @_ZNSt6vectorIiSaIiEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %11) #14
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %11) #14
  call void @_ZNSt6vectorI8XVector4IfESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %10) #14
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %10) #14
  call void @_ZNSt6vectorI8XVector4IfESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %9) #14
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %9) #14
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %7) #14
  ret ptr %.0181

262:                                              ; preds = %260, %127
  %.pn208.pn.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn208.pn.pn.pn.pn.pn.pn.pn, %260 ], [ %128, %127 ]
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %14) #14
  br label %263

263:                                              ; preds = %70, %72, %262
  %.pn218.pn = phi { ptr, i32 } [ %.pn208.pn.pn.pn.pn.pn.pn.pn.pn, %262 ], [ %73, %72 ], [ %71, %70 ]
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %13) #14
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %12) #14
  call void @_ZNSt6vectorIiSaIiEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %11) #14
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %11) #14
  call void @_ZNSt6vectorI8XVector4IfESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %10) #14
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %10) #14
  call void @_ZNSt6vectorI8XVector4IfESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %9) #14
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %9) #14
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %7) #14
  resume { ptr, i32 } %.pn218.pn
}

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

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef nonnull align 4 dereferenceable(12) ptr @_ZN8XVector3IfEpLERKS0_(ptr noundef nonnull align 4 dereferenceable(12), ptr noundef nonnull align 4 dereferenceable(12)) local_unnamed_addr #2 align 2

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef nonnull align 4 dereferenceable(12) ptr @_ZN8XVector3IfEdVEf(ptr noundef nonnull align 4 dereferenceable(12), float noundef) local_unnamed_addr #2 align 2

; Function Attrs: mustprogress nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare { i64, i1 } @llvm.umul.with.overflow.i64(i64, i64) #3

; Function Attrs: nobuiltin allocsize(0)
declare noundef nonnull ptr @_Znam(i64 noundef) local_unnamed_addr #4

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

declare i32 @__gxx_personality_v0(...)

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local { <2 x float>, float } @_ZNK8XVector3IfEmiERKS0_(ptr noundef nonnull align 4 dereferenceable(12), ptr noundef nonnull align 4 dereferenceable(12)) local_unnamed_addr #5 align 2

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

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

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local { <2 x float>, float } @_Z3MinIfE8XVector3IT_ERKS2_S4_(ptr noundef nonnull align 4 dereferenceable(12), ptr noundef nonnull align 4 dereferenceable(12)) local_unnamed_addr #5

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local { <2 x float>, float } @_Z3MaxIfE8XVector3IT_ERKS2_S4_(ptr noundef nonnull align 4 dereferenceable(12), ptr noundef nonnull align 4 dereferenceable(12)) local_unnamed_addr #5

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local { <2 x float>, float } @_ZmlIfE8XVector3IT_ES1_RKS2_(float noundef, ptr noundef nonnull align 4 dereferenceable(12)) local_unnamed_addr #7

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef nonnull align 4 dereferenceable(12) ptr @_ZN8XVector3IfEmIERKS0_(ptr noundef nonnull align 4 dereferenceable(12), ptr noundef nonnull align 4 dereferenceable(12)) local_unnamed_addr #2 align 2

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

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

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

declare void @_Z8VoxelizePK8XVector3IfEiPKiijjjPjS0_S0_(ptr noundef, i32 noundef, ptr noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, ptr noundef, <2 x float>, float, <2 x float>, float) local_unnamed_addr #9

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIjSaIjEEixEm(ptr noundef nonnull align 8 dereferenceable(24), i64 noundef) local_unnamed_addr #7 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local { <2 x float>, float } @_ZNK8XVector3IfEplERKS0_(ptr noundef nonnull align 4 dereferenceable(12), ptr noundef nonnull align 4 dereferenceable(12)) local_unnamed_addr #5 align 2

; Function Attrs: nobuiltin nounwind
declare void @_ZdaPv(ptr noundef) local_unnamed_addr #10

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

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

declare void @_Z7MakeSDFPKjjjjPf(ptr noundef, i32 noundef, i32 noundef, i32 noundef, ptr noundef) local_unnamed_addr #9

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIfSaIfEEixEm(ptr noundef nonnull align 8 dereferenceable(24), i64 noundef) local_unnamed_addr #7 align 2

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local { <2 x float>, float } @_Z13SafeNormalizeI8XVector3IfEET_RKS2_S4_(ptr noundef nonnull align 4 dereferenceable(12), ptr noundef nonnull align 4 dereferenceable(12)) local_unnamed_addr #11

; Function Attrs: mustprogress uwtable
declare hidden { <2 x float>, float } @_ZN12_GLOBAL__N_113SampleSDFGradEPKfiiii(ptr noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef) local_unnamed_addr #8

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local { <2 x float>, float } @_ZNK8XVector3IfEmlEf(ptr noundef nonnull align 4 dereferenceable(12), float noundef) local_unnamed_addr #5 align 2

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

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

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 4 dereferenceable(16) ptr @_ZNSt6vectorI8XVector4IfESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24), i64 noundef) local_unnamed_addr #7 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 4 dereferenceable(16) ptr @_ZN8XVector4IfEpLERKS0_(ptr noundef nonnull align 4 dereferenceable(16), ptr noundef nonnull align 4 dereferenceable(16)) local_unnamed_addr #7 align 2

; Function Attrs: nobuiltin allocsize(0)
declare noundef nonnull ptr @_Znwm(i64 noundef) local_unnamed_addr #4

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

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

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

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

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

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

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

; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare <2 x float> @llvm.fmuladd.v2f32(<2 x float>, <2 x float>, <2 x float>) #13

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = distinct !{!5, !6}
!6 = !{!"llvm.loop.mustprogress"}
!7 = distinct !{!7, !6}
!8 = !{!9, !9, i64 0}
!9 = !{!"float", !10, i64 0}
!10 = !{!"omnipotent char", !11, i64 0}
!11 = !{!"Simple C++ TBAA"}
!12 = distinct !{!12, !6}
!13 = !{!14, !14, i64 0}
!14 = !{!"int", !10, i64 0}
!15 = !{!16, !9, i64 8}
!16 = !{!"_ZTS8XVector3IfE", !9, i64 0, !9, i64 4, !9, i64 8}
!17 = !{!16, !9, i64 0}
!18 = !{!16, !9, i64 4}
!19 = distinct !{!19, !6}
!20 = distinct !{!20, !6}
!21 = distinct !{!21, !6}
!22 = distinct !{!22, !6}
!23 = !{!24, !14, i64 8}
!24 = !{!"_ZTS14NvFlexExtAsset", !25, i64 0, !14, i64 8, !14, i64 12, !25, i64 16, !25, i64 24, !25, i64 32, !14, i64 40, !25, i64 48, !14, i64 56, !25, i64 64, !25, i64 72, !25, i64 80, !14, i64 88, !25, i64 96, !25, i64 104, !25, i64 112, !14, i64 120, !26, i64 124, !9, i64 128, !9, i64 132, !9, i64 136}
!25 = !{!"any pointer", !10, i64 0}
!26 = !{!"bool", !10, i64 0}
!27 = !{!24, !14, i64 12}
!28 = !{!24, !25, i64 0}
!29 = !{!24, !14, i64 88}
!30 = !{!24, !14, i64 56}
!31 = !{!24, !25, i64 48}
!32 = distinct !{!32, !6, !33, !34}
!33 = !{!"llvm.loop.isvectorized", i32 1}
!34 = !{!"llvm.loop.unroll.runtime.disable"}
!35 = distinct !{!35, !6, !34, !33}
!36 = !{!24, !25, i64 80}
!37 = !{!24, !25, i64 72}
!38 = !{!24, !25, i64 64}


; Effective O3 passes: BDCEPass,CorrelatedValuePropagationPass,EarlyCSEPass,GVNPass,GlobalOptPass,IPSCCPPass,IndVarSimplifyPass,InferAlignmentPass,InferFunctionAttrsPass,InstCombinePass,JumpThreadingPass,LICMPass,LoopInstSimplifyPass,LoopLoadEliminationPass,LoopRotatePass,LoopSimplifyCFGPass,LoopSimplifyPass,LoopUnrollPass,LoopVectorizePass,MemCpyOptPass,PostOrderFunctionAttrsPass,ReassociatePass,SLPVectorizerPass,SROAPass,SimplifyCFGPass