; LLVM IR from jasonlmfong/Model-Modifier :: Model-Modifier/src/scene/Mesh.ll (ZN4Mesh20BuildVerticesIndicesEv)

; 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.std::unordered_map.17" = type { %"class.std::_Hashtable.18" }
%"class.std::_Hashtable.18" = type { ptr, i64, %"struct.std::__detail::_Hash_node_base", i64, %"struct.std::__detail::_Prime_rehash_policy", ptr }
%"struct.std::__detail::_Hash_node_base" = type { ptr }
%"struct.std::__detail::_Prime_rehash_policy" = type { float, i64 }
%"struct.std::hash" = type { i8 }
%"struct.std::equal_to" = type { i8 }
%"class.std::allocator.31" = type { i8 }
%"class.std::vector.12" = type { %"struct.std::_Vector_base.13" }
%"struct.std::_Vector_base.13" = type { %"struct.std::_Vector_base<unsigned int, std::allocator<unsigned int>>::_Vector_impl" }
%"struct.std::_Vector_base<unsigned int, std::allocator<unsigned int>>::_Vector_impl" = type { %"struct.std::_Vector_base<unsigned int, std::allocator<unsigned int>>::_Vector_impl_data" }
%"struct.std::_Vector_base<unsigned int, std::allocator<unsigned int>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.34" = type { %"struct.std::_Vector_base.35" }
%"struct.std::_Vector_base.35" = type { %"struct.std::_Vector_base<std::vector<glm::vec<3, float>>, std::allocator<std::vector<glm::vec<3, float>>>>::_Vector_impl" }
%"struct.std::_Vector_base<std::vector<glm::vec<3, float>>, std::allocator<std::vector<glm::vec<3, float>>>>::_Vector_impl" = type { %"struct.std::_Vector_base<std::vector<glm::vec<3, float>>, std::allocator<std::vector<glm::vec<3, float>>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<std::vector<glm::vec<3, float>>, std::allocator<std::vector<glm::vec<3, float>>>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::allocator.36" = type { i8 }
%"struct.glm::vec" = type { %union.anon, %union.anon.0, %union.anon.1 }
%union.anon = type { float }
%union.anon.0 = type { float }
%union.anon.1 = type { float }
%"class.std::vector" = type { %"struct.std::_Vector_base" }
%"struct.std::_Vector_base" = type { %"struct.std::_Vector_base<glm::vec<3, float>, std::allocator<glm::vec<3, float>>>::_Vector_impl" }
%"struct.std::_Vector_base<glm::vec<3, float>, std::allocator<glm::vec<3, float>>>::_Vector_impl" = type { %"struct.std::_Vector_base<glm::vec<3, float>, std::allocator<glm::vec<3, float>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<glm::vec<3, float>, std::allocator<glm::vec<3, float>>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.__gnu_cxx::__normal_iterator" = type { ptr }
%"class.std::allocator" = type { i8 }
%class.Mesh = type { %class.Object, i32, %"class.std::vector", i32, ptr, i32, ptr }
%class.Object = type { %"struct.glm::vec", %"struct.glm::vec", %"class.std::vector", %"class.std::vector.2", %"class.std::vector.2", %"class.std::unordered_map" }
%"class.std::vector.2" = type { %"struct.std::_Vector_base.3" }
%"struct.std::_Vector_base.3" = type { %"struct.std::_Vector_base<std::vector<unsigned int>, std::allocator<std::vector<unsigned int>>>::_Vector_impl" }
%"struct.std::_Vector_base<std::vector<unsigned int>, std::allocator<std::vector<unsigned int>>>::_Vector_impl" = type { %"struct.std::_Vector_base<std::vector<unsigned int>, std::allocator<std::vector<unsigned int>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<std::vector<unsigned int>, std::allocator<std::vector<unsigned int>>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::unordered_map" = type { %"class.std::_Hashtable" }
%"class.std::_Hashtable" = type { ptr, i64, %"struct.std::__detail::_Hash_node_base", i64, %"struct.std::__detail::_Prime_rehash_policy", ptr }

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

declare i32 @__gxx_personality_v0(...)

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN4Mesh20BuildVerticesIndicesEv(ptr noundef nonnull align 8 dereferenceable(216) %0) #1 align 2 personality ptr @__gxx_personality_v0 {
  %2 = alloca ptr, align 8
  %3 = alloca i32, align 4
  %4 = alloca i32, align 4
  %5 = alloca i32, align 4
  %6 = alloca i32, align 4
  %7 = alloca i32, align 4
  %8 = alloca %"class.std::unordered_map.17", align 8
  %9 = alloca %"struct.std::hash", align 1
  %10 = alloca %"struct.std::equal_to", align 1
  %11 = alloca %"class.std::allocator.31", align 1
  %12 = alloca ptr, align 8
  %13 = alloca i32, align 4
  %14 = alloca i32, align 4
  %15 = alloca %"class.std::vector.12", align 8
  %16 = alloca i32, align 4
  %17 = alloca %"class.std::vector.34", align 8
  %18 = alloca %"class.std::allocator.36", align 1
  %19 = alloca i32, align 4
  %20 = alloca %"struct.glm::vec", align 4
  %21 = alloca %"class.std::vector", align 8
  %22 = alloca i32, align 4
  %23 = alloca %"struct.glm::vec", align 4
  %24 = alloca ptr, align 8
  %25 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %26 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %27 = alloca i32, align 4
  %28 = alloca %"struct.glm::vec", align 4
  %29 = alloca %"struct.glm::vec", align 4
  %30 = alloca { <2 x float>, float }, align 8
  %31 = alloca i32, align 4
  %32 = alloca i32, align 4
  %33 = alloca i32, align 4
  %34 = alloca %"class.std::unordered_map.17", align 8
  %35 = alloca %"struct.std::hash", align 1
  %36 = alloca %"struct.std::equal_to", align 1
  %37 = alloca %"class.std::allocator.31", align 1
  %38 = alloca i32, align 4
  %39 = alloca %"class.std::vector.12", align 8
  %40 = alloca i32, align 4
  %41 = alloca i32, align 4
  %42 = alloca %"class.std::vector", align 8
  %43 = alloca %"class.std::allocator", align 1
  %44 = alloca i32, align 4
  %45 = alloca %"struct.glm::vec", align 4
  %46 = alloca %"struct.glm::vec", align 4
  %47 = alloca ptr, align 8
  %48 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %49 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %50 = alloca i32, align 4
  %51 = alloca %"struct.glm::vec", align 4
  %52 = alloca { <2 x float>, float }, align 8
  %53 = alloca i32, align 4
  %54 = alloca i32, align 4
  store ptr %0, ptr %2, align 8, !tbaa !5
  %55 = load ptr, ptr %2, align 8
  call void @llvm.lifetime.start.p0(i64 4, ptr %3) #11
  %56 = getelementptr inbounds %class.Mesh, ptr %55, i32 0, i32 0
  %57 = getelementptr inbounds %class.Object, ptr %56, i32 0, i32 4
  %58 = call noundef i64 @_ZNKSt6vectorIS_IjSaIjEESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %57) #11
  %59 = trunc i64 %58 to i32
  store i32 %59, ptr %3, align 4, !tbaa !9
  %60 = getelementptr inbounds %class.Mesh, ptr %55, i32 0, i32 1
  %61 = load i32, ptr %60, align 8, !tbaa !11
  %62 = icmp eq i32 %61, 0
  br i1 %62, label %63, label %247

63:                                               ; preds = %1
  %64 = load i32, ptr %3, align 4, !tbaa !9
  %65 = mul i32 18, %64
  %66 = getelementptr inbounds %class.Mesh, ptr %55, i32 0, i32 3
  store i32 %65, ptr %66, align 8, !tbaa !29
  %67 = getelementptr inbounds %class.Mesh, ptr %55, i32 0, i32 3
  %68 = load i32, ptr %67, align 8, !tbaa !29
  %69 = zext i32 %68 to i64
  %70 = call { i64, i1 } @llvm.umul.with.overflow.i64(i64 %69, i64 4)
  %71 = extractvalue { i64, i1 } %70, 1
  %72 = extractvalue { i64, i1 } %70, 0
  %73 = select i1 %71, i64 -1, i64 %72
  %74 = call noalias noundef nonnull ptr @_Znam(i64 noundef %73) #12
  call void @llvm.memset.p0.i64(ptr align 4 %74, i8 0, i64 %73, i1 false)
  %75 = getelementptr inbounds %class.Mesh, ptr %55, i32 0, i32 4
  store ptr %74, ptr %75, align 8, !tbaa !30
  call void @llvm.lifetime.start.p0(i64 4, ptr %4) #11
  store i32 0, ptr %4, align 4, !tbaa !9
  br label %76

76:                                               ; preds = %214, %63
  %77 = load i32, ptr %4, align 4, !tbaa !9
  %78 = load i32, ptr %3, align 4, !tbaa !9
  %79 = icmp ult i32 %77, %78
  br i1 %79, label %81, label %80

80:                                               ; preds = %76
  store i32 2, ptr %5, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %4) #11
  br label %217

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

82:                                               ; preds = %210, %81
  %83 = load i32, ptr %6, align 4, !tbaa !9
  %84 = icmp ult i32 %83, 3
  br i1 %84, label %86, label %85

85:                                               ; preds = %82
  store i32 5, ptr %5, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %6) #11
  br label %213

86:                                               ; preds = %82
  %87 = getelementptr inbounds %class.Mesh, ptr %55, i32 0, i32 0
  %88 = getelementptr inbounds %class.Object, ptr %87, i32 0, i32 2
  %89 = getelementptr inbounds %class.Mesh, ptr %55, i32 0, i32 0
  %90 = getelementptr inbounds %class.Object, ptr %89, i32 0, i32 4
  %91 = load i32, ptr %4, align 4, !tbaa !9
  %92 = zext i32 %91 to i64
  %93 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIS_IjSaIjEESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %90, i64 noundef %92) #11
  %94 = load i32, ptr %6, align 4, !tbaa !9
  %95 = zext i32 %94 to i64
  %96 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIjSaIjEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %93, i64 noundef %95) #11
  %97 = load i32, ptr %96, align 4, !tbaa !9
  %98 = zext i32 %97 to i64
  %99 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZNSt6vectorIN3glm3vecILi3EfLNS0_9qualifierE0EEESaIS3_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %88, i64 noundef %98) #11
  %100 = getelementptr inbounds %"struct.glm::vec", ptr %99, i32 0, i32 0
  %101 = load float, ptr %100, align 4, !tbaa !31
  %102 = getelementptr inbounds %class.Mesh, ptr %55, i32 0, i32 4
  %103 = load ptr, ptr %102, align 8, !tbaa !30
  %104 = load i32, ptr %4, align 4, !tbaa !9
  %105 = mul i32 18, %104
  %106 = load i32, ptr %6, align 4, !tbaa !9
  %107 = mul i32 6, %106
  %108 = add i32 %105, %107
  %109 = add i32 %108, 0
  %110 = zext i32 %109 to i64
  %111 = getelementptr inbounds float, ptr %103, i64 %110
  store float %101, ptr %111, align 4, !tbaa !32
  %112 = getelementptr inbounds %class.Mesh, ptr %55, i32 0, i32 0
  %113 = getelementptr inbounds %class.Object, ptr %112, i32 0, i32 2
  %114 = getelementptr inbounds %class.Mesh, ptr %55, i32 0, i32 0
  %115 = getelementptr inbounds %class.Object, ptr %114, i32 0, i32 4
  %116 = load i32, ptr %4, align 4, !tbaa !9
  %117 = zext i32 %116 to i64
  %118 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIS_IjSaIjEESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %115, i64 noundef %117) #11
  %119 = load i32, ptr %6, align 4, !tbaa !9
  %120 = zext i32 %119 to i64
  %121 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIjSaIjEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %118, i64 noundef %120) #11
  %122 = load i32, ptr %121, align 4, !tbaa !9
  %123 = zext i32 %122 to i64
  %124 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZNSt6vectorIN3glm3vecILi3EfLNS0_9qualifierE0EEESaIS3_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %113, i64 noundef %123) #11
  %125 = getelementptr inbounds %"struct.glm::vec", ptr %124, i32 0, i32 1
  %126 = load float, ptr %125, align 4, !tbaa !31
  %127 = getelementptr inbounds %class.Mesh, ptr %55, i32 0, i32 4
  %128 = load ptr, ptr %127, align 8, !tbaa !30
  %129 = load i32, ptr %4, align 4, !tbaa !9
  %130 = mul i32 18, %129
  %131 = load i32, ptr %6, align 4, !tbaa !9
  %132 = mul i32 6, %131
  %133 = add i32 %130, %132
  %134 = add i32 %133, 1
  %135 = zext i32 %134 to i64
  %136 = getelementptr inbounds float, ptr %128, i64 %135
  store float %126, ptr %136, align 4, !tbaa !32
  %137 = getelementptr inbounds %class.Mesh, ptr %55, i32 0, i32 0
  %138 = getelementptr inbounds %class.Object, ptr %137, i32 0, i32 2
  %139 = getelementptr inbounds %class.Mesh, ptr %55, i32 0, i32 0
  %140 = getelementptr inbounds %class.Object, ptr %139, i32 0, i32 4
  %141 = load i32, ptr %4, align 4, !tbaa !9
  %142 = zext i32 %141 to i64
  %143 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIS_IjSaIjEESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %140, i64 noundef %142) #11
  %144 = load i32, ptr %6, align 4, !tbaa !9
  %145 = zext i32 %144 to i64
  %146 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIjSaIjEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %143, i64 noundef %145) #11
  %147 = load i32, ptr %146, align 4, !tbaa !9
  %148 = zext i32 %147 to i64
  %149 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZNSt6vectorIN3glm3vecILi3EfLNS0_9qualifierE0EEESaIS3_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %138, i64 noundef %148) #11
  %150 = getelementptr inbounds %"struct.glm::vec", ptr %149, i32 0, i32 2
  %151 = load float, ptr %150, align 4, !tbaa !31
  %152 = getelementptr inbounds %class.Mesh, ptr %55, i32 0, i32 4
  %153 = load ptr, ptr %152, align 8, !tbaa !30
  %154 = load i32, ptr %4, align 4, !tbaa !9
  %155 = mul i32 18, %154
  %156 = load i32, ptr %6, align 4, !tbaa !9
  %157 = mul i32 6, %156
  %158 = add i32 %155, %157
  %159 = add i32 %158, 2
  %160 = zext i32 %159 to i64
  %161 = getelementptr inbounds float, ptr %153, i64 %160
  store float %151, ptr %161, align 4, !tbaa !32
  %162 = getelementptr inbounds %class.Mesh, ptr %55, i32 0, i32 2
  %163 = load i32, ptr %4, align 4, !tbaa !9
  %164 = zext i32 %163 to i64
  %165 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZNSt6vectorIN3glm3vecILi3EfLNS0_9qualifierE0EEESaIS3_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %162, i64 noundef %164) #11
  %166 = getelementptr inbounds %"struct.glm::vec", ptr %165, i32 0, i32 0
  %167 = load float, ptr %166, align 4, !tbaa !31
  %168 = getelementptr inbounds %class.Mesh, ptr %55, i32 0, i32 4
  %169 = load ptr, ptr %168, align 8, !tbaa !30
  %170 = load i32, ptr %4, align 4, !tbaa !9
  %171 = mul i32 18, %170
  %172 = load i32, ptr %6, align 4, !tbaa !9
  %173 = mul i32 6, %172
  %174 = add i32 %171, %173
  %175 = add i32 %174, 3
  %176 = zext i32 %175 to i64
  %177 = getelementptr inbounds float, ptr %169, i64 %176
  store float %167, ptr %177, align 4, !tbaa !32
  %178 = getelementptr inbounds %class.Mesh, ptr %55, i32 0, i32 2
  %179 = load i32, ptr %4, align 4, !tbaa !9
  %180 = zext i32 %179 to i64
  %181 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZNSt6vectorIN3glm3vecILi3EfLNS0_9qualifierE0EEESaIS3_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %178, i64 noundef %180) #11
  %182 = getelementptr inbounds %"struct.glm::vec", ptr %181, i32 0, i32 1
  %183 = load float, ptr %182, align 4, !tbaa !31
  %184 = getelementptr inbounds %class.Mesh, ptr %55, i32 0, i32 4
  %185 = load ptr, ptr %184, align 8, !tbaa !30
  %186 = load i32, ptr %4, align 4, !tbaa !9
  %187 = mul i32 18, %186
  %188 = load i32, ptr %6, align 4, !tbaa !9
  %189 = mul i32 6, %188
  %190 = add i32 %187, %189
  %191 = add i32 %190, 4
  %192 = zext i32 %191 to i64
  %193 = getelementptr inbounds float, ptr %185, i64 %192
  store float %183, ptr %193, align 4, !tbaa !32
  %194 = getelementptr inbounds %class.Mesh, ptr %55, i32 0, i32 2
  %195 = load i32, ptr %4, align 4, !tbaa !9
  %196 = zext i32 %195 to i64
  %197 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZNSt6vectorIN3glm3vecILi3EfLNS0_9qualifierE0EEESaIS3_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %194, i64 noundef %196) #11
  %198 = getelementptr inbounds %"struct.glm::vec", ptr %197, i32 0, i32 2
  %199 = load float, ptr %198, align 4, !tbaa !31
  %200 = getelementptr inbounds %class.Mesh, ptr %55, i32 0, i32 4
  %201 = load ptr, ptr %200, align 8, !tbaa !30
  %202 = load i32, ptr %4, align 4, !tbaa !9
  %203 = mul i32 18, %202
  %204 = load i32, ptr %6, align 4, !tbaa !9
  %205 = mul i32 6, %204
  %206 = add i32 %203, %205
  %207 = add i32 %206, 5
  %208 = zext i32 %207 to i64
  %209 = getelementptr inbounds float, ptr %201, i64 %208
  store float %199, ptr %209, align 4, !tbaa !32
  br label %210

210:                                              ; preds = %86
  %211 = load i32, ptr %6, align 4, !tbaa !9
  %212 = add i32 %211, 1
  store i32 %212, ptr %6, align 4, !tbaa !9
  br label %82, !llvm.loop !33

213:                                              ; preds = %85
  br label %214

214:                                              ; preds = %213
  %215 = load i32, ptr %4, align 4, !tbaa !9
  %216 = add i32 %215, 1
  store i32 %216, ptr %4, align 4, !tbaa !9
  br label %76, !llvm.loop !35

217:                                              ; preds = %80
  %218 = load i32, ptr %3, align 4, !tbaa !9
  %219 = mul i32 9, %218
  %220 = getelementptr inbounds %class.Mesh, ptr %55, i32 0, i32 5
  store i32 %219, ptr %220, align 8, !tbaa !36
  %221 = getelementptr inbounds %class.Mesh, ptr %55, i32 0, i32 5
  %222 = load i32, ptr %221, align 8, !tbaa !36
  %223 = zext i32 %222 to i64
  %224 = call { i64, i1 } @llvm.umul.with.overflow.i64(i64 %223, i64 4)
  %225 = extractvalue { i64, i1 } %224, 1
  %226 = extractvalue { i64, i1 } %224, 0
  %227 = select i1 %225, i64 -1, i64 %226
  %228 = call noalias noundef nonnull ptr @_Znam(i64 noundef %227) #12
  %229 = getelementptr inbounds %class.Mesh, ptr %55, i32 0, i32 6
  store ptr %228, ptr %229, align 8, !tbaa !37
  call void @llvm.lifetime.start.p0(i64 4, ptr %7) #11
  store i32 0, ptr %7, align 4, !tbaa !9
  br label %230

230:                                              ; preds = %243, %217
  %231 = load i32, ptr %7, align 4, !tbaa !9
  %232 = getelementptr inbounds %class.Mesh, ptr %55, i32 0, i32 5
  %233 = load i32, ptr %232, align 8, !tbaa !36
  %234 = icmp ult i32 %231, %233
  br i1 %234, label %236, label %235

235:                                              ; preds = %230
  store i32 8, ptr %5, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %7) #11
  br label %246

236:                                              ; preds = %230
  %237 = load i32, ptr %7, align 4, !tbaa !9
  %238 = getelementptr inbounds %class.Mesh, ptr %55, i32 0, i32 6
  %239 = load ptr, ptr %238, align 8, !tbaa !37
  %240 = load i32, ptr %7, align 4, !tbaa !9
  %241 = zext i32 %240 to i64
  %242 = getelementptr inbounds i32, ptr %239, i64 %241
  store i32 %237, ptr %242, align 4, !tbaa !9
  br label %243

243:                                              ; preds = %236
  %244 = load i32, ptr %7, align 4, !tbaa !9
  %245 = add i32 %244, 1
  store i32 %245, ptr %7, align 4, !tbaa !9
  br label %230, !llvm.loop !38

246:                                              ; preds = %235
  br label %896

247:                                              ; preds = %1
  %248 = getelementptr inbounds %class.Mesh, ptr %55, i32 0, i32 1
  %249 = load i32, ptr %248, align 8, !tbaa !11
  %250 = icmp eq i32 %249, 1
  br i1 %250, label %251, label %599

