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

; 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<XVector3<>, std::allocator<XVector3<>>>::_Vector_impl" }
%"struct.std::_Vector_base<XVector3<>, std::allocator<XVector3<>>>::_Vector_impl" = type { %"struct.std::_Vector_base<XVector3<>, std::allocator<XVector3<>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<XVector3<>, std::allocator<XVector3<>>>::_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<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.7" = type { i8 }
%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 @NvFlexExtCreateSoftFromMesh(ptr noundef %0, i32 noundef %1, ptr noundef %2, i32 noundef %3, float noundef %4, float noundef %5, float noundef %6, float noundef %7, float noundef %8, float noundef %9, float noundef %10, float noundef %11, float noundef %12, float noundef %13, float noundef %14) #0 personality ptr @__gxx_personality_v0 {
  %16 = alloca ptr, align 8
  %17 = alloca i32, align 4
  %18 = alloca ptr, align 8
  %19 = alloca i32, align 4
  %20 = alloca float, align 4
  %21 = alloca float, align 4
  %22 = alloca float, align 4
  %23 = alloca float, align 4
  %24 = alloca float, align 4
  %25 = alloca float, align 4
  %26 = alloca float, align 4
  %27 = alloca float, align 4
  %28 = alloca float, align 4
  %29 = alloca float, align 4
  %30 = alloca float, align 4
  %31 = alloca %class.XVector3, align 4
  %32 = alloca i32, align 4
  %33 = alloca ptr, align 8
  %34 = alloca ptr, align 8
  %35 = alloca i32, align 4
  %36 = alloca i32, align 4
  %37 = alloca %class.XVector3, align 4
  %38 = alloca { <2 x float>, float }, align 8
  %39 = alloca ptr, align 8
  %40 = alloca %"class.std::vector", align 8
  %41 = alloca i32, align 4
  %42 = alloca %"class.std::vector.0", align 8
  %43 = alloca %"class.std::vector.0", align 8
  %44 = alloca %"class.std::vector", align 8
  %45 = alloca %"class.std::vector.5", align 8
  %46 = alloca %"class.std::vector.5", align 8
  %47 = alloca %"class.std::vector.5", align 8
  %48 = alloca %"class.std::vector.5", align 8
  %49 = alloca %"class.std::allocator.7", align 1
  %50 = alloca i32, align 4
  %51 = alloca i32, align 4
  %52 = alloca %"class.std::vector.0", align 8
  %53 = alloca %"class.std::vector.5", align 8
  %54 = alloca %"class.std::vector.5", align 8
  %55 = alloca i32, align 4
  %56 = alloca i32, align 4
  %57 = alloca i32, align 4
  %58 = alloca %class.XVector3, align 4
  %59 = alloca i32, align 4
  %60 = alloca i32, align 4
  %61 = alloca i32, align 4
  %62 = alloca i32, align 4
  store ptr %0, ptr %16, align 8, !tbaa !5
  store i32 %1, ptr %17, align 4, !tbaa !9
  store ptr %2, ptr %18, align 8, !tbaa !5
  store i32 %3, ptr %19, align 4, !tbaa !9
  store float %4, ptr %20, align 4, !tbaa !11
  store float %5, ptr %21, align 4, !tbaa !11
  store float %6, ptr %22, align 4, !tbaa !11
  store float %7, ptr %23, align 4, !tbaa !11
  store float %8, ptr %24, align 4, !tbaa !11
  store float %9, ptr %25, align 4, !tbaa !11
  store float %10, ptr %26, align 4, !tbaa !11
  store float %11, ptr %27, align 4, !tbaa !11
  store float %12, ptr %28, align 4, !tbaa !11
  store float %13, ptr %29, align 4, !tbaa !11
  store float %14, ptr %30, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 12, ptr %31) #10
  call void @_ZN8XVector3IfEC2Ef(ptr noundef nonnull align 4 dereferenceable(12) %31, float noundef 0.000000e+00)
  call void @llvm.lifetime.start.p0(i64 4, ptr %32) #10
  store i32 0, ptr %32, align 4, !tbaa !9
  br label %63

63:                                               ; preds = %74, %15
  %64 = load i32, ptr %32, align 4, !tbaa !9
  %65 = load i32, ptr %17, align 4, !tbaa !9
  %66 = icmp slt i32 %64, %65
  br i1 %66, label %68, label %67

67:                                               ; preds = %63
  call void @llvm.lifetime.end.p0(i64 4, ptr %32) #10
  br label %77

68:                                               ; preds = %63
  %69 = load ptr, ptr %16, align 8, !tbaa !5
  %70 = load i32, ptr %32, align 4, !tbaa !9
  %71 = sext i32 %70 to i64
  %72 = getelementptr inbounds %class.XVector3, ptr %69, i64 %71
  %73 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZN8XVector3IfEpLERKS0_(ptr noundef nonnull align 4 dereferenceable(12) %31, ptr noundef nonnull align 4 dereferenceable(12) %72)
  br label %74

74:                                               ; preds = %68
  %75 = load i32, ptr %32, align 4, !tbaa !9
  %76 = add nsw i32 %75, 1
  store i32 %76, ptr %32, align 4, !tbaa !9
  br label %63, !llvm.loop !13

77:                                               ; preds = %67
  %78 = load i32, ptr %17, align 4, !tbaa !9
  %79 = sitofp i32 %78 to float
  %80 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZN8XVector3IfEdVEf(ptr noundef nonnull align 4 dereferenceable(12) %31, float noundef %79)
  call void @llvm.lifetime.start.p0(i64 8, ptr %33) #10
  %81 = load i32, ptr %17, align 4, !tbaa !9
  %82 = sext i32 %81 to i64
  %83 = call { i64, i1 } @llvm.umul.with.overflow.i64(i64 %82, i64 12)
  %84 = extractvalue { i64, i1 } %83, 1
  %85 = extractvalue { i64, i1 } %83, 0
  %86 = select i1 %84, i64 -1, i64 %85
  %87 = call noalias noundef nonnull ptr @_Znam(i64 noundef %86) #11
  %88 = icmp eq i64 %82, 0
  br i1 %88, label %96, label %89

89:                                               ; preds = %77
  %90 = getelementptr inbounds %class.XVector3, ptr %87, i64 %82
  br label %91

91:                                               ; preds = %93, %89
  %92 = phi ptr [ %87, %89 ], [ %94, %93 ]
  invoke void @_ZN8XVector3IfEC2Ev(ptr noundef nonnull align 4 dereferenceable(12) %92)
          to label %93 unwind label %102

93:                                               ; preds = %91
  %94 = getelementptr inbounds %class.XVector3, ptr %92, i64 1
  %95 = icmp eq ptr %94, %90
  br i1 %95, label %96, label %91

96:                                               ; preds = %93, %77
  store ptr %87, ptr %33, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %36) #10
  store i32 0, ptr %36, align 4, !tbaa !9
  br label %97

97:                                               ; preds = %117, %96
  %98 = load i32, ptr %36, align 4, !tbaa !9
  %99 = load i32, ptr %17, align 4, !tbaa !9
  %100 = icmp slt i32 %98, %99
  br i1 %100, label %106, label %101

101:                                              ; preds = %97
  call void @llvm.lifetime.end.p0(i64 4, ptr %36) #10
  br label %120

102:                                              ; preds = %91
  %103 = landingpad { ptr, i32 }
          cleanup
  %104 = extractvalue { ptr, i32 } %103, 0
  store ptr %104, ptr %34, align 8
  %105 = extractvalue { ptr, i32 } %103, 1
  store i32 %105, ptr %35, align 4
  call void @_ZdaPvm(ptr noundef %87, i64 noundef %86) #12
  br label %558

106:                                              ; preds = %97
  call void @llvm.lifetime.start.p0(i64 12, ptr %37) #10
  %107 = load ptr, ptr %16, align 8, !tbaa !5
  %108 = load i32, ptr %36, align 4, !tbaa !9
  %109 = sext i32 %108 to i64
  %110 = getelementptr inbounds %class.XVector3, ptr %107, i64 %109
  %111 = call { <2 x float>, float } @_ZNK8XVector3IfEmiERKS0_(ptr noundef nonnull align 4 dereferenceable(12) %110, ptr noundef nonnull align 4 dereferenceable(12) %31)
  store { <2 x float>, float } %111, ptr %38, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %37, ptr align 8 %38, i64 12, i1 false)
  %112 = load ptr, ptr %33, align 8, !tbaa !5
  %113 = load i32, ptr %36, align 4, !tbaa !9
  %114 = sext i32 %113 to i64
  %115 = getelementptr inbounds %class.XVector3, ptr %112, i64 %114
  %116 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZN8XVector3IfEpLERKS0_(ptr noundef nonnull align 4 dereferenceable(12) %115, ptr noundef nonnull align 4 dereferenceable(12) %37)
  call void @llvm.lifetime.end.p0(i64 12, ptr %37) #10
  br label %117

117:                                              ; preds = %106
  %118 = load i32, ptr %36, align 4, !tbaa !9
  %119 = add nsw i32 %118, 1
  store i32 %119, ptr %36, align 4, !tbaa !9
  br label %97, !llvm.loop !15

120:                                              ; preds = %101
  call void @llvm.lifetime.start.p0(i64 8, ptr %39) #10
  %121 = call noalias noundef nonnull ptr @_Znwm(i64 noundef 144) #11
  call void @llvm.memset.p0.i64(ptr align 16 %121, i8 0, i64 144, i1 false)
  store ptr %121, ptr %39, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 24, ptr %40) #10
  call void @_ZNSt6vectorI8XVector3IfESaIS1_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %40) #10
  %122 = load ptr, ptr %33, align 8, !tbaa !5
  %123 = load i32, ptr %17, align 4, !tbaa !9
  %124 = load ptr, ptr %18, align 8, !tbaa !5
  %125 = load i32, ptr %19, align 4, !tbaa !9
  %126 = load float, ptr %20, align 4, !tbaa !11
  %127 = load float, ptr %21, align 4, !tbaa !11
  %128 = load float, ptr %22, align 4, !tbaa !11
  invoke void @_ZN12_GLOBAL__N_110SampleMeshEPK8XVector3IfEiPKiifffRSt6vectorIS1_SaIS1_EE(ptr noundef %122, i32 noundef %123, ptr noundef %124, i32 noundef %125, float noundef %126, float noundef %127, float noundef %128, ptr noundef nonnull align 8 dereferenceable(24) %40)
          to label %129 unwind label %145

129:                                              ; preds = %120
  %130 = load ptr, ptr %33, align 8, !tbaa !5
  %131 = icmp eq ptr %130, null
  br i1 %131, label %133, label %132

132:                                              ; preds = %129
  call void @_ZdaPv(ptr noundef %130) #12
  br label %133

