Function at 0x4a1a50
Capabilities:
Allocate thread local storage
Get thread local storage value
Set thread local storage value

Disassembly:
push r15
push r14
push r13
push r12
push rbp
push rdi
push rsi
push rbx
sub rsp, 0xb8
mov r15, qword [sym.imp.KERNEL32.dll_GetProcessHeap]
call r15
mov r8d, 0x98
xor edx, edx
mov rcx, rax
call qword [sym.imp.KERNEL32.dll_HeapAlloc]
mov rbx, rax
test rax, rax
je 0x4a22f7
lea rax, [0x0094e610]
pxor xmm0, xmm0
xor r9d, r9d
xor ecx, ecx
mov qword [rbx], rax
lea rax, [rbx + 0x30]
xor r8d, r8d
mov r14, qword [sym.imp.KERNEL32.dll_CreateEventA]
mov dword [rbx + 8], 0
mov edx, 1
mov dword [rbx + 0x20], 0
mov dword [rbx + 0x30], 0
mov qword [rbx + 0x38], 0
mov qword [rbx + 0x40], rax
mov qword [rbx + 0x48], rax
mov qword [rbx + 0x50], 0
movups xmmword [rbx + 0x10], xmm0
movups xmmword [rbx + 0x58], xmm0
movups xmmword [rbx + 0x68], xmm0
movups xmmword [rbx + 0x78], xmm0
call r14
test rax, rax
je 0x4a21fd
mov qword [rbx + 0x88], rax
lea rax, method.boost._anonymous_namespace_::externally_launched_thread::externally_launched_thread__
lea rsi, [0x009cc708]
mov qword [rbx], rax
mov rdi, rsi
mov rbp, rsi
movabs rax, 0x7f0725e3c15730e2
add dword [rbx + 8], 1
mov byte [rbx + 0x90], 0
mov qword [rsp + 0x40], rax
mov eax, esi
shr al, 4
mov byte [rsp + 0x48], 0
add eax, 0x41
mov byte [rsp + 0x58], 0
mov byte [rsp + 0x28], al
mov rax, rsi
mov qword [rsp + 0x50], 0
sar rax, 8
and eax, 0xf
add eax, 0x41
mov byte [rsp + 0x35], al
mov rax, rsi
sar rax, 0xc
and eax, 0xf
add eax, 0x41
mov byte [rsp + 0x36], al
mov rax, rsi
sar rax, 0x10
and eax, 0xf
add eax, 0x41
mov byte [rsp + 0x37], al
mov rax, rsi
sar rax, 0x14
and eax, 0xf
add eax, 0x41
mov byte [rsp + 0x38], al
mov rax, rsi
sar rax, 0x18
and eax, 0xf
add eax, 0x41
mov byte [rsp + 0x39], al
mov rax, rsi
sar rax, 0x1c
and eax, 0xf
add eax, 0x41
mov byte [rsp + 0x3a], al
mov rax, rsi
sar rax, 0x20
and eax, 0xf
add eax, 0x41
mov byte [rsp + 0x3b], al
mov rax, rsi
sar rax, 0x24
and eax, 0xf
add eax, 0x41
mov byte [rsp + 0x3c], al
mov rax, rsi
sar rax, 0x28
and eax, 0xf
add eax, 0x41
mov byte [rsp + 0x3d], al
mov rax, rsi
sar rax, 0x2c
and eax, 0xf
add eax, 0x41
sar rdi, 0x34
mov byte [rsp + 0x3e], al
mov rax, rsi
sar rbp, 0x38
and edi, 0xf
sar rax, 0x30
and ebp, 0xf
add edi, 0x41
and eax, 0xf
add ebp, 0x41
add eax, 0x41
mov byte [rsp + 0x3f], al
mov rax, rsi
shr rax, 0x3c
mov r13, rax
add r13d, 0x41
jmp 0x4a1c69
lock add dword [0x009cc70c], 1
mov byte [rsp + 0x48], 1
mov eax, dword [0x009cc708]
cmp eax, dword [rsp + 0x40]
je 0x4a1cec
mov rcx, qword [rsp + 0x50]
test rcx, rcx
je 0x4a1d28
xor r8d, r8d
mov edx, 0xffffffff
call qword [sym.imp.KERNEL32.dll_WaitForSingleObjectEx]
mov eax, dword [0x009cc708]
cmp eax, dword [rsp + 0x40]
je 0x4a1cec
mov edx, dword [rsp + 0x44]
xor eax, eax
lock cmpxchg dword [0x009cc708], edx
test eax, eax
je 0x4a1c98
cmp byte [rsp + 0x48], 0
je 0x4a1c30
mov rcx, qword [rsp + 0x50]
jmp 0x4a1c5b
mov r12, qword [rsp + 0x50]
test r12, r12
je 0x4a1d68
mov rcx, r12
call qword [sym.imp.KERNEL32.dll_ResetEvent]
call method.boost.tss_cleanup_implemented__
call qword [sym.imp.KERNEL32.dll_TlsAlloc]
cmp byte [rsp + 0x48], 0
mov dword [0x00865180], eax
je 0x4a2160
mov eax, dword [rsp + 0x40]
xchg dword [0x009cc708], eax
mov r12, qword [rsp + 0x50]
test r12, r12
je 0x4a2178
mov rcx, r12
call qword [sym.imp.KERNEL32.dll_SetEvent]
mov rcx, qword [rsp + 0x50]
lea rax, [rcx - 1]
cmp rax, 0xfffffffffffffffd
jbe 0x4a1dd8
mov ecx, dword [0x00865180]
cmp ecx, 0xffffffff
jne 0x4a1db0
xor eax, eax
add rsp, 0xb8
pop rbx
pop rsi
pop rdi
pop rbp
pop r12
pop r13
pop r14
pop r15
ret
cmp byte [rsp + 0x58], 0
je 0x4a1fc0
lea r9, [rsp + 0x58]
xor r8d, r8d
mov edx, 1
xor ecx, ecx
call r14
mov rcx, qword [rsp + 0x50]
mov r12, rax
lea rax, [rcx - 1]
cmp rax, 0xfffffffffffffffd
jbe 0x4a1fb0
mov qword [rsp + 0x50], r12
jmp 0x4a1c69
cmp byte [rsp + 0x58], 0
je 0x4a1e10
mov ecx, 0x100002
lea r8, [rsp + 0x58]
xor edx, edx
call qword [sym.imp.KERNEL32.dll_OpenEventA]
mov rcx, qword [rsp + 0x50]
mov r12, rax
lea rax, [rcx - 1]
cmp rax, 0xfffffffffffffffd
jbe 0x4a1df0
mov qword [rsp + 0x50], r12
test r12, r12
je 0x4a1caf
jmp 0x4a1ca6
mov rdx, rbx
call qword [sym.imp.KERNEL32.dll_TlsSetValue]
mov ecx, dword [0x00865180]
cmp ecx, 0xffffffff
je 0x4a1d0e
call qword [sym.imp.KERNEL32.dll_TlsGetValue]
jmp 0x4a1d10
call qword [sym.imp.KERNEL32.dll_CloseHandle]
mov ecx, dword [0x00865180]
cmp ecx, 0xffffffff
je 0x4a1d0e
jmp 0x4a1db0
call qword [sym.imp.KERNEL32.dll_CloseHandle]
mov qword [rsp + 0x50], r12
test r12, r12
je 0x4a1caf
jmp 0x4a1ca6
mov eax, dword [0x009531d0]
movdqu xmm4, xmmword [str.LocalC15730E2_145C_4c5e_B005_3BC753F42475_once_flag]
and esi, 0xf
movdqu xmm5, xmmword [0x009531b0]
add esi, 0x41
mov dword [rsp + 0x88], eax
movzx eax, word [0x009531d4]
movups xmmword [rsp + 0x58], xmm4
movdqu xmm4, xmmword [0x009531c0]
mov word [rsp + 0x8c], ax
movzx eax, byte [rsp + 0x28]
movups xmmword [rsp + 0x68], xmm5
mov byte [rsp + 0x8f], al
movzx eax, byte [rsp + 0x35]
movups xmmword [rsp + 0x78], xmm4
mov byte [rsp + 0x90], al
movzx eax, byte [rsp + 0x36]
mov byte [rsp + 0x8e], sil
mov byte [rsp + 0x91], al
movzx eax, byte [rsp + 0x37]
mov byte [rsp + 0x92], al
movzx eax, byte [rsp + 0x38]
mov byte [rsp + 0x93], al
movzx eax, byte [rsp + 0x39]
mov byte [rsp + 0x94], al
movzx eax, byte [rsp + 0x3a]
mov byte [rsp + 0x95], al
movzx eax, byte [rsp + 0x3b]
mov byte [rsp + 0x96], al
movzx eax, byte [rsp + 0x3c]
mov byte [rsp + 0x97], al
movzx eax, byte [rsp + 0x3d]
mov byte [rsp + 0x98], al
movzx eax, byte [rsp + 0x3e]
mov byte [rsp + 0x99], al
movzx eax, byte [rsp + 0x3f]
mov byte [rsp + 0x9b], dil
mov byte [rsp + 0x9a], al
mov byte [rsp + 0x9c], bpl
mov byte [rsp + 0x9d], r13b
mov byte [rsp + 0x9e], 0
call qword [sym.imp.KERNEL32.dll_GetCurrentProcessId]
mov byte [rsp + 0xa6], 0
mov edx, eax
and edx, 0xf
add edx, 0x41
mov byte [rsp + 0x9e], dl
mov edx, eax
shr dl, 4
add edx, 0x41
mov byte [rsp + 0x9f], dl
mov edx, eax
shr edx, 8
and edx, 0xf
add edx, 0x41
mov byte [rsp + 0xa0], dl
mov edx, eax
shr edx, 0xc
and edx, 0xf
add edx, 0x41
mov byte [rsp + 0xa1], dl
mov edx, eax
shr edx, 0x10
and edx, 0xf
add edx, 0x41
mov byte [rsp + 0xa2], dl
mov edx, eax
shr edx, 0x14
and edx, 0xf
add edx, 0x41
mov byte [rsp + 0xa3], dl
mov edx, eax
shr eax, 0x1c
shr edx, 0x18
add eax, 0x41
and edx, 0xf
mov byte [rsp + 0xa5], al
add edx, 0x41
mov byte [rsp + 0xa4], dl
jmp 0x4a1d73
call qword [sym.imp.KERNEL32.dll_CloseHandle]
jmp 0x4a1d5b
mov eax, dword [0x009531d0]
movdqu xmm1, xmmword [str.LocalC15730E2_145C_4c5e_B005_3BC753F42475_once_flag]
movdqu xmm2, xmmword [0x009531b0]
movdqu xmm3, xmmword [0x009531c0]
mov dword [rsp + 0x88], eax
movzx eax, word [0x009531d4]
movups xmmword [rsp + 0x58], xmm1
mov word [rsp + 0x8c], ax
mov eax, esi
and eax, 0xf
movups xmmword [rsp + 0x68], xmm2
add eax, 0x41
movups xmmword [rsp + 0x78], xmm3
mov byte [rsp + 0x8e], al
movzx eax, byte [rsp + 0x28]
mov byte [rsp + 0x8f], al
movzx eax, byte [rsp + 0x35]
mov byte [rsp + 0x90], al
movzx eax, byte [rsp + 0x36]
mov byte [rsp + 0x91], al
movzx eax, byte [rsp + 0x37]
mov byte [rsp + 0x92], al
movzx eax, byte [rsp + 0x38]
mov byte [rsp + 0x93], al
movzx eax, byte [rsp + 0x39]
mov byte [rsp + 0x94], al
movzx eax, byte [rsp + 0x3a]
mov byte [rsp + 0x95], al
movzx eax, byte [rsp + 0x3b]
mov byte [rsp + 0x96], al
movzx eax, byte [rsp + 0x3c]
mov byte [rsp + 0x97], al
movzx eax, byte [rsp + 0x3d]
mov byte [rsp + 0x98], al
movzx eax, byte [rsp + 0x3e]
mov byte [rsp + 0x99], al
movzx eax, byte [rsp + 0x3f]
mov byte [rsp + 0x9b], dil
mov byte [rsp + 0x9a], al
mov byte [rsp + 0x9c], bpl
mov byte [rsp + 0x9d], r13b
mov byte [rsp + 0x9e], 0
call qword [sym.imp.KERNEL32.dll_GetCurrentProcessId]
mov edx, eax
mov byte [rsp + 0xa6], 0
and edx, 0xf
add edx, 0x41
mov byte [rsp + 0x9e], dl
mov edx, eax
shr dl, 4
add edx, 0x41
mov byte [rsp + 0x9f], dl
mov edx, eax
shr edx, 8
and edx, 0xf
add edx, 0x41
mov byte [rsp + 0xa0], dl
mov edx, eax
shr edx, 0xc
and edx, 0xf
add edx, 0x41
mov byte [rsp + 0xa1], dl
mov edx, eax
shr edx, 0x10
and edx, 0xf
add edx, 0x41
mov byte [rsp + 0xa2], dl
mov edx, eax
shr edx, 0x14
and edx, 0xf
add edx, 0x41
mov byte [rsp + 0xa3], dl
mov edx, eax
shr eax, 0x1c
shr edx, 0x18
add eax, 0x41
and edx, 0xf
mov byte [rsp + 0xa5], al
add edx, 0x41
mov byte [rsp + 0xa4], dl
jmp 0x4a1d33
lock add dword [0x009cc70c], 1
mov byte [rsp + 0x48], 1
jmp 0x4a1ccb
mov eax, dword [0x009cc70c]
cmp eax, 1
jg 0x4a21a8
mov r12, qword [rsp + 0x50]
test r12, r12
jne 0x4a1ce3
mov ecx, dword [0x00865180]
cmp ecx, 0xffffffff
je 0x4a1d0e
jmp 0x4a1db0
cmp byte [rsp + 0x58], 0
lea r9, [rsp + 0x58]
je 0x4a21da
xor ecx, ecx
xor r8d, r8d
mov edx, 1
call r14
mov rcx, qword [rsp + 0x50]
mov r12, rax
lea rax, [rcx - 1]
cmp rax, 0xfffffffffffffffd
jbe 0x4a21f5
mov qword [rsp + 0x50], r12
jmp 0x4a2188
mov rcx, r9
lea rdx, [0x009cc708]
mov qword [rsp + 0x28], r9
call method.boost::detail.name_once_mutex_char__void_
mov r9, qword [rsp + 0x28]
jmp 0x4a21b4
call qword [sym.imp.KERNEL32.dll_CloseHandle]
jmp 0x4a21d3
lea r13, [rsp + 0x40]
mov rcx, r13
call method.boost::thread_resource_error.thread_resource_error__
mov rcx, r13
call method.void_boost::throw_exception_boost.thread_resource_error__boost::thread_resource_error_const_
mov rcx, rax
call sym.__cxa_begin_catch
lea rdx, [rsp + 0x40]
lea rcx, [0x009cc708]
call method.boost::detail.rollback_once_region_boost::once_flag__boost::detail::once_context_
call sym.__cxa_rethrow
mov r12, rax
mov rcx, r13
lea rax, method.boost::thread_exception.thread_exception__
mov qword [rsp + 0x40], rax
call sym.boost::system::system_error::system_error__
lea rcx, [rbx + 0x70]
call method.std::vector_boost::shared_ptr_boost::detail::shared_state_base___std::allocator_boost::shared_ptr_boost::detail::shared_state_base_____.vector__
mov rcx, qword [rbx + 0x58]
test rcx, rcx
je 0x4a225e
call sym.operator_delete_void_
mov rdx, qword [rbx + 0x38]
lea rcx, [rbx + 0x28]
call sym._ZNSt8_Rb_treeIPKvSt4pairIKS1_N5boost6detail13tss_data_nodeEESt10_Select1stIS7_ESt4lessIS1_ESaIS7_EE8_M_eraseEPSt13_Rb_tree_no
mov rcx, qword [rbx + 0x10]
lea rax, [rcx - 1]
cmp rax, 0xfffffffffffffffd
jbe 0x4a22da
mov rcx, r12
call sym.__cxa_begin_catch
call r15
mov rcx, rax
mov r8, rbx
xor edx, edx
call qword [sym.imp.KERNEL32.dll_HeapFree]
call sym.__cxa_rethrow
mov rsi, rax
call sym.__cxa_end_catch
mov rcx, qword [rsp + 0x50]
lea rax, [rcx - 1]
cmp rax, 0xfffffffffffffffd
ja 0x4a22b4
call qword [sym.imp.KERNEL32.dll_CloseHandle]
mov rcx, rsi
call sym.__cxa_begin_catch
mov rcx, rbx
call method.boost._anonymous_namespace_::externally_launched_thread::externally_launched_thread__
call r15
mov rcx, rax
mov r8, rbx
xor edx, edx
call qword [sym.imp.KERNEL32.dll_HeapFree]
call sym.__cxa_rethrow
call qword [sym.imp.KERNEL32.dll_CloseHandle]
jmp 0x4a2279
mov rax, qword [0x0093a8b0]
add rax, 0x10
mov qword [rsp + 0x40], rax
call method.void_boost::throw_exception_std.bad_alloc__std::bad_alloc_const___clone_.isra.0_
mov rcx, rax
jmp 0x4a22b7