251:                                              ; preds = %247
  call void @llvm.lifetime.start.p0(i64 56, ptr %8) #11
  %252 = getelementptr inbounds %class.Mesh, ptr %55, i32 0, i32 0
  %253 = getelementptr inbounds %class.Object, ptr %252, i32 0, i32 2
  %254 = call noundef i64 @_ZNKSt6vectorIN3glm3vecILi3EfLNS0_9qualifierE0EEESaIS3_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %253) #11
  call void @llvm.lifetime.start.p0(i64 1, ptr %9) #11
  call void @llvm.lifetime.start.p0(i64 1, ptr %10) #11
  call void @llvm.lifetime.start.p0(i64 1, ptr %11) #11
  call void @_ZNSaISt4pairIKjSt6vectorIjSaIjEEEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %11) #11
  invoke void @_ZNSt13unordered_mapIjSt6vectorIjSaIjEESt4hashIjESt8equal_toIjESaISt4pairIKjS2_EEEC2EmRKS4_RKS6_RKSA_(ptr noundef nonnull align 8 dereferenceable(56) %8, i64 noundef %254, ptr noundef nonnull align 1 dereferenceable(1) %9, ptr noundef nonnull align 1 dereferenceable(1) %10, ptr noundef nonnull align 1 dereferenceable(1) %11)
          to label %255 unwind label %261

255:                                              ; preds = %251
  call void @_ZNSt15__new_allocatorISt4pairIKjSt6vectorIjSaIjEEEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %11) #11
  call void @llvm.lifetime.end.p0(i64 1, ptr %11) #11
  call void @llvm.lifetime.end.p0(i64 1, ptr %10) #11
  call void @llvm.lifetime.end.p0(i64 1, ptr %9) #11
  call void @llvm.lifetime.start.p0(i64 4, ptr %14) #11
  store i32 0, ptr %14, align 4, !tbaa !9
  br label %256

256:                                              ; preds = %295, %255
  %257 = load i32, ptr %14, align 4, !tbaa !9
  %258 = load i32, ptr %3, align 4, !tbaa !9
  %259 = icmp ult i32 %257, %258
  br i1 %259, label %265, label %260

260:                                              ; preds = %256
  store i32 11, ptr %5, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %14) #11
  br label %299

261:                                              ; preds = %251
  %262 = landingpad { ptr, i32 }
          cleanup
  %263 = extractvalue { ptr, i32 } %262, 0
  store ptr %263, ptr %12, align 8
  %264 = extractvalue { ptr, i32 } %262, 1
  store i32 %264, ptr %13, align 4
  call void @_ZNSt15__new_allocatorISt4pairIKjSt6vectorIjSaIjEEEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %11) #11
  call void @llvm.lifetime.end.p0(i64 1, ptr %11) #11
  call void @llvm.lifetime.end.p0(i64 1, ptr %10) #11
  call void @llvm.lifetime.end.p0(i64 1, ptr %9) #11
  br label %598

265:                                              ; preds = %256
  call void @llvm.lifetime.start.p0(i64 24, ptr %15) #11
  %266 = getelementptr inbounds %class.Mesh, ptr %55, i32 0, i32 0
  %267 = getelementptr inbounds %class.Object, ptr %266, i32 0, i32 4
  %268 = load i32, ptr %14, align 4, !tbaa !9
  %269 = zext i32 %268 to i64
  %270 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIS_IjSaIjEESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %267, i64 noundef %269) #11
  invoke void @_ZNSt6vectorIjSaIjEEC2ERKS1_(ptr noundef nonnull align 8 dereferenceable(24) %15, ptr noundef nonnull align 8 dereferenceable(24) %270)
          to label %271 unwind label %276

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

272:                                              ; preds = %287, %271
  %273 = load i32, ptr %16, align 4, !tbaa !9
  %274 = icmp ult i32 %273, 3
  br i1 %274, label %280, label %275

275:                                              ; preds = %272
  store i32 14, ptr %5, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %16) #11
  br label %294

276:                                              ; preds = %265
  %277 = landingpad { ptr, i32 }
          cleanup
  %278 = extractvalue { ptr, i32 } %277, 0
  store ptr %278, ptr %12, align 8
  %279 = extractvalue { ptr, i32 } %277, 1
  store i32 %279, ptr %13, align 4
  br label %298

280:                                              ; preds = %272
  %281 = load i32, ptr %16, align 4, !tbaa !9
  %282 = zext i32 %281 to i64
  %283 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIjSaIjEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %15, i64 noundef %282) #11
  %284 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt13unordered_mapIjSt6vectorIjSaIjEESt4hashIjESt8equal_toIjESaISt4pairIKjS2_EEEixERS8_(ptr noundef nonnull align 8 dereferenceable(56) %8, ptr noundef nonnull align 4 dereferenceable(4) %283)
          to label %285 unwind label %290

285:                                              ; preds = %280
  invoke void @_ZNSt6vectorIjSaIjEE9push_backERKj(ptr noundef nonnull align 8 dereferenceable(24) %284, ptr noundef nonnull align 4 dereferenceable(4) %14)
          to label %286 unwind label %290

286:                                              ; preds = %285
  br label %287

287:                                              ; preds = %286
  %288 = load i32, ptr %16, align 4, !tbaa !9
  %289 = add i32 %288, 1
  store i32 %289, ptr %16, align 4, !tbaa !9
  br label %272, !llvm.loop !39

290:                                              ; preds = %285, %280
  %291 = landingpad { ptr, i32 }
          cleanup
  %292 = extractvalue { ptr, i32 } %291, 0
  store ptr %292, ptr %12, align 8
  %293 = extractvalue { ptr, i32 } %291, 1
  store i32 %293, ptr %13, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %16) #11
  call void @_ZNSt6vectorIjSaIjEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %15) #11
  br label %298

294:                                              ; preds = %275
  call void @_ZNSt6vectorIjSaIjEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %15) #11
  call void @llvm.lifetime.end.p0(i64 24, ptr %15) #11
  br label %295

295:                                              ; preds = %294
  %296 = load i32, ptr %14, align 4, !tbaa !9
  %297 = add i32 %296, 1
  store i32 %297, ptr %14, align 4, !tbaa !9
  br label %256, !llvm.loop !40

298:                                              ; preds = %290, %276
  call void @llvm.lifetime.end.p0(i64 24, ptr %15) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr %14) #11
  br label %597

299:                                              ; preds = %260
  call void @llvm.lifetime.start.p0(i64 24, ptr %17) #11
  %300 = load i32, ptr %3, align 4, !tbaa !9
  %301 = zext i32 %300 to i64
  call void @llvm.lifetime.start.p0(i64 1, ptr %18) #11
  call void @_ZNSaISt6vectorIN3glm3vecILi3EfLNS0_9qualifierE0EEESaIS3_EEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %18) #11
  invoke void @_ZNSt6vectorIS_IN3glm3vecILi3EfLNS0_9qualifierE0EEESaIS3_EESaIS5_EEC2EmRKS6_(ptr noundef nonnull align 8 dereferenceable(24) %17, i64 noundef %301, ptr noundef nonnull align 1 dereferenceable(1) %18)
          to label %302 unwind label %308

302:                                              ; preds = %299
  call void @_ZNSt15__new_allocatorISt6vectorIN3glm3vecILi3EfLNS1_9qualifierE0EEESaIS4_EEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %18) #11
  call void @llvm.lifetime.end.p0(i64 1, ptr %18) #11
  call void @llvm.lifetime.start.p0(i64 4, ptr %19) #11
  store i32 0, ptr %19, align 4, !tbaa !9
  br label %303

303:                                              ; preds = %391, %302
  %304 = load i32, ptr %19, align 4, !tbaa !9
  %305 = load i32, ptr %3, align 4, !tbaa !9
  %306 = icmp ult i32 %304, %305
  br i1 %306, label %312, label %307

307:                                              ; preds = %303
  store i32 17, ptr %5, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %19) #11
  br label %399

308:                                              ; preds = %299
  %309 = landingpad { ptr, i32 }
          cleanup
  %310 = extractvalue { ptr, i32 } %309, 0
  store ptr %310, ptr %12, align 8
  %311 = extractvalue { ptr, i32 } %309, 1
  store i32 %311, ptr %13, align 4
  call void @_ZNSt15__new_allocatorISt6vectorIN3glm3vecILi3EfLNS1_9qualifierE0EEESaIS4_EEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %18) #11
  call void @llvm.lifetime.end.p0(i64 1, ptr %18) #11
  br label %596

312:                                              ; preds = %303
  call void @llvm.lifetime.start.p0(i64 12, ptr %20) #11
  %313 = getelementptr inbounds %class.Mesh, ptr %55, i32 0, i32 2
  %314 = load i32, ptr %19, align 4, !tbaa !9
  %315 = zext i32 %314 to i64
  %316 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZNSt6vectorIN3glm3vecILi3EfLNS0_9qualifierE0EEESaIS3_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %313, i64 noundef %315) #11
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %20, ptr align 4 %316, i64 12, i1 false), !tbaa.struct !41
  call void @llvm.lifetime.start.p0(i64 24, ptr %21) #11
  call void @_ZNSt6vectorIN3glm3vecILi3EfLNS0_9qualifierE0EEESaIS3_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %21) #11
  call void @llvm.lifetime.start.p0(i64 4, ptr %22) #11
  store i32 0, ptr %22, align 4, !tbaa !9
  br label %317

317:                                              ; preds = %377, %312
  %318 = load i32, ptr %22, align 4, !tbaa !9
  %319 = zext i32 %318 to i64
  %320 = getelementptr inbounds %class.Mesh, ptr %55, i32 0, i32 0
  %321 = getelementptr inbounds %class.Object, ptr %320, i32 0, i32 4
  %322 = load i32, ptr %19, align 4, !tbaa !9
  %323 = zext i32 %322 to i64
  %324 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIS_IjSaIjEESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %321, i64 noundef %323) #11
  %325 = call noundef i64 @_ZNKSt6vectorIjSaIjEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %324) #11
  %326 = icmp ult i64 %319, %325
  br i1 %326, label %328, label %327

327:                                              ; preds = %317
  store i32 20, ptr %5, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %22) #11
  br label %385

328:                                              ; preds = %317
  call void @llvm.lifetime.start.p0(i64 12, ptr %23) #11
  call void @llvm.memset.p0.i64(ptr align 4 %23, i8 0, i64 12, i1 false)
  call void @llvm.lifetime.start.p0(i64 8, ptr %24) #11
  %329 = getelementptr inbounds %class.Mesh, ptr %55, i32 0, i32 0
  %330 = getelementptr inbounds %class.Object, ptr %329, i32 0, i32 4
  %331 = load i32, ptr %19, align 4, !tbaa !9
  %332 = zext i32 %331 to i64
  %333 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIS_IjSaIjEESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %330, i64 noundef %332) #11
  %334 = load i32, ptr %22, align 4, !tbaa !9
  %335 = zext i32 %334 to i64
  %336 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIjSaIjEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %333, i64 noundef %335) #11
  %337 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt13unordered_mapIjSt6vectorIjSaIjEESt4hashIjESt8equal_toIjESaISt4pairIKjS2_EEEixERS8_(ptr noundef nonnull align 8 dereferenceable(56) %8, ptr noundef nonnull align 4 dereferenceable(4) %336)
          to label %338 unwind label %348

338:                                              ; preds = %328
  store ptr %337, ptr %24, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %25) #11
  %339 = load ptr, ptr %24, align 8, !tbaa !5
  %340 = call ptr @_ZNSt6vectorIjSaIjEE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %339) #11
  %341 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %25, i32 0, i32 0
  store ptr %340, ptr %341, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %26) #11
  %342 = load ptr, ptr %24, align 8, !tbaa !5
  %343 = call ptr @_ZNSt6vectorIjSaIjEE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %342) #11
  %344 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %26, i32 0, i32 0
  store ptr %343, ptr %344, align 8
  br label %345

345:                                              ; preds = %370, %338
  %346 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPjSt6vectorIjSaIjEEEEbRKNS_17__normal_iteratorIT_T0_EESA_(ptr noundef nonnull align 8 dereferenceable(8) %25, ptr noundef nonnull align 8 dereferenceable(8) %26) #11
  br i1 %346, label %352, label %347

347:                                              ; preds = %345
  store i32 23, ptr %5, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %26) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %25) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %24) #11
  br label %373

348:                                              ; preds = %328
  %349 = landingpad { ptr, i32 }
          cleanup
  %350 = extractvalue { ptr, i32 } %349, 0
  store ptr %350, ptr %12, align 8
  %351 = extractvalue { ptr, i32 } %349, 1
  store i32 %351, ptr %13, align 4
  br label %372

352:                                              ; preds = %345
  call void @llvm.lifetime.start.p0(i64 4, ptr %27) #11
  %353 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPjSt6vectorIjSaIjEEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %25) #11
  %354 = load i32, ptr %353, align 4, !tbaa !9
  store i32 %354, ptr %27, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 12, ptr %28) #11
  %355 = getelementptr inbounds %class.Mesh, ptr %55, i32 0, i32 2
  %356 = load i32, ptr %27, align 4, !tbaa !9
  %357 = zext i32 %356 to i64
  %358 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZNSt6vectorIN3glm3vecILi3EfLNS0_9qualifierE0EEESaIS3_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %355, i64 noundef %357) #11
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %28, ptr align 4 %358, i64 12, i1 false), !tbaa.struct !41
  %359 = invoke noundef float @_ZN3glm3dotILi3EfLNS_9qualifierE0EEET0_RKNS_3vecIXT_ES2_XT1_EEES6_(ptr noundef nonnull align 4 dereferenceable(12) %20, ptr noundef nonnull align 4 dereferenceable(12) %28)
          to label %360 unwind label %365

360:                                              ; preds = %352
  %361 = fcmp ogt float %359, 0x3FECCCCCC0000000
  br i1 %361, label %362, label %369

362:                                              ; preds = %360
  %363 = invoke noundef nonnull align 4 dereferenceable(12) ptr @_ZN3glm3vecILi3EfLNS_9qualifierE0EEpLIfEERS2_RKNS0_ILi3ET_LS1_0EEE(ptr noundef nonnull align 4 dereferenceable(12) %23, ptr noundef nonnull align 4 dereferenceable(12) %28)
          to label %364 unwind label %365

364:                                              ; preds = %362
  br label %369

365:                                              ; preds = %362, %352
  %366 = landingpad { ptr, i32 }
          cleanup
  %367 = extractvalue { ptr, i32 } %366, 0
  store ptr %367, ptr %12, align 8
  %368 = extractvalue { ptr, i32 } %366, 1
  store i32 %368, ptr %13, align 4
  call void @llvm.lifetime.end.p0(i64 12, ptr %28) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr %27) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %26) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %25) #11
  br label %372

369:                                              ; preds = %364, %360
  call void @llvm.lifetime.end.p0(i64 12, ptr %28) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr %27) #11
  br label %370

370:                                              ; preds = %369
  %371 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPjSt6vectorIjSaIjEEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %25) #11
  br label %345

372:                                              ; preds = %365, %348
  call void @llvm.lifetime.end.p0(i64 8, ptr %24) #11
  br label %384

373:                                              ; preds = %347
  call void @llvm.lifetime.start.p0(i64 12, ptr %29) #11
  %374 = invoke { <2 x float>, float } @_ZN3glm9normalizeILi3EfLNS_9qualifierE0EEENS_3vecIXT_ET0_XT1_EEERKS4_(ptr noundef nonnull align 4 dereferenceable(12) %23)
          to label %375 unwind label %380

375:                                              ; preds = %373
  store { <2 x float>, float } %374, ptr %30, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %29, ptr align 8 %30, i64 12, i1 false)
  invoke void @_ZNSt6vectorIN3glm3vecILi3EfLNS0_9qualifierE0EEESaIS3_EE9push_backEOS3_(ptr noundef nonnull align 8 dereferenceable(24) %21, ptr noundef nonnull align 4 dereferenceable(12) %29)
          to label %376 unwind label %380

376:                                              ; preds = %375
  call void @llvm.lifetime.end.p0(i64 12, ptr %29) #11
  call void @llvm.lifetime.end.p0(i64 12, ptr %23) #11
  br label %377

377:                                              ; preds = %376
  %378 = load i32, ptr %22, align 4, !tbaa !9
  %379 = add i32 %378, 1
  store i32 %379, ptr %22, align 4, !tbaa !9
  br label %317, !llvm.loop !42

380:                                              ; preds = %375, %373
  %381 = landingpad { ptr, i32 }
          cleanup
  %382 = extractvalue { ptr, i32 } %381, 0
  store ptr %382, ptr %12, align 8
  %383 = extractvalue { ptr, i32 } %381, 1
  store i32 %383, ptr %13, align 4
  call void @llvm.lifetime.end.p0(i64 12, ptr %29) #11
  br label %384

384:                                              ; preds = %380, %372
  call void @llvm.lifetime.end.p0(i64 12, ptr %23) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr %22) #11
  br label %398

385:                                              ; preds = %327
  %386 = load i32, ptr %19, align 4, !tbaa !9
  %387 = zext i32 %386 to i64
  %388 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIS_IN3glm3vecILi3EfLNS0_9qualifierE0EEESaIS3_EESaIS5_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %17, i64 noundef %387) #11
  %389 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIN3glm3vecILi3EfLNS0_9qualifierE0EEESaIS3_EEaSERKS5_(ptr noundef nonnull align 8 dereferenceable(24) %388, ptr noundef nonnull align 8 dereferenceable(24) %21)
          to label %390 unwind label %394

390:                                              ; preds = %385
  call void @_ZNSt6vectorIN3glm3vecILi3EfLNS0_9qualifierE0EEESaIS3_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %21) #11
  call void @llvm.lifetime.end.p0(i64 24, ptr %21) #11
  call void @llvm.lifetime.end.p0(i64 12, ptr %20) #11
  br label %391

391:                                              ; preds = %390
  %392 = load i32, ptr %19, align 4, !tbaa !9
  %393 = add i32 %392, 1
  store i32 %393, ptr %19, align 4, !tbaa !9
  br label %303, !llvm.loop !43

394:                                              ; preds = %385
  %395 = landingpad { ptr, i32 }
          cleanup
  %396 = extractvalue { ptr, i32 } %395, 0
  store ptr %396, ptr %12, align 8
  %397 = extractvalue { ptr, i32 } %395, 1
  store i32 %397, ptr %13, align 4
  br label %398

398:                                              ; preds = %394, %384
  call void @_ZNSt6vectorIN3glm3vecILi3EfLNS0_9qualifierE0EEESaIS3_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %21) #11
  call void @llvm.lifetime.end.p0(i64 24, ptr %21) #11
  call void @llvm.lifetime.end.p0(i64 12, ptr %20) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr %19) #11
  br label %595

399:                                              ; preds = %307
  %400 = load i32, ptr %3, align 4, !tbaa !9
  %401 = mul i32 18, %400
  %402 = getelementptr inbounds %class.Mesh, ptr %55, i32 0, i32 3
  store i32 %401, ptr %402, align 8, !tbaa !29
  %403 = getelementptr inbounds %class.Mesh, ptr %55, i32 0, i32 3
  %404 = load i32, ptr %403, align 8, !tbaa !29
  %405 = zext i32 %404 to i64
  %406 = call { i64, i1 } @llvm.umul.with.overflow.i64(i64 %405, i64 4)
  %407 = extractvalue { i64, i1 } %406, 1
  %408 = extractvalue { i64, i1 } %406, 0
  %409 = select i1 %407, i64 -1, i64 %408
  %410 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %409) #12
          to label %411 unwind label %418

411:                                              ; preds = %399
  call void @llvm.memset.p0.i64(ptr align 4 %410, i8 0, i64 %409, i1 false)
  %412 = getelementptr inbounds %class.Mesh, ptr %55, i32 0, i32 4
  store ptr %410, ptr %412, align 8, !tbaa !30
  call void @llvm.lifetime.start.p0(i64 4, ptr %31) #11
  store i32 0, ptr %31, align 4, !tbaa !9
  br label %413

413:                                              ; preds = %561, %411
  %414 = load i32, ptr %31, align 4, !tbaa !9
  %415 = load i32, ptr %3, align 4, !tbaa !9
  %416 = icmp ult i32 %414, %415
  br i1 %416, label %422, label %417

417:                                              ; preds = %413
  store i32 25, ptr %5, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %31) #11
  br label %564

418:                                              ; preds = %564, %399
  %419 = landingpad { ptr, i32 }
          cleanup
  %420 = extractvalue { ptr, i32 } %419, 0
  store ptr %420, ptr %12, align 8
  %421 = extractvalue { ptr, i32 } %419, 1
  store i32 %421, ptr %13, align 4
  br label %595

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

423:                                              ; preds = %557, %422
  %424 = load i32, ptr %32, align 4, !tbaa !9
  %425 = icmp ult i32 %424, 3
  br i1 %425, label %427, label %426

426:                                              ; preds = %423
  store i32 28, ptr %5, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %32) #11
  br label %560