133:                                              ; preds = %132, %129
  call void @llvm.lifetime.start.p0(i64 4, ptr %41) #10
  %134 = call noundef i64 @_ZNKSt6vectorI8XVector3IfESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %40) #10
  %135 = trunc i64 %134 to i32
  store i32 %135, ptr %41, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 24, ptr %42) #10
  call void @_ZNSt6vectorIiSaIiEEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %42) #10
  call void @llvm.lifetime.start.p0(i64 24, ptr %43) #10
  call void @_ZNSt6vectorIiSaIiEEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %43) #10
  call void @llvm.lifetime.start.p0(i64 24, ptr %44) #10
  call void @_ZNSt6vectorI8XVector3IfESaIS1_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %44) #10
  call void @llvm.lifetime.start.p0(i64 24, ptr %45) #10
  call void @_ZNSt6vectorIfSaIfEEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %45) #10
  call void @llvm.lifetime.start.p0(i64 24, ptr %46) #10
  call void @_ZNSt6vectorIfSaIfEEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %46) #10
  call void @llvm.lifetime.start.p0(i64 24, ptr %47) #10
  call void @_ZNSt6vectorIfSaIfEEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %47) #10
  call void @llvm.lifetime.start.p0(i64 24, ptr %48) #10
  %136 = load i32, ptr %41, align 4, !tbaa !9
  %137 = sext i32 %136 to i64
  call void @llvm.lifetime.start.p0(i64 1, ptr %49) #10
  call void @_ZNSaIfEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %49) #10
  invoke void @_ZNSt6vectorIfSaIfEEC2EmRKS0_(ptr noundef nonnull align 8 dereferenceable(24) %48, i64 noundef %137, ptr noundef nonnull align 1 dereferenceable(1) %49)
          to label %138 unwind label %149

138:                                              ; preds = %133
  call void @_ZNSt15__new_allocatorIfED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %49) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr %49) #10
  call void @llvm.lifetime.start.p0(i64 4, ptr %50) #10
  store i32 0, ptr %50, align 4, !tbaa !9
  br label %139

139:                                              ; preds = %157, %138
  %140 = load i32, ptr %50, align 4, !tbaa !9
  %141 = call noundef i64 @_ZNKSt6vectorIfSaIfEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %48) #10
  %142 = trunc i64 %141 to i32
  %143 = icmp slt i32 %140, %142
  br i1 %143, label %153, label %144

144:                                              ; preds = %139
  call void @llvm.lifetime.end.p0(i64 4, ptr %50) #10
  br label %160

145:                                              ; preds = %120
  %146 = landingpad { ptr, i32 }
          cleanup
  %147 = extractvalue { ptr, i32 } %146, 0
  store ptr %147, ptr %34, align 8
  %148 = extractvalue { ptr, i32 } %146, 1
  store i32 %148, ptr %35, align 4
  br label %557

149:                                              ; preds = %133
  %150 = landingpad { ptr, i32 }
          cleanup
  %151 = extractvalue { ptr, i32 } %150, 0
  store ptr %151, ptr %34, align 8
  %152 = extractvalue { ptr, i32 } %150, 1
  store i32 %152, ptr %35, align 4
  call void @_ZNSt15__new_allocatorIfED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %49) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr %49) #10
  br label %556

153:                                              ; preds = %139
  %154 = load i32, ptr %50, align 4, !tbaa !9
  %155 = sext i32 %154 to i64
  %156 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIfSaIfEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %48, i64 noundef %155) #10
  store float 0.000000e+00, ptr %156, align 4, !tbaa !11
  br label %157

157:                                              ; preds = %153
  %158 = load i32, ptr %50, align 4, !tbaa !9
  %159 = add nsw i32 %158, 1
  store i32 %159, ptr %50, align 4, !tbaa !9
  br label %139, !llvm.loop !16

160:                                              ; preds = %144
  call void @llvm.lifetime.start.p0(i64 4, ptr %51) #10
  %161 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZNSt6vectorI8XVector3IfESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %40, i64 noundef 0) #10
  %162 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIfSaIfEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %48, i64 noundef 0) #10
  %163 = call noundef i64 @_ZNKSt6vectorI8XVector3IfESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %40) #10
  %164 = trunc i64 %163 to i32
  %165 = load float, ptr %23, align 4, !tbaa !11
  %166 = load float, ptr %24, align 4, !tbaa !11
  %167 = invoke noundef i32 @_ZN12_GLOBAL__N_114CreateClustersEP8XVector3IfEPKfiRSt6vectorIiSaIiEES8_RS5_IS1_SaIS1_EEff(ptr noundef %161, ptr noundef %162, i32 noundef %164, ptr noundef nonnull align 8 dereferenceable(24) %43, ptr noundef nonnull align 8 dereferenceable(24) %42, ptr noundef nonnull align 8 dereferenceable(24) %44, float noundef %165, float noundef %166)
          to label %168 unwind label %181

168:                                              ; preds = %160
  store i32 %167, ptr %51, align 4, !tbaa !9
  %169 = load i32, ptr %51, align 4, !tbaa !9
  %170 = sext i32 %169 to i64
  invoke void @_ZNSt6vectorIfSaIfEE6resizeEmRKf(ptr noundef nonnull align 8 dereferenceable(24) %45, i64 noundef %170, ptr noundef nonnull align 4 dereferenceable(4) %25)
          to label %171 unwind label %181

171:                                              ; preds = %168
  %172 = load float, ptr %30, align 4, !tbaa !11
  %173 = fcmp une float %172, 0.000000e+00
  br i1 %173, label %174, label %185

174:                                              ; preds = %171
  %175 = load i32, ptr %51, align 4, !tbaa !9
  %176 = sext i32 %175 to i64
  invoke void @_ZNSt6vectorIfSaIfEE6resizeEmRKf(ptr noundef nonnull align 8 dereferenceable(24) %46, i64 noundef %176, ptr noundef nonnull align 4 dereferenceable(4) %29)
          to label %177 unwind label %181

177:                                              ; preds = %174
  %178 = load i32, ptr %51, align 4, !tbaa !9
  %179 = sext i32 %178 to i64
  invoke void @_ZNSt6vectorIfSaIfEE6resizeEmRKf(ptr noundef nonnull align 8 dereferenceable(24) %47, i64 noundef %179, ptr noundef nonnull align 4 dereferenceable(4) %30)
          to label %180 unwind label %181

180:                                              ; preds = %177
  br label %185

181:                                              ; preds = %514, %506, %476, %458, %442, %435, %361, %268, %267, %261, %177, %174, %168, %160
  %182 = landingpad { ptr, i32 }
          cleanup
  %183 = extractvalue { ptr, i32 } %182, 0
  store ptr %183, ptr %34, align 8
  %184 = extractvalue { ptr, i32 } %182, 1
  store i32 %184, ptr %35, align 4
  br label %555

185:                                              ; preds = %180, %171
  %186 = load float, ptr %26, align 4, !tbaa !11
  %187 = fcmp ogt float %186, 0.000000e+00
  br i1 %187, label %188, label %258

188:                                              ; preds = %185
  call void @llvm.lifetime.start.p0(i64 24, ptr %52) #10
  call void @_ZNSt6vectorIiSaIiEEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %52) #10
  call void @llvm.lifetime.start.p0(i64 24, ptr %53) #10
  call void @_ZNSt6vectorIfSaIfEEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %53) #10
  call void @llvm.lifetime.start.p0(i64 24, ptr %54) #10
  call void @_ZNSt6vectorIfSaIfEEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %54) #10
  call void @llvm.lifetime.start.p0(i64 4, ptr %55) #10
  %189 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZNSt6vectorI8XVector3IfESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %40, i64 noundef 0) #10
  %190 = call noundef i64 @_ZNKSt6vectorI8XVector3IfESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %40) #10
  %191 = trunc i64 %190 to i32
  %192 = load float, ptr %26, align 4, !tbaa !11
  %193 = load float, ptr %27, align 4, !tbaa !11
  %194 = invoke noundef i32 @_ZN12_GLOBAL__N_111CreateLinksEPK8XVector3IfEiRSt6vectorIiSaIiEERS4_IfSaIfEESA_ff(ptr noundef %189, i32 noundef %191, ptr noundef nonnull align 8 dereferenceable(24) %52, ptr noundef nonnull align 8 dereferenceable(24) %53, ptr noundef nonnull align 8 dereferenceable(24) %54, float noundef %192, float noundef %193)
          to label %195 unwind label %253

195:                                              ; preds = %188
  store i32 %194, ptr %55, align 4, !tbaa !9
  %196 = load i32, ptr %55, align 4, !tbaa !9
  %197 = icmp ne i32 %196, 0
  br i1 %197, label %198, label %257

198:                                              ; preds = %195
  %199 = load i32, ptr %55, align 4, !tbaa !9
  %200 = mul nsw i32 %199, 2
  %201 = sext i32 %200 to i64
  %202 = call { i64, i1 } @llvm.umul.with.overflow.i64(i64 %201, i64 4)
  %203 = extractvalue { i64, i1 } %202, 1
  %204 = extractvalue { i64, i1 } %202, 0
  %205 = select i1 %203, i64 -1, i64 %204
  %206 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %205) #11
          to label %207 unwind label %253

207:                                              ; preds = %198
  %208 = load ptr, ptr %39, align 8, !tbaa !5
  %209 = getelementptr inbounds %struct.NvFlexExtAsset, ptr %208, i32 0, i32 3
  store ptr %206, ptr %209, align 8, !tbaa !17
  %210 = load ptr, ptr %39, align 8, !tbaa !5
  %211 = getelementptr inbounds %struct.NvFlexExtAsset, ptr %210, i32 0, i32 3
  %212 = load ptr, ptr %211, align 8, !tbaa !17
  %213 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %52, i64 noundef 0) #10
  %214 = call noundef i64 @_ZNKSt6vectorIiSaIiEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %52) #10
  %215 = mul i64 4, %214
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %212, ptr align 4 %213, i64 %215, i1 false)
  %216 = load i32, ptr %55, align 4, !tbaa !9
  %217 = sext i32 %216 to i64
  %218 = call { i64, i1 } @llvm.umul.with.overflow.i64(i64 %217, i64 4)
  %219 = extractvalue { i64, i1 } %218, 1
  %220 = extractvalue { i64, i1 } %218, 0
  %221 = select i1 %219, i64 -1, i64 %220
  %222 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %221) #11
          to label %223 unwind label %253

223:                                              ; preds = %207
  %224 = load ptr, ptr %39, align 8, !tbaa !5
  %225 = getelementptr inbounds %struct.NvFlexExtAsset, ptr %224, i32 0, i32 4
  store ptr %222, ptr %225, align 8, !tbaa !20
  %226 = load ptr, ptr %39, align 8, !tbaa !5
  %227 = getelementptr inbounds %struct.NvFlexExtAsset, ptr %226, i32 0, i32 4
  %228 = load ptr, ptr %227, align 8, !tbaa !20
  %229 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIfSaIfEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %54, i64 noundef 0) #10
  %230 = load i32, ptr %55, align 4, !tbaa !9
  %231 = sext i32 %230 to i64
  %232 = mul i64 4, %231
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %228, ptr align 4 %229, i64 %232, i1 false)
  %233 = load i32, ptr %55, align 4, !tbaa !9
  %234 = sext i32 %233 to i64
  %235 = call { i64, i1 } @llvm.umul.with.overflow.i64(i64 %234, i64 4)
  %236 = extractvalue { i64, i1 } %235, 1
  %237 = extractvalue { i64, i1 } %235, 0
  %238 = select i1 %236, i64 -1, i64 %237
  %239 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %238) #11
          to label %240 unwind label %253

