Dump of assembler code for function main():
tests/vertex_setup.cpp:
	{
   0x0000000000005890 <+0>:	endbr64 
   0x0000000000005894 <+4>:	push   %r14
   0x0000000000005896 <+6>:	push   %r13
   0x0000000000005898 <+8>:	push   %r12
   0x000000000000589a <+10>:	push   %rbp
   0x000000000000589b <+11>:	push   %rbx
   0x000000000000589c <+12>:	sub    $0x40,%rsp

_build/_deps/glbase-src/include/glbase.hpp:
	    GLBASE_GET_GLOBAL(int, debug)
   0x00000000000058a0 <+16>:	mov    0x11719(%rip),%r13        # 0x16fc0

tests/vertex_setup.cpp:
	{
   0x00000000000058a7 <+23>:	mov    %fs:0x28,%rax
   0x00000000000058b0 <+32>:	mov    %rax,0x38(%rsp)
   0x00000000000058b5 <+37>:	xor    %eax,%eax

include/gltraits.hpp:
	GLTRAITS_VALUE_VECTOR( glm::vec,  FLOAT,          glm::value_ptr,           32F,  f,  ,  ,         KEEP, 2, 0, 2, 0, {}, {})
   0x00000000000058b7 <+39>:	test   %r13,%r13
   0x00000000000058ba <+42>:	je     0x58c1 <main()+49>
   0x00000000000058bc <+44>:	call   0x3480 <TLS init function for GLBase::debug_@plt>
   0x00000000000058c1 <+49>:	mov    $0xfffffffffffffff0,%r12
   0x00000000000058c8 <+56>:	mov    %fs:(%r12),%r9d
   0x00000000000058cd <+61>:	test   %r9d,%r9d
   0x00000000000058d0 <+64>:	jg     0x5a74 <main()+484>
   0x00000000000058d6 <+70>:	mov    0x116f3(%rip),%r14        # 0x16fd0
   0x00000000000058dd <+77>:	xor    %r9d,%r9d
   0x00000000000058e0 <+80>:	xor    %ecx,%ecx
   0x00000000000058e2 <+82>:	xor    %edi,%edi
   0x00000000000058e4 <+84>:	mov    $0x68,%r8d
   0x00000000000058ea <+90>:	mov    $0x1406,%edx
   0x00000000000058ef <+95>:	mov    $0x3,%esi
   0x00000000000058f4 <+100>:	call   *(%r14)
   0x00000000000058f7 <+103>:	test   %r13,%r13
   0x00000000000058fa <+106>:	je     0x5901 <main()+113>
   0x00000000000058fc <+108>:	call   0x3480 <TLS init function for GLBase::debug_@plt>
   0x0000000000005901 <+113>:	mov    %fs:(%r12),%r8d
   0x0000000000005906 <+118>:	test   %r8d,%r8d
   0x0000000000005909 <+121>:	jg     0x5c01 <main()+881>
   0x000000000000590f <+127>:	xor    %ecx,%ecx
   0x0000000000005911 <+129>:	mov    $0xc,%r9d
   0x0000000000005917 <+135>:	mov    $0x68,%r8d
   0x000000000000591d <+141>:	mov    $0x1406,%edx
   0x0000000000005922 <+146>:	mov    $0x2,%esi
   0x0000000000005927 <+151>:	mov    $0x1,%edi
   0x000000000000592c <+156>:	call   *(%r14)

	GLTRAITS_VALUE_MATRIXS(glm::mat,  FLOAT,          glm::value_ptr, GL_FALSE, 32F,  f,  ,  ,         KEEP)
   0x000000000000592f <+159>:	test   %r13,%r13
   0x0000000000005932 <+162>:	je     0x5939 <main()+169>
   0x0000000000005934 <+164>:	call   0x3480 <TLS init function for GLBase::debug_@plt>
   0x0000000000005939 <+169>:	mov    %fs:(%r12),%edi
   0x000000000000593e <+174>:	test   %edi,%edi
   0x0000000000005940 <+176>:	jg     0x5bca <main()+826>

tests/vertex_setup.cpp:
	{
   0x0000000000005946 <+182>:	mov    $0x14,%ebx
   0x000000000000594b <+187>:	mov    $0x2,%ebp

include/gltraits.hpp:
	GLTRAITS_VALUE_MATRIXS(glm::mat,  FLOAT,          glm::value_ptr, GL_FALSE, 32F,  f,  ,  ,         KEEP)
   0x0000000000005950 <+192>:	mov    %rbx,%r9
   0x0000000000005953 <+195>:	add    $0xc,%rbx
   0x0000000000005957 <+199>:	mov    %ebp,%edi
   0x0000000000005959 <+201>:	mov    $0x68,%r8d
   0x000000000000595f <+207>:	xor    %ecx,%ecx
   0x0000000000005961 <+209>:	mov    $0x1406,%edx
   0x0000000000005966 <+214>:	mov    $0x3,%esi
   0x000000000000596b <+219>:	add    $0x1,%ebp
   0x000000000000596e <+222>:	call   *(%r14)
   0x0000000000005971 <+225>:	cmp    $0x38,%rbx
   0x0000000000005975 <+229>:	jne    0x5950 <main()+192>

	GLTRAITS_VALUE_VECTOR( glm::ivec, INT,            glm::value_ptr,           32I,  i,  I, _INTEGER, OMIT, 2, 0, 3, 0, {}, {})
   0x0000000000005977 <+231>:	test   %r13,%r13
   0x000000000000597a <+234>:	je     0x5981 <main()+241>
   0x000000000000597c <+236>:	call   0x3480 <TLS init function for GLBase::debug_@plt>
   0x0000000000005981 <+241>:	mov    %fs:(%r12),%esi
   0x0000000000005986 <+246>:	test   %esi,%esi
   0x0000000000005988 <+248>:	jg     0x5b93 <main()+771>
   0x000000000000598e <+254>:	mov    $0x38,%r8d
   0x0000000000005994 <+260>:	mov    $0x68,%ecx
   0x0000000000005999 <+265>:	mov    $0x1404,%edx
   0x000000000000599e <+270>:	mov    0x11633(%rip),%rbx        # 0x16fd8
   0x00000000000059a5 <+277>:	mov    $0x4,%esi
   0x00000000000059aa <+282>:	mov    $0x5,%edi
   0x00000000000059af <+287>:	call   *(%rbx)

	GLTRAITS_VALUE_VECTOR( glm::vec,  FLOAT,          glm::value_ptr,           32F,  f,  ,  ,         KEEP, 2, 0, 2, 0, {}, {})
   0x00000000000059b1 <+289>:	test   %r13,%r13
   0x00000000000059b4 <+292>:	je     0x59bb <main()+299>
   0x00000000000059b6 <+294>:	call   0x3480 <TLS init function for GLBase::debug_@plt>
   0x00000000000059bb <+299>:	mov    %fs:(%r12),%ecx
   0x00000000000059c0 <+304>:	test   %ecx,%ecx
   0x00000000000059c2 <+306>:	jg     0x5b5c <main()+716>
   0x00000000000059c8 <+312>:	xor    %ecx,%ecx
   0x00000000000059ca <+314>:	mov    $0x48,%r9d
   0x00000000000059d0 <+320>:	mov    $0x68,%r8d
   0x00000000000059d6 <+326>:	mov    $0x1406,%edx
   0x00000000000059db <+331>:	mov    $0x4,%esi
   0x00000000000059e0 <+336>:	mov    $0x6,%edi
   0x00000000000059e5 <+341>:	call   *(%r14)

	GLTRAITS_VALUE_SCALAR( GLubyte,   UNSIGNED_BYTE,  UNSIGNED_INT,             8UI,  ui, I, _INTEGER, OMIT, 3, 0, 3, 0, {}, {})
   0x00000000000059e8 <+344>:	test   %r13,%r13
   0x00000000000059eb <+347>:	je     0x59f2 <main()+354>
   0x00000000000059ed <+349>:	call   0x3480 <TLS init function for GLBase::debug_@plt>
   0x00000000000059f2 <+354>:	mov    %fs:(%r12),%edx
   0x00000000000059f7 <+359>:	test   %edx,%edx
   0x00000000000059f9 <+361>:	jg     0x5b25 <main()+661>
   0x00000000000059ff <+367>:	mov    $0x58,%r8d
   0x0000000000005a05 <+373>:	mov    $0x68,%ecx
   0x0000000000005a0a <+378>:	mov    $0x1401,%edx
   0x0000000000005a0f <+383>:	mov    $0x1,%esi
   0x0000000000005a14 <+388>:	mov    $0x7,%edi
   0x0000000000005a19 <+393>:	call   *(%rbx)

	GLTRAITS_VALUE_SCALAR( GLushort,  UNSIGNED_SHORT, UNSIGNED_INT,             16UI, ui, I, _INTEGER, OMIT, 3, 0, 3, 0, {}, {})
	GLTRAITS_VALUE_SCALAR( GLuint,    UNSIGNED_INT,   UNSIGNED_INT,             32UI, ui, I, _INTEGER, OMIT, 3, 0, 3, 0, {}, {})
	GLTRAITS_VALUE_SCALAR( GLdouble,  DOUBLE,         DOUBLE,                   ED,   d,  L, ,         OMIT, 4, 0, 4, 1, "GL_ARB_gpu_shader_fp64", "GL_ARB_vertex_attrib_64bit")
   0x0000000000005a1b <+395>:	test   %r13,%r13
   0x0000000000005a1e <+398>:	je     0x5a25 <main()+405>
   0x0000000000005a20 <+400>:	call   0x3480 <TLS init function for GLBase::debug_@plt>
   0x0000000000005a25 <+405>:	mov    %fs:(%r12),%eax
   0x0000000000005a2a <+410>:	test   %eax,%eax
   0x0000000000005a2c <+412>:	jg     0x5aab <main()+539>
   0x0000000000005a2e <+414>:	mov    $0x60,%r8d
   0x0000000000005a34 <+420>:	mov    $0x68,%ecx
   0x0000000000005a39 <+425>:	mov    $0x140a,%edx
   0x0000000000005a3e <+430>:	mov    0x1156b(%rip),%rax        # 0x16fb0
   0x0000000000005a45 <+437>:	mov    $0x1,%esi
   0x0000000000005a4a <+442>:	mov    $0x8,%edi
   0x0000000000005a4f <+447>:	call   *(%rax)

tests/vertex_setup.cpp:
	}
   0x0000000000005a51 <+449>:	mov    0x38(%rsp),%rax
   0x0000000000005a56 <+454>:	sub    %fs:0x28,%rax
   0x0000000000005a5f <+463>:	jne    0x5c38 <main()+936>
   0x0000000000005a65 <+469>:	add    $0x40,%rsp
   0x0000000000005a69 <+473>:	xor    %eax,%eax
   0x0000000000005a6b <+475>:	pop    %rbx
   0x0000000000005a6c <+476>:	pop    %rbp
   0x0000000000005a6d <+477>:	pop    %r12
   0x0000000000005a6f <+479>:	pop    %r13
   0x0000000000005a71 <+481>:	pop    %r14
   0x0000000000005a73 <+483>:	ret    

/usr/include/c++/11/bits/basic_string.h:
		: allocator_type(std::move(__a)), _M_p(__dat) { }
   0x0000000000005a74 <+484>:	lea    0x10(%rsp),%rbp
   0x0000000000005a79 <+489>:	lea    0x20(%rsp),%rax

include/gltraits.hpp:
	GLTRAITS_VALUE_VECTOR( glm::vec,  FLOAT,          glm::value_ptr,           32F,  f,  ,  ,         KEEP, 2, 0, 2, 0, {}, {})
   0x0000000000005a7e <+494>:	mov    $0x2,%edi

/usr/include/c++/11/bits/basic_string.h:
	      { _M_string_length = __length; }
   0x0000000000005a83 <+499>:	movq   $0x0,0x18(%rsp)

include/gltraits.hpp:
	GLTRAITS_VALUE_VECTOR( glm::vec,  FLOAT,          glm::value_ptr,           32F,  f,  ,  ,         KEEP, 2, 0, 2, 0, {}, {})
   0x0000000000005a8c <+508>:	mov    %rbp,%rsi

/usr/include/c++/11/bits/basic_string.h:
		: allocator_type(std::move(__a)), _M_p(__dat) { }
   0x0000000000005a8f <+511>:	mov    %rax,0x10(%rsp)

/usr/include/c++/11/bits/char_traits.h:
	      { __c1 = __c2; }
   0x0000000000005a94 <+516>:	movb   $0x0,0x20(%rsp)

include/gltraits.hpp:
	GLTRAITS_VALUE_VECTOR( glm::vec,  FLOAT,          glm::value_ptr,           32F,  f,  ,  ,         KEEP, 2, 0, 2, 0, {}, {})
   0x0000000000005a99 <+521>:	call   0xebc0 <GLBase::check_supported(std::array<int, 2ul>, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)>

/usr/include/c++/11/bits/basic_string.h:
	      { _M_dispose(); }
   0x0000000000005a9e <+526>:	mov    %rbp,%rdi
   0x0000000000005aa1 <+529>:	call   0x3710 <std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::_M_dispose()@plt>
   0x0000000000005aa6 <+534>:	jmp    0x58d6 <main()+70>

	      basic_string(const _CharT* __s, const _Alloc& __a = _Alloc())
   0x0000000000005aab <+539>:	lea    0x10(%rsp),%rbp
   0x0000000000005ab0 <+544>:	lea    0x20(%rsp),%rax

/usr/include/c++/11/bits/basic_string.tcc:
		    _M_data(_M_create(__dnew, size_type(0)));
   0x0000000000005ab5 <+549>:	xor    %edx,%edx

		size_type __dnew = static_cast<size_type>(std::distance(__beg, __end));
   0x0000000000005ab7 <+551>:	movq   $0x1a,0x8(%rsp)

	
		if (__dnew > size_type(_S_local_capacity))
		  {
		    _M_data(_M_create(__dnew, size_type(0)));
   0x0000000000005ac0 <+560>:	lea    0x8(%rsp),%rsi
   0x0000000000005ac5 <+565>:	mov    %rbp,%rdi

/usr/include/c++/11/bits/basic_string.h:
		: allocator_type(__a), _M_p(__dat) { }
   0x0000000000005ac8 <+568>:	mov    %rax,0x10(%rsp)

/usr/include/c++/11/bits/basic_string.tcc:
	      basic_string<_CharT, _Traits, _Alloc>::
   0x0000000000005acd <+573>:	call   0x38a0 <std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::_M_create(unsigned long&, unsigned long)@plt>

		    _M_capacity(__dnew);
		  }
	
		// Check for out_of_range and length_error exceptions.
		__try
		  { this->_S_copy_chars(_M_data(), __beg, __end); }
   0x0000000000005ad2 <+578>:	lea    0xb545(%rip),%rdx        # 0x1101e

		    _M_data(_M_create(__dnew, size_type(0)));
   0x0000000000005ad9 <+585>:	mov    %rax,%rdi

/usr/include/c++/11/bits/basic_string.h:
	      { _M_dataplus._M_p = __p; }
   0x0000000000005adc <+588>:	mov    %rax,0x10(%rsp)

	
	      pointer
	      _M_data() const
	      { return _M_dataplus._M_p; }
	
	      pointer
	      _M_local_data()
	      {
	#if __cplusplus >= 201103L
		return std::pointer_traits<pointer>::pointer_to(*_M_local_buf);
	#else
		return pointer(_M_local_buf);
	#endif
	      }
	
	      const_pointer
	      _M_local_data() const
	      {
	#if __cplusplus >= 201103L
		return std::pointer_traits<const_pointer>::pointer_to(*_M_local_buf);
	#else
		return const_pointer(_M_local_buf);
	#endif
	      }
	
	      void
	      _M_capacity(size_type __capacity)
	      { _M_allocated_capacity = __capacity; }
   0x0000000000005ae1 <+593>:	mov    0x8(%rsp),%rax

/usr/include/c++/11/bits/basic_string.tcc:
		  { this->_S_copy_chars(_M_data(), __beg, __end); }
   0x0000000000005ae6 <+598>:	lea    -0x1a(%rdx),%rsi

/usr/include/c++/11/bits/basic_string.h:
	      { _M_allocated_capacity = __capacity; }
   0x0000000000005aea <+602>:	mov    %rax,0x20(%rsp)

/usr/include/c++/11/bits/basic_string.tcc:
		  { this->_S_copy_chars(_M_data(), __beg, __end); }
   0x0000000000005aef <+607>:	call   0x36c0 <std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::_S_copy_chars(char*, char const*, char const*)@plt>

		__catch(...)
		  {
		    _M_dispose();
		    __throw_exception_again;
		  }
	
		_M_set_length(__dnew);
   0x0000000000005af4 <+612>:	mov    0x8(%rsp),%rax

/usr/include/c++/11/bits/char_traits.h:
	      { __c1 = __c2; }
   0x0000000000005af9 <+617>:	mov    0x10(%rsp),%rdx

include/gltraits.hpp:
	GLTRAITS_VALUE_SCALAR( GLdouble,  DOUBLE,         DOUBLE,                   ED,   d,  L, ,         OMIT, 4, 0, 4, 1, "GL_ARB_gpu_shader_fp64", "GL_ARB_vertex_attrib_64bit")
   0x0000000000005afe <+622>:	mov    %rbp,%rsi
   0x0000000000005b01 <+625>:	mov    $0x40000001,%edi

/usr/include/c++/11/bits/basic_string.h:
	      { _M_string_length = __length; }
   0x0000000000005b06 <+630>:	mov    %rax,0x18(%rsp)

include/gltraits.hpp:
	GLTRAITS_VALUE_SCALAR( GLdouble,  DOUBLE,         DOUBLE,                   ED,   d,  L, ,         OMIT, 4, 0, 4, 1, "GL_ARB_gpu_shader_fp64", "GL_ARB_vertex_attrib_64bit")
   0x0000000000005b0b <+635>:	shl    $0x2,%rdi

/usr/include/c++/11/bits/char_traits.h:
	      { __c1 = __c2; }
   0x0000000000005b0f <+639>:	movb   $0x0,(%rdx,%rax,1)

include/gltraits.hpp:
	GLTRAITS_VALUE_SCALAR( GLdouble,  DOUBLE,         DOUBLE,                   ED,   d,  L, ,         OMIT, 4, 0, 4, 1, "GL_ARB_gpu_shader_fp64", "GL_ARB_vertex_attrib_64bit")
   0x0000000000005b13 <+643>:	call   0xebc0 <GLBase::check_supported(std::array<int, 2ul>, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)>

/usr/include/c++/11/bits/basic_string.h:
	      { _M_dispose(); }
   0x0000000000005b18 <+648>:	mov    %rbp,%rdi
   0x0000000000005b1b <+651>:	call   0x3710 <std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::_M_dispose()@plt>
   0x0000000000005b20 <+656>:	jmp    0x5a2e <main()+414>

		: allocator_type(std::move(__a)), _M_p(__dat) { }
   0x0000000000005b25 <+661>:	lea    0x10(%rsp),%rbp
   0x0000000000005b2a <+666>:	lea    0x20(%rsp),%rax

include/gltraits.hpp:
	GLTRAITS_VALUE_SCALAR( GLubyte,   UNSIGNED_BYTE,  UNSIGNED_INT,             8UI,  ui, I, _INTEGER, OMIT, 3, 0, 3, 0, {}, {})
   0x0000000000005b2f <+671>:	mov    $0x3,%edi

/usr/include/c++/11/bits/basic_string.h:
	      { _M_string_length = __length; }
   0x0000000000005b34 <+676>:	movq   $0x0,0x18(%rsp)

include/gltraits.hpp:
	GLTRAITS_VALUE_SCALAR( GLubyte,   UNSIGNED_BYTE,  UNSIGNED_INT,             8UI,  ui, I, _INTEGER, OMIT, 3, 0, 3, 0, {}, {})
   0x0000000000005b3d <+685>:	mov    %rbp,%rsi

/usr/include/c++/11/bits/basic_string.h:
		: allocator_type(std::move(__a)), _M_p(__dat) { }
   0x0000000000005b40 <+688>:	mov    %rax,0x10(%rsp)

/usr/include/c++/11/bits/char_traits.h:
	      { __c1 = __c2; }
   0x0000000000005b45 <+693>:	movb   $0x0,0x20(%rsp)

include/gltraits.hpp:
	GLTRAITS_VALUE_SCALAR( GLubyte,   UNSIGNED_BYTE,  UNSIGNED_INT,             8UI,  ui, I, _INTEGER, OMIT, 3, 0, 3, 0, {}, {})
   0x0000000000005b4a <+698>:	call   0xebc0 <GLBase::check_supported(std::array<int, 2ul>, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)>

/usr/include/c++/11/bits/basic_string.h:
	      { _M_dispose(); }
   0x0000000000005b4f <+703>:	mov    %rbp,%rdi
   0x0000000000005b52 <+706>:	call   0x3710 <std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::_M_dispose()@plt>
   0x0000000000005b57 <+711>:	jmp    0x59ff <main()+367>

		: allocator_type(std::move(__a)), _M_p(__dat) { }
   0x0000000000005b5c <+716>:	lea    0x10(%rsp),%rbp
   0x0000000000005b61 <+721>:	lea    0x20(%rsp),%rax

include/gltraits.hpp:
	GLTRAITS_VALUE_VECTOR( glm::vec,  FLOAT,          glm::value_ptr,           32F,  f,  ,  ,         KEEP, 2, 0, 2, 0, {}, {})
   0x0000000000005b66 <+726>:	mov    $0x2,%edi

/usr/include/c++/11/bits/basic_string.h:
	      { _M_string_length = __length; }
   0x0000000000005b6b <+731>:	movq   $0x0,0x18(%rsp)

include/gltraits.hpp:
	GLTRAITS_VALUE_VECTOR( glm::vec,  FLOAT,          glm::value_ptr,           32F,  f,  ,  ,         KEEP, 2, 0, 2, 0, {}, {})
   0x0000000000005b74 <+740>:	mov    %rbp,%rsi

/usr/include/c++/11/bits/basic_string.h:
		: allocator_type(std::move(__a)), _M_p(__dat) { }
   0x0000000000005b77 <+743>:	mov    %rax,0x10(%rsp)

/usr/include/c++/11/bits/char_traits.h:
	      { __c1 = __c2; }
   0x0000000000005b7c <+748>:	movb   $0x0,0x20(%rsp)

include/gltraits.hpp:
	GLTRAITS_VALUE_VECTOR( glm::vec,  FLOAT,          glm::value_ptr,           32F,  f,  ,  ,         KEEP, 2, 0, 2, 0, {}, {})
   0x0000000000005b81 <+753>:	call   0xebc0 <GLBase::check_supported(std::array<int, 2ul>, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)>

/usr/include/c++/11/bits/basic_string.h:
	      { _M_dispose(); }
   0x0000000000005b86 <+758>:	mov    %rbp,%rdi
   0x0000000000005b89 <+761>:	call   0x3710 <std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::_M_dispose()@plt>
   0x0000000000005b8e <+766>:	jmp    0x59c8 <main()+312>

		: allocator_type(std::move(__a)), _M_p(__dat) { }
   0x0000000000005b93 <+771>:	lea    0x10(%rsp),%rbp
   0x0000000000005b98 <+776>:	lea    0x20(%rsp),%rax

include/gltraits.hpp:
	GLTRAITS_VALUE_VECTOR( glm::ivec, INT,            glm::value_ptr,           32I,  i,  I, _INTEGER, OMIT, 2, 0, 3, 0, {}, {})
   0x0000000000005b9d <+781>:	mov    $0x3,%edi

/usr/include/c++/11/bits/basic_string.h:
	      { _M_string_length = __length; }
   0x0000000000005ba2 <+786>:	movq   $0x0,0x18(%rsp)

include/gltraits.hpp:
	GLTRAITS_VALUE_VECTOR( glm::ivec, INT,            glm::value_ptr,           32I,  i,  I, _INTEGER, OMIT, 2, 0, 3, 0, {}, {})
   0x0000000000005bab <+795>:	mov    %rbp,%rsi

/usr/include/c++/11/bits/basic_string.h:
		: allocator_type(std::move(__a)), _M_p(__dat) { }
   0x0000000000005bae <+798>:	mov    %rax,0x10(%rsp)

/usr/include/c++/11/bits/char_traits.h:
	      { __c1 = __c2; }
   0x0000000000005bb3 <+803>:	movb   $0x0,0x20(%rsp)

include/gltraits.hpp:
	GLTRAITS_VALUE_VECTOR( glm::ivec, INT,            glm::value_ptr,           32I,  i,  I, _INTEGER, OMIT, 2, 0, 3, 0, {}, {})
   0x0000000000005bb8 <+808>:	call   0xebc0 <GLBase::check_supported(std::array<int, 2ul>, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)>

/usr/include/c++/11/bits/basic_string.h:
	      { _M_dispose(); }
   0x0000000000005bbd <+813>:	mov    %rbp,%rdi
   0x0000000000005bc0 <+816>:	call   0x3710 <std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::_M_dispose()@plt>
   0x0000000000005bc5 <+821>:	jmp    0x598e <main()+254>

		: allocator_type(std::move(__a)), _M_p(__dat) { }
   0x0000000000005bca <+826>:	lea    0x10(%rsp),%rbp
   0x0000000000005bcf <+831>:	lea    0x20(%rsp),%rax

include/gltraits.hpp:
	GLTRAITS_VALUE_MATRIXS(glm::mat,  FLOAT,          glm::value_ptr, GL_FALSE, 32F,  f,  ,  ,         KEEP)
   0x0000000000005bd4 <+836>:	mov    $0x2,%edi

/usr/include/c++/11/bits/basic_string.h:
	      { _M_string_length = __length; }
   0x0000000000005bd9 <+841>:	movq   $0x0,0x18(%rsp)

include/gltraits.hpp:
	GLTRAITS_VALUE_MATRIXS(glm::mat,  FLOAT,          glm::value_ptr, GL_FALSE, 32F,  f,  ,  ,         KEEP)
   0x0000000000005be2 <+850>:	mov    %rbp,%rsi

/usr/include/c++/11/bits/basic_string.h:
		: allocator_type(std::move(__a)), _M_p(__dat) { }
   0x0000000000005be5 <+853>:	mov    %rax,0x10(%rsp)

/usr/include/c++/11/bits/char_traits.h:
	      { __c1 = __c2; }
   0x0000000000005bea <+858>:	movb   $0x0,0x20(%rsp)

include/gltraits.hpp:
	GLTRAITS_VALUE_MATRIXS(glm::mat,  FLOAT,          glm::value_ptr, GL_FALSE, 32F,  f,  ,  ,         KEEP)
   0x0000000000005bef <+863>:	call   0xebc0 <GLBase::check_supported(std::array<int, 2ul>, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)>

/usr/include/c++/11/bits/basic_string.h:
	      { _M_dispose(); }
   0x0000000000005bf4 <+868>:	mov    %rbp,%rdi
   0x0000000000005bf7 <+871>:	call   0x3710 <std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::_M_dispose()@plt>
   0x0000000000005bfc <+876>:	jmp    0x5946 <main()+182>

		: allocator_type(std::move(__a)), _M_p(__dat) { }
   0x0000000000005c01 <+881>:	lea    0x10(%rsp),%rbp
   0x0000000000005c06 <+886>:	lea    0x20(%rsp),%rax

include/gltraits.hpp:
	GLTRAITS_VALUE_VECTOR( glm::vec,  FLOAT,          glm::value_ptr,           32F,  f,  ,  ,         KEEP, 2, 0, 2, 0, {}, {})
   0x0000000000005c0b <+891>:	mov    $0x2,%edi

/usr/include/c++/11/bits/basic_string.h:
	      { _M_string_length = __length; }
   0x0000000000005c10 <+896>:	movq   $0x0,0x18(%rsp)

include/gltraits.hpp:
	GLTRAITS_VALUE_VECTOR( glm::vec,  FLOAT,          glm::value_ptr,           32F,  f,  ,  ,         KEEP, 2, 0, 2, 0, {}, {})
   0x0000000000005c19 <+905>:	mov    %rbp,%rsi

/usr/include/c++/11/bits/basic_string.h:
		: allocator_type(std::move(__a)), _M_p(__dat) { }
   0x0000000000005c1c <+908>:	mov    %rax,0x10(%rsp)

/usr/include/c++/11/bits/char_traits.h:
	      { __c1 = __c2; }
   0x0000000000005c21 <+913>:	movb   $0x0,0x20(%rsp)

include/gltraits.hpp:
	GLTRAITS_VALUE_VECTOR( glm::vec,  FLOAT,          glm::value_ptr,           32F,  f,  ,  ,         KEEP, 2, 0, 2, 0, {}, {})
   0x0000000000005c26 <+918>:	call   0xebc0 <GLBase::check_supported(std::array<int, 2ul>, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)>

/usr/include/c++/11/bits/basic_string.h:
	      { _M_dispose(); }
   0x0000000000005c2b <+923>:	mov    %rbp,%rdi
   0x0000000000005c2e <+926>:	call   0x3710 <std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::_M_dispose()@plt>
   0x0000000000005c33 <+931>:	jmp    0x590f <main()+127>

tests/vertex_setup.cpp:
	}
   0x0000000000005c38 <+936>:	call   0x36e0 <__stack_chk_fail@plt>
   0x0000000000005c3d <+941>:	endbr64 

/usr/include/c++/11/bits/basic_string.h:
	      { _M_dispose(); }
   0x0000000000005c41 <+945>:	mov    %rax,%r12
   0x0000000000005c44 <+948>:	jmp    0x5c6a <main()+986>
   0x0000000000005c46 <+950>:	endbr64 
   0x0000000000005c4a <+954>:	jmp    0x5c41 <main()+945>
   0x0000000000005c4c <+956>:	endbr64 
   0x0000000000005c50 <+960>:	jmp    0x5c41 <main()+945>
   0x0000000000005c52 <+962>:	endbr64 
   0x0000000000005c56 <+966>:	jmp    0x5c41 <main()+945>
   0x0000000000005c58 <+968>:	endbr64 
   0x0000000000005c5c <+972>:	jmp    0x5c41 <main()+945>
   0x0000000000005c5e <+974>:	endbr64 
   0x0000000000005c62 <+978>:	jmp    0x5c41 <main()+945>
   0x0000000000005c64 <+980>:	endbr64 
   0x0000000000005c68 <+984>:	jmp    0x5c41 <main()+945>
   0x0000000000005c6a <+986>:	mov    %rbp,%rdi
   0x0000000000005c6d <+989>:	call   0x3710 <std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::_M_dispose()@plt>
   0x0000000000005c72 <+994>:	mov    %r12,%rdi
   0x0000000000005c75 <+997>:	call   0x3890 <_Unwind_Resume@plt>
End of assembler dump.