427:                                              ; preds = %423
  %428 = getelementptr inbounds %class.Mesh, ptr %55, i32 0, i32 0
  %429 = getelementptr inbounds %class.Object, ptr %428, i32 0, i32 2
  %430 = getelementptr inbounds %class.Mesh, ptr %55, i32 0, i32 0
  %431 = getelementptr inbounds %class.Object, ptr %430, i32 0, i32 4
  %432 = load i32, ptr %31, align 4, !tbaa !9
  %433 = zext i32 %432 to i64
  %434 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIS_IjSaIjEESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %431, i64 noundef %433) #11
  %435 = load i32, ptr %32, align 4, !tbaa !9
  %436 = zext i32 %435 to i64
  %437 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIjSaIjEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %434, i64 noundef %436) #11
  %438 = load i32, ptr %437, align 4, !tbaa !9
  %439 = zext i32 %438 to i64
  %440 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZNSt6vectorIN3glm3vecILi3EfLNS0_9qualifierE0EEESaIS3_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %429, i64 noundef %439) #11
  %441 = getelementptr inbounds %"struct.glm::vec", ptr %440, i32 0, i32 0
  %442 = load float, ptr %441, align 4, !tbaa !31
  %443 = getelementptr inbounds %class.Mesh, ptr %55, i32 0, i32 4
  %444 = load ptr, ptr %443, align 8, !tbaa !30
  %445 = load i32, ptr %31, align 4, !tbaa !9
  %446 = mul i32 18, %445
  %447 = load i32, ptr %32, align 4, !tbaa !9
  %448 = mul i32 6, %447
  %449 = add i32 %446, %448
  %450 = add i32 %449, 0
  %451 = zext i32 %450 to i64
  %452 = getelementptr inbounds float, ptr %444, i64 %451
  store float %442, ptr %452, align 4, !tbaa !32
  %453 = getelementptr inbounds %class.Mesh, ptr %55, i32 0, i32 0
  %454 = getelementptr inbounds %class.Object, ptr %453, i32 0, i32 2
  %455 = getelementptr inbounds %class.Mesh, ptr %55, i32 0, i32 0
  %456 = getelementptr inbounds %class.Object, ptr %455, i32 0, i32 4
  %457 = load i32, ptr %31, align 4, !tbaa !9
  %458 = zext i32 %457 to i64
  %459 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIS_IjSaIjEESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %456, i64 noundef %458) #11
  %460 = load i32, ptr %32, align 4, !tbaa !9
  %461 = zext i32 %460 to i64
  %462 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIjSaIjEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %459, i64 noundef %461) #11
  %463 = load i32, ptr %462, align 4, !tbaa !9
  %464 = zext i32 %463 to i64
  %465 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZNSt6vectorIN3glm3vecILi3EfLNS0_9qualifierE0EEESaIS3_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %454, i64 noundef %464) #11
  %466 = getelementptr inbounds %"struct.glm::vec", ptr %465, i32 0, i32 1
  %467 = load float, ptr %466, align 4, !tbaa !31
  %468 = getelementptr inbounds %class.Mesh, ptr %55, i32 0, i32 4
  %469 = load ptr, ptr %468, align 8, !tbaa !30
  %470 = load i32, ptr %31, align 4, !tbaa !9
  %471 = mul i32 18, %470
  %472 = load i32, ptr %32, align 4, !tbaa !9
  %473 = mul i32 6, %472
  %474 = add i32 %471, %473
  %475 = add i32 %474, 1
  %476 = zext i32 %475 to i64
  %477 = getelementptr inbounds float, ptr %469, i64 %476
  store float %467, ptr %477, align 4, !tbaa !32
  %478 = getelementptr inbounds %class.Mesh, ptr %55, i32 0, i32 0
  %479 = getelementptr inbounds %class.Object, ptr %478, i32 0, i32 2
  %480 = getelementptr inbounds %class.Mesh, ptr %55, i32 0, i32 0
  %481 = getelementptr inbounds %class.Object, ptr %480, i32 0, i32 4
  %482 = load i32, ptr %31, align 4, !tbaa !9
  %483 = zext i32 %482 to i64
  %484 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIS_IjSaIjEESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %481, i64 noundef %483) #11
  %485 = load i32, ptr %32, align 4, !tbaa !9
  %486 = zext i32 %485 to i64
  %487 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIjSaIjEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %484, i64 noundef %486) #11
  %488 = load i32, ptr %487, align 4, !tbaa !9
  %489 = zext i32 %488 to i64
  %490 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZNSt6vectorIN3glm3vecILi3EfLNS0_9qualifierE0EEESaIS3_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %479, i64 noundef %489) #11
  %491 = getelementptr inbounds %"struct.glm::vec", ptr %490, i32 0, i32 2
  %492 = load float, ptr %491, align 4, !tbaa !31
  %493 = getelementptr inbounds %class.Mesh, ptr %55, i32 0, i32 4
  %494 = load ptr, ptr %493, align 8, !tbaa !30
  %495 = load i32, ptr %31, align 4, !tbaa !9
  %496 = mul i32 18, %495
  %497 = load i32, ptr %32, align 4, !tbaa !9
  %498 = mul i32 6, %497
  %499 = add i32 %496, %498
  %500 = add i32 %499, 2
  %501 = zext i32 %500 to i64
  %502 = getelementptr inbounds float, ptr %494, i64 %501
  store float %492, ptr %502, align 4, !tbaa !32
  %503 = load i32, ptr %31, align 4, !tbaa !9
  %504 = zext i32 %503 to i64
  %505 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIS_IN3glm3vecILi3EfLNS0_9qualifierE0EEESaIS3_EESaIS5_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %17, i64 noundef %504) #11
  %506 = load i32, ptr %32, align 4, !tbaa !9
  %507 = zext i32 %506 to i64
  %508 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZNSt6vectorIN3glm3vecILi3EfLNS0_9qualifierE0EEESaIS3_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %505, i64 noundef %507) #11
  %509 = getelementptr inbounds %"struct.glm::vec", ptr %508, i32 0, i32 0
  %510 = load float, ptr %509, align 4, !tbaa !31
  %511 = getelementptr inbounds %class.Mesh, ptr %55, i32 0, i32 4
  %512 = load ptr, ptr %511, align 8, !tbaa !30
  %513 = load i32, ptr %31, align 4, !tbaa !9
  %514 = mul i32 18, %513
  %515 = load i32, ptr %32, align 4, !tbaa !9
  %516 = mul i32 6, %515
  %517 = add i32 %514, %516
  %518 = add i32 %517, 3
  %519 = zext i32 %518 to i64
  %520 = getelementptr inbounds float, ptr %512, i64 %519
  store float %510, ptr %520, align 4, !tbaa !32
  %521 = load i32, ptr %31, align 4, !tbaa !9
  %522 = zext i32 %521 to i64
  %523 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIS_IN3glm3vecILi3EfLNS0_9qualifierE0EEESaIS3_EESaIS5_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %17, i64 noundef %522) #11
  %524 = load i32, ptr %32, align 4, !tbaa !9
  %525 = zext i32 %524 to i64
  %526 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZNSt6vectorIN3glm3vecILi3EfLNS0_9qualifierE0EEESaIS3_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %523, i64 noundef %525) #11
  %527 = getelementptr inbounds %"struct.glm::vec", ptr %526, i32 0, i32 1
  %528 = load float, ptr %527, align 4, !tbaa !31
  %529 = getelementptr inbounds %class.Mesh, ptr %55, i32 0, i32 4
  %530 = load ptr, ptr %529, align 8, !tbaa !30
  %531 = load i32, ptr %31, align 4, !tbaa !9
  %532 = mul i32 18, %531
  %533 = load i32, ptr %32, align 4, !tbaa !9
  %534 = mul i32 6, %533
  %535 = add i32 %532, %534
  %536 = add i32 %535, 4
  %537 = zext i32 %536 to i64
  %538 = getelementptr inbounds float, ptr %530, i64 %537
  store float %528, ptr %538, align 4, !tbaa !32
  %539 = load i32, ptr %31, align 4, !tbaa !9
  %540 = zext i32 %539 to i64
  %541 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIS_IN3glm3vecILi3EfLNS0_9qualifierE0EEESaIS3_EESaIS5_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %17, i64 noundef %540) #11
  %542 = load i32, ptr %32, align 4, !tbaa !9
  %543 = zext i32 %542 to i64
  %544 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZNSt6vectorIN3glm3vecILi3EfLNS0_9qualifierE0EEESaIS3_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %541, i64 noundef %543) #11
  %545 = getelementptr inbounds %"struct.glm::vec", ptr %544, i32 0, i32 2
  %546 = load float, ptr %545, align 4, !tbaa !31
  %547 = getelementptr inbounds %class.Mesh, ptr %55, i32 0, i32 4
  %548 = load ptr, ptr %547, align 8, !tbaa !30
  %549 = load i32, ptr %31, align 4, !tbaa !9
  %550 = mul i32 18, %549
  %551 = load i32, ptr %32, align 4, !tbaa !9
  %552 = mul i32 6, %551
  %553 = add i32 %550, %552
  %554 = add i32 %553, 5
  %555 = zext i32 %554 to i64
  %556 = getelementptr inbounds float, ptr %548, i64 %555
  store float %546, ptr %556, align 4, !tbaa !32
  br label %557

557:                                              ; preds = %427
  %558 = load i32, ptr %32, align 4, !tbaa !9
  %559 = add i32 %558, 1
  store i32 %559, ptr %32, align 4, !tbaa !9
  br label %423, !llvm.loop !44

560:                                              ; preds = %426
  br label %561

561:                                              ; preds = %560
  %562 = load i32, ptr %31, align 4, !tbaa !9
  %563 = add i32 %562, 1
  store i32 %563, ptr %31, align 4, !tbaa !9
  br label %413, !llvm.loop !45

564:                                              ; preds = %417
  %565 = load i32, ptr %3, align 4, !tbaa !9
  %566 = mul i32 9, %565
  %567 = getelementptr inbounds %class.Mesh, ptr %55, i32 0, i32 5
  store i32 %566, ptr %567, align 8, !tbaa !36
  %568 = getelementptr inbounds %class.Mesh, ptr %55, i32 0, i32 5
  %569 = load i32, ptr %568, align 8, !tbaa !36
  %570 = zext i32 %569 to i64
  %571 = call { i64, i1 } @llvm.umul.with.overflow.i64(i64 %570, i64 4)
  %572 = extractvalue { i64, i1 } %571, 1
  %573 = extractvalue { i64, i1 } %571, 0
  %574 = select i1 %572, i64 -1, i64 %573
  %575 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %574) #12
          to label %576 unwind label %418

576:                                              ; preds = %564
  %577 = getelementptr inbounds %class.Mesh, ptr %55, i32 0, i32 6
  store ptr %575, ptr %577, align 8, !tbaa !37
  call void @llvm.lifetime.start.p0(i64 4, ptr %33) #11
  store i32 0, ptr %33, align 4, !tbaa !9
  br label %578

578:                                              ; preds = %591, %576
  %579 = load i32, ptr %33, align 4, !tbaa !9
  %580 = getelementptr inbounds %class.Mesh, ptr %55, i32 0, i32 5
  %581 = load i32, ptr %580, align 8, !tbaa !36
  %582 = icmp ult i32 %579, %581
  br i1 %582, label %584, label %583

583:                                              ; preds = %578
  store i32 31, ptr %5, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %33) #11
  br label %594

584:                                              ; preds = %578
  %585 = load i32, ptr %33, align 4, !tbaa !9
  %586 = getelementptr inbounds %class.Mesh, ptr %55, i32 0, i32 6
  %587 = load ptr, ptr %586, align 8, !tbaa !37
  %588 = load i32, ptr %33, align 4, !tbaa !9
  %589 = zext i32 %588 to i64
  %590 = getelementptr inbounds i32, ptr %587, i64 %589
  store i32 %585, ptr %590, align 4, !tbaa !9
  br label %591

591:                                              ; preds = %584
  %592 = load i32, ptr %33, align 4, !tbaa !9
  %593 = add i32 %592, 1
  store i32 %593, ptr %33, align 4, !tbaa !9
  br label %578, !llvm.loop !46

594:                                              ; preds = %583
  call void @_ZNSt6vectorIS_IN3glm3vecILi3EfLNS0_9qualifierE0EEESaIS3_EESaIS5_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %17) #11
  call void @llvm.lifetime.end.p0(i64 24, ptr %17) #11
  call void @_ZNSt13unordered_mapIjSt6vectorIjSaIjEESt4hashIjESt8equal_toIjESaISt4pairIKjS2_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(56) %8) #11
  call void @llvm.lifetime.end.p0(i64 56, ptr %8) #11
  br label %895

595:                                              ; preds = %418, %398
  call void @_ZNSt6vectorIS_IN3glm3vecILi3EfLNS0_9qualifierE0EEESaIS3_EESaIS5_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %17) #11
  br label %596

596:                                              ; preds = %595, %308
  call void @llvm.lifetime.end.p0(i64 24, ptr %17) #11
  br label %597

597:                                              ; preds = %596, %298
  call void @_ZNSt13unordered_mapIjSt6vectorIjSaIjEESt4hashIjESt8equal_toIjESaISt4pairIKjS2_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(56) %8) #11
  br label %598

598:                                              ; preds = %597, %261
  call void @llvm.lifetime.end.p0(i64 56, ptr %8) #11
  br label %897

599:                                              ; preds = %247
  %600 = getelementptr inbounds %class.Mesh, ptr %55, i32 0, i32 1
  %601 = load i32, ptr %600, align 8, !tbaa !11
  %602 = icmp eq i32 %601, 2
  br i1 %602, label %603, label %894

603:                                              ; preds = %599
  call void @llvm.lifetime.start.p0(i64 56, ptr %34) #11
  %604 = getelementptr inbounds %class.Mesh, ptr %55, i32 0, i32 0
  %605 = getelementptr inbounds %class.Object, ptr %604, i32 0, i32 2
  %606 = call noundef i64 @_ZNKSt6vectorIN3glm3vecILi3EfLNS0_9qualifierE0EEESaIS3_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %605) #11
  call void @llvm.lifetime.start.p0(i64 1, ptr %35) #11
  call void @llvm.lifetime.start.p0(i64 1, ptr %36) #11
  call void @llvm.lifetime.start.p0(i64 1, ptr %37) #11
  call void @_ZNSaISt4pairIKjSt6vectorIjSaIjEEEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %37) #11
  invoke void @_ZNSt13unordered_mapIjSt6vectorIjSaIjEESt4hashIjESt8equal_toIjESaISt4pairIKjS2_EEEC2EmRKS4_RKS6_RKSA_(ptr noundef nonnull align 8 dereferenceable(56) %34, i64 noundef %606, ptr noundef nonnull align 1 dereferenceable(1) %35, ptr noundef nonnull align 1 dereferenceable(1) %36, ptr noundef nonnull align 1 dereferenceable(1) %37)
          to label %607 unwind label %613

607:                                              ; preds = %603
  call void @_ZNSt15__new_allocatorISt4pairIKjSt6vectorIjSaIjEEEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %37) #11
  call void @llvm.lifetime.end.p0(i64 1, ptr %37) #11
  call void @llvm.lifetime.end.p0(i64 1, ptr %36) #11
  call void @llvm.lifetime.end.p0(i64 1, ptr %35) #11
  call void @llvm.lifetime.start.p0(i64 4, ptr %38) #11
  store i32 0, ptr %38, align 4, !tbaa !9
  br label %608

608:                                              ; preds = %647, %607
  %609 = load i32, ptr %38, align 4, !tbaa !9
  %610 = load i32, ptr %3, align 4, !tbaa !9
  %611 = icmp ult i32 %609, %610
  br i1 %611, label %617, label %612

612:                                              ; preds = %608
  store i32 34, ptr %5, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %38) #11
  br label %651

613:                                              ; preds = %603
  %614 = landingpad { ptr, i32 }
          cleanup
  %615 = extractvalue { ptr, i32 } %614, 0
  store ptr %615, ptr %12, align 8
  %616 = extractvalue { ptr, i32 } %614, 1
  store i32 %616, ptr %13, align 4
  call void @_ZNSt15__new_allocatorISt4pairIKjSt6vectorIjSaIjEEEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %37) #11
  call void @llvm.lifetime.end.p0(i64 1, ptr %37) #11
  call void @llvm.lifetime.end.p0(i64 1, ptr %36) #11
  call void @llvm.lifetime.end.p0(i64 1, ptr %35) #11
  br label %893

617:                                              ; preds = %608
  call void @llvm.lifetime.start.p0(i64 24, ptr %39) #11
  %618 = getelementptr inbounds %class.Mesh, ptr %55, i32 0, i32 0
  %619 = getelementptr inbounds %class.Object, ptr %618, i32 0, i32 4
  %620 = load i32, ptr %38, align 4, !tbaa !9
  %621 = zext i32 %620 to i64
  %622 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIS_IjSaIjEESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %619, i64 noundef %621) #11
  invoke void @_ZNSt6vectorIjSaIjEEC2ERKS1_(ptr noundef nonnull align 8 dereferenceable(24) %39, ptr noundef nonnull align 8 dereferenceable(24) %622)
          to label %623 unwind label %628

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

624:                                              ; preds = %639, %623
  %625 = load i32, ptr %40, align 4, !tbaa !9
  %626 = icmp ult i32 %625, 3
  br i1 %626, label %632, label %627

627:                                              ; preds = %624
  store i32 37, ptr %5, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %40) #11
  br label %646

628:                                              ; preds = %617
  %629 = landingpad { ptr, i32 }
          cleanup
  %630 = extractvalue { ptr, i32 } %629, 0
  store ptr %630, ptr %12, align 8
  %631 = extractvalue { ptr, i32 } %629, 1
  store i32 %631, ptr %13, align 4
  br label %650

632:                                              ; preds = %624
  %633 = load i32, ptr %40, align 4, !tbaa !9
  %634 = zext i32 %633 to i64
  %635 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIjSaIjEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %39, i64 noundef %634) #11
  %636 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt13unordered_mapIjSt6vectorIjSaIjEESt4hashIjESt8equal_toIjESaISt4pairIKjS2_EEEixERS8_(ptr noundef nonnull align 8 dereferenceable(56) %34, ptr noundef nonnull align 4 dereferenceable(4) %635)
          to label %637 unwind label %642

637:                                              ; preds = %632
  invoke void @_ZNSt6vectorIjSaIjEE9push_backERKj(ptr noundef nonnull align 8 dereferenceable(24) %636, ptr noundef nonnull align 4 dereferenceable(4) %38)
          to label %638 unwind label %642

638:                                              ; preds = %637
  br label %639

639:                                              ; preds = %638
  %640 = load i32, ptr %40, align 4, !tbaa !9
  %641 = add i32 %640, 1
  store i32 %641, ptr %40, align 4, !tbaa !9
  br label %624, !llvm.loop !47

642:                                              ; preds = %637, %632
  %643 = landingpad { ptr, i32 }
          cleanup
  %644 = extractvalue { ptr, i32 } %643, 0
  store ptr %644, ptr %12, align 8
  %645 = extractvalue { ptr, i32 } %643, 1
  store i32 %645, ptr %13, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %40) #11
  call void @_ZNSt6vectorIjSaIjEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %39) #11
  br label %650

646:                                              ; preds = %627
  call void @_ZNSt6vectorIjSaIjEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %39) #11
  call void @llvm.lifetime.end.p0(i64 24, ptr %39) #11
  br label %647

647:                                              ; preds = %646
  %648 = load i32, ptr %38, align 4, !tbaa !9
  %649 = add i32 %648, 1
  store i32 %649, ptr %38, align 4, !tbaa !9
  br label %608, !llvm.loop !48

650:                                              ; preds = %642, %628
  call void @llvm.lifetime.end.p0(i64 24, ptr %39) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr %38) #11
  br label %892

651:                                              ; preds = %612
  call void @llvm.lifetime.start.p0(i64 4, ptr %41) #11
  %652 = getelementptr inbounds %class.Mesh, ptr %55, i32 0, i32 0
  %653 = getelementptr inbounds %class.Object, ptr %652, i32 0, i32 2
  %654 = call noundef i64 @_ZNKSt6vectorIN3glm3vecILi3EfLNS0_9qualifierE0EEESaIS3_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %653) #11
  %655 = trunc i64 %654 to i32
  store i32 %655, ptr %41, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 24, ptr %42) #11
  %656 = load i32, ptr %41, align 4, !tbaa !9
  %657 = zext i32 %656 to i64
  call void @llvm.lifetime.start.p0(i64 1, ptr %43) #11
  call void @_ZNSaIN3glm3vecILi3EfLNS_9qualifierE0EEEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %43) #11
  invoke void @_ZNSt6vectorIN3glm3vecILi3EfLNS0_9qualifierE0EEESaIS3_EEC2EmRKS4_(ptr noundef nonnull align 8 dereferenceable(24) %42, i64 noundef %657, ptr noundef nonnull align 1 dereferenceable(1) %43)
          to label %658 unwind label %664

658:                                              ; preds = %651
  call void @_ZNSt15__new_allocatorIN3glm3vecILi3EfLNS0_9qualifierE0EEEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %43) #11
  call void @llvm.lifetime.end.p0(i64 1, ptr %43) #11
  call void @llvm.lifetime.start.p0(i64 4, ptr %44) #11
  store i32 0, ptr %44, align 4, !tbaa !9
  br label %659

659:                                              ; preds = %711, %658
  %660 = load i32, ptr %44, align 4, !tbaa !9
  %661 = load i32, ptr %41, align 4, !tbaa !9
  %662 = icmp ult i32 %660, %661
  br i1 %662, label %668, label %663

663:                                              ; preds = %659
  store i32 40, ptr %5, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %44) #11
  br label %719

664:                                              ; preds = %651
  %665 = landingpad { ptr, i32 }
          cleanup
  %666 = extractvalue { ptr, i32 } %665, 0
  store ptr %666, ptr %12, align 8
  %667 = extractvalue { ptr, i32 } %665, 1
  store i32 %667, ptr %13, align 4
  call void @_ZNSt15__new_allocatorIN3glm3vecILi3EfLNS0_9qualifierE0EEEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %43) #11
  call void @llvm.lifetime.end.p0(i64 1, ptr %43) #11
  br label %891