240:                                              ; preds = %223
  %241 = load ptr, ptr %39, align 8, !tbaa !5
  %242 = getelementptr inbounds %struct.NvFlexExtAsset, ptr %241, i32 0, i32 5
  store ptr %239, ptr %242, align 8, !tbaa !21
  %243 = load ptr, ptr %39, align 8, !tbaa !5
  %244 = getelementptr inbounds %struct.NvFlexExtAsset, ptr %243, i32 0, i32 5
  %245 = load ptr, ptr %244, align 8, !tbaa !21
  %246 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIfSaIfEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %53, i64 noundef 0) #10
  %247 = load i32, ptr %55, align 4, !tbaa !9
  %248 = sext i32 %247 to i64
  %249 = mul i64 4, %248
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %245, ptr align 4 %246, i64 %249, i1 false)
  %250 = load i32, ptr %55, align 4, !tbaa !9
  %251 = load ptr, ptr %39, align 8, !tbaa !5
  %252 = getelementptr inbounds %struct.NvFlexExtAsset, ptr %251, i32 0, i32 6
  store i32 %250, ptr %252, align 8, !tbaa !22
  br label %257

253:                                              ; preds = %223, %207, %198, %188
  %254 = landingpad { ptr, i32 }
          cleanup
  %255 = extractvalue { ptr, i32 } %254, 0
  store ptr %255, ptr %34, align 8
  %256 = extractvalue { ptr, i32 } %254, 1
  store i32 %256, ptr %35, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %55) #10
  call void @_ZNSt6vectorIfSaIfEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %54) #10
  call void @llvm.lifetime.end.p0(i64 24, ptr %54) #10
  call void @_ZNSt6vectorIfSaIfEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %53) #10
  call void @llvm.lifetime.end.p0(i64 24, ptr %53) #10
  call void @_ZNSt6vectorIiSaIiEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %52) #10
  call void @llvm.lifetime.end.p0(i64 24, ptr %52) #10
  br label %555

257:                                              ; preds = %240, %195
  call void @llvm.lifetime.end.p0(i64 4, ptr %55) #10
  call void @_ZNSt6vectorIfSaIfEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %54) #10
  call void @llvm.lifetime.end.p0(i64 24, ptr %54) #10
  call void @_ZNSt6vectorIfSaIfEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %53) #10
  call void @llvm.lifetime.end.p0(i64 24, ptr %53) #10
  call void @_ZNSt6vectorIiSaIiEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %52) #10
  call void @llvm.lifetime.end.p0(i64 24, ptr %52) #10
  br label %258

258:                                              ; preds = %257, %185
  %259 = load float, ptr %28, align 4, !tbaa !11
  %260 = fcmp ogt float %259, 0.000000e+00
  br i1 %260, label %261, label %323

261:                                              ; preds = %258
  %262 = load i32, ptr %51, align 4, !tbaa !9
  %263 = add nsw i32 %262, 1
  store i32 %263, ptr %51, align 4, !tbaa !9
  invoke void @_ZNSt6vectorIfSaIfEE9push_backERKf(ptr noundef nonnull align 8 dereferenceable(24) %45, ptr noundef nonnull align 4 dereferenceable(4) %28)
          to label %264 unwind label %181

264:                                              ; preds = %261
  %265 = load float, ptr %30, align 4, !tbaa !11
  %266 = fcmp une float %265, 0.000000e+00
  br i1 %266, label %267, label %270

267:                                              ; preds = %264
  invoke void @_ZNSt6vectorIfSaIfEE9push_backERKf(ptr noundef nonnull align 8 dereferenceable(24) %46, ptr noundef nonnull align 4 dereferenceable(4) %29)
          to label %268 unwind label %181

268:                                              ; preds = %267
  invoke void @_ZNSt6vectorIfSaIfEE9push_backERKf(ptr noundef nonnull align 8 dereferenceable(24) %47, ptr noundef nonnull align 4 dereferenceable(4) %30)
          to label %269 unwind label %181

269:                                              ; preds = %268
  br label %270

270:                                              ; preds = %269, %264
  call void @llvm.lifetime.start.p0(i64 4, ptr %56) #10
  store i32 0, ptr %56, align 4, !tbaa !9
  br label %271

271:                                              ; preds = %278, %270
  %272 = load i32, ptr %56, align 4, !tbaa !9
  %273 = load i32, ptr %41, align 4, !tbaa !9
  %274 = icmp slt i32 %272, %273
  br i1 %274, label %276, label %275

275:                                              ; preds = %271
  call void @llvm.lifetime.end.p0(i64 4, ptr %56) #10
  br label %285

276:                                              ; preds = %271
  invoke void @_ZNSt6vectorIiSaIiEE9push_backERKi(ptr noundef nonnull align 8 dereferenceable(24) %42, ptr noundef nonnull align 4 dereferenceable(4) %56)
          to label %277 unwind label %281

277:                                              ; preds = %276
  br label %278

278:                                              ; preds = %277
  %279 = load i32, ptr %56, align 4, !tbaa !9
  %280 = add nsw i32 %279, 1
  store i32 %280, ptr %56, align 4, !tbaa !9
  br label %271, !llvm.loop !23

281:                                              ; preds = %276
  %282 = landingpad { ptr, i32 }
          cleanup
  %283 = extractvalue { ptr, i32 } %282, 0
  store ptr %283, ptr %34, align 8
  %284 = extractvalue { ptr, i32 } %282, 1
  store i32 %284, ptr %35, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %56) #10
  br label %555

285:                                              ; preds = %275
  call void @llvm.lifetime.start.p0(i64 4, ptr %57) #10
  %286 = call noundef i64 @_ZNKSt6vectorIiSaIiEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %42) #10
  %287 = trunc i64 %286 to i32
  store i32 %287, ptr %57, align 4, !tbaa !9
  invoke void @_ZNSt6vectorIiSaIiEE9push_backEOi(ptr noundef nonnull align 8 dereferenceable(24) %43, ptr noundef nonnull align 4 dereferenceable(4) %57)
          to label %288 unwind label %295

288:                                              ; preds = %285
  call void @llvm.lifetime.end.p0(i64 4, ptr %57) #10
  call void @llvm.lifetime.start.p0(i64 12, ptr %58) #10
  invoke void @_ZN8XVector3IfEC2Ef(ptr noundef nonnull align 4 dereferenceable(12) %58, float noundef 0.000000e+00)
          to label %289 unwind label %299

289:                                              ; preds = %288
  call void @llvm.lifetime.start.p0(i64 4, ptr %59) #10
  store i32 0, ptr %59, align 4, !tbaa !9
  br label %290

290:                                              ; preds = %309, %289
  %291 = load i32, ptr %59, align 4, !tbaa !9
  %292 = load i32, ptr %41, align 4, !tbaa !9
  %293 = icmp slt i32 %291, %292
  br i1 %293, label %303, label %294

294:                                              ; preds = %290
  call void @llvm.lifetime.end.p0(i64 4, ptr %59) #10
  br label %316

295:                                              ; preds = %285
  %296 = landingpad { ptr, i32 }
          cleanup
  %297 = extractvalue { ptr, i32 } %296, 0
  store ptr %297, ptr %34, align 8
  %298 = extractvalue { ptr, i32 } %296, 1
  store i32 %298, ptr %35, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %57) #10
  br label %555

299:                                              ; preds = %320, %316, %288
  %300 = landingpad { ptr, i32 }
          cleanup
  %301 = extractvalue { ptr, i32 } %300, 0
  store ptr %301, ptr %34, align 8
  %302 = extractvalue { ptr, i32 } %300, 1
  store i32 %302, ptr %35, align 4
  br label %322

303:                                              ; preds = %290
  %304 = load i32, ptr %59, align 4, !tbaa !9
  %305 = sext i32 %304 to i64
  %306 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZNSt6vectorI8XVector3IfESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %40, i64 noundef %305) #10
  %307 = invoke noundef nonnull align 4 dereferenceable(12) ptr @_ZN8XVector3IfEpLERKS0_(ptr noundef nonnull align 4 dereferenceable(12) %58, ptr noundef nonnull align 4 dereferenceable(12) %306)
          to label %308 unwind label %312

308:                                              ; preds = %303
  br label %309

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

312:                                              ; preds = %303
  %313 = landingpad { ptr, i32 }
          cleanup
  %314 = extractvalue { ptr, i32 } %313, 0
  store ptr %314, ptr %34, align 8
  %315 = extractvalue { ptr, i32 } %313, 1
  store i32 %315, ptr %35, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %59) #10
  br label %322

316:                                              ; preds = %294
  %317 = load i32, ptr %41, align 4, !tbaa !9
  %318 = sitofp i32 %317 to float
  %319 = invoke noundef nonnull align 4 dereferenceable(12) ptr @_ZN8XVector3IfEdVEf(ptr noundef nonnull align 4 dereferenceable(12) %58, float noundef %318)
          to label %320 unwind label %299

320:                                              ; preds = %316
  invoke void @_ZNSt6vectorI8XVector3IfESaIS1_EE9push_backERKS1_(ptr noundef nonnull align 8 dereferenceable(24) %44, ptr noundef nonnull align 4 dereferenceable(12) %58)
          to label %321 unwind label %299

321:                                              ; preds = %320
  call void @llvm.lifetime.end.p0(i64 12, ptr %58) #10
  br label %323

322:                                              ; preds = %312, %299
  call void @llvm.lifetime.end.p0(i64 12, ptr %58) #10
  br label %555

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

324:                                              ; preds = %335, %323
  %325 = load i32, ptr %60, align 4, !tbaa !9
  %326 = load i32, ptr %41, align 4, !tbaa !9
  %327 = icmp slt i32 %325, %326
  br i1 %327, label %329, label %328

328:                                              ; preds = %324
  call void @llvm.lifetime.end.p0(i64 4, ptr %60) #10
  br label %342

329:                                              ; preds = %324
  %330 = load i32, ptr %60, align 4, !tbaa !9
  %331 = sext i32 %330 to i64
  %332 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZNSt6vectorI8XVector3IfESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %40, i64 noundef %331) #10
  %333 = invoke noundef nonnull align 4 dereferenceable(12) ptr @_ZN8XVector3IfEpLERKS0_(ptr noundef nonnull align 4 dereferenceable(12) %332, ptr noundef nonnull align 4 dereferenceable(12) %31)
          to label %334 unwind label %338

334:                                              ; preds = %329
  br label %335

335:                                              ; preds = %334
  %336 = load i32, ptr %60, align 4, !tbaa !9
  %337 = add nsw i32 %336, 1
  store i32 %337, ptr %60, align 4, !tbaa !9
  br label %324, !llvm.loop !25

338:                                              ; preds = %329
  %339 = landingpad { ptr, i32 }
          cleanup
  %340 = extractvalue { ptr, i32 } %339, 0
  store ptr %340, ptr %34, align 8
  %341 = extractvalue { ptr, i32 } %339, 1
  store i32 %341, ptr %35, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %60) #10
  br label %555

342:                                              ; preds = %328
  call void @llvm.lifetime.start.p0(i64 4, ptr %61) #10
  store i32 0, ptr %61, align 4, !tbaa !9
  br label %343

343:                                              ; preds = %354, %342
  %344 = load i32, ptr %61, align 4, !tbaa !9
  %345 = load i32, ptr %51, align 4, !tbaa !9
  %346 = icmp slt i32 %344, %345
  br i1 %346, label %348, label %347

347:                                              ; preds = %343
  call void @llvm.lifetime.end.p0(i64 4, ptr %61) #10
  br label %361

348:                                              ; preds = %343
  %349 = load i32, ptr %61, align 4, !tbaa !9
  %350 = sext i32 %349 to i64
  %351 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZNSt6vectorI8XVector3IfESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %44, i64 noundef %350) #10
  %352 = invoke noundef nonnull align 4 dereferenceable(12) ptr @_ZN8XVector3IfEpLERKS0_(ptr noundef nonnull align 4 dereferenceable(12) %351, ptr noundef nonnull align 4 dereferenceable(12) %31)
          to label %353 unwind label %357

353:                                              ; preds = %348
  br label %354

354:                                              ; preds = %353
  %355 = load i32, ptr %61, align 4, !tbaa !9
  %356 = add nsw i32 %355, 1
  store i32 %356, ptr %61, align 4, !tbaa !9
  br label %343, !llvm.loop !26

357:                                              ; preds = %348
  %358 = landingpad { ptr, i32 }
          cleanup
  %359 = extractvalue { ptr, i32 } %358, 0
  store ptr %359, ptr %34, align 8
  %360 = extractvalue { ptr, i32 } %358, 1
  store i32 %360, ptr %35, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %61) #10
  br label %555

361:                                              ; preds = %347
  %362 = load i32, ptr %41, align 4, !tbaa !9
  %363 = mul nsw i32 %362, 4
  %364 = sext i32 %363 to i64
  %365 = call { i64, i1 } @llvm.umul.with.overflow.i64(i64 %364, i64 4)
  %366 = extractvalue { i64, i1 } %365, 1
  %367 = extractvalue { i64, i1 } %365, 0
  %368 = select i1 %366, i64 -1, i64 %367
  %369 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %368) #11
          to label %370 unwind label %181

370:                                              ; preds = %361
  %371 = load ptr, ptr %39, align 8, !tbaa !5
  %372 = getelementptr inbounds %struct.NvFlexExtAsset, ptr %371, i32 0, i32 0
  store ptr %369, ptr %372, align 8, !tbaa !27
  %373 = load i32, ptr %41, align 4, !tbaa !9
  %374 = load ptr, ptr %39, align 8, !tbaa !5
  %375 = getelementptr inbounds %struct.NvFlexExtAsset, ptr %374, i32 0, i32 1
  store i32 %373, ptr %375, align 8, !tbaa !28
  %376 = load i32, ptr %41, align 4, !tbaa !9
  %377 = load ptr, ptr %39, align 8, !tbaa !5
  %378 = getelementptr inbounds %struct.NvFlexExtAsset, ptr %377, i32 0, i32 2
  store i32 %376, ptr %378, align 4, !tbaa !29
  call void @llvm.lifetime.start.p0(i64 4, ptr %62) #10
  store i32 0, ptr %62, align 4, !tbaa !9
  br label %379

379:                                              ; preds = %432, %370
  %380 = load i32, ptr %62, align 4, !tbaa !9
  %381 = load i32, ptr %41, align 4, !tbaa !9
  %382 = icmp slt i32 %380, %381
  br i1 %382, label %384, label %383

383:                                              ; preds = %379
  call void @llvm.lifetime.end.p0(i64 4, ptr %62) #10
  br label %435

384:                                              ; preds = %379
  %385 = load i32, ptr %62, align 4, !tbaa !9
  %386 = sext i32 %385 to i64
  %387 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZNSt6vectorI8XVector3IfESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %40, i64 noundef %386) #10
  %388 = getelementptr inbounds %class.XVector3, ptr %387, i32 0, i32 0
  %389 = load float, ptr %388, align 4, !tbaa !30
  %390 = load ptr, ptr %39, align 8, !tbaa !5
  %391 = getelementptr inbounds %struct.NvFlexExtAsset, ptr %390, i32 0, i32 0
  %392 = load ptr, ptr %391, align 8, !tbaa !27
  %393 = load i32, ptr %62, align 4, !tbaa !9
  %394 = mul nsw i32 %393, 4
  %395 = add nsw i32 %394, 0
  %396 = sext i32 %395 to i64
  %397 = getelementptr inbounds float, ptr %392, i64 %396
  store float %389, ptr %397, align 4, !tbaa !11
  %398 = load i32, ptr %62, align 4, !tbaa !9
  %399 = sext i32 %398 to i64
  %400 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZNSt6vectorI8XVector3IfESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %40, i64 noundef %399) #10
  %401 = getelementptr inbounds %class.XVector3, ptr %400, i32 0, i32 1
  %402 = load float, ptr %401, align 4, !tbaa !32
  %403 = load ptr, ptr %39, align 8, !tbaa !5
  %404 = getelementptr inbounds %struct.NvFlexExtAsset, ptr %403, i32 0, i32 0
  %405 = load ptr, ptr %404, align 8, !tbaa !27
  %406 = load i32, ptr %62, align 4, !tbaa !9
  %407 = mul nsw i32 %406, 4
  %408 = add nsw i32 %407, 1
  %409 = sext i32 %408 to i64
  %410 = getelementptr inbounds float, ptr %405, i64 %409
  store float %402, ptr %410, align 4, !tbaa !11
  %411 = load i32, ptr %62, align 4, !tbaa !9
  %412 = sext i32 %411 to i64
  %413 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZNSt6vectorI8XVector3IfESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %40, i64 noundef %412) #10
  %414 = getelementptr inbounds %class.XVector3, ptr %413, i32 0, i32 2
  %415 = load float, ptr %414, align 4, !tbaa !33
  %416 = load ptr, ptr %39, align 8, !tbaa !5
  %417 = getelementptr inbounds %struct.NvFlexExtAsset, ptr %416, i32 0, i32 0
  %418 = load ptr, ptr %417, align 8, !tbaa !27
  %419 = load i32, ptr %62, align 4, !tbaa !9
  %420 = mul nsw i32 %419, 4
  %421 = add nsw i32 %420, 2
  %422 = sext i32 %421 to i64
  %423 = getelementptr inbounds float, ptr %418, i64 %422
  store float %415, ptr %423, align 4, !tbaa !11
  %424 = load ptr, ptr %39, align 8, !tbaa !5
  %425 = getelementptr inbounds %struct.NvFlexExtAsset, ptr %424, i32 0, i32 0
  %426 = load ptr, ptr %425, align 8, !tbaa !27
  %427 = load i32, ptr %62, align 4, !tbaa !9
  %428 = mul nsw i32 %427, 4
  %429 = add nsw i32 %428, 3
  %430 = sext i32 %429 to i64
  %431 = getelementptr inbounds float, ptr %426, i64 %430
  store float 1.000000e+00, ptr %431, align 4, !tbaa !11
  br label %432

432:                                              ; preds = %384
  %433 = load i32, ptr %62, align 4, !tbaa !9
  %434 = add nsw i32 %433, 1
  store i32 %434, ptr %62, align 4, !tbaa !9
  br label %379, !llvm.loop !34

435:                                              ; preds = %383
  %436 = call noundef i64 @_ZNKSt6vectorIiSaIiEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %42) #10
  %437 = call { i64, i1 } @llvm.umul.with.overflow.i64(i64 %436, i64 4)
  %438 = extractvalue { i64, i1 } %437, 1
  %439 = extractvalue { i64, i1 } %437, 0
  %440 = select i1 %438, i64 -1, i64 %439
  %441 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %440) #11
          to label %442 unwind label %181

442:                                              ; preds = %435
  %443 = load ptr, ptr %39, align 8, !tbaa !5
  %444 = getelementptr inbounds %struct.NvFlexExtAsset, ptr %443, i32 0, i32 7
  store ptr %441, ptr %444, align 8, !tbaa !35
  %445 = load ptr, ptr %39, align 8, !tbaa !5
  %446 = getelementptr inbounds %struct.NvFlexExtAsset, ptr %445, i32 0, i32 7
  %447 = load ptr, ptr %446, align 8, !tbaa !35
  %448 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %42, i64 noundef 0) #10
  %449 = call noundef i64 @_ZNKSt6vectorIiSaIiEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %42) #10
  %450 = mul i64 4, %449
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %447, ptr align 4 %448, i64 %450, i1 false)
  %451 = load i32, ptr %51, align 4, !tbaa !9
  %452 = sext i32 %451 to i64
  %453 = call { i64, i1 } @llvm.umul.with.overflow.i64(i64 %452, i64 4)
  %454 = extractvalue { i64, i1 } %453, 1
  %455 = extractvalue { i64, i1 } %453, 0
  %456 = select i1 %454, i64 -1, i64 %455
  %457 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %456) #11
          to label %458 unwind label %181

458:                                              ; preds = %442
  %459 = load ptr, ptr %39, align 8, !tbaa !5
  %460 = getelementptr inbounds %struct.NvFlexExtAsset, ptr %459, i32 0, i32 9
  store ptr %457, ptr %460, align 8, !tbaa !36
  %461 = load ptr, ptr %39, align 8, !tbaa !5
  %462 = getelementptr inbounds %struct.NvFlexExtAsset, ptr %461, i32 0, i32 9
  %463 = load ptr, ptr %462, align 8, !tbaa !36
  %464 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %43, i64 noundef 0) #10
  %465 = load i32, ptr %51, align 4, !tbaa !9
  %466 = sext i32 %465 to i64
  %467 = mul i64 4, %466
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %463, ptr align 4 %464, i64 %467, i1 false)
  %468 = load i32, ptr %51, align 4, !tbaa !9
  %469 = mul nsw i32 %468, 3
  %470 = sext i32 %469 to i64
  %471 = call { i64, i1 } @llvm.umul.with.overflow.i64(i64 %470, i64 4)
  %472 = extractvalue { i64, i1 } %471, 1
  %473 = extractvalue { i64, i1 } %471, 0
  %474 = select i1 %472, i64 -1, i64 %473
  %475 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %474) #11
          to label %476 unwind label %181

476:                                              ; preds = %458
  %477 = load ptr, ptr %39, align 8, !tbaa !5
  %478 = getelementptr inbounds %struct.NvFlexExtAsset, ptr %477, i32 0, i32 11
  store ptr %475, ptr %478, align 8, !tbaa !37
  %479 = load ptr, ptr %39, align 8, !tbaa !5
  %480 = getelementptr inbounds %struct.NvFlexExtAsset, ptr %479, i32 0, i32 11
  %481 = load ptr, ptr %480, align 8, !tbaa !37
  %482 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZNSt6vectorI8XVector3IfESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %44, i64 noundef 0) #10
  %483 = load i32, ptr %51, align 4, !tbaa !9
  %484 = sext i32 %483 to i64
  %485 = mul i64 4, %484
  %486 = mul i64 %485, 3
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %481, ptr align 4 %482, i64 %486, i1 false)
  %487 = load i32, ptr %51, align 4, !tbaa !9
  %488 = sext i32 %487 to i64
  %489 = call { i64, i1 } @llvm.umul.with.overflow.i64(i64 %488, i64 4)
  %490 = extractvalue { i64, i1 } %489, 1
  %491 = extractvalue { i64, i1 } %489, 0
  %492 = select i1 %490, i64 -1, i64 %491
  %493 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %492) #11
          to label %494 unwind label %181