668:                                              ; preds = %659
  call void @llvm.lifetime.start.p0(i64 12, ptr %45) #11
  %669 = getelementptr inbounds %class.Mesh, ptr %55, i32 0, i32 0
  %670 = getelementptr inbounds %class.Object, ptr %669, i32 0, i32 2
  %671 = load i32, ptr %44, align 4, !tbaa !9
  %672 = zext i32 %671 to i64
  %673 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZNSt6vectorIN3glm3vecILi3EfLNS0_9qualifierE0EEESaIS3_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %670, i64 noundef %672) #11
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %45, ptr align 4 %673, i64 12, i1 false), !tbaa.struct !41
  call void @llvm.lifetime.start.p0(i64 12, ptr %46) #11
  call void @llvm.memset.p0.i64(ptr align 4 %46, i8 0, i64 12, i1 false)
  call void @llvm.lifetime.start.p0(i64 8, ptr %47) #11
  %674 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt13unordered_mapIjSt6vectorIjSaIjEESt4hashIjESt8equal_toIjESaISt4pairIKjS2_EEEixERS8_(ptr noundef nonnull align 8 dereferenceable(56) %34, ptr noundef nonnull align 4 dereferenceable(4) %44)
          to label %675 unwind label %685

675:                                              ; preds = %668
  store ptr %674, ptr %47, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %48) #11
  %676 = load ptr, ptr %47, align 8, !tbaa !5
  %677 = call ptr @_ZNSt6vectorIjSaIjEE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %676) #11
  %678 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %48, i32 0, i32 0
  store ptr %677, ptr %678, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %49) #11
  %679 = load ptr, ptr %47, align 8, !tbaa !5
  %680 = call ptr @_ZNSt6vectorIjSaIjEE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %679) #11
  %681 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %49, i32 0, i32 0
  store ptr %680, ptr %681, align 8
  br label %682

682:                                              ; preds = %698, %675
  %683 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPjSt6vectorIjSaIjEEEEbRKNS_17__normal_iteratorIT_T0_EESA_(ptr noundef nonnull align 8 dereferenceable(8) %48, ptr noundef nonnull align 8 dereferenceable(8) %49) #11
  br i1 %683, label %689, label %684

684:                                              ; preds = %682
  store i32 43, ptr %5, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %49) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %48) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %47) #11
  br label %705

685:                                              ; preds = %668
  %686 = landingpad { ptr, i32 }
          cleanup
  %687 = extractvalue { ptr, i32 } %686, 0
  store ptr %687, ptr %12, align 8
  %688 = extractvalue { ptr, i32 } %686, 1
  store i32 %688, ptr %13, align 4
  br label %704

689:                                              ; preds = %682
  call void @llvm.lifetime.start.p0(i64 4, ptr %50) #11
  %690 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPjSt6vectorIjSaIjEEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %48) #11
  %691 = load i32, ptr %690, align 4, !tbaa !9
  store i32 %691, ptr %50, align 4, !tbaa !9
  %692 = getelementptr inbounds %class.Mesh, ptr %55, i32 0, i32 2
  %693 = load i32, ptr %50, align 4, !tbaa !9
  %694 = zext i32 %693 to i64
  %695 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZNSt6vectorIN3glm3vecILi3EfLNS0_9qualifierE0EEESaIS3_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %692, i64 noundef %694) #11
  %696 = invoke noundef nonnull align 4 dereferenceable(12) ptr @_ZN3glm3vecILi3EfLNS_9qualifierE0EEpLIfEERS2_RKNS0_ILi3ET_LS1_0EEE(ptr noundef nonnull align 4 dereferenceable(12) %46, ptr noundef nonnull align 4 dereferenceable(12) %695)
          to label %697 unwind label %700

697:                                              ; preds = %689
  call void @llvm.lifetime.end.p0(i64 4, ptr %50) #11
  br label %698

698:                                              ; preds = %697
  %699 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPjSt6vectorIjSaIjEEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %48) #11
  br label %682

700:                                              ; preds = %689
  %701 = landingpad { ptr, i32 }
          cleanup
  %702 = extractvalue { ptr, i32 } %701, 0
  store ptr %702, ptr %12, align 8
  %703 = extractvalue { ptr, i32 } %701, 1
  store i32 %703, ptr %13, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %50) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %49) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %48) #11
  br label %704

704:                                              ; preds = %700, %685
  call void @llvm.lifetime.end.p0(i64 8, ptr %47) #11
  br label %718

705:                                              ; preds = %684
  call void @llvm.lifetime.start.p0(i64 12, ptr %51) #11
  %706 = invoke { <2 x float>, float } @_ZN3glm9normalizeILi3EfLNS_9qualifierE0EEENS_3vecIXT_ET0_XT1_EEERKS4_(ptr noundef nonnull align 4 dereferenceable(12) %46)
          to label %707 unwind label %714

707:                                              ; preds = %705
  store { <2 x float>, float } %706, ptr %52, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %51, ptr align 8 %52, i64 12, i1 false)
  %708 = load i32, ptr %44, align 4, !tbaa !9
  %709 = zext i32 %708 to i64
  %710 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZNSt6vectorIN3glm3vecILi3EfLNS0_9qualifierE0EEESaIS3_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %42, i64 noundef %709) #11
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %710, ptr align 4 %51, i64 12, i1 false), !tbaa.struct !41
  call void @llvm.lifetime.end.p0(i64 12, ptr %51) #11
  call void @llvm.lifetime.end.p0(i64 12, ptr %46) #11
  call void @llvm.lifetime.end.p0(i64 12, ptr %45) #11
  br label %711

711:                                              ; preds = %707
  %712 = load i32, ptr %44, align 4, !tbaa !9
  %713 = add i32 %712, 1
  store i32 %713, ptr %44, align 4, !tbaa !9
  br label %659, !llvm.loop !49

714:                                              ; preds = %705
  %715 = landingpad { ptr, i32 }
          cleanup
  %716 = extractvalue { ptr, i32 } %715, 0
  store ptr %716, ptr %12, align 8
  %717 = extractvalue { ptr, i32 } %715, 1
  store i32 %717, ptr %13, align 4
  call void @llvm.lifetime.end.p0(i64 12, ptr %51) #11
  br label %718

718:                                              ; preds = %714, %704
  call void @llvm.lifetime.end.p0(i64 12, ptr %46) #11
  call void @llvm.lifetime.end.p0(i64 12, ptr %45) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr %44) #11
  br label %890

719:                                              ; preds = %663
  %720 = load i32, ptr %41, align 4, !tbaa !9
  %721 = mul i32 6, %720
  %722 = getelementptr inbounds %class.Mesh, ptr %55, i32 0, i32 3
  store i32 %721, ptr %722, align 8, !tbaa !29
  %723 = getelementptr inbounds %class.Mesh, ptr %55, i32 0, i32 3
  %724 = load i32, ptr %723, align 8, !tbaa !29
  %725 = zext i32 %724 to i64
  %726 = call { i64, i1 } @llvm.umul.with.overflow.i64(i64 %725, i64 4)
  %727 = extractvalue { i64, i1 } %726, 1
  %728 = extractvalue { i64, i1 } %726, 0
  %729 = select i1 %727, i64 -1, i64 %728
  %730 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %729) #12
          to label %731 unwind label %738

731:                                              ; preds = %719
  call void @llvm.memset.p0.i64(ptr align 4 %730, i8 0, i64 %729, i1 false)
  %732 = getelementptr inbounds %class.Mesh, ptr %55, i32 0, i32 4
  store ptr %730, ptr %732, align 8, !tbaa !30
  call void @llvm.lifetime.start.p0(i64 4, ptr %53) #11
  store i32 0, ptr %53, align 4, !tbaa !9
  br label %733

733:                                              ; preds = %821, %731
  %734 = load i32, ptr %53, align 4, !tbaa !9
  %735 = load i32, ptr %41, align 4, !tbaa !9
  %736 = icmp ult i32 %734, %735
  br i1 %736, label %742, label %737

737:                                              ; preds = %733
  store i32 45, ptr %5, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %53) #11
  br label %824

738:                                              ; preds = %824, %719
  %739 = landingpad { ptr, i32 }
          cleanup
  %740 = extractvalue { ptr, i32 } %739, 0
  store ptr %740, ptr %12, align 8
  %741 = extractvalue { ptr, i32 } %739, 1
  store i32 %741, ptr %13, align 4
  br label %890

742:                                              ; preds = %733
  %743 = getelementptr inbounds %class.Mesh, ptr %55, i32 0, i32 0
  %744 = getelementptr inbounds %class.Object, ptr %743, i32 0, i32 2
  %745 = load i32, ptr %53, align 4, !tbaa !9
  %746 = zext i32 %745 to i64
  %747 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZNSt6vectorIN3glm3vecILi3EfLNS0_9qualifierE0EEESaIS3_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %744, i64 noundef %746) #11
  %748 = getelementptr inbounds %"struct.glm::vec", ptr %747, i32 0, i32 0
  %749 = load float, ptr %748, align 4, !tbaa !31
  %750 = getelementptr inbounds %class.Mesh, ptr %55, i32 0, i32 4
  %751 = load ptr, ptr %750, align 8, !tbaa !30
  %752 = load i32, ptr %53, align 4, !tbaa !9
  %753 = mul i32 6, %752
  %754 = add i32 %753, 0
  %755 = zext i32 %754 to i64
  %756 = getelementptr inbounds float, ptr %751, i64 %755
  store float %749, ptr %756, align 4, !tbaa !32
  %757 = getelementptr inbounds %class.Mesh, ptr %55, i32 0, i32 0
  %758 = getelementptr inbounds %class.Object, ptr %757, i32 0, i32 2
  %759 = load i32, ptr %53, align 4, !tbaa !9
  %760 = zext i32 %759 to i64
  %761 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZNSt6vectorIN3glm3vecILi3EfLNS0_9qualifierE0EEESaIS3_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %758, i64 noundef %760) #11
  %762 = getelementptr inbounds %"struct.glm::vec", ptr %761, i32 0, i32 1
  %763 = load float, ptr %762, align 4, !tbaa !31
  %764 = getelementptr inbounds %class.Mesh, ptr %55, i32 0, i32 4
  %765 = load ptr, ptr %764, align 8, !tbaa !30
  %766 = load i32, ptr %53, align 4, !tbaa !9
  %767 = mul i32 6, %766
  %768 = add i32 %767, 1
  %769 = zext i32 %768 to i64
  %770 = getelementptr inbounds float, ptr %765, i64 %769
  store float %763, ptr %770, align 4, !tbaa !32
  %771 = getelementptr inbounds %class.Mesh, ptr %55, i32 0, i32 0
  %772 = getelementptr inbounds %class.Object, ptr %771, i32 0, i32 2
  %773 = load i32, ptr %53, align 4, !tbaa !9
  %774 = zext i32 %773 to i64
  %775 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZNSt6vectorIN3glm3vecILi3EfLNS0_9qualifierE0EEESaIS3_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %772, i64 noundef %774) #11
  %776 = getelementptr inbounds %"struct.glm::vec", ptr %775, i32 0, i32 2
  %777 = load float, ptr %776, align 4, !tbaa !31
  %778 = getelementptr inbounds %class.Mesh, ptr %55, i32 0, i32 4
  %779 = load ptr, ptr %778, align 8, !tbaa !30
  %780 = load i32, ptr %53, align 4, !tbaa !9
  %781 = mul i32 6, %780
  %782 = add i32 %781, 2
  %783 = zext i32 %782 to i64
  %784 = getelementptr inbounds float, ptr %779, i64 %783
  store float %777, ptr %784, align 4, !tbaa !32
  %785 = load i32, ptr %53, align 4, !tbaa !9
  %786 = zext i32 %785 to i64
  %787 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZNSt6vectorIN3glm3vecILi3EfLNS0_9qualifierE0EEESaIS3_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %42, i64 noundef %786) #11
  %788 = getelementptr inbounds %"struct.glm::vec", ptr %787, i32 0, i32 0
  %789 = load float, ptr %788, align 4, !tbaa !31
  %790 = getelementptr inbounds %class.Mesh, ptr %55, i32 0, i32 4
  %791 = load ptr, ptr %790, align 8, !tbaa !30
  %792 = load i32, ptr %53, align 4, !tbaa !9
  %793 = mul i32 6, %792
  %794 = add i32 %793, 3
  %795 = zext i32 %794 to i64
  %796 = getelementptr inbounds float, ptr %791, i64 %795
  store float %789, ptr %796, align 4, !tbaa !32
  %797 = load i32, ptr %53, align 4, !tbaa !9
  %798 = zext i32 %797 to i64
  %799 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZNSt6vectorIN3glm3vecILi3EfLNS0_9qualifierE0EEESaIS3_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %42, i64 noundef %798) #11
  %800 = getelementptr inbounds %"struct.glm::vec", ptr %799, i32 0, i32 1
  %801 = load float, ptr %800, align 4, !tbaa !31
  %802 = getelementptr inbounds %class.Mesh, ptr %55, i32 0, i32 4
  %803 = load ptr, ptr %802, align 8, !tbaa !30
  %804 = load i32, ptr %53, align 4, !tbaa !9
  %805 = mul i32 6, %804
  %806 = add i32 %805, 4
  %807 = zext i32 %806 to i64
  %808 = getelementptr inbounds float, ptr %803, i64 %807
  store float %801, ptr %808, align 4, !tbaa !32
  %809 = load i32, ptr %53, align 4, !tbaa !9
  %810 = zext i32 %809 to i64
  %811 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZNSt6vectorIN3glm3vecILi3EfLNS0_9qualifierE0EEESaIS3_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %42, i64 noundef %810) #11
  %812 = getelementptr inbounds %"struct.glm::vec", ptr %811, i32 0, i32 2
  %813 = load float, ptr %812, align 4, !tbaa !31
  %814 = getelementptr inbounds %class.Mesh, ptr %55, i32 0, i32 4
  %815 = load ptr, ptr %814, align 8, !tbaa !30
  %816 = load i32, ptr %53, align 4, !tbaa !9
  %817 = mul i32 6, %816
  %818 = add i32 %817, 5
  %819 = zext i32 %818 to i64
  %820 = getelementptr inbounds float, ptr %815, i64 %819
  store float %813, ptr %820, align 4, !tbaa !32
  br label %821

821:                                              ; preds = %742
  %822 = load i32, ptr %53, align 4, !tbaa !9
  %823 = add i32 %822, 1
  store i32 %823, ptr %53, align 4, !tbaa !9
  br label %733, !llvm.loop !50

824:                                              ; preds = %737
  %825 = load i32, ptr %3, align 4, !tbaa !9
  %826 = mul i32 3, %825
  %827 = getelementptr inbounds %class.Mesh, ptr %55, i32 0, i32 5
  store i32 %826, ptr %827, align 8, !tbaa !36
  %828 = getelementptr inbounds %class.Mesh, ptr %55, i32 0, i32 5
  %829 = load i32, ptr %828, align 8, !tbaa !36
  %830 = zext i32 %829 to i64
  %831 = call { i64, i1 } @llvm.umul.with.overflow.i64(i64 %830, i64 4)
  %832 = extractvalue { i64, i1 } %831, 1
  %833 = extractvalue { i64, i1 } %831, 0
  %834 = select i1 %832, i64 -1, i64 %833
  %835 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %834) #12
          to label %836 unwind label %738

836:                                              ; preds = %824
  %837 = getelementptr inbounds %class.Mesh, ptr %55, i32 0, i32 6
  store ptr %835, ptr %837, align 8, !tbaa !37
  call void @llvm.lifetime.start.p0(i64 4, ptr %54) #11
  store i32 0, ptr %54, align 4, !tbaa !9
  br label %838

838:                                              ; preds = %886, %836
  %839 = load i32, ptr %54, align 4, !tbaa !9
  %840 = load i32, ptr %3, align 4, !tbaa !9
  %841 = icmp ult i32 %839, %840
  br i1 %841, label %843, label %842

842:                                              ; preds = %838
  store i32 48, ptr %5, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %54) #11
  br label %889

843:                                              ; preds = %838
  %844 = getelementptr inbounds %class.Mesh, ptr %55, i32 0, i32 0
  %845 = getelementptr inbounds %class.Object, ptr %844, i32 0, i32 4
  %846 = load i32, ptr %54, align 4, !tbaa !9
  %847 = zext i32 %846 to i64
  %848 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIS_IjSaIjEESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %845, i64 noundef %847) #11
  %849 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIjSaIjEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %848, i64 noundef 0) #11
  %850 = load i32, ptr %849, align 4, !tbaa !9
  %851 = getelementptr inbounds %class.Mesh, ptr %55, i32 0, i32 6
  %852 = load ptr, ptr %851, align 8, !tbaa !37
  %853 = load i32, ptr %54, align 4, !tbaa !9
  %854 = mul i32 3, %853
  %855 = add i32 %854, 0
  %856 = zext i32 %855 to i64
  %857 = getelementptr inbounds i32, ptr %852, i64 %856
  store i32 %850, ptr %857, align 4, !tbaa !9
  %858 = getelementptr inbounds %class.Mesh, ptr %55, i32 0, i32 0
  %859 = getelementptr inbounds %class.Object, ptr %858, i32 0, i32 4
  %860 = load i32, ptr %54, align 4, !tbaa !9
  %861 = zext i32 %860 to i64
  %862 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIS_IjSaIjEESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %859, i64 noundef %861) #11
  %863 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIjSaIjEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %862, i64 noundef 1) #11
  %864 = load i32, ptr %863, align 4, !tbaa !9
  %865 = getelementptr inbounds %class.Mesh, ptr %55, i32 0, i32 6
  %866 = load ptr, ptr %865, align 8, !tbaa !37
  %867 = load i32, ptr %54, align 4, !tbaa !9
  %868 = mul i32 3, %867
  %869 = add i32 %868, 1
  %870 = zext i32 %869 to i64
  %871 = getelementptr inbounds i32, ptr %866, i64 %870
  store i32 %864, ptr %871, align 4, !tbaa !9
  %872 = getelementptr inbounds %class.Mesh, ptr %55, i32 0, i32 0
  %873 = getelementptr inbounds %class.Object, ptr %872, i32 0, i32 4
  %874 = load i32, ptr %54, align 4, !tbaa !9
  %875 = zext i32 %874 to i64
  %876 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIS_IjSaIjEESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %873, i64 noundef %875) #11
  %877 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIjSaIjEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %876, i64 noundef 2) #11
  %878 = load i32, ptr %877, align 4, !tbaa !9
  %879 = getelementptr inbounds %class.Mesh, ptr %55, i32 0, i32 6
  %880 = load ptr, ptr %879, align 8, !tbaa !37
  %881 = load i32, ptr %54, align 4, !tbaa !9
  %882 = mul i32 3, %881
  %883 = add i32 %882, 2
  %884 = zext i32 %883 to i64
  %885 = getelementptr inbounds i32, ptr %880, i64 %884
  store i32 %878, ptr %885, align 4, !tbaa !9
  br label %886

886:                                              ; preds = %843
  %887 = load i32, ptr %54, align 4, !tbaa !9
  %888 = add i32 %887, 1
  store i32 %888, ptr %54, align 4, !tbaa !9
  br label %838, !llvm.loop !51

889:                                              ; preds = %842
  call void @_ZNSt6vectorIN3glm3vecILi3EfLNS0_9qualifierE0EEESaIS3_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %42) #11
  call void @llvm.lifetime.end.p0(i64 24, ptr %42) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr %41) #11
  call void @_ZNSt13unordered_mapIjSt6vectorIjSaIjEESt4hashIjESt8equal_toIjESaISt4pairIKjS2_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(56) %34) #11
  call void @llvm.lifetime.end.p0(i64 56, ptr %34) #11
  br label %894

890:                                              ; preds = %738, %718
  call void @_ZNSt6vectorIN3glm3vecILi3EfLNS0_9qualifierE0EEESaIS3_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %42) #11
  br label %891

891:                                              ; preds = %890, %664
  call void @llvm.lifetime.end.p0(i64 24, ptr %42) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr %41) #11
  br label %892

892:                                              ; preds = %891, %650
  call void @_ZNSt13unordered_mapIjSt6vectorIjSaIjEESt4hashIjESt8equal_toIjESaISt4pairIKjS2_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(56) %34) #11
  br label %893

893:                                              ; preds = %892, %613
  call void @llvm.lifetime.end.p0(i64 56, ptr %34) #11
  br label %897

894:                                              ; preds = %889, %599
  br label %895

895:                                              ; preds = %894, %594
  br label %896

896:                                              ; preds = %895, %246
  call void @llvm.lifetime.end.p0(i64 4, ptr %3) #11
  ret void

897:                                              ; preds = %893, %598
  call void @llvm.lifetime.end.p0(i64 4, ptr %3) #11
  br label %898

898:                                              ; preds = %897
  %899 = load ptr, ptr %12, align 8
  %900 = load i32, ptr %13, align 4
  %901 = insertvalue { ptr, i32 } poison, ptr %899, 0
  %902 = insertvalue { ptr, i32 } %901, i32 %900, 1
  resume { ptr, i32 } %902
}

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZN9__gnu_cxxneIPjSt6vectorIjSaIjEEEEbRKNS_17__normal_iteratorIT_T0_EESA_(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8)) #9

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

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

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

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

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

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

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

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

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

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

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

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

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

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

!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, !10, i64 152}
!12 = !{!"_ZTS4Mesh", !13, i64 0, !10, i64 152, !15, i64 160, !10, i64 184, !6, i64 192, !10, i64 200, !6, i64 208}
!13 = !{!"_ZTS6Object", !14, i64 0, !14, i64 12, !15, i64 24, !19, i64 48, !19, i64 72, !23, i64 96}
!14 = !{!"_ZTSN3glm3vecILi3EfLNS_9qualifierE0EEE", !7, i64 0, !7, i64 4, !7, i64 8}
!15 = !{!"_ZTSSt6vectorIN3glm3vecILi3EfLNS0_9qualifierE0EEESaIS3_EE", !16, i64 0}
!16 = !{!"_ZTSSt12_Vector_baseIN3glm3vecILi3EfLNS0_9qualifierE0EEESaIS3_EE", !17, i64 0}
!17 = !{!"_ZTSNSt12_Vector_baseIN3glm3vecILi3EfLNS0_9qualifierE0EEESaIS3_EE12_Vector_implE", !18, i64 0}
!18 = !{!"_ZTSNSt12_Vector_baseIN3glm3vecILi3EfLNS0_9qualifierE0EEESaIS3_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!19 = !{!"_ZTSSt6vectorIS_IjSaIjEESaIS1_EE", !20, i64 0}
!20 = !{!"_ZTSSt12_Vector_baseISt6vectorIjSaIjEESaIS2_EE", !21, i64 0}
!21 = !{!"_ZTSNSt12_Vector_baseISt6vectorIjSaIjEESaIS2_EE12_Vector_implE", !22, i64 0}
!22 = !{!"_ZTSNSt12_Vector_baseISt6vectorIjSaIjEESaIS2_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!23 = !{!"_ZTSSt13unordered_mapIjjSt4hashIjESt8equal_toIjESaISt4pairIKjjEEE", !24, i64 0}
!24 = !{!"_ZTSSt10_HashtableIjSt4pairIKjjESaIS2_ENSt8__detail10_Select1stESt8equal_toIjESt4hashIjENS4_18_Mod_range_hashingENS4_20_Default_ranged_hashENS4_20_Prime_rehash_policyENS4_17_Hashtable_traitsILb0ELb0ELb1EEEE", !6, i64 0, !25, i64 8, !26, i64 16, !25, i64 24, !27, i64 32, !6, i64 48}
!25 = !{!"long", !7, i64 0}
!26 = !{!"_ZTSNSt8__detail15_Hash_node_baseE", !6, i64 0}
!27 = !{!"_ZTSNSt8__detail20_Prime_rehash_policyE", !28, i64 0, !25, i64 8}
!28 = !{!"float", !7, i64 0}
!29 = !{!12, !10, i64 184}
!30 = !{!12, !6, i64 192}
!31 = !{!7, !7, i64 0}
!32 = !{!28, !28, i64 0}
!33 = distinct !{!33, !34}
!34 = !{!"llvm.loop.mustprogress"}
!35 = distinct !{!35, !34}
!36 = !{!12, !10, i64 200}
!37 = !{!12, !6, i64 208}
!38 = distinct !{!38, !34}
!39 = distinct !{!39, !34}
!40 = distinct !{!40, !34}
!41 = !{i64 0, i64 4, !31, i64 4, i64 4, !31, i64 8, i64 4, !31}
!42 = distinct !{!42, !34}
!43 = distinct !{!43, !34}
!44 = distinct !{!44, !34}
!45 = distinct !{!45, !34}
!46 = distinct !{!46, !34}
!47 = distinct !{!47, !34}
!48 = distinct !{!48, !34}
!49 = distinct !{!49, !34}
!50 = distinct !{!50, !34}
!51 = distinct !{!51, !34}


; 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.std::unordered_map.17" = type { %"class.std::_Hashtable.18" }
%"class.std::_Hashtable.18" = type { ptr, i64, %"struct.std::__detail::_Hash_node_base", i64, %"struct.std::__detail::_Prime_rehash_policy", ptr }
%"struct.std::__detail::_Hash_node_base" = type { ptr }
%"struct.std::__detail::_Prime_rehash_policy" = type { float, i64 }
%"struct.std::hash" = type { i8 }
%"struct.std::equal_to" = type { i8 }
%"class.std::allocator.31" = type { i8 }
%"class.std::vector.12" = type { %"struct.std::_Vector_base.13" }
%"struct.std::_Vector_base.13" = type { %"struct.std::_Vector_base<unsigned int, std::allocator<unsigned int>>::_Vector_impl" }
%"struct.std::_Vector_base<unsigned int, std::allocator<unsigned int>>::_Vector_impl" = type { %"struct.std::_Vector_base<unsigned int, std::allocator<unsigned int>>::_Vector_impl_data" }
%"struct.std::_Vector_base<unsigned int, std::allocator<unsigned int>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.34" = type { %"struct.std::_Vector_base.35" }
%"struct.std::_Vector_base.35" = type { %"struct.std::_Vector_base<std::vector<glm::vec<3, float>>, std::allocator<std::vector<glm::vec<3, float>>>>::_Vector_impl" }
%"struct.std::_Vector_base<std::vector<glm::vec<3, float>>, std::allocator<std::vector<glm::vec<3, float>>>>::_Vector_impl" = type { %"struct.std::_Vector_base<std::vector<glm::vec<3, float>>, std::allocator<std::vector<glm::vec<3, float>>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<std::vector<glm::vec<3, float>>, std::allocator<std::vector<glm::vec<3, float>>>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::allocator.36" = type { i8 }
%"struct.glm::vec" = type { %union.anon, %union.anon.0, %union.anon.1 }
%union.anon = type { float }
%union.anon.0 = type { float }
%union.anon.1 = type { float }
%"class.std::vector" = type { %"struct.std::_Vector_base" }
%"struct.std::_Vector_base" = type { %"struct.std::_Vector_base<glm::vec<3, float>, std::allocator<glm::vec<3, float>>>::_Vector_impl" }
%"struct.std::_Vector_base<glm::vec<3, float>, std::allocator<glm::vec<3, float>>>::_Vector_impl" = type { %"struct.std::_Vector_base<glm::vec<3, float>, std::allocator<glm::vec<3, float>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<glm::vec<3, float>, std::allocator<glm::vec<3, float>>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.__gnu_cxx::__normal_iterator" = type { ptr }
%"class.std::allocator" = type { i8 }

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

declare i32 @__gxx_personality_v0(...)

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN4Mesh20BuildVerticesIndicesEv(ptr noundef nonnull align 8 dereferenceable(216) %0) local_unnamed_addr #1 align 2 personality ptr @__gxx_personality_v0 {
  %2 = alloca %"class.std::unordered_map.17", align 8
  %3 = alloca %"struct.std::hash", align 1
  %4 = alloca %"struct.std::equal_to", align 1
  %5 = alloca %"class.std::allocator.31", align 1
  %6 = alloca i32, align 4
  %7 = alloca %"class.std::vector.12", align 8
  %8 = alloca %"class.std::vector.34", align 8
  %9 = alloca %"class.std::allocator.36", align 1
  %10 = alloca %"struct.glm::vec", align 4
  %11 = alloca %"class.std::vector", align 8
  %12 = alloca %"struct.glm::vec", align 4
  %13 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %14 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %15 = alloca %"struct.glm::vec", align 4
  %16 = alloca %"struct.glm::vec", align 8
  %17 = alloca %"class.std::unordered_map.17", align 8
  %18 = alloca %"struct.std::hash", align 1
  %19 = alloca %"struct.std::equal_to", align 1
  %20 = alloca %"class.std::allocator.31", align 1
  %21 = alloca i32, align 4
  %22 = alloca %"class.std::vector.12", align 8
  %23 = alloca %"class.std::vector", align 8
  %24 = alloca %"class.std::allocator", align 1
  %25 = alloca i32, align 4
  %26 = alloca %"struct.glm::vec", align 4
  %27 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %28 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %29 = getelementptr inbounds i8, ptr %0, i64 72
  %30 = tail call noundef i64 @_ZNKSt6vectorIS_IjSaIjEESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %29) #11
  %31 = trunc i64 %30 to i32
  %32 = getelementptr inbounds i8, ptr %0, i64 152
  %33 = load i32, ptr %32, align 8, !tbaa !5
  switch i32 %33, label %.loopexit [
    i32 0, label %34
    i32 1, label %211
    i32 2, label %478
  ]

34:                                               ; preds = %1
  %35 = mul i32 %31, 18
  %36 = getelementptr inbounds i8, ptr %0, i64 184
  store i32 %35, ptr %36, align 8, !tbaa !27
  %37 = zext i32 %35 to i64
  %38 = shl nuw nsw i64 %37, 2
  %39 = tail call noalias noundef nonnull ptr @_Znam(i64 noundef %38) #12
  tail call void @llvm.memset.p0.i64(ptr nonnull align 4 %39, i8 0, i64 %38, i1 false)
  %40 = getelementptr inbounds i8, ptr %0, i64 192
  store ptr %39, ptr %40, align 8, !tbaa !28
  %.not237 = icmp eq i32 %31, 0
  br i1 %.not237, label %._crit_edge225, label %.preheader.lr.ph

.preheader.lr.ph:                                 ; preds = %34
  %41 = getelementptr inbounds i8, ptr %0, i64 24
  %42 = getelementptr inbounds i8, ptr %0, i64 160
  %wide.trip.count276 = and i64 %30, 4294967295
  br label %.preheader

.preheader:                                       ; preds = %.preheader.lr.ph, %.preheader
  %indvars.iv273 = phi i64 [ 0, %.preheader.lr.ph ], [ %indvars.iv.next274, %.preheader ]
  %43 = trunc nuw i64 %indvars.iv273 to i32
  %44 = mul i32 %43, 18
  %45 = tail call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIS_IjSaIjEESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %29, i64 noundef %indvars.iv273) #11
  %46 = tail call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIjSaIjEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %45, i64 noundef 0) #11
  %47 = load i32, ptr %46, align 4, !tbaa !29
  %48 = zext i32 %47 to i64
  %49 = tail call noundef nonnull align 4 dereferenceable(12) ptr @_ZNSt6vectorIN3glm3vecILi3EfLNS0_9qualifierE0EEESaIS3_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %41, i64 noundef %48) #11
  %50 = load float, ptr %49, align 4, !tbaa !30
  %51 = load ptr, ptr %40, align 8, !tbaa !28
  %52 = zext i32 %44 to i64
  %53 = getelementptr inbounds float, ptr %51, i64 %52
  store float %50, ptr %53, align 4, !tbaa !31
  %54 = tail call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIS_IjSaIjEESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %29, i64 noundef %indvars.iv273) #11
  %55 = tail call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIjSaIjEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %54, i64 noundef 0) #11
  %56 = load i32, ptr %55, align 4, !tbaa !29
  %57 = zext i32 %56 to i64
  %58 = tail call noundef nonnull align 4 dereferenceable(12) ptr @_ZNSt6vectorIN3glm3vecILi3EfLNS0_9qualifierE0EEESaIS3_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %41, i64 noundef %57) #11
  %59 = getelementptr inbounds i8, ptr %58, i64 4
  %60 = load float, ptr %59, align 4, !tbaa !30
  %61 = load ptr, ptr %40, align 8, !tbaa !28
  %62 = or disjoint i32 %44, 1
  %63 = zext i32 %62 to i64
  %64 = getelementptr inbounds float, ptr %61, i64 %63
  store float %60, ptr %64, align 4, !tbaa !31
  %65 = tail call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIS_IjSaIjEESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %29, i64 noundef %indvars.iv273) #11
  %66 = tail call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIjSaIjEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %65, i64 noundef 0) #11
  %67 = load i32, ptr %66, align 4, !tbaa !29
  %68 = zext i32 %67 to i64
  %69 = tail call noundef nonnull align 4 dereferenceable(12) ptr @_ZNSt6vectorIN3glm3vecILi3EfLNS0_9qualifierE0EEESaIS3_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %41, i64 noundef %68) #11
  %70 = getelementptr inbounds i8, ptr %69, i64 8
  %71 = load float, ptr %70, align 4, !tbaa !30
  %72 = load ptr, ptr %40, align 8, !tbaa !28
  %73 = add i32 %44, 2
  %74 = zext i32 %73 to i64
  %75 = getelementptr inbounds float, ptr %72, i64 %74
  store float %71, ptr %75, align 4, !tbaa !31
  %76 = tail call noundef nonnull align 4 dereferenceable(12) ptr @_ZNSt6vectorIN3glm3vecILi3EfLNS0_9qualifierE0EEESaIS3_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %42, i64 noundef %indvars.iv273) #11
  %77 = load float, ptr %76, align 4, !tbaa !30
  %78 = load ptr, ptr %40, align 8, !tbaa !28
  %79 = add i32 %44, 3
  %80 = zext i32 %79 to i64
  %81 = getelementptr inbounds float, ptr %78, i64 %80
  store float %77, ptr %81, align 4, !tbaa !31
  %82 = tail call noundef nonnull align 4 dereferenceable(12) ptr @_ZNSt6vectorIN3glm3vecILi3EfLNS0_9qualifierE0EEESaIS3_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %42, i64 noundef %indvars.iv273) #11
  %83 = getelementptr inbounds i8, ptr %82, i64 4
  %84 = load float, ptr %83, align 4, !tbaa !30
  %85 = load ptr, ptr %40, align 8, !tbaa !28
  %86 = add i32 %44, 4
  %87 = zext i32 %86 to i64
  %88 = getelementptr inbounds float, ptr %85, i64 %87
  store float %84, ptr %88, align 4, !tbaa !31
  %89 = tail call noundef nonnull align 4 dereferenceable(12) ptr @_ZNSt6vectorIN3glm3vecILi3EfLNS0_9qualifierE0EEESaIS3_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %42, i64 noundef %indvars.iv273) #11
  %90 = getelementptr inbounds i8, ptr %89, i64 8
  %91 = load float, ptr %90, align 4, !tbaa !30
  %92 = load ptr, ptr %40, align 8, !tbaa !28
  %93 = add i32 %44, 5
  %94 = zext i32 %93 to i64
  %95 = getelementptr inbounds float, ptr %92, i64 %94
  store float %91, ptr %95, align 4, !tbaa !31
  %96 = tail call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIS_IjSaIjEESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %29, i64 noundef %indvars.iv273) #11
  %97 = tail call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIjSaIjEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %96, i64 noundef 1) #11
  %98 = load i32, ptr %97, align 4, !tbaa !29
  %99 = zext i32 %98 to i64
  %100 = tail call noundef nonnull align 4 dereferenceable(12) ptr @_ZNSt6vectorIN3glm3vecILi3EfLNS0_9qualifierE0EEESaIS3_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %41, i64 noundef %99) #11
  %101 = load float, ptr %100, align 4, !tbaa !30
  %102 = load ptr, ptr %40, align 8, !tbaa !28
  %103 = add i32 %44, 6
  %104 = zext i32 %103 to i64
  %105 = getelementptr inbounds float, ptr %102, i64 %104
  store float %101, ptr %105, align 4, !tbaa !31
  %106 = tail call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIS_IjSaIjEESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %29, i64 noundef %indvars.iv273) #11
  %107 = tail call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIjSaIjEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %106, i64 noundef 1) #11
  %108 = load i32, ptr %107, align 4, !tbaa !29
  %109 = zext i32 %108 to i64
  %110 = tail call noundef nonnull align 4 dereferenceable(12) ptr @_ZNSt6vectorIN3glm3vecILi3EfLNS0_9qualifierE0EEESaIS3_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %41, i64 noundef %109) #11
  %111 = getelementptr inbounds i8, ptr %110, i64 4
  %112 = load float, ptr %111, align 4, !tbaa !30
  %113 = load ptr, ptr %40, align 8, !tbaa !28
  %114 = or disjoint i32 %103, 1
  %115 = zext i32 %114 to i64
  %116 = getelementptr inbounds float, ptr %113, i64 %115
  store float %112, ptr %116, align 4, !tbaa !31
  %117 = tail call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIS_IjSaIjEESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %29, i64 noundef %indvars.iv273) #11
  %118 = tail call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIjSaIjEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %117, i64 noundef 1) #11
  %119 = load i32, ptr %118, align 4, !tbaa !29
  %120 = zext i32 %119 to i64
  %121 = tail call noundef nonnull align 4 dereferenceable(12) ptr @_ZNSt6vectorIN3glm3vecILi3EfLNS0_9qualifierE0EEESaIS3_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %41, i64 noundef %120) #11
  %122 = getelementptr inbounds i8, ptr %121, i64 8
  %123 = load float, ptr %122, align 4, !tbaa !30
  %124 = load ptr, ptr %40, align 8, !tbaa !28
  %125 = add i32 %44, 8
  %126 = zext i32 %125 to i64
  %127 = getelementptr inbounds float, ptr %124, i64 %126
  store float %123, ptr %127, align 4, !tbaa !31
  %128 = tail call noundef nonnull align 4 dereferenceable(12) ptr @_ZNSt6vectorIN3glm3vecILi3EfLNS0_9qualifierE0EEESaIS3_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %42, i64 noundef %indvars.iv273) #11
  %129 = load float, ptr %128, align 4, !tbaa !30
  %130 = load ptr, ptr %40, align 8, !tbaa !28
  %131 = add i32 %44, 9
  %132 = zext i32 %131 to i64
  %133 = getelementptr inbounds float, ptr %130, i64 %132
  store float %129, ptr %133, align 4, !tbaa !31
  %134 = tail call noundef nonnull align 4 dereferenceable(12) ptr @_ZNSt6vectorIN3glm3vecILi3EfLNS0_9qualifierE0EEESaIS3_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %42, i64 noundef %indvars.iv273) #11
  %135 = getelementptr inbounds i8, ptr %134, i64 4
  %136 = load float, ptr %135, align 4, !tbaa !30
  %137 = load ptr, ptr %40, align 8, !tbaa !28
  %138 = add i32 %44, 10
  %139 = zext i32 %138 to i64
  %140 = getelementptr inbounds float, ptr %137, i64 %139
  store float %136, ptr %140, align 4, !tbaa !31
  %141 = tail call noundef nonnull align 4 dereferenceable(12) ptr @_ZNSt6vectorIN3glm3vecILi3EfLNS0_9qualifierE0EEESaIS3_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %42, i64 noundef %indvars.iv273) #11
  %142 = getelementptr inbounds i8, ptr %141, i64 8
  %143 = load float, ptr %142, align 4, !tbaa !30
  %144 = load ptr, ptr %40, align 8, !tbaa !28
  %145 = add i32 %44, 11
  %146 = zext i32 %145 to i64
  %147 = getelementptr inbounds float, ptr %144, i64 %146
  store float %143, ptr %147, align 4, !tbaa !31
  %148 = tail call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIS_IjSaIjEESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %29, i64 noundef %indvars.iv273) #11
  %149 = tail call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIjSaIjEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %148, i64 noundef 2) #11
  %150 = load i32, ptr %149, align 4, !tbaa !29
  %151 = zext i32 %150 to i64
  %152 = tail call noundef nonnull align 4 dereferenceable(12) ptr @_ZNSt6vectorIN3glm3vecILi3EfLNS0_9qualifierE0EEESaIS3_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %41, i64 noundef %151) #11
  %153 = load float, ptr %152, align 4, !tbaa !30
  %154 = load ptr, ptr %40, align 8, !tbaa !28
  %155 = add i32 %44, 12
  %156 = zext i32 %155 to i64
  %157 = getelementptr inbounds float, ptr %154, i64 %156
  store float %153, ptr %157, align 4, !tbaa !31
  %158 = tail call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIS_IjSaIjEESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %29, i64 noundef %indvars.iv273) #11
  %159 = tail call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIjSaIjEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %158, i64 noundef 2) #11
  %160 = load i32, ptr %159, align 4, !tbaa !29
  %161 = zext i32 %160 to i64
  %162 = tail call noundef nonnull align 4 dereferenceable(12) ptr @_ZNSt6vectorIN3glm3vecILi3EfLNS0_9qualifierE0EEESaIS3_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %41, i64 noundef %161) #11
  %163 = getelementptr inbounds i8, ptr %162, i64 4
  %164 = load float, ptr %163, align 4, !tbaa !30
  %165 = load ptr, ptr %40, align 8, !tbaa !28
  %166 = or disjoint i32 %155, 1
  %167 = zext i32 %166 to i64
  %168 = getelementptr inbounds float, ptr %165, i64 %167
  store float %164, ptr %168, align 4, !tbaa !31
  %169 = tail call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIS_IjSaIjEESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %29, i64 noundef %indvars.iv273) #11
  %170 = tail call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIjSaIjEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %169, i64 noundef 2) #11
  %171 = load i32, ptr %170, align 4, !tbaa !29
  %172 = zext i32 %171 to i64
  %173 = tail call noundef nonnull align 4 dereferenceable(12) ptr @_ZNSt6vectorIN3glm3vecILi3EfLNS0_9qualifierE0EEESaIS3_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %41, i64 noundef %172) #11
  %174 = getelementptr inbounds i8, ptr %173, i64 8
  %175 = load float, ptr %174, align 4, !tbaa !30
  %176 = load ptr, ptr %40, align 8, !tbaa !28
  %177 = add i32 %44, 14
  %178 = zext i32 %177 to i64
  %179 = getelementptr inbounds float, ptr %176, i64 %178
  store float %175, ptr %179, align 4, !tbaa !31
  %180 = tail call noundef nonnull align 4 dereferenceable(12) ptr @_ZNSt6vectorIN3glm3vecILi3EfLNS0_9qualifierE0EEESaIS3_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %42, i64 noundef %indvars.iv273) #11
  %181 = load float, ptr %180, align 4, !tbaa !30
  %182 = load ptr, ptr %40, align 8, !tbaa !28
  %183 = add i32 %44, 15
  %184 = zext i32 %183 to i64
  %185 = getelementptr inbounds float, ptr %182, i64 %184
  store float %181, ptr %185, align 4, !tbaa !31
  %186 = tail call noundef nonnull align 4 dereferenceable(12) ptr @_ZNSt6vectorIN3glm3vecILi3EfLNS0_9qualifierE0EEESaIS3_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %42, i64 noundef %indvars.iv273) #11
  %187 = getelementptr inbounds i8, ptr %186, i64 4
  %188 = load float, ptr %187, align 4, !tbaa !30
  %189 = load ptr, ptr %40, align 8, !tbaa !28
  %190 = add i32 %44, 16
  %191 = zext i32 %190 to i64
  %192 = getelementptr inbounds float, ptr %189, i64 %191
  store float %188, ptr %192, align 4, !tbaa !31
  %193 = tail call noundef nonnull align 4 dereferenceable(12) ptr @_ZNSt6vectorIN3glm3vecILi3EfLNS0_9qualifierE0EEESaIS3_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %42, i64 noundef %indvars.iv273) #11
  %194 = getelementptr inbounds i8, ptr %193, i64 8
  %195 = load float, ptr %194, align 4, !tbaa !30
  %196 = load ptr, ptr %40, align 8, !tbaa !28
  %197 = add i32 %44, 17
  %198 = zext i32 %197 to i64
  %199 = getelementptr inbounds float, ptr %196, i64 %198
  store float %195, ptr %199, align 4, !tbaa !31
  %indvars.iv.next274 = add nuw nsw i64 %indvars.iv273, 1
  %exitcond277.not = icmp eq i64 %indvars.iv.next274, %wide.trip.count276
  br i1 %exitcond277.not, label %._crit_edge225, label %.preheader, !llvm.loop !32