494:                                              ; preds = %476
  %495 = load ptr, ptr %39, align 8, !tbaa !5
  %496 = getelementptr inbounds %struct.NvFlexExtAsset, ptr %495, i32 0, i32 10
  store ptr %493, ptr %496, align 8, !tbaa !38
  %497 = load ptr, ptr %39, align 8, !tbaa !5
  %498 = getelementptr inbounds %struct.NvFlexExtAsset, ptr %497, i32 0, i32 10
  %499 = load ptr, ptr %498, align 8, !tbaa !38
  %500 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIfSaIfEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %45, i64 noundef 0) #10
  %501 = load i32, ptr %51, align 4, !tbaa !9
  %502 = sext i32 %501 to i64
  %503 = mul i64 4, %502
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %499, ptr align 4 %500, i64 %503, i1 false)
  %504 = load float, ptr %30, align 4, !tbaa !11
  %505 = fcmp une float %504, 0.000000e+00
  br i1 %505, label %506, label %541

506:                                              ; preds = %494
  %507 = load i32, ptr %51, align 4, !tbaa !9
  %508 = sext i32 %507 to i64
  %509 = call { i64, i1 } @llvm.umul.with.overflow.i64(i64 %508, i64 4)
  %510 = extractvalue { i64, i1 } %509, 1
  %511 = extractvalue { i64, i1 } %509, 0
  %512 = select i1 %510, i64 -1, i64 %511
  %513 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %512) #11
          to label %514 unwind label %181

514:                                              ; preds = %506
  %515 = load ptr, ptr %39, align 8, !tbaa !5
  %516 = getelementptr inbounds %struct.NvFlexExtAsset, ptr %515, i32 0, i32 13
  store ptr %513, ptr %516, align 8, !tbaa !39
  %517 = load ptr, ptr %39, align 8, !tbaa !5
  %518 = getelementptr inbounds %struct.NvFlexExtAsset, ptr %517, i32 0, i32 13
  %519 = load ptr, ptr %518, align 8, !tbaa !39
  %520 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIfSaIfEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %46, i64 noundef 0) #10
  %521 = load i32, ptr %51, align 4, !tbaa !9
  %522 = sext i32 %521 to i64
  %523 = mul i64 4, %522
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %519, ptr align 4 %520, i64 %523, i1 false)
  %524 = load i32, ptr %51, align 4, !tbaa !9
  %525 = sext i32 %524 to i64
  %526 = call { i64, i1 } @llvm.umul.with.overflow.i64(i64 %525, i64 4)
  %527 = extractvalue { i64, i1 } %526, 1
  %528 = extractvalue { i64, i1 } %526, 0
  %529 = select i1 %527, i64 -1, i64 %528
  %530 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %529) #11
          to label %531 unwind label %181

531:                                              ; preds = %514
  %532 = load ptr, ptr %39, align 8, !tbaa !5
  %533 = getelementptr inbounds %struct.NvFlexExtAsset, ptr %532, i32 0, i32 14
  store ptr %530, ptr %533, align 8, !tbaa !40
  %534 = load ptr, ptr %39, align 8, !tbaa !5
  %535 = getelementptr inbounds %struct.NvFlexExtAsset, ptr %534, i32 0, i32 14
  %536 = load ptr, ptr %535, align 8, !tbaa !40
  %537 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIfSaIfEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %47, i64 noundef 0) #10
  %538 = load i32, ptr %51, align 4, !tbaa !9
  %539 = sext i32 %538 to i64
  %540 = mul i64 4, %539
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %536, ptr align 4 %537, i64 %540, i1 false)
  br label %546

541:                                              ; preds = %494
  %542 = load ptr, ptr %39, align 8, !tbaa !5
  %543 = getelementptr inbounds %struct.NvFlexExtAsset, ptr %542, i32 0, i32 13
  store ptr null, ptr %543, align 8, !tbaa !39
  %544 = load ptr, ptr %39, align 8, !tbaa !5
  %545 = getelementptr inbounds %struct.NvFlexExtAsset, ptr %544, i32 0, i32 14
  store ptr null, ptr %545, align 8, !tbaa !40
  br label %546

546:                                              ; preds = %541, %531
  %547 = call noundef i64 @_ZNKSt6vectorIiSaIiEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %42) #10
  %548 = trunc i64 %547 to i32
  %549 = load ptr, ptr %39, align 8, !tbaa !5
  %550 = getelementptr inbounds %struct.NvFlexExtAsset, ptr %549, i32 0, i32 8
  store i32 %548, ptr %550, align 8, !tbaa !41
  %551 = load i32, ptr %51, align 4, !tbaa !9
  %552 = load ptr, ptr %39, align 8, !tbaa !5
  %553 = getelementptr inbounds %struct.NvFlexExtAsset, ptr %552, i32 0, i32 12
  store i32 %551, ptr %553, align 8, !tbaa !42
  %554 = load ptr, ptr %39, align 8, !tbaa !5
  call void @llvm.lifetime.end.p0(i64 4, ptr %51) #10
  call void @_ZNSt6vectorIfSaIfEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %48) #10
  call void @llvm.lifetime.end.p0(i64 24, ptr %48) #10
  call void @_ZNSt6vectorIfSaIfEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %47) #10
  call void @llvm.lifetime.end.p0(i64 24, ptr %47) #10
  call void @_ZNSt6vectorIfSaIfEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %46) #10
  call void @llvm.lifetime.end.p0(i64 24, ptr %46) #10
  call void @_ZNSt6vectorIfSaIfEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %45) #10
  call void @llvm.lifetime.end.p0(i64 24, ptr %45) #10
  call void @_ZNSt6vectorI8XVector3IfESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %44) #10
  call void @llvm.lifetime.end.p0(i64 24, ptr %44) #10
  call void @_ZNSt6vectorIiSaIiEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %43) #10
  call void @llvm.lifetime.end.p0(i64 24, ptr %43) #10
  call void @_ZNSt6vectorIiSaIiEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %42) #10
  call void @llvm.lifetime.end.p0(i64 24, ptr %42) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %41) #10
  call void @_ZNSt6vectorI8XVector3IfESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %40) #10
  call void @llvm.lifetime.end.p0(i64 24, ptr %40) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %39) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %33) #10
  call void @llvm.lifetime.end.p0(i64 12, ptr %31) #10
  ret ptr %554

555:                                              ; preds = %357, %338, %322, %295, %281, %253, %181
  call void @llvm.lifetime.end.p0(i64 4, ptr %51) #10
  call void @_ZNSt6vectorIfSaIfEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %48) #10
  br label %556

556:                                              ; preds = %555, %149
  call void @llvm.lifetime.end.p0(i64 24, ptr %48) #10
  call void @_ZNSt6vectorIfSaIfEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %47) #10
  call void @llvm.lifetime.end.p0(i64 24, ptr %47) #10
  call void @_ZNSt6vectorIfSaIfEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %46) #10
  call void @llvm.lifetime.end.p0(i64 24, ptr %46) #10
  call void @_ZNSt6vectorIfSaIfEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %45) #10
  call void @llvm.lifetime.end.p0(i64 24, ptr %45) #10
  call void @_ZNSt6vectorI8XVector3IfESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %44) #10
  call void @llvm.lifetime.end.p0(i64 24, ptr %44) #10
  call void @_ZNSt6vectorIiSaIiEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %43) #10
  call void @llvm.lifetime.end.p0(i64 24, ptr %43) #10
  call void @_ZNSt6vectorIiSaIiEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %42) #10
  call void @llvm.lifetime.end.p0(i64 24, ptr %42) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %41) #10
  br label %557

557:                                              ; preds = %556, %145
  call void @_ZNSt6vectorI8XVector3IfESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %40) #10
  call void @llvm.lifetime.end.p0(i64 24, ptr %40) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %39) #10
  br label %558

558:                                              ; preds = %557, %102
  call void @llvm.lifetime.end.p0(i64 8, ptr %33) #10
  call void @llvm.lifetime.end.p0(i64 12, ptr %31) #10
  br label %559

559:                                              ; preds = %558
  %560 = load ptr, ptr %34, align 8
  %561 = load i32, ptr %35, align 4
  %562 = insertvalue { ptr, i32 } poison, ptr %560, 0
  %563 = insertvalue { ptr, i32 } %562, i32 %561, 1
  resume { ptr, i32 } %563
}

; 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 nounwind uwtable
declare dso_local { <2 x float>, float } @_ZNK8XVector3IfEmiERKS0_(ptr noundef nonnull align 4 dereferenceable(12), ptr noundef nonnull align 4 dereferenceable(12)) #2 align 2

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

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

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

; Function Attrs: mustprogress uwtable
declare hidden void @_ZN12_GLOBAL__N_110SampleMeshEPK8XVector3IfEiPKiifffRSt6vectorIS1_SaIS1_EE(ptr noundef, i32 noundef, ptr noundef, i32 noundef, float noundef, float noundef, float noundef, ptr noundef nonnull align 8 dereferenceable(24)) #0

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

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

; 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

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

; 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: mustprogress uwtable
declare hidden noundef i32 @_ZN12_GLOBAL__N_114CreateClustersEP8XVector3IfEPKfiRSt6vectorIiSaIiEES8_RS5_IS1_SaIS1_EEff(ptr noundef, ptr noundef, i32 noundef, ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(24), float noundef, float noundef) #0

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

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

; Function Attrs: mustprogress uwtable
declare hidden noundef i32 @_ZN12_GLOBAL__N_111CreateLinksEPK8XVector3IfEiRSt6vectorIiSaIiEERS4_IfSaIfEESA_ff(ptr noundef, i32 noundef, ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(24), float noundef, float noundef) #0

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

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

; 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 @_ZNSt6vectorIiSaIiEED2Ev(ptr noundef nonnull align 8 dereferenceable(24)) unnamed_addr #8 align 2

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNSt6vectorIiSaIiEE9push_backERKi(ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 4 dereferenceable(4)) #9 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 uwtable
declare dso_local void @_ZNSt6vectorI8XVector3IfESaIS1_EE9push_backERKS1_(ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 4 dereferenceable(12)) #9 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZNSt6vectorI8XVector3IfESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24)) 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 = { nocallback nofree nounwind willreturn memory(argmem: readwrite) }
attributes #7 = { nocallback nofree nounwind willreturn memory(argmem: write) }
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 = { nounwind }
attributes #11 = { builtin allocsize(0) }
attributes #12 = { 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 = distinct !{!16, !14}
!17 = !{!18, !6, i64 16}
!18 = !{!"_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, !19, i64 124, !12, i64 128, !12, i64 132, !12, i64 136}
!19 = !{!"bool", !7, i64 0}
!20 = !{!18, !6, i64 24}
!21 = !{!18, !6, i64 32}
!22 = !{!18, !10, i64 40}
!23 = distinct !{!23, !14}
!24 = distinct !{!24, !14}
!25 = distinct !{!25, !14}
!26 = distinct !{!26, !14}
!27 = !{!18, !6, i64 0}
!28 = !{!18, !10, i64 8}
!29 = !{!18, !10, i64 12}
!30 = !{!31, !12, i64 0}
!31 = !{!"_ZTS8XVector3IfE", !12, i64 0, !12, i64 4, !12, i64 8}
!32 = !{!31, !12, i64 4}
!33 = !{!31, !12, i64 8}
!34 = distinct !{!34, !14}
!35 = !{!18, !6, i64 48}
!36 = !{!18, !6, i64 64}
!37 = !{!18, !6, i64 80}
!38 = !{!18, !6, i64 72}
!39 = !{!18, !6, i64 96}
!40 = !{!18, !6, i64 104}
!41 = !{!18, !10, i64 56}
!42 = !{!18, !10, i64 88}


; 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<XVector3<>, std::allocator<XVector3<>>>::_Vector_impl" }
%"struct.std::_Vector_base<XVector3<>, std::allocator<XVector3<>>>::_Vector_impl" = type { %"struct.std::_Vector_base<XVector3<>, std::allocator<XVector3<>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<XVector3<>, std::allocator<XVector3<>>>::_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<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.7" = type { i8 }

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

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

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

.lr.ph:                                           ; preds = %.lr.ph.preheader, %.lr.ph
  %indvars.iv = phi i64 [ 0, %.lr.ph.preheader ], [ %indvars.iv.next, %.lr.ph ]
  %47 = getelementptr inbounds %class.XVector3, ptr %0, i64 %indvars.iv
  %48 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZN8XVector3IfEpLERKS0_(ptr noundef nonnull align 4 dereferenceable(12) %20, ptr noundef nonnull align 4 dereferenceable(12) %47)
  %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 !9

49:                                               ; preds = %._crit_edge
  %50 = getelementptr inbounds %class.XVector3, ptr %45, i64 %40
  br label %51

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

.loopexit:                                        ; preds = %51
  br i1 %37, label %.lr.ph135, label %._crit_edge136

.lr.ph135:                                        ; preds = %.loopexit
  %.sroa.2.0..sroa_idx = getelementptr inbounds i8, ptr %21, i64 8
  %wide.trip.count162 = zext nneg i32 %1 to i64
  br label %56

._crit_edge136:                                   ; preds = %56, %._crit_edge, %.loopexit
  %55 = call noalias noundef nonnull dereferenceable(144) ptr @_Znwm(i64 noundef 144) #11
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(144) %55, i8 0, i64 144, i1 false)
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %22) #10
  call void @_ZNSt6vectorI8XVector3IfESaIS1_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %22) #10
  invoke void @_ZN12_GLOBAL__N_110SampleMeshEPK8XVector3IfEiPKiifffRSt6vectorIS1_SaIS1_EE(ptr noundef nonnull %45, i32 noundef %1, ptr noundef %2, i32 noundef %3, float noundef %4, float noundef %5, float noundef %6, ptr noundef nonnull align 8 dereferenceable(24) %22)
          to label %61 unwind label %74

56:                                               ; preds = %.lr.ph135, %56
  %indvars.iv159 = phi i64 [ 0, %.lr.ph135 ], [ %indvars.iv.next160, %56 ]
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %21) #10
  %57 = getelementptr inbounds %class.XVector3, ptr %0, i64 %indvars.iv159
  %58 = call { <2 x float>, float } @_ZNK8XVector3IfEmiERKS0_(ptr noundef nonnull align 4 dereferenceable(12) %57, ptr noundef nonnull align 4 dereferenceable(12) %20)
  %.fca.0.extract = extractvalue { <2 x float>, float } %58, 0
  %.fca.1.extract = extractvalue { <2 x float>, float } %58, 1
  store <2 x float> %.fca.0.extract, ptr %21, align 8
  store float %.fca.1.extract, ptr %.sroa.2.0..sroa_idx, align 8
  %59 = getelementptr inbounds %class.XVector3, ptr %45, i64 %indvars.iv159
  %60 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZN8XVector3IfEpLERKS0_(ptr noundef nonnull align 4 dereferenceable(12) %59, ptr noundef nonnull align 4 dereferenceable(12) %21)
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %21) #10
  %indvars.iv.next160 = add nuw nsw i64 %indvars.iv159, 1
  %exitcond163.not = icmp eq i64 %indvars.iv.next160, %wide.trip.count162
  br i1 %exitcond163.not, label %._crit_edge136, label %56, !llvm.loop !11

61:                                               ; preds = %._crit_edge136
  call void @_ZdaPv(ptr noundef nonnull %45) #12
  %62 = call noundef i64 @_ZNKSt6vectorI8XVector3IfESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %22) #10
  %63 = trunc i64 %62 to i32
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %23) #10
  call void @_ZNSt6vectorIiSaIiEEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %23) #10
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %24) #10
  call void @_ZNSt6vectorIiSaIiEEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %24) #10
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %25) #10
  call void @_ZNSt6vectorI8XVector3IfESaIS1_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %25) #10
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %26) #10
  call void @_ZNSt6vectorIfSaIfEEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %26) #10
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %27) #10
  call void @_ZNSt6vectorIfSaIfEEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %27) #10
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %28) #10
  call void @_ZNSt6vectorIfSaIfEEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %28) #10
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %29) #10
  %sext = shl i64 %62, 32
  %64 = ashr exact i64 %sext, 32
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %30) #10
  call void @_ZNSaIfEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %30) #10
  invoke void @_ZNSt6vectorIfSaIfEEC2EmRKS0_(ptr noundef nonnull align 8 dereferenceable(24) %29, i64 noundef %64, ptr noundef nonnull align 1 dereferenceable(1) %30)
          to label %65 unwind label %76

65:                                               ; preds = %61
  call void @_ZNSt15__new_allocatorIfED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %30) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %30) #10
  %66 = call noundef i64 @_ZNKSt6vectorIfSaIfEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %29) #10
  %67 = trunc i64 %66 to i32
  %68 = icmp sgt i32 %67, 0
  br i1 %68, label %.lr.ph139, label %._crit_edge140

._crit_edge140:                                   ; preds = %.lr.ph139, %65
  %69 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZNSt6vectorI8XVector3IfESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %22, i64 noundef 0) #10
  %70 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIfSaIfEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %29, i64 noundef 0) #10
  %71 = call noundef i64 @_ZNKSt6vectorI8XVector3IfESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %22) #10
  %72 = trunc i64 %71 to i32
  %73 = invoke noundef i32 @_ZN12_GLOBAL__N_114CreateClustersEP8XVector3IfEPKfiRSt6vectorIiSaIiEES8_RS5_IS1_SaIS1_EEff(ptr noundef nonnull %69, ptr noundef nonnull %70, i32 noundef %72, ptr noundef nonnull align 8 dereferenceable(24) %24, ptr noundef nonnull align 8 dereferenceable(24) %23, ptr noundef nonnull align 8 dereferenceable(24) %25, float noundef %7, float noundef %8)
          to label %82 unwind label %89

74:                                               ; preds = %._crit_edge136
  %75 = landingpad { ptr, i32 }
          cleanup
  br label %239

76:                                               ; preds = %61
  %77 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIfED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %30) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %30) #10
  br label %238

.lr.ph139:                                        ; preds = %65, %.lr.ph139
  %indvars.iv164 = phi i64 [ %indvars.iv.next165, %.lr.ph139 ], [ 0, %65 ]
  %78 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIfSaIfEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %29, i64 noundef %indvars.iv164) #10
  store float 0.000000e+00, ptr %78, align 4, !tbaa !5
  %indvars.iv.next165 = add nuw nsw i64 %indvars.iv164, 1
  %79 = call noundef i64 @_ZNKSt6vectorIfSaIfEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %29) #10
  %sext187 = shl i64 %79, 32
  %80 = ashr exact i64 %sext187, 32
  %81 = icmp slt i64 %indvars.iv.next165, %80
  br i1 %81, label %.lr.ph139, label %._crit_edge140, !llvm.loop !12

82:                                               ; preds = %._crit_edge140
  %83 = sext i32 %73 to i64
  invoke void @_ZNSt6vectorIfSaIfEE6resizeEmRKf(ptr noundef nonnull align 8 dereferenceable(24) %26, i64 noundef %83, ptr noundef nonnull align 4 dereferenceable(4) %16)
          to label %84 unwind label %89

84:                                               ; preds = %82
  %85 = load float, ptr %19, align 4, !tbaa !5
  %86 = fcmp une float %85, 0.000000e+00
  br i1 %86, label %87, label %91

87:                                               ; preds = %84
  invoke void @_ZNSt6vectorIfSaIfEE6resizeEmRKf(ptr noundef nonnull align 8 dereferenceable(24) %27, i64 noundef %83, ptr noundef nonnull align 4 dereferenceable(4) %18)
          to label %88 unwind label %89

88:                                               ; preds = %87
  invoke void @_ZNSt6vectorIfSaIfEE6resizeEmRKf(ptr noundef nonnull align 8 dereferenceable(24) %28, i64 noundef %83, ptr noundef nonnull align 4 dereferenceable(4) %19)
          to label %91 unwind label %89

89:                                               ; preds = %223, %221, %211, %203, %193, %._crit_edge157, %._crit_edge153, %135, %134, %129, %88, %87, %82, %._crit_edge140
  %90 = landingpad { ptr, i32 }
          cleanup
  br label %237

91:                                               ; preds = %88, %84
  %92 = fcmp ogt float %10, 0.000000e+00
  br i1 %92, label %93, label %126

93:                                               ; preds = %91
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %31) #10
  call void @_ZNSt6vectorIiSaIiEEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %31) #10
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %32) #10
  call void @_ZNSt6vectorIfSaIfEEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %32) #10
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %33) #10
  call void @_ZNSt6vectorIfSaIfEEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %33) #10
  %94 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZNSt6vectorI8XVector3IfESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %22, i64 noundef 0) #10
  %95 = call noundef i64 @_ZNKSt6vectorI8XVector3IfESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %22) #10
  %96 = trunc i64 %95 to i32
  %97 = invoke noundef i32 @_ZN12_GLOBAL__N_111CreateLinksEPK8XVector3IfEiRSt6vectorIiSaIiEERS4_IfSaIfEESA_ff(ptr noundef nonnull %94, i32 noundef %96, ptr noundef nonnull align 8 dereferenceable(24) %31, ptr noundef nonnull align 8 dereferenceable(24) %32, ptr noundef nonnull align 8 dereferenceable(24) %33, float noundef %10, float noundef %11)
          to label %98 unwind label %123

98:                                               ; preds = %93
  %.not = icmp eq i32 %97, 0
  br i1 %.not, label %125, label %99

99:                                               ; preds = %98
  %100 = shl nsw i32 %97, 1
  %101 = sext i32 %100 to i64
  %102 = icmp slt i32 %97, 0
  %103 = shl nsw i64 %101, 2
  %104 = select i1 %102, i64 -1, i64 %103
  %105 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %104) #11
          to label %106 unwind label %123

106:                                              ; preds = %99
  %107 = getelementptr inbounds i8, ptr %55, i64 16
  store ptr %105, ptr %107, align 8, !tbaa !13
  %108 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %31, i64 noundef 0) #10
  %109 = call noundef i64 @_ZNKSt6vectorIiSaIiEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %31) #10
  %110 = shl i64 %109, 2
  call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 4 %105, ptr nonnull align 4 %108, i64 %110, i1 false)
  %111 = sext i32 %97 to i64
  %112 = shl nsw i64 %111, 2
  %113 = select i1 %102, i64 -1, i64 %112
  %114 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %113) #11
          to label %115 unwind label %123