._crit_edge225:                                   ; preds = %.preheader, %34
  %200 = mul i32 %31, 9
  %201 = getelementptr inbounds i8, ptr %0, i64 200
  store i32 %200, ptr %201, align 8, !tbaa !34
  %202 = zext i32 %200 to i64
  %203 = shl nuw nsw i64 %202, 2
  %204 = tail call noalias noundef nonnull ptr @_Znam(i64 noundef %203) #12
  %205 = getelementptr inbounds i8, ptr %0, i64 208
  store ptr %204, ptr %205, align 8, !tbaa !35
  br i1 %.not237, label %.loopexit, label %.lr.ph228.preheader

.lr.ph228.preheader:                              ; preds = %._crit_edge225
  %umax = tail call i32 @llvm.umax.i32(i32 %200, i32 1)
  %wide.trip.count281 = zext i32 %umax to i64
  %min.iters.check286 = icmp ult i32 %200, 8
  br i1 %min.iters.check286, label %.lr.ph228.preheader299, label %vector.ph287

vector.ph287:                                     ; preds = %.lr.ph228.preheader
  %n.vec289 = and i64 %wide.trip.count281, 4294967288
  br label %vector.body291

vector.body291:                                   ; preds = %vector.body291, %vector.ph287
  %index292 = phi i64 [ 0, %vector.ph287 ], [ %index.next297, %vector.body291 ]
  %vec.ind293 = phi <4 x i32> [ <i32 0, i32 1, i32 2, i32 3>, %vector.ph287 ], [ %vec.ind.next296, %vector.body291 ]
  %step.add294 = add <4 x i32> %vec.ind293, <i32 4, i32 4, i32 4, i32 4>
  %206 = getelementptr inbounds i32, ptr %204, i64 %index292
  %207 = getelementptr inbounds i8, ptr %206, i64 16
  store <4 x i32> %vec.ind293, ptr %206, align 4, !tbaa !29
  store <4 x i32> %step.add294, ptr %207, align 4, !tbaa !29
  %index.next297 = add nuw i64 %index292, 8
  %vec.ind.next296 = add <4 x i32> %vec.ind293, <i32 8, i32 8, i32 8, i32 8>
  %208 = icmp eq i64 %index.next297, %n.vec289
  br i1 %208, label %middle.block284, label %vector.body291, !llvm.loop !36

middle.block284:                                  ; preds = %vector.body291
  %cmp.n298 = icmp eq i64 %n.vec289, %wide.trip.count281
  br i1 %cmp.n298, label %.loopexit, label %.lr.ph228.preheader299

.lr.ph228.preheader299:                           ; preds = %middle.block284, %.lr.ph228.preheader
  %indvars.iv278.ph = phi i64 [ 0, %.lr.ph228.preheader ], [ %n.vec289, %middle.block284 ]
  br label %.lr.ph228

.lr.ph228:                                        ; preds = %.lr.ph228.preheader299, %.lr.ph228
  %indvars.iv278 = phi i64 [ %indvars.iv.next279, %.lr.ph228 ], [ %indvars.iv278.ph, %.lr.ph228.preheader299 ]
  %209 = getelementptr inbounds i32, ptr %204, i64 %indvars.iv278
  %210 = trunc nuw i64 %indvars.iv278 to i32
  store i32 %210, ptr %209, align 4, !tbaa !29
  %indvars.iv.next279 = add nuw nsw i64 %indvars.iv278, 1
  %exitcond282.not = icmp eq i64 %indvars.iv.next279, %wide.trip.count281
  br i1 %exitcond282.not, label %.loopexit, label %.lr.ph228, !llvm.loop !39

211:                                              ; preds = %1
  call void @llvm.lifetime.start.p0(i64 56, ptr nonnull %2) #11
  %212 = getelementptr inbounds i8, ptr %0, i64 24
  %213 = tail call noundef i64 @_ZNKSt6vectorIN3glm3vecILi3EfLNS0_9qualifierE0EEESaIS3_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %212) #11
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %3) #11
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %4) #11
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %5) #11
  call void @_ZNSaISt4pairIKjSt6vectorIjSaIjEEEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %5) #11
  invoke void @_ZNSt13unordered_mapIjSt6vectorIjSaIjEESt4hashIjESt8equal_toIjESaISt4pairIKjS2_EEEC2EmRKS4_RKS6_RKSA_(ptr noundef nonnull align 8 dereferenceable(56) %2, i64 noundef %213, ptr noundef nonnull align 1 dereferenceable(1) %3, ptr noundef nonnull align 1 dereferenceable(1) %4, ptr noundef nonnull align 1 dereferenceable(1) %5)
          to label %214 unwind label %216

214:                                              ; preds = %211
  call void @_ZNSt15__new_allocatorISt4pairIKjSt6vectorIjSaIjEEEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %5) #11
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %5) #11
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %4) #11
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %3) #11
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %6) #11
  store i32 0, ptr %6, align 4, !tbaa !29
  %.not232 = icmp eq i32 %31, 0
  br i1 %.not232, label %._crit_edge204, label %.lr.ph203

._crit_edge204:                                   ; preds = %231, %214
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %6) #11
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %8) #11
  %215 = and i64 %30, 4294967295
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %9) #11
  call void @_ZNSaISt6vectorIN3glm3vecILi3EfLNS0_9qualifierE0EEESaIS3_EEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %9) #11
  invoke void @_ZNSt6vectorIS_IN3glm3vecILi3EfLNS0_9qualifierE0EEESaIS3_EESaIS5_EEC2EmRKS6_(ptr noundef nonnull align 8 dereferenceable(24) %8, i64 noundef %215, ptr noundef nonnull align 1 dereferenceable(1) %9)
          to label %238 unwind label %245

216:                                              ; preds = %211
  %217 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorISt4pairIKjSt6vectorIjSaIjEEEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %5) #11
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %5) #11
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %4) #11
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %3) #11
  br label %477

.lr.ph203:                                        ; preds = %214, %231
  %storemerge168201 = phi i32 [ %233, %231 ], [ 0, %214 ]
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %7) #11
  %218 = zext i32 %storemerge168201 to i64
  %219 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIS_IjSaIjEESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %29, i64 noundef %218) #11
  invoke void @_ZNSt6vectorIjSaIjEEC2ERKS1_(ptr noundef nonnull align 8 dereferenceable(24) %7, ptr noundef nonnull align 8 dereferenceable(24) %219)
          to label %.preheader181.preheader unwind label %222

.preheader181.preheader:                          ; preds = %.lr.ph203
  %220 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIjSaIjEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %7, i64 noundef 0) #11
  %221 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt13unordered_mapIjSt6vectorIjSaIjEESt4hashIjESt8equal_toIjESaISt4pairIKjS2_EEEixERS8_(ptr noundef nonnull align 8 dereferenceable(56) %2, ptr noundef nonnull align 4 dereferenceable(4) %220)
          to label %224 unwind label %235

222:                                              ; preds = %.lr.ph203
  %223 = landingpad { ptr, i32 }
          cleanup
  br label %237

224:                                              ; preds = %.preheader181.preheader
  invoke void @_ZNSt6vectorIjSaIjEE9push_backERKj(ptr noundef nonnull align 8 dereferenceable(24) %221, ptr noundef nonnull align 4 dereferenceable(4) %6)
          to label %.preheader181.1 unwind label %235

.preheader181.1:                                  ; preds = %224
  %225 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIjSaIjEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %7, i64 noundef 1) #11
  %226 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt13unordered_mapIjSt6vectorIjSaIjEESt4hashIjESt8equal_toIjESaISt4pairIKjS2_EEEixERS8_(ptr noundef nonnull align 8 dereferenceable(56) %2, ptr noundef nonnull align 4 dereferenceable(4) %225)
          to label %227 unwind label %235

227:                                              ; preds = %.preheader181.1
  invoke void @_ZNSt6vectorIjSaIjEE9push_backERKj(ptr noundef nonnull align 8 dereferenceable(24) %226, ptr noundef nonnull align 4 dereferenceable(4) %6)
          to label %.preheader181.2 unwind label %235

.preheader181.2:                                  ; preds = %227
  %228 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIjSaIjEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %7, i64 noundef 2) #11
  %229 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt13unordered_mapIjSt6vectorIjSaIjEESt4hashIjESt8equal_toIjESaISt4pairIKjS2_EEEixERS8_(ptr noundef nonnull align 8 dereferenceable(56) %2, ptr noundef nonnull align 4 dereferenceable(4) %228)
          to label %230 unwind label %235

230:                                              ; preds = %.preheader181.2
  invoke void @_ZNSt6vectorIjSaIjEE9push_backERKj(ptr noundef nonnull align 8 dereferenceable(24) %229, ptr noundef nonnull align 4 dereferenceable(4) %6)
          to label %231 unwind label %235

231:                                              ; preds = %230
  call void @_ZNSt6vectorIjSaIjEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %7) #11
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %7) #11
  %232 = load i32, ptr %6, align 4, !tbaa !29
  %233 = add i32 %232, 1
  store i32 %233, ptr %6, align 4, !tbaa !29
  %234 = icmp ult i32 %233, %31
  br i1 %234, label %.lr.ph203, label %._crit_edge204, !llvm.loop !40

235:                                              ; preds = %230, %.preheader181.2, %227, %.preheader181.1, %224, %.preheader181.preheader
  %236 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt6vectorIjSaIjEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %7) #11
  br label %237

237:                                              ; preds = %235, %222
  %.pn175 = phi { ptr, i32 } [ %236, %235 ], [ %223, %222 ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %7) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %6) #11
  br label %476

238:                                              ; preds = %._crit_edge204
  call void @_ZNSt15__new_allocatorISt6vectorIN3glm3vecILi3EfLNS1_9qualifierE0EEESaIS4_EEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %9) #11
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %9) #11
  br i1 %.not232, label %._crit_edge215, label %.lr.ph214

.lr.ph214:                                        ; preds = %238
  %239 = getelementptr inbounds i8, ptr %0, i64 160
  %.sroa.267.0..sroa_idx = getelementptr inbounds i8, ptr %16, i64 8
  %wide.trip.count253 = and i64 %30, 4294967295
  br label %247

._crit_edge215:                                   ; preds = %288, %238
  %240 = mul i32 %31, 18
  %241 = getelementptr inbounds i8, ptr %0, i64 184
  store i32 %240, ptr %241, align 8, !tbaa !27
  %242 = zext i32 %240 to i64
  %243 = shl nuw nsw i64 %242, 2
  %244 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %243) #12
          to label %292 unwind label %465

245:                                              ; preds = %._crit_edge204
  %246 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorISt6vectorIN3glm3vecILi3EfLNS1_9qualifierE0EEESaIS4_EEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %9) #11
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %9) #11
  br label %475

247:                                              ; preds = %.lr.ph214, %288
  %indvars.iv250 = phi i64 [ 0, %.lr.ph214 ], [ %indvars.iv.next251, %288 ]
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %10) #11
  %248 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZNSt6vectorIN3glm3vecILi3EfLNS0_9qualifierE0EEESaIS3_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %239, i64 noundef %indvars.iv250) #11
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(12) %10, ptr noundef nonnull align 4 dereferenceable(12) %248, i64 12, i1 false), !tbaa.struct !41
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %11) #11
  call void @_ZNSt6vectorIN3glm3vecILi3EfLNS0_9qualifierE0EEESaIS3_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %11) #11
  %249 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIS_IjSaIjEESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %29, i64 noundef %indvars.iv250) #11
  %250 = call noundef i64 @_ZNKSt6vectorIjSaIjEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %249) #11
  %.not234 = icmp eq i64 %250, 0
  br i1 %.not234, label %._crit_edge211, label %.lr.ph210

._crit_edge211:                                   ; preds = %279, %247
  %251 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIS_IN3glm3vecILi3EfLNS0_9qualifierE0EEESaIS3_EESaIS5_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %8, i64 noundef %indvars.iv250) #11
  %252 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIN3glm3vecILi3EfLNS0_9qualifierE0EEESaIS3_EEaSERKS5_(ptr noundef nonnull align 8 dereferenceable(24) %251, ptr noundef nonnull align 8 dereferenceable(24) %11)
          to label %288 unwind label %289

.lr.ph210:                                        ; preds = %247, %279
  %253 = phi i64 [ %281, %279 ], [ 0, %247 ]
  %.0153208 = phi i32 [ %280, %279 ], [ 0, %247 ]
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %12) #11
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 4 dereferenceable(12) %12, i8 0, i64 12, i1 false)
  %254 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIS_IjSaIjEESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %29, i64 noundef %indvars.iv250) #11
  %255 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIjSaIjEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %254, i64 noundef %253) #11
  %256 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt13unordered_mapIjSt6vectorIjSaIjEESt4hashIjESt8equal_toIjESaISt4pairIKjS2_EEEixERS8_(ptr noundef nonnull align 8 dereferenceable(56) %2, ptr noundef nonnull align 4 dereferenceable(4) %255)
          to label %257 unwind label %262

257:                                              ; preds = %.lr.ph210
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %13) #11
  %258 = call ptr @_ZNSt6vectorIjSaIjEE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %256) #11
  store ptr %258, ptr %13, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %14) #11
  %259 = call ptr @_ZNSt6vectorIjSaIjEE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %256) #11
  store ptr %259, ptr %14, align 8
  %260 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPjSt6vectorIjSaIjEEEEbRKNS_17__normal_iteratorIT_T0_EESA_(ptr noundef nonnull align 8 dereferenceable(8) %13, ptr noundef nonnull align 8 dereferenceable(8) %14) #11
  br i1 %260, label %.lr.ph206, label %._crit_edge207

._crit_edge207:                                   ; preds = %275, %257
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %14) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %13) #11
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %16) #11
  %261 = invoke { <2 x float>, float } @_ZN3glm9normalizeILi3EfLNS_9qualifierE0EEENS_3vecIXT_ET0_XT1_EEERKS4_(ptr noundef nonnull align 4 dereferenceable(12) %12)
          to label %278 unwind label %285

262:                                              ; preds = %.lr.ph210
  %263 = landingpad { ptr, i32 }
          cleanup
  br label %287

.lr.ph206:                                        ; preds = %257, %275
  %264 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPjSt6vectorIjSaIjEEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %13) #11
  %265 = load i32, ptr %264, align 4, !tbaa !29
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %15) #11
  %266 = zext i32 %265 to i64
  %267 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZNSt6vectorIN3glm3vecILi3EfLNS0_9qualifierE0EEESaIS3_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %239, i64 noundef %266) #11
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(12) %15, ptr noundef nonnull align 4 dereferenceable(12) %267, i64 12, i1 false), !tbaa.struct !41
  %268 = invoke noundef float @_ZN3glm3dotILi3EfLNS_9qualifierE0EEET0_RKNS_3vecIXT_ES2_XT1_EEES6_(ptr noundef nonnull align 4 dereferenceable(12) %10, ptr noundef nonnull align 4 dereferenceable(12) %15)
          to label %269 unwind label %273

269:                                              ; preds = %.lr.ph206
  %270 = fcmp ogt float %268, 0x3FECCCCCC0000000
  br i1 %270, label %271, label %275

271:                                              ; preds = %269
  %272 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZN3glm3vecILi3EfLNS_9qualifierE0EEpLIfEERS2_RKNS0_ILi3ET_LS1_0EEE(ptr noundef nonnull align 4 dereferenceable(12) %12, ptr noundef nonnull align 4 dereferenceable(12) %15)
  br label %275

273:                                              ; preds = %.lr.ph206
  %274 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %15) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %14) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %13) #11
  br label %287

275:                                              ; preds = %271, %269
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %15) #11
  %276 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPjSt6vectorIjSaIjEEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %13) #11
  %277 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPjSt6vectorIjSaIjEEEEbRKNS_17__normal_iteratorIT_T0_EESA_(ptr noundef nonnull align 8 dereferenceable(8) %13, ptr noundef nonnull align 8 dereferenceable(8) %14) #11
  br i1 %277, label %.lr.ph206, label %._crit_edge207

278:                                              ; preds = %._crit_edge207
  %.fca.0.extract64 = extractvalue { <2 x float>, float } %261, 0
  %.fca.1.extract65 = extractvalue { <2 x float>, float } %261, 1
  store <2 x float> %.fca.0.extract64, ptr %16, align 8
  store float %.fca.1.extract65, ptr %.sroa.267.0..sroa_idx, align 8
  invoke void @_ZNSt6vectorIN3glm3vecILi3EfLNS0_9qualifierE0EEESaIS3_EE9push_backEOS3_(ptr noundef nonnull align 8 dereferenceable(24) %11, ptr noundef nonnull align 4 dereferenceable(12) %16)
          to label %279 unwind label %285

279:                                              ; preds = %278
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %16) #11
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %12) #11
  %280 = add i32 %.0153208, 1
  %281 = zext i32 %280 to i64
  %282 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIS_IjSaIjEESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %29, i64 noundef %indvars.iv250) #11
  %283 = call noundef i64 @_ZNKSt6vectorIjSaIjEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %282) #11
  %284 = icmp ugt i64 %283, %281
  br i1 %284, label %.lr.ph210, label %._crit_edge211, !llvm.loop !42

285:                                              ; preds = %278, %._crit_edge207
  %286 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %16) #11
  br label %287

287:                                              ; preds = %262, %273, %285
  %.pn169.pn = phi { ptr, i32 } [ %286, %285 ], [ %274, %273 ], [ %263, %262 ]
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %12) #11
  br label %291

288:                                              ; preds = %._crit_edge211
  call void @_ZNSt6vectorIN3glm3vecILi3EfLNS0_9qualifierE0EEESaIS3_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %11) #11
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %11) #11
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %10) #11
  %indvars.iv.next251 = add nuw nsw i64 %indvars.iv250, 1
  %exitcond254.not = icmp eq i64 %indvars.iv.next251, %wide.trip.count253
  br i1 %exitcond254.not, label %._crit_edge215, label %247, !llvm.loop !43

289:                                              ; preds = %._crit_edge211
  %290 = landingpad { ptr, i32 }
          cleanup
  br label %291

291:                                              ; preds = %289, %287
  %.pn169.pn.pn = phi { ptr, i32 } [ %.pn169.pn, %287 ], [ %290, %289 ]
  call void @_ZNSt6vectorIN3glm3vecILi3EfLNS0_9qualifierE0EEESaIS3_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %11) #11
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %11) #11
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %10) #11
  br label %474

292:                                              ; preds = %._crit_edge215
  call void @llvm.memset.p0.i64(ptr nonnull align 4 %244, i8 0, i64 %243, i1 false)
  %293 = getelementptr inbounds i8, ptr %0, i64 192
  store ptr %244, ptr %293, align 8, !tbaa !28
  br i1 %.not232, label %._crit_edge218, label %.preheader180.preheader

.preheader180.preheader:                          ; preds = %292
  %wide.trip.count262 = and i64 %30, 4294967295
  br label %.preheader180