115:                                              ; preds = %106
  %116 = getelementptr inbounds i8, ptr %55, i64 24
  store ptr %114, ptr %116, align 8, !tbaa !18
  %117 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIfSaIfEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %33, i64 noundef 0) #10
  call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 4 %114, ptr nonnull align 4 %117, i64 %112, i1 false)
  %118 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %113) #11
          to label %119 unwind label %123

119:                                              ; preds = %115
  %120 = getelementptr inbounds i8, ptr %55, i64 32
  store ptr %118, ptr %120, align 8, !tbaa !19
  %121 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIfSaIfEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %32, i64 noundef 0) #10
  call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 4 %118, ptr nonnull align 4 %121, i64 %112, i1 false)
  %122 = getelementptr inbounds i8, ptr %55, i64 40
  store i32 %97, ptr %122, align 8, !tbaa !20
  br label %125

123:                                              ; preds = %115, %106, %99, %93
  %124 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt6vectorIfSaIfEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %33) #10
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %33) #10
  call void @_ZNSt6vectorIfSaIfEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %32) #10
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %32) #10
  call void @_ZNSt6vectorIiSaIiEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %31) #10
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %31) #10
  br label %237

125:                                              ; preds = %119, %98
  call void @_ZNSt6vectorIfSaIfEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %33) #10
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %33) #10
  call void @_ZNSt6vectorIfSaIfEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %32) #10
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %32) #10
  call void @_ZNSt6vectorIiSaIiEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %31) #10
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %31) #10
  br label %126

126:                                              ; preds = %125, %91
  %127 = load float, ptr %17, align 4, !tbaa !5
  %128 = fcmp ogt float %127, 0.000000e+00
  br i1 %128, label %129, label %156

129:                                              ; preds = %126
  %130 = add nsw i32 %73, 1
  invoke void @_ZNSt6vectorIfSaIfEE9push_backERKf(ptr noundef nonnull align 8 dereferenceable(24) %26, ptr noundef nonnull align 4 dereferenceable(4) %17)
          to label %131 unwind label %89

131:                                              ; preds = %129
  %132 = load float, ptr %19, align 4, !tbaa !5
  %133 = fcmp une float %132, 0.000000e+00
  br i1 %133, label %134, label %136

134:                                              ; preds = %131
  invoke void @_ZNSt6vectorIfSaIfEE9push_backERKf(ptr noundef nonnull align 8 dereferenceable(24) %27, ptr noundef nonnull align 4 dereferenceable(4) %18)
          to label %135 unwind label %89

135:                                              ; preds = %134
  invoke void @_ZNSt6vectorIfSaIfEE9push_backERKf(ptr noundef nonnull align 8 dereferenceable(24) %28, ptr noundef nonnull align 4 dereferenceable(4) %19)
          to label %136 unwind label %89

136:                                              ; preds = %135, %131
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %34) #10
  store i32 0, ptr %34, align 4, !tbaa !21
  %137 = icmp sgt i32 %63, 0
  br i1 %137, label %.lr.ph142, label %._crit_edge143

._crit_edge143:                                   ; preds = %140, %136
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %34) #10
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %35) #10
  %138 = call noundef i64 @_ZNKSt6vectorIiSaIiEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %23) #10
  %139 = trunc i64 %138 to i32
  store i32 %139, ptr %35, align 4, !tbaa !21
  invoke void @_ZNSt6vectorIiSaIiEE9push_backEOi(ptr noundef nonnull align 8 dereferenceable(24) %24, ptr noundef nonnull align 4 dereferenceable(4) %35)
          to label %146 unwind label %149

.lr.ph142:                                        ; preds = %136, %140
  invoke void @_ZNSt6vectorIiSaIiEE9push_backERKi(ptr noundef nonnull align 8 dereferenceable(24) %23, ptr noundef nonnull align 4 dereferenceable(4) %34)
          to label %140 unwind label %144

140:                                              ; preds = %.lr.ph142
  %141 = load i32, ptr %34, align 4, !tbaa !21
  %142 = add nsw i32 %141, 1
  store i32 %142, ptr %34, align 4, !tbaa !21
  %143 = icmp slt i32 %142, %63
  br i1 %143, label %.lr.ph142, label %._crit_edge143, !llvm.loop !22

144:                                              ; preds = %.lr.ph142
  %145 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %34) #10
  br label %237

146:                                              ; preds = %._crit_edge143
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %35) #10
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %36) #10
  call void @_ZN8XVector3IfEC2Ef(ptr noundef nonnull align 4 dereferenceable(12) %36, float noundef 0.000000e+00)
  br i1 %137, label %.lr.ph146.preheader, label %._crit_edge147

.lr.ph146.preheader:                              ; preds = %146
  %wide.trip.count170 = and i64 %62, 2147483647
  br label %.lr.ph146

._crit_edge147:                                   ; preds = %.lr.ph146, %146
  %147 = sitofp i32 %63 to float
  %148 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZN8XVector3IfEdVEf(ptr noundef nonnull align 4 dereferenceable(12) %36, float noundef %147)
  invoke void @_ZNSt6vectorI8XVector3IfESaIS1_EE9push_backERKS1_(ptr noundef nonnull align 8 dereferenceable(24) %25, ptr noundef nonnull align 4 dereferenceable(12) %36)
          to label %155 unwind label %151

149:                                              ; preds = %._crit_edge143
  %150 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %35) #10
  br label %237

151:                                              ; preds = %._crit_edge147
  %152 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %36) #10
  br label %237

.lr.ph146:                                        ; preds = %.lr.ph146.preheader, %.lr.ph146
  %indvars.iv167 = phi i64 [ 0, %.lr.ph146.preheader ], [ %indvars.iv.next168, %.lr.ph146 ]
  %153 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZNSt6vectorI8XVector3IfESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %22, i64 noundef %indvars.iv167) #10
  %154 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZN8XVector3IfEpLERKS0_(ptr noundef nonnull align 4 dereferenceable(12) %36, ptr noundef nonnull align 4 dereferenceable(12) %153)
  %indvars.iv.next168 = add nuw nsw i64 %indvars.iv167, 1
  %exitcond171.not = icmp eq i64 %indvars.iv.next168, %wide.trip.count170
  br i1 %exitcond171.not, label %._crit_edge147, label %.lr.ph146, !llvm.loop !23

155:                                              ; preds = %._crit_edge147
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %36) #10
  br label %156

156:                                              ; preds = %155, %126
  %.0116 = phi i32 [ %130, %155 ], [ %73, %126 ]
  %157 = icmp sgt i32 %63, 0
  br i1 %157, label %.lr.ph150.preheader, label %.preheader

.lr.ph150.preheader:                              ; preds = %156
  %wide.trip.count175 = and i64 %62, 2147483647
  br label %.lr.ph150

.preheader:                                       ; preds = %.lr.ph150, %156
  %158 = icmp sgt i32 %.0116, 0
  br i1 %158, label %.lr.ph152.preheader, label %._crit_edge153

.lr.ph152.preheader:                              ; preds = %.preheader
  %wide.trip.count180 = zext nneg i32 %.0116 to i64
  br label %.lr.ph152

.lr.ph150:                                        ; preds = %.lr.ph150.preheader, %.lr.ph150
  %indvars.iv172 = phi i64 [ 0, %.lr.ph150.preheader ], [ %indvars.iv.next173, %.lr.ph150 ]
  %159 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZNSt6vectorI8XVector3IfESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %22, i64 noundef %indvars.iv172) #10
  %160 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZN8XVector3IfEpLERKS0_(ptr noundef nonnull align 4 dereferenceable(12) %159, ptr noundef nonnull align 4 dereferenceable(12) %20)
  %indvars.iv.next173 = add nuw nsw i64 %indvars.iv172, 1
  %exitcond176.not = icmp eq i64 %indvars.iv.next173, %wide.trip.count175
  br i1 %exitcond176.not, label %.preheader, label %.lr.ph150, !llvm.loop !24

._crit_edge153:                                   ; preds = %.lr.ph152, %.preheader
  %161 = shl nsw i32 %63, 2
  %162 = sext i32 %161 to i64
  %163 = icmp slt i32 %63, 0
  %164 = shl nsw i64 %162, 2
  %165 = select i1 %163, i64 -1, i64 %164
  %166 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %165) #11
          to label %169 unwind label %89

.lr.ph152:                                        ; preds = %.lr.ph152.preheader, %.lr.ph152
  %indvars.iv177 = phi i64 [ 0, %.lr.ph152.preheader ], [ %indvars.iv.next178, %.lr.ph152 ]
  %167 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZNSt6vectorI8XVector3IfESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %25, i64 noundef %indvars.iv177) #10
  %168 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZN8XVector3IfEpLERKS0_(ptr noundef nonnull align 4 dereferenceable(12) %167, ptr noundef nonnull align 4 dereferenceable(12) %20)
  %indvars.iv.next178 = add nuw nsw i64 %indvars.iv177, 1
  %exitcond181.not = icmp eq i64 %indvars.iv.next178, %wide.trip.count180
  br i1 %exitcond181.not, label %._crit_edge153, label %.lr.ph152, !llvm.loop !25

169:                                              ; preds = %._crit_edge153
  store ptr %166, ptr %55, align 8, !tbaa !26
  %170 = getelementptr inbounds i8, ptr %55, i64 8
  store i32 %63, ptr %170, align 8, !tbaa !27
  %171 = getelementptr inbounds i8, ptr %55, i64 12
  store i32 %63, ptr %171, align 4, !tbaa !28
  br i1 %157, label %.lr.ph156.preheader, label %._crit_edge157

.lr.ph156.preheader:                              ; preds = %169
  %wide.trip.count185 = and i64 %62, 2147483647
  br label %.lr.ph156

._crit_edge157:                                   ; preds = %.lr.ph156, %169
  %172 = call noundef i64 @_ZNKSt6vectorIiSaIiEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %23) #10
  %173 = icmp ugt i64 %172, 4611686018427387903
  %174 = shl nuw i64 %172, 2
  %175 = select i1 %173, i64 -1, i64 %174
  %176 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %175) #11
          to label %193 unwind label %89

.lr.ph156:                                        ; preds = %.lr.ph156.preheader, %.lr.ph156
  %indvars.iv182 = phi i64 [ 0, %.lr.ph156.preheader ], [ %indvars.iv.next183, %.lr.ph156 ]
  %177 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZNSt6vectorI8XVector3IfESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %22, i64 noundef %indvars.iv182) #10
  %178 = load float, ptr %177, align 4, !tbaa !29
  %179 = shl nsw i64 %indvars.iv182, 2
  %180 = getelementptr inbounds float, ptr %166, i64 %179
  store float %178, ptr %180, align 4, !tbaa !5
  %181 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZNSt6vectorI8XVector3IfESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %22, i64 noundef %indvars.iv182) #10
  %182 = getelementptr inbounds i8, ptr %181, i64 4
  %183 = load float, ptr %182, align 4, !tbaa !31
  %184 = or disjoint i64 %179, 1
  %185 = getelementptr inbounds float, ptr %166, i64 %184
  store float %183, ptr %185, align 4, !tbaa !5
  %186 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZNSt6vectorI8XVector3IfESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %22, i64 noundef %indvars.iv182) #10
  %187 = getelementptr inbounds i8, ptr %186, i64 8
  %188 = load float, ptr %187, align 4, !tbaa !32
  %189 = or disjoint i64 %179, 2
  %190 = getelementptr inbounds float, ptr %166, i64 %189
  store float %188, ptr %190, align 4, !tbaa !5
  %191 = or disjoint i64 %179, 3
  %192 = getelementptr inbounds float, ptr %166, i64 %191
  store float 1.000000e+00, ptr %192, align 4, !tbaa !5
  %indvars.iv.next183 = add nuw nsw i64 %indvars.iv182, 1
  %exitcond186.not = icmp eq i64 %indvars.iv.next183, %wide.trip.count185
  br i1 %exitcond186.not, label %._crit_edge157, label %.lr.ph156, !llvm.loop !33