.preheader180:                                    ; preds = %.preheader180.preheader, %.preheader180
  %indvars.iv259 = phi i64 [ 0, %.preheader180.preheader ], [ %indvars.iv.next260, %.preheader180 ]
  %294 = trunc nuw i64 %indvars.iv259 to i32
  %295 = mul i32 %294, 18
  %296 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIS_IjSaIjEESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %29, i64 noundef %indvars.iv259) #11
  %297 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIjSaIjEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %296, i64 noundef 0) #11
  %298 = load i32, ptr %297, align 4, !tbaa !29
  %299 = zext i32 %298 to i64
  %300 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZNSt6vectorIN3glm3vecILi3EfLNS0_9qualifierE0EEESaIS3_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %212, i64 noundef %299) #11
  %301 = load float, ptr %300, align 4, !tbaa !30
  %302 = load ptr, ptr %293, align 8, !tbaa !28
  %303 = zext i32 %295 to i64
  %304 = getelementptr inbounds float, ptr %302, i64 %303
  store float %301, ptr %304, align 4, !tbaa !31
  %305 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIS_IjSaIjEESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %29, i64 noundef %indvars.iv259) #11
  %306 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIjSaIjEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %305, i64 noundef 0) #11
  %307 = load i32, ptr %306, align 4, !tbaa !29
  %308 = zext i32 %307 to i64
  %309 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZNSt6vectorIN3glm3vecILi3EfLNS0_9qualifierE0EEESaIS3_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %212, i64 noundef %308) #11
  %310 = getelementptr inbounds i8, ptr %309, i64 4
  %311 = load float, ptr %310, align 4, !tbaa !30
  %312 = load ptr, ptr %293, align 8, !tbaa !28
  %313 = or disjoint i32 %295, 1
  %314 = zext i32 %313 to i64
  %315 = getelementptr inbounds float, ptr %312, i64 %314
  store float %311, ptr %315, align 4, !tbaa !31
  %316 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIS_IjSaIjEESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %29, i64 noundef %indvars.iv259) #11
  %317 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIjSaIjEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %316, i64 noundef 0) #11
  %318 = load i32, ptr %317, align 4, !tbaa !29
  %319 = zext i32 %318 to i64
  %320 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZNSt6vectorIN3glm3vecILi3EfLNS0_9qualifierE0EEESaIS3_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %212, i64 noundef %319) #11
  %321 = getelementptr inbounds i8, ptr %320, i64 8
  %322 = load float, ptr %321, align 4, !tbaa !30
  %323 = load ptr, ptr %293, align 8, !tbaa !28
  %324 = add i32 %295, 2
  %325 = zext i32 %324 to i64
  %326 = getelementptr inbounds float, ptr %323, i64 %325
  store float %322, ptr %326, align 4, !tbaa !31
  %327 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIS_IN3glm3vecILi3EfLNS0_9qualifierE0EEESaIS3_EESaIS5_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %8, i64 noundef %indvars.iv259) #11
  %328 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZNSt6vectorIN3glm3vecILi3EfLNS0_9qualifierE0EEESaIS3_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %327, i64 noundef 0) #11
  %329 = load float, ptr %328, align 4, !tbaa !30
  %330 = load ptr, ptr %293, align 8, !tbaa !28
  %331 = add i32 %295, 3
  %332 = zext i32 %331 to i64
  %333 = getelementptr inbounds float, ptr %330, i64 %332
  store float %329, ptr %333, align 4, !tbaa !31
  %334 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIS_IN3glm3vecILi3EfLNS0_9qualifierE0EEESaIS3_EESaIS5_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %8, i64 noundef %indvars.iv259) #11
  %335 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZNSt6vectorIN3glm3vecILi3EfLNS0_9qualifierE0EEESaIS3_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %334, i64 noundef 0) #11
  %336 = getelementptr inbounds i8, ptr %335, i64 4
  %337 = load float, ptr %336, align 4, !tbaa !30
  %338 = load ptr, ptr %293, align 8, !tbaa !28
  %339 = add i32 %295, 4
  %340 = zext i32 %339 to i64
  %341 = getelementptr inbounds float, ptr %338, i64 %340
  store float %337, ptr %341, align 4, !tbaa !31
  %342 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIS_IN3glm3vecILi3EfLNS0_9qualifierE0EEESaIS3_EESaIS5_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %8, i64 noundef %indvars.iv259) #11
  %343 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZNSt6vectorIN3glm3vecILi3EfLNS0_9qualifierE0EEESaIS3_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %342, i64 noundef 0) #11
  %344 = getelementptr inbounds i8, ptr %343, i64 8
  %345 = load float, ptr %344, align 4, !tbaa !30
  %346 = load ptr, ptr %293, align 8, !tbaa !28
  %347 = add i32 %295, 5
  %348 = zext i32 %347 to i64
  %349 = getelementptr inbounds float, ptr %346, i64 %348
  store float %345, ptr %349, align 4, !tbaa !31
  %350 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIS_IjSaIjEESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %29, i64 noundef %indvars.iv259) #11
  %351 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIjSaIjEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %350, i64 noundef 1) #11
  %352 = load i32, ptr %351, align 4, !tbaa !29
  %353 = zext i32 %352 to i64
  %354 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZNSt6vectorIN3glm3vecILi3EfLNS0_9qualifierE0EEESaIS3_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %212, i64 noundef %353) #11
  %355 = load float, ptr %354, align 4, !tbaa !30
  %356 = load ptr, ptr %293, align 8, !tbaa !28
  %357 = add i32 %295, 6
  %358 = zext i32 %357 to i64
  %359 = getelementptr inbounds float, ptr %356, i64 %358
  store float %355, ptr %359, align 4, !tbaa !31
  %360 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIS_IjSaIjEESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %29, i64 noundef %indvars.iv259) #11
  %361 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIjSaIjEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %360, i64 noundef 1) #11
  %362 = load i32, ptr %361, align 4, !tbaa !29
  %363 = zext i32 %362 to i64
  %364 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZNSt6vectorIN3glm3vecILi3EfLNS0_9qualifierE0EEESaIS3_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %212, i64 noundef %363) #11
  %365 = getelementptr inbounds i8, ptr %364, i64 4
  %366 = load float, ptr %365, align 4, !tbaa !30
  %367 = load ptr, ptr %293, align 8, !tbaa !28
  %368 = or disjoint i32 %357, 1
  %369 = zext i32 %368 to i64
  %370 = getelementptr inbounds float, ptr %367, i64 %369
  store float %366, ptr %370, align 4, !tbaa !31
  %371 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIS_IjSaIjEESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %29, i64 noundef %indvars.iv259) #11
  %372 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIjSaIjEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %371, i64 noundef 1) #11
  %373 = load i32, ptr %372, align 4, !tbaa !29
  %374 = zext i32 %373 to i64
  %375 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZNSt6vectorIN3glm3vecILi3EfLNS0_9qualifierE0EEESaIS3_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %212, i64 noundef %374) #11
  %376 = getelementptr inbounds i8, ptr %375, i64 8
  %377 = load float, ptr %376, align 4, !tbaa !30
  %378 = load ptr, ptr %293, align 8, !tbaa !28
  %379 = add i32 %295, 8
  %380 = zext i32 %379 to i64
  %381 = getelementptr inbounds float, ptr %378, i64 %380
  store float %377, ptr %381, align 4, !tbaa !31
  %382 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIS_IN3glm3vecILi3EfLNS0_9qualifierE0EEESaIS3_EESaIS5_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %8, i64 noundef %indvars.iv259) #11
  %383 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZNSt6vectorIN3glm3vecILi3EfLNS0_9qualifierE0EEESaIS3_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %382, i64 noundef 1) #11
  %384 = load float, ptr %383, align 4, !tbaa !30
  %385 = load ptr, ptr %293, align 8, !tbaa !28
  %386 = add i32 %295, 9
  %387 = zext i32 %386 to i64
  %388 = getelementptr inbounds float, ptr %385, i64 %387
  store float %384, ptr %388, align 4, !tbaa !31
  %389 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIS_IN3glm3vecILi3EfLNS0_9qualifierE0EEESaIS3_EESaIS5_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %8, i64 noundef %indvars.iv259) #11
  %390 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZNSt6vectorIN3glm3vecILi3EfLNS0_9qualifierE0EEESaIS3_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %389, i64 noundef 1) #11
  %391 = getelementptr inbounds i8, ptr %390, i64 4
  %392 = load float, ptr %391, align 4, !tbaa !30
  %393 = load ptr, ptr %293, align 8, !tbaa !28
  %394 = add i32 %295, 10
  %395 = zext i32 %394 to i64
  %396 = getelementptr inbounds float, ptr %393, i64 %395
  store float %392, ptr %396, align 4, !tbaa !31
  %397 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIS_IN3glm3vecILi3EfLNS0_9qualifierE0EEESaIS3_EESaIS5_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %8, i64 noundef %indvars.iv259) #11
  %398 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZNSt6vectorIN3glm3vecILi3EfLNS0_9qualifierE0EEESaIS3_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %397, i64 noundef 1) #11
  %399 = getelementptr inbounds i8, ptr %398, i64 8
  %400 = load float, ptr %399, align 4, !tbaa !30
  %401 = load ptr, ptr %293, align 8, !tbaa !28
  %402 = add i32 %295, 11
  %403 = zext i32 %402 to i64
  %404 = getelementptr inbounds float, ptr %401, i64 %403
  store float %400, ptr %404, align 4, !tbaa !31
  %405 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIS_IjSaIjEESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %29, i64 noundef %indvars.iv259) #11
  %406 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIjSaIjEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %405, i64 noundef 2) #11
  %407 = load i32, ptr %406, align 4, !tbaa !29
  %408 = zext i32 %407 to i64
  %409 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZNSt6vectorIN3glm3vecILi3EfLNS0_9qualifierE0EEESaIS3_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %212, i64 noundef %408) #11
  %410 = load float, ptr %409, align 4, !tbaa !30
  %411 = load ptr, ptr %293, align 8, !tbaa !28
  %412 = add i32 %295, 12
  %413 = zext i32 %412 to i64
  %414 = getelementptr inbounds float, ptr %411, i64 %413
  store float %410, ptr %414, align 4, !tbaa !31
  %415 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIS_IjSaIjEESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %29, i64 noundef %indvars.iv259) #11
  %416 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIjSaIjEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %415, i64 noundef 2) #11
  %417 = load i32, ptr %416, align 4, !tbaa !29
  %418 = zext i32 %417 to i64
  %419 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZNSt6vectorIN3glm3vecILi3EfLNS0_9qualifierE0EEESaIS3_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %212, i64 noundef %418) #11
  %420 = getelementptr inbounds i8, ptr %419, i64 4
  %421 = load float, ptr %420, align 4, !tbaa !30
  %422 = load ptr, ptr %293, align 8, !tbaa !28
  %423 = or disjoint i32 %412, 1
  %424 = zext i32 %423 to i64
  %425 = getelementptr inbounds float, ptr %422, i64 %424
  store float %421, ptr %425, align 4, !tbaa !31
  %426 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIS_IjSaIjEESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %29, i64 noundef %indvars.iv259) #11
  %427 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIjSaIjEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %426, i64 noundef 2) #11
  %428 = load i32, ptr %427, align 4, !tbaa !29
  %429 = zext i32 %428 to i64
  %430 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZNSt6vectorIN3glm3vecILi3EfLNS0_9qualifierE0EEESaIS3_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %212, i64 noundef %429) #11
  %431 = getelementptr inbounds i8, ptr %430, i64 8
  %432 = load float, ptr %431, align 4, !tbaa !30
  %433 = load ptr, ptr %293, align 8, !tbaa !28
  %434 = add i32 %295, 14
  %435 = zext i32 %434 to i64
  %436 = getelementptr inbounds float, ptr %433, i64 %435
  store float %432, ptr %436, align 4, !tbaa !31
  %437 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIS_IN3glm3vecILi3EfLNS0_9qualifierE0EEESaIS3_EESaIS5_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %8, i64 noundef %indvars.iv259) #11
  %438 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZNSt6vectorIN3glm3vecILi3EfLNS0_9qualifierE0EEESaIS3_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %437, i64 noundef 2) #11
  %439 = load float, ptr %438, align 4, !tbaa !30
  %440 = load ptr, ptr %293, align 8, !tbaa !28
  %441 = add i32 %295, 15
  %442 = zext i32 %441 to i64
  %443 = getelementptr inbounds float, ptr %440, i64 %442
  store float %439, ptr %443, align 4, !tbaa !31
  %444 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIS_IN3glm3vecILi3EfLNS0_9qualifierE0EEESaIS3_EESaIS5_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %8, i64 noundef %indvars.iv259) #11
  %445 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZNSt6vectorIN3glm3vecILi3EfLNS0_9qualifierE0EEESaIS3_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %444, i64 noundef 2) #11
  %446 = getelementptr inbounds i8, ptr %445, i64 4
  %447 = load float, ptr %446, align 4, !tbaa !30
  %448 = load ptr, ptr %293, align 8, !tbaa !28
  %449 = add i32 %295, 16
  %450 = zext i32 %449 to i64
  %451 = getelementptr inbounds float, ptr %448, i64 %450
  store float %447, ptr %451, align 4, !tbaa !31
  %452 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIS_IN3glm3vecILi3EfLNS0_9qualifierE0EEESaIS3_EESaIS5_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %8, i64 noundef %indvars.iv259) #11
  %453 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZNSt6vectorIN3glm3vecILi3EfLNS0_9qualifierE0EEESaIS3_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %452, i64 noundef 2) #11
  %454 = getelementptr inbounds i8, ptr %453, i64 8
  %455 = load float, ptr %454, align 4, !tbaa !30
  %456 = load ptr, ptr %293, align 8, !tbaa !28
  %457 = add i32 %295, 17
  %458 = zext i32 %457 to i64
  %459 = getelementptr inbounds float, ptr %456, i64 %458
  store float %455, ptr %459, align 4, !tbaa !31
  %indvars.iv.next260 = add nuw nsw i64 %indvars.iv259, 1
  %exitcond263.not = icmp eq i64 %indvars.iv.next260, %wide.trip.count262
  br i1 %exitcond263.not, label %._crit_edge218, label %.preheader180, !llvm.loop !44

._crit_edge218:                                   ; preds = %.preheader180, %292
  %460 = mul i32 %31, 9
  %461 = getelementptr inbounds i8, ptr %0, i64 200
  store i32 %460, ptr %461, align 8, !tbaa !34
  %462 = zext i32 %460 to i64
  %463 = shl nuw nsw i64 %462, 2
  %464 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %463) #12
          to label %467 unwind label %465

465:                                              ; preds = %._crit_edge218, %._crit_edge215
  %466 = landingpad { ptr, i32 }
          cleanup
  br label %474

467:                                              ; preds = %._crit_edge218
  %468 = getelementptr inbounds i8, ptr %0, i64 208
  store ptr %464, ptr %468, align 8, !tbaa !35
  %.not236 = icmp eq i32 %31, 0
  br i1 %.not236, label %._crit_edge222, label %.lr.ph221.preheader

.lr.ph221.preheader:                              ; preds = %467
  %min.iters.check = icmp ult i32 %460, 8
  br i1 %min.iters.check, label %.lr.ph221.preheader300, label %vector.ph

.lr.ph221.preheader300:                           ; preds = %middle.block, %.lr.ph221.preheader
  %indvars.iv264.ph = phi i64 [ 0, %.lr.ph221.preheader ], [ %n.vec, %middle.block ]
  br label %.lr.ph221

vector.ph:                                        ; preds = %.lr.ph221.preheader
  %n.vec = and i64 %462, 4294967288
  br label %vector.body

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

middle.block:                                     ; preds = %vector.body
  %cmp.n = icmp eq i64 %n.vec, %462
  br i1 %cmp.n, label %._crit_edge222, label %.lr.ph221.preheader300

._crit_edge222:                                   ; preds = %.lr.ph221, %middle.block, %467
  call void @_ZNSt6vectorIS_IN3glm3vecILi3EfLNS0_9qualifierE0EEESaIS3_EESaIS5_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %8) #11
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %8) #11
  call void @_ZNSt13unordered_mapIjSt6vectorIjSaIjEESt4hashIjESt8equal_toIjESaISt4pairIKjS2_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(56) %2) #11
  call void @llvm.lifetime.end.p0(i64 56, ptr nonnull %2) #11
  br label %.loopexit

.lr.ph221:                                        ; preds = %.lr.ph221.preheader300, %.lr.ph221
  %indvars.iv264 = phi i64 [ %indvars.iv.next265, %.lr.ph221 ], [ %indvars.iv264.ph, %.lr.ph221.preheader300 ]
  %472 = getelementptr inbounds i32, ptr %464, i64 %indvars.iv264
  %473 = trunc nuw i64 %indvars.iv264 to i32
  store i32 %473, ptr %472, align 4, !tbaa !29
  %indvars.iv.next265 = add nuw nsw i64 %indvars.iv264, 1
  %exitcond268.not = icmp eq i64 %indvars.iv.next265, %462
  br i1 %exitcond268.not, label %._crit_edge222, label %.lr.ph221, !llvm.loop !46

474:                                              ; preds = %465, %291
  %.pn169.pn.pn.pn = phi { ptr, i32 } [ %.pn169.pn.pn, %291 ], [ %466, %465 ]
  call void @_ZNSt6vectorIS_IN3glm3vecILi3EfLNS0_9qualifierE0EEESaIS3_EESaIS5_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %8) #11
  br label %475

475:                                              ; preds = %474, %245
  %.pn169.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn169.pn.pn.pn, %474 ], [ %246, %245 ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %8) #11
  br label %476

476:                                              ; preds = %475, %237
  %.pn175.pn = phi { ptr, i32 } [ %.pn175, %237 ], [ %.pn169.pn.pn.pn.pn, %475 ]
  call void @_ZNSt13unordered_mapIjSt6vectorIjSaIjEESt4hashIjESt8equal_toIjESaISt4pairIKjS2_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(56) %2) #11
  br label %477

477:                                              ; preds = %476, %216
  %.pn175.pn.pn = phi { ptr, i32 } [ %.pn175.pn, %476 ], [ %217, %216 ]
  call void @llvm.lifetime.end.p0(i64 56, ptr nonnull %2) #11
  br label %622

478:                                              ; preds = %1
  call void @llvm.lifetime.start.p0(i64 56, ptr nonnull %17) #11
  %479 = getelementptr inbounds i8, ptr %0, i64 24
  %480 = tail call noundef i64 @_ZNKSt6vectorIN3glm3vecILi3EfLNS0_9qualifierE0EEESaIS3_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %479) #11
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %18) #11
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %19) #11
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %20) #11
  call void @_ZNSaISt4pairIKjSt6vectorIjSaIjEEEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %20) #11
  invoke void @_ZNSt13unordered_mapIjSt6vectorIjSaIjEESt4hashIjESt8equal_toIjESaISt4pairIKjS2_EEEC2EmRKS4_RKS6_RKSA_(ptr noundef nonnull align 8 dereferenceable(56) %17, i64 noundef %480, ptr noundef nonnull align 1 dereferenceable(1) %18, ptr noundef nonnull align 1 dereferenceable(1) %19, ptr noundef nonnull align 1 dereferenceable(1) %20)
          to label %481 unwind label %485

481:                                              ; preds = %478
  call void @_ZNSt15__new_allocatorISt4pairIKjSt6vectorIjSaIjEEEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %20) #11
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %20) #11
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %19) #11
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %18) #11
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %21) #11
  store i32 0, ptr %21, align 4, !tbaa !29
  %.not = icmp eq i32 %31, 0
  br i1 %.not, label %._crit_edge, label %.lr.ph

._crit_edge:                                      ; preds = %500, %481
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %21) #11
  %482 = call noundef i64 @_ZNKSt6vectorIN3glm3vecILi3EfLNS0_9qualifierE0EEESaIS3_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %479) #11
  %483 = trunc i64 %482 to i32
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %23) #11
  %484 = and i64 %482, 4294967295
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %24) #11
  call void @_ZNSaIN3glm3vecILi3EfLNS_9qualifierE0EEEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %24) #11
  invoke void @_ZNSt6vectorIN3glm3vecILi3EfLNS0_9qualifierE0EEESaIS3_EEC2EmRKS4_(ptr noundef nonnull align 8 dereferenceable(24) %23, i64 noundef %484, ptr noundef nonnull align 1 dereferenceable(1) %24)
          to label %507 unwind label %514

485:                                              ; preds = %478
  %486 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorISt4pairIKjSt6vectorIjSaIjEEEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %20) #11
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %20) #11
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %19) #11
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %18) #11
  br label %621

.lr.ph:                                           ; preds = %481, %500
  %storemerge184 = phi i32 [ %502, %500 ], [ 0, %481 ]
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %22) #11
  %487 = zext i32 %storemerge184 to i64
  %488 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIS_IjSaIjEESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %29, i64 noundef %487) #11
  invoke void @_ZNSt6vectorIjSaIjEEC2ERKS1_(ptr noundef nonnull align 8 dereferenceable(24) %22, ptr noundef nonnull align 8 dereferenceable(24) %488)
          to label %.preheader182.preheader unwind label %491

.preheader182.preheader:                          ; preds = %.lr.ph
  %489 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIjSaIjEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %22, i64 noundef 0) #11
  %490 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt13unordered_mapIjSt6vectorIjSaIjEESt4hashIjESt8equal_toIjESaISt4pairIKjS2_EEEixERS8_(ptr noundef nonnull align 8 dereferenceable(56) %17, ptr noundef nonnull align 4 dereferenceable(4) %489)
          to label %493 unwind label %504

491:                                              ; preds = %.lr.ph
  %492 = landingpad { ptr, i32 }
          cleanup
  br label %506

493:                                              ; preds = %.preheader182.preheader
  invoke void @_ZNSt6vectorIjSaIjEE9push_backERKj(ptr noundef nonnull align 8 dereferenceable(24) %490, ptr noundef nonnull align 4 dereferenceable(4) %21)
          to label %.preheader182.1 unwind label %504