193:                                              ; preds = %._crit_edge157
  %194 = getelementptr inbounds i8, ptr %55, i64 48
  store ptr %176, ptr %194, align 8, !tbaa !34
  %195 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %23, i64 noundef 0) #10
  %196 = call noundef i64 @_ZNKSt6vectorIiSaIiEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %23) #10
  %197 = shl i64 %196, 2
  call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 4 %176, ptr nonnull align 4 %195, i64 %197, i1 false)
  %198 = sext i32 %.0116 to i64
  %199 = icmp slt i32 %.0116, 0
  %200 = shl nsw i64 %198, 2
  %201 = select i1 %199, i64 -1, i64 %200
  %202 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %201) #11
          to label %203 unwind label %89

203:                                              ; preds = %193
  %204 = getelementptr inbounds i8, ptr %55, i64 64
  store ptr %202, ptr %204, align 8, !tbaa !35
  %205 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %24, i64 noundef 0) #10
  call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 4 %202, ptr nonnull align 4 %205, i64 %200, i1 false)
  %206 = mul nsw i32 %.0116, 3
  %207 = sext i32 %206 to i64
  %208 = shl nsw i64 %207, 2
  %209 = select i1 %199, i64 -1, i64 %208
  %210 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %209) #11
          to label %211 unwind label %89

211:                                              ; preds = %203
  %212 = getelementptr inbounds i8, ptr %55, i64 80
  store ptr %210, ptr %212, align 8, !tbaa !36
  %213 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZNSt6vectorI8XVector3IfESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %25, i64 noundef 0) #10
  %214 = mul nsw i64 %198, 12
  call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 4 %210, ptr nonnull align 4 %213, i64 %214, i1 false)
  %215 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %201) #11
          to label %216 unwind label %89

216:                                              ; preds = %211
  %217 = getelementptr inbounds i8, ptr %55, i64 72
  store ptr %215, ptr %217, align 8, !tbaa !37
  %218 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIfSaIfEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %26, i64 noundef 0) #10
  call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 4 %215, ptr nonnull align 4 %218, i64 %200, i1 false)
  %219 = load float, ptr %19, align 4, !tbaa !5
  %220 = fcmp une float %219, 0.000000e+00
  br i1 %220, label %221, label %230

221:                                              ; preds = %216
  %222 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %201) #11
          to label %223 unwind label %89

223:                                              ; preds = %221
  %224 = getelementptr inbounds i8, ptr %55, i64 96
  store ptr %222, ptr %224, align 8, !tbaa !38
  %225 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIfSaIfEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %27, i64 noundef 0) #10
  call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 4 %222, ptr nonnull align 4 %225, i64 %200, i1 false)
  %226 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %201) #11
          to label %227 unwind label %89

227:                                              ; preds = %223
  %228 = getelementptr inbounds i8, ptr %55, i64 104
  store ptr %226, ptr %228, align 8, !tbaa !39
  %229 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIfSaIfEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %28, i64 noundef 0) #10
  call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 4 %226, ptr nonnull align 4 %229, i64 %200, i1 false)
  br label %232

230:                                              ; preds = %216
  %231 = getelementptr inbounds i8, ptr %55, i64 96
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %231, i8 0, i64 16, i1 false)
  br label %232

232:                                              ; preds = %230, %227
  %233 = call noundef i64 @_ZNKSt6vectorIiSaIiEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %23) #10
  %234 = trunc i64 %233 to i32
  %235 = getelementptr inbounds i8, ptr %55, i64 56
  store i32 %234, ptr %235, align 8, !tbaa !40
  %236 = getelementptr inbounds i8, ptr %55, i64 88
  store i32 %.0116, ptr %236, align 8, !tbaa !41
  call void @_ZNSt6vectorIfSaIfEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %29) #10
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %29) #10
  call void @_ZNSt6vectorIfSaIfEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %28) #10
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %28) #10
  call void @_ZNSt6vectorIfSaIfEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %27) #10
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %27) #10
  call void @_ZNSt6vectorIfSaIfEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %26) #10
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %26) #10
  call void @_ZNSt6vectorI8XVector3IfESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %25) #10
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %25) #10
  call void @_ZNSt6vectorIiSaIiEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %24) #10
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %24) #10
  call void @_ZNSt6vectorIiSaIiEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %23) #10
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %23) #10
  call void @_ZNSt6vectorI8XVector3IfESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %22) #10
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %22) #10
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %20) #10
  ret ptr %55

237:                                              ; preds = %151, %149, %144, %123, %89
  %.pn = phi { ptr, i32 } [ %145, %144 ], [ %90, %89 ], [ %152, %151 ], [ %150, %149 ], [ %124, %123 ]
  call void @_ZNSt6vectorIfSaIfEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %29) #10
  br label %238

238:                                              ; preds = %237, %76
  %.pn.pn = phi { ptr, i32 } [ %.pn, %237 ], [ %77, %76 ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %29) #10
  call void @_ZNSt6vectorIfSaIfEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %28) #10
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %28) #10
  call void @_ZNSt6vectorIfSaIfEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %27) #10
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %27) #10
  call void @_ZNSt6vectorIfSaIfEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %26) #10
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %26) #10
  call void @_ZNSt6vectorI8XVector3IfESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %25) #10
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %25) #10
  call void @_ZNSt6vectorIiSaIiEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %24) #10
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %24) #10
  call void @_ZNSt6vectorIiSaIiEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %23) #10
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %23) #10
  br label %239

239:                                              ; preds = %238, %74
  %.pn.pn.pn = phi { ptr, i32 } [ %.pn.pn, %238 ], [ %75, %74 ]
  call void @_ZNSt6vectorI8XVector3IfESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %22) #10
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %22) #10
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %20) #10
  resume { ptr, i32 } %.pn.pn.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 nounwind 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 #2 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) #5

; 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) #6

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

; Function Attrs: mustprogress uwtable
declare hidden void @_ZN12_GLOBAL__N_110SampleMeshEPK8XVector3IfEiPKiifffRSt6vectorIS1_SaIS1_EE(ptr noundef, i32 noundef, ptr noundef, i32 noundef, float noundef, float noundef, float noundef, ptr noundef nonnull align 8 dereferenceable(24)) local_unnamed_addr #0

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef i64 @_ZNKSt6vectorI8XVector3IfESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24)) local_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: mustprogress nounwind uwtable
declare dso_local void @_ZNSt6vectorIfSaIfEEC2Ev(ptr noundef nonnull align 8 dereferenceable(24)) unnamed_addr #7 align 2

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef i64 @_ZNKSt6vectorIfSaIfEE4sizeEv(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(4) ptr @_ZNSt6vectorIfSaIfEEixEm(ptr noundef nonnull align 8 dereferenceable(24), i64 noundef) local_unnamed_addr #7 align 2

; Function Attrs: mustprogress uwtable
declare hidden noundef i32 @_ZN12_GLOBAL__N_114CreateClustersEP8XVector3IfEPKfiRSt6vectorIiSaIiEES8_RS5_IS1_SaIS1_EEff(ptr noundef, ptr noundef, i32 noundef, ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(24), float noundef, float noundef) local_unnamed_addr #0

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

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

; Function Attrs: mustprogress uwtable
declare hidden noundef i32 @_ZN12_GLOBAL__N_111CreateLinksEPK8XVector3IfEiRSt6vectorIiSaIiEERS4_IfSaIfEESA_ff(ptr noundef, i32 noundef, ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(24), float noundef, float noundef) local_unnamed_addr #0

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

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

; 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 @_ZNSt6vectorIiSaIiEED2Ev(ptr noundef nonnull align 8 dereferenceable(24)) unnamed_addr #7 align 2

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZNSt6vectorI8XVector3IfESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24)) 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

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 = { mustprogress nocallback nofree nounwind willreturn memory(argmem: readwrite) }
attributes #6 = { mustprogress nocallback nofree nounwind willreturn memory(argmem: write) }
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 = { 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 #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 = { nounwind }
attributes #11 = { builtin allocsize(0) }
attributes #12 = { 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 = !{!"float", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = distinct !{!9, !10}
!10 = !{!"llvm.loop.mustprogress"}
!11 = distinct !{!11, !10}
!12 = distinct !{!12, !10}
!13 = !{!14, !15, i64 16}
!14 = !{!"_ZTS14NvFlexExtAsset", !15, i64 0, !16, i64 8, !16, i64 12, !15, i64 16, !15, i64 24, !15, i64 32, !16, i64 40, !15, i64 48, !16, i64 56, !15, i64 64, !15, i64 72, !15, i64 80, !16, i64 88, !15, i64 96, !15, i64 104, !15, i64 112, !16, i64 120, !17, i64 124, !6, i64 128, !6, i64 132, !6, i64 136}
!15 = !{!"any pointer", !7, i64 0}
!16 = !{!"int", !7, i64 0}
!17 = !{!"bool", !7, i64 0}
!18 = !{!14, !15, i64 24}
!19 = !{!14, !15, i64 32}
!20 = !{!14, !16, i64 40}
!21 = !{!16, !16, i64 0}
!22 = distinct !{!22, !10}
!23 = distinct !{!23, !10}
!24 = distinct !{!24, !10}
!25 = distinct !{!25, !10}
!26 = !{!14, !15, i64 0}
!27 = !{!14, !16, i64 8}
!28 = !{!14, !16, i64 12}
!29 = !{!30, !6, i64 0}
!30 = !{!"_ZTS8XVector3IfE", !6, i64 0, !6, i64 4, !6, i64 8}
!31 = !{!30, !6, i64 4}
!32 = !{!30, !6, i64 8}
!33 = distinct !{!33, !10}
!34 = !{!14, !15, i64 48}
!35 = !{!14, !15, i64 64}
!36 = !{!14, !15, i64 80}
!37 = !{!14, !15, i64 72}
!38 = !{!14, !15, i64 96}
!39 = !{!14, !15, i64 104}
!40 = !{!14, !16, i64 56}
!41 = !{!14, !16, i64 88}


; Effective O3 passes: CorrelatedValuePropagationPass,EarlyCSEPass,GVNPass,GlobalOptPass,IPSCCPPass,IndVarSimplifyPass,InferAlignmentPass,InferFunctionAttrsPass,InstCombinePass,JumpThreadingPass,LICMPass,LoopRotatePass,LoopSimplifyPass,LoopUnrollPass,MemCpyOptPass,PostOrderFunctionAttrsPass,SROAPass,SimplifyCFGPass