.preheader182.1:                                  ; preds = %493
  %494 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIjSaIjEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %22, i64 noundef 1) #11
  %495 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt13unordered_mapIjSt6vectorIjSaIjEESt4hashIjESt8equal_toIjESaISt4pairIKjS2_EEEixERS8_(ptr noundef nonnull align 8 dereferenceable(56) %17, ptr noundef nonnull align 4 dereferenceable(4) %494)
          to label %496 unwind label %504

496:                                              ; preds = %.preheader182.1
  invoke void @_ZNSt6vectorIjSaIjEE9push_backERKj(ptr noundef nonnull align 8 dereferenceable(24) %495, ptr noundef nonnull align 4 dereferenceable(4) %21)
          to label %.preheader182.2 unwind label %504

.preheader182.2:                                  ; preds = %496
  %497 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIjSaIjEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %22, i64 noundef 2) #11
  %498 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt13unordered_mapIjSt6vectorIjSaIjEESt4hashIjESt8equal_toIjESaISt4pairIKjS2_EEEixERS8_(ptr noundef nonnull align 8 dereferenceable(56) %17, ptr noundef nonnull align 4 dereferenceable(4) %497)
          to label %499 unwind label %504

499:                                              ; preds = %.preheader182.2
  invoke void @_ZNSt6vectorIjSaIjEE9push_backERKj(ptr noundef nonnull align 8 dereferenceable(24) %498, ptr noundef nonnull align 4 dereferenceable(4) %21)
          to label %500 unwind label %504

500:                                              ; preds = %499
  call void @_ZNSt6vectorIjSaIjEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %22) #11
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %22) #11
  %501 = load i32, ptr %21, align 4, !tbaa !29
  %502 = add i32 %501, 1
  store i32 %502, ptr %21, align 4, !tbaa !29
  %503 = icmp ult i32 %502, %31
  br i1 %503, label %.lr.ph, label %._crit_edge, !llvm.loop !47

504:                                              ; preds = %499, %.preheader182.2, %496, %.preheader182.1, %493, %.preheader182.preheader
  %505 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt6vectorIjSaIjEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %22) #11
  br label %506

506:                                              ; preds = %504, %491
  %.pn164 = phi { ptr, i32 } [ %505, %504 ], [ %492, %491 ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %22) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %21) #11
  br label %620

507:                                              ; preds = %._crit_edge
  call void @_ZNSt15__new_allocatorIN3glm3vecILi3EfLNS0_9qualifierE0EEEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %24) #11
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %24) #11
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %25) #11
  store i32 0, ptr %25, align 4, !tbaa !29
  %.not229 = icmp eq i32 %483, 0
  br i1 %.not229, label %._crit_edge191, label %.lr.ph190

.lr.ph190:                                        ; preds = %507
  %508 = getelementptr inbounds i8, ptr %0, i64 160
  br label %516

._crit_edge191:                                   ; preds = %534, %507
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %25) #11
  %509 = mul i32 %483, 6
  %510 = getelementptr inbounds i8, ptr %0, i64 184
  store i32 %509, ptr %510, align 8, !tbaa !27
  %511 = zext i32 %509 to i64
  %512 = shl nuw nsw i64 %511, 2
  %513 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %512) #12
          to label %544 unwind label %551

514:                                              ; preds = %._crit_edge
  %515 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIN3glm3vecILi3EfLNS0_9qualifierE0EEEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %24) #11
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %24) #11
  br label %619

516:                                              ; preds = %.lr.ph190, %534
  %storemerge160188 = phi i32 [ 0, %.lr.ph190 ], [ %539, %534 ]
  %517 = zext i32 %storemerge160188 to i64
  %518 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZNSt6vectorIN3glm3vecILi3EfLNS0_9qualifierE0EEESaIS3_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %479, i64 noundef %517) #11
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %26) #11
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 4 dereferenceable(12) %26, i8 0, i64 12, i1 false)
  %519 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt13unordered_mapIjSt6vectorIjSaIjEESt4hashIjESt8equal_toIjESaISt4pairIKjS2_EEEixERS8_(ptr noundef nonnull align 8 dereferenceable(56) %17, ptr noundef nonnull align 4 dereferenceable(4) %25)
          to label %520 unwind label %525

520:                                              ; preds = %516
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %27) #11
  %521 = call ptr @_ZNSt6vectorIjSaIjEE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %519) #11
  store ptr %521, ptr %27, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %28) #11
  %522 = call ptr @_ZNSt6vectorIjSaIjEE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %519) #11
  store ptr %522, ptr %28, align 8
  %523 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPjSt6vectorIjSaIjEEEEbRKNS_17__normal_iteratorIT_T0_EESA_(ptr noundef nonnull align 8 dereferenceable(8) %27, ptr noundef nonnull align 8 dereferenceable(8) %28) #11
  br i1 %523, label %.lr.ph186, label %._crit_edge187

._crit_edge187:                                   ; preds = %.lr.ph186, %520
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %28) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %27) #11
  %524 = invoke { <2 x float>, float } @_ZN3glm9normalizeILi3EfLNS_9qualifierE0EEENS_3vecIXT_ET0_XT1_EEERKS4_(ptr noundef nonnull align 4 dereferenceable(12) %26)
          to label %534 unwind label %541

525:                                              ; preds = %516
  %526 = landingpad { ptr, i32 }
          cleanup
  br label %543

.lr.ph186:                                        ; preds = %520, %.lr.ph186
  %527 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPjSt6vectorIjSaIjEEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %27) #11
  %528 = load i32, ptr %527, align 4, !tbaa !29
  %529 = zext i32 %528 to i64
  %530 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZNSt6vectorIN3glm3vecILi3EfLNS0_9qualifierE0EEESaIS3_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %508, i64 noundef %529) #11
  %531 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZN3glm3vecILi3EfLNS_9qualifierE0EEpLIfEERS2_RKNS0_ILi3ET_LS1_0EEE(ptr noundef nonnull align 4 dereferenceable(12) %26, ptr noundef nonnull align 4 dereferenceable(12) %530)
  %532 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPjSt6vectorIjSaIjEEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %27) #11
  %533 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPjSt6vectorIjSaIjEEEEbRKNS_17__normal_iteratorIT_T0_EESA_(ptr noundef nonnull align 8 dereferenceable(8) %27, ptr noundef nonnull align 8 dereferenceable(8) %28) #11
  br i1 %533, label %.lr.ph186, label %._crit_edge187

534:                                              ; preds = %._crit_edge187
  %.fca.0.extract = extractvalue { <2 x float>, float } %524, 0
  %.fca.1.extract = extractvalue { <2 x float>, float } %524, 1
  %535 = load i32, ptr %25, align 4, !tbaa !29
  %536 = zext i32 %535 to i64
  %537 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZNSt6vectorIN3glm3vecILi3EfLNS0_9qualifierE0EEESaIS3_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %23, i64 noundef %536) #11
  store <2 x float> %.fca.0.extract, ptr %537, align 4
  %.sroa.5.0..sroa_idx = getelementptr inbounds i8, ptr %537, i64 8
  store float %.fca.1.extract, ptr %.sroa.5.0..sroa_idx, align 4, !tbaa !30
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %26) #11
  %538 = load i32, ptr %25, align 4, !tbaa !29
  %539 = add i32 %538, 1
  store i32 %539, ptr %25, align 4, !tbaa !29
  %540 = icmp ult i32 %539, %483
  br i1 %540, label %516, label %._crit_edge191, !llvm.loop !48

541:                                              ; preds = %._crit_edge187
  %542 = landingpad { ptr, i32 }
          cleanup
  br label %543

543:                                              ; preds = %541, %525
  %.pn = phi { ptr, i32 } [ %542, %541 ], [ %526, %525 ]
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %26) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %25) #11
  br label %618

544:                                              ; preds = %._crit_edge191
  call void @llvm.memset.p0.i64(ptr nonnull align 4 %513, i8 0, i64 %512, i1 false)
  %545 = getelementptr inbounds i8, ptr %0, i64 192
  store ptr %513, ptr %545, align 8, !tbaa !28
  br i1 %.not229, label %._crit_edge195, label %.lr.ph194.preheader

.lr.ph194.preheader:                              ; preds = %544
  %wide.trip.count = and i64 %482, 4294967295
  br label %.lr.ph194

._crit_edge195:                                   ; preds = %.lr.ph194, %544
  %546 = mul i32 %31, 3
  %547 = getelementptr inbounds i8, ptr %0, i64 200
  store i32 %546, ptr %547, align 8, !tbaa !34
  %548 = zext i32 %546 to i64
  %549 = shl nuw nsw i64 %548, 2
  %550 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %549) #12
          to label %594 unwind label %551

551:                                              ; preds = %._crit_edge195, %._crit_edge191
  %552 = landingpad { ptr, i32 }
          cleanup
  br label %618

.lr.ph194:                                        ; preds = %.lr.ph194.preheader, %.lr.ph194
  %indvars.iv = phi i64 [ 0, %.lr.ph194.preheader ], [ %indvars.iv.next, %.lr.ph194 ]
  %553 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZNSt6vectorIN3glm3vecILi3EfLNS0_9qualifierE0EEESaIS3_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %479, i64 noundef %indvars.iv) #11
  %554 = load float, ptr %553, align 4, !tbaa !30
  %555 = load ptr, ptr %545, align 8, !tbaa !28
  %556 = trunc nuw i64 %indvars.iv to i32
  %557 = mul i32 %556, 6
  %558 = zext i32 %557 to i64
  %559 = getelementptr inbounds float, ptr %555, i64 %558
  store float %554, ptr %559, align 4, !tbaa !31
  %560 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZNSt6vectorIN3glm3vecILi3EfLNS0_9qualifierE0EEESaIS3_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %479, i64 noundef %indvars.iv) #11
  %561 = getelementptr inbounds i8, ptr %560, i64 4
  %562 = load float, ptr %561, align 4, !tbaa !30
  %563 = load ptr, ptr %545, align 8, !tbaa !28
  %564 = or disjoint i32 %557, 1
  %565 = zext i32 %564 to i64
  %566 = getelementptr inbounds float, ptr %563, i64 %565
  store float %562, ptr %566, align 4, !tbaa !31
  %567 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZNSt6vectorIN3glm3vecILi3EfLNS0_9qualifierE0EEESaIS3_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %479, i64 noundef %indvars.iv) #11
  %568 = getelementptr inbounds i8, ptr %567, i64 8
  %569 = load float, ptr %568, align 4, !tbaa !30
  %570 = load ptr, ptr %545, align 8, !tbaa !28
  %571 = add i32 %557, 2
  %572 = zext i32 %571 to i64
  %573 = getelementptr inbounds float, ptr %570, i64 %572
  store float %569, ptr %573, align 4, !tbaa !31
  %574 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZNSt6vectorIN3glm3vecILi3EfLNS0_9qualifierE0EEESaIS3_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %23, i64 noundef %indvars.iv) #11
  %575 = load float, ptr %574, align 4, !tbaa !30
  %576 = load ptr, ptr %545, align 8, !tbaa !28
  %577 = add i32 %557, 3
  %578 = zext i32 %577 to i64
  %579 = getelementptr inbounds float, ptr %576, i64 %578
  store float %575, ptr %579, align 4, !tbaa !31
  %580 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZNSt6vectorIN3glm3vecILi3EfLNS0_9qualifierE0EEESaIS3_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %23, i64 noundef %indvars.iv) #11
  %581 = getelementptr inbounds i8, ptr %580, i64 4
  %582 = load float, ptr %581, align 4, !tbaa !30
  %583 = load ptr, ptr %545, align 8, !tbaa !28
  %584 = add i32 %557, 4
  %585 = zext i32 %584 to i64
  %586 = getelementptr inbounds float, ptr %583, i64 %585
  store float %582, ptr %586, align 4, !tbaa !31
  %587 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZNSt6vectorIN3glm3vecILi3EfLNS0_9qualifierE0EEESaIS3_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %23, i64 noundef %indvars.iv) #11
  %588 = getelementptr inbounds i8, ptr %587, i64 8
  %589 = load float, ptr %588, align 4, !tbaa !30
  %590 = load ptr, ptr %545, align 8, !tbaa !28
  %591 = add i32 %557, 5
  %592 = zext i32 %591 to i64
  %593 = getelementptr inbounds float, ptr %590, i64 %592
  store float %589, ptr %593, align 4, !tbaa !31
  %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_edge195, label %.lr.ph194, !llvm.loop !49

594:                                              ; preds = %._crit_edge195
  %595 = getelementptr inbounds i8, ptr %0, i64 208
  store ptr %550, ptr %595, align 8, !tbaa !35
  br i1 %.not, label %._crit_edge199, label %.lr.ph198.preheader

.lr.ph198.preheader:                              ; preds = %594
  %wide.trip.count244 = and i64 %30, 4294967295
  br label %.lr.ph198

._crit_edge199:                                   ; preds = %.lr.ph198, %594
  call void @_ZNSt6vectorIN3glm3vecILi3EfLNS0_9qualifierE0EEESaIS3_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %23) #11
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %23) #11
  call void @_ZNSt13unordered_mapIjSt6vectorIjSaIjEESt4hashIjESt8equal_toIjESaISt4pairIKjS2_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(56) %17) #11
  call void @llvm.lifetime.end.p0(i64 56, ptr nonnull %17) #11
  br label %.loopexit

.lr.ph198:                                        ; preds = %.lr.ph198.preheader, %.lr.ph198
  %indvars.iv241 = phi i64 [ 0, %.lr.ph198.preheader ], [ %indvars.iv.next242, %.lr.ph198 ]
  %596 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIS_IjSaIjEESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %29, i64 noundef %indvars.iv241) #11
  %597 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIjSaIjEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %596, i64 noundef 0) #11
  %598 = load i32, ptr %597, align 4, !tbaa !29
  %599 = load ptr, ptr %595, align 8, !tbaa !35
  %600 = trunc nuw i64 %indvars.iv241 to i32
  %601 = mul i32 %600, 3
  %602 = zext i32 %601 to i64
  %603 = getelementptr inbounds i32, ptr %599, i64 %602
  store i32 %598, ptr %603, align 4, !tbaa !29
  %604 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIS_IjSaIjEESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %29, i64 noundef %indvars.iv241) #11
  %605 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIjSaIjEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %604, i64 noundef 1) #11
  %606 = load i32, ptr %605, align 4, !tbaa !29
  %607 = load ptr, ptr %595, align 8, !tbaa !35
  %608 = add i32 %601, 1
  %609 = zext i32 %608 to i64
  %610 = getelementptr inbounds i32, ptr %607, i64 %609
  store i32 %606, ptr %610, align 4, !tbaa !29
  %611 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIS_IjSaIjEESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %29, i64 noundef %indvars.iv241) #11
  %612 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIjSaIjEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %611, i64 noundef 2) #11
  %613 = load i32, ptr %612, align 4, !tbaa !29
  %614 = load ptr, ptr %595, align 8, !tbaa !35
  %615 = add i32 %601, 2
  %616 = zext i32 %615 to i64
  %617 = getelementptr inbounds i32, ptr %614, i64 %616
  store i32 %613, ptr %617, align 4, !tbaa !29
  %indvars.iv.next242 = add nuw nsw i64 %indvars.iv241, 1
  %exitcond245.not = icmp eq i64 %indvars.iv.next242, %wide.trip.count244
  br i1 %exitcond245.not, label %._crit_edge199, label %.lr.ph198, !llvm.loop !50

618:                                              ; preds = %551, %543
  %.pn.pn = phi { ptr, i32 } [ %.pn, %543 ], [ %552, %551 ]
  call void @_ZNSt6vectorIN3glm3vecILi3EfLNS0_9qualifierE0EEESaIS3_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %23) #11
  br label %619

619:                                              ; preds = %618, %514
  %.pn.pn.pn = phi { ptr, i32 } [ %.pn.pn, %618 ], [ %515, %514 ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %23) #11
  br label %620

620:                                              ; preds = %619, %506
  %.pn164.pn = phi { ptr, i32 } [ %.pn164, %506 ], [ %.pn.pn.pn, %619 ]
  call void @_ZNSt13unordered_mapIjSt6vectorIjSaIjEESt4hashIjESt8equal_toIjESaISt4pairIKjS2_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(56) %17) #11
  br label %621

621:                                              ; preds = %620, %485
  %.pn164.pn.pn = phi { ptr, i32 } [ %.pn164.pn, %620 ], [ %486, %485 ]
  call void @llvm.lifetime.end.p0(i64 56, ptr nonnull %17) #11
  br label %622

.loopexit:                                        ; preds = %.lr.ph228, %middle.block284, %._crit_edge225, %1, %._crit_edge222, %._crit_edge199
  ret void

622:                                              ; preds = %621, %477
  %.pn175.pn.pn.pn = phi { ptr, i32 } [ %.pn175.pn.pn, %477 ], [ %.pn164.pn.pn, %621 ]
  resume { ptr, i32 } %.pn175.pn.pn.pn
}

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

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

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

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

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

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

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

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

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

; 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 noundef i64 @_ZNKSt6vectorIN3glm3vecILi3EfLNS0_9qualifierE0EEESaIS3_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24)) local_unnamed_addr #0 align 2

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

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

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

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

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

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

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

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

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

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

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

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZN9__gnu_cxxneIPjSt6vectorIjSaIjEEEEbRKNS_17__normal_iteratorIT_T0_EESA_(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8)) local_unnamed_addr #8

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

!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, !26, i64 152}
!6 = !{!"_ZTS4Mesh", !7, i64 0, !26, i64 152, !11, i64 160, !26, i64 184, !15, i64 192, !26, i64 200, !15, i64 208}
!7 = !{!"_ZTS6Object", !8, i64 0, !8, i64 12, !11, i64 24, !16, i64 48, !16, i64 72, !20, i64 96}
!8 = !{!"_ZTSN3glm3vecILi3EfLNS_9qualifierE0EEE", !9, i64 0, !9, i64 4, !9, i64 8}
!9 = !{!"omnipotent char", !10, i64 0}
!10 = !{!"Simple C++ TBAA"}
!11 = !{!"_ZTSSt6vectorIN3glm3vecILi3EfLNS0_9qualifierE0EEESaIS3_EE", !12, i64 0}
!12 = !{!"_ZTSSt12_Vector_baseIN3glm3vecILi3EfLNS0_9qualifierE0EEESaIS3_EE", !13, i64 0}
!13 = !{!"_ZTSNSt12_Vector_baseIN3glm3vecILi3EfLNS0_9qualifierE0EEESaIS3_EE12_Vector_implE", !14, i64 0}
!14 = !{!"_ZTSNSt12_Vector_baseIN3glm3vecILi3EfLNS0_9qualifierE0EEESaIS3_EE17_Vector_impl_dataE", !15, i64 0, !15, i64 8, !15, i64 16}
!15 = !{!"any pointer", !9, i64 0}
!16 = !{!"_ZTSSt6vectorIS_IjSaIjEESaIS1_EE", !17, i64 0}
!17 = !{!"_ZTSSt12_Vector_baseISt6vectorIjSaIjEESaIS2_EE", !18, i64 0}
!18 = !{!"_ZTSNSt12_Vector_baseISt6vectorIjSaIjEESaIS2_EE12_Vector_implE", !19, i64 0}
!19 = !{!"_ZTSNSt12_Vector_baseISt6vectorIjSaIjEESaIS2_EE17_Vector_impl_dataE", !15, i64 0, !15, i64 8, !15, i64 16}
!20 = !{!"_ZTSSt13unordered_mapIjjSt4hashIjESt8equal_toIjESaISt4pairIKjjEEE", !21, i64 0}
!21 = !{!"_ZTSSt10_HashtableIjSt4pairIKjjESaIS2_ENSt8__detail10_Select1stESt8equal_toIjESt4hashIjENS4_18_Mod_range_hashingENS4_20_Default_ranged_hashENS4_20_Prime_rehash_policyENS4_17_Hashtable_traitsILb0ELb0ELb1EEEE", !15, i64 0, !22, i64 8, !23, i64 16, !22, i64 24, !24, i64 32, !15, i64 48}
!22 = !{!"long", !9, i64 0}
!23 = !{!"_ZTSNSt8__detail15_Hash_node_baseE", !15, i64 0}
!24 = !{!"_ZTSNSt8__detail20_Prime_rehash_policyE", !25, i64 0, !22, i64 8}
!25 = !{!"float", !9, i64 0}
!26 = !{!"int", !9, i64 0}
!27 = !{!6, !26, i64 184}
!28 = !{!6, !15, i64 192}
!29 = !{!26, !26, i64 0}
!30 = !{!9, !9, i64 0}
!31 = !{!25, !25, i64 0}
!32 = distinct !{!32, !33}
!33 = !{!"llvm.loop.mustprogress"}
!34 = !{!6, !26, i64 200}
!35 = !{!6, !15, i64 208}
!36 = distinct !{!36, !33, !37, !38}
!37 = !{!"llvm.loop.isvectorized", i32 1}
!38 = !{!"llvm.loop.unroll.runtime.disable"}
!39 = distinct !{!39, !33, !38, !37}
!40 = distinct !{!40, !33}
!41 = !{i64 0, i64 4, !30, i64 4, i64 4, !30, i64 8, i64 4, !30}
!42 = distinct !{!42, !33}
!43 = distinct !{!43, !33}
!44 = distinct !{!44, !33}
!45 = distinct !{!45, !33, !37, !38}
!46 = distinct !{!46, !33, !38, !37}
!47 = distinct !{!47, !33}
!48 = distinct !{!48, !33}
!49 = distinct !{!49, !33}
!50 = distinct !{!50, !33}


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