Function at 0x496d80
Capabilities:
Allocate thread local storage
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
lea rbx, [0x00a2f5e8]
movabs rax, 0x7f0725e3c15730e2
mov rsi, rbx
mov rdi, rbx
mov rbp, rbx
mov r12, rbx
sar rsi, 0x2c
and esi, 0xf
add esi, 0x41
mov qword [rsp + 0x40], rax
mov eax, ebx
mov r13, rcx
shr al, 4
mov byte [rsp + 0x48], 0
add eax, 0x41
mov byte [rsp + 0x58], 0
mov byte [rsp + 0x28], al
mov rax, rbx
mov qword [rsp + 0x50], 0
sar rax, 8
and eax, 0xf
add eax, 0x41
mov byte [rsp + 0x37], al
mov rax, rbx
sar rax, 0xc
and eax, 0xf
add eax, 0x41
mov byte [rsp + 0x38], al
mov rax, rbx
sar rax, 0x10
and eax, 0xf
add eax, 0x41
mov byte [rsp + 0x39], al
mov rax, rbx
sar rax, 0x14
and eax, 0xf
add eax, 0x41
mov byte [rsp + 0x3a], al
mov rax, rbx
sar rax, 0x18
and eax, 0xf
add eax, 0x41
mov byte [rsp + 0x3b], al
mov rax, rbx
sar rax, 0x1c
and eax, 0xf
add eax, 0x41
mov byte [rsp + 0x3c], al
mov rax, rbx
sar rax, 0x20
and eax, 0xf
add eax, 0x41
mov byte [rsp + 0x3d], al
mov rax, rbx
sar rax, 0x24
and eax, 0xf
add eax, 0x41
mov byte [rsp + 0x3e], al
mov rax, rbx
sar rax, 0x28
and eax, 0xf
add eax, 0x41
sar rdi, 0x30
mov byte [rsp + 0x3f], al
mov rax, rbx
sar rbp, 0x34
and edi, 0xf
sar r12, 0x38
shr rax, 0x3c
and ebp, 0xf
add edi, 0x41
and r12d, 0xf
mov r15, rax
add ebp, 0x41
add r12d, 0x41
add r15d, 0x41
jmp 0x496ee9
lock add dword [0x00a2f5ec], 1
mov byte [rsp + 0x48], 1
mov eax, dword [0x00a2f5e8]
cmp eax, dword [rsp + 0x40]
je 0x496f6c
mov rcx, qword [rsp + 0x50]
test rcx, rcx
je 0x496fc0
xor r8d, r8d
mov edx, 0xffffffff
call qword [sym.imp.KERNEL32.dll_WaitForSingleObjectEx]
mov eax, dword [0x00a2f5e8]
cmp eax, dword [rsp + 0x40]
je 0x496f6c
mov edx, dword [rsp + 0x44]
xor eax, eax
lock cmpxchg dword [0x00a2f5e8], edx
test eax, eax
je 0x496f18
cmp byte [rsp + 0x48], 0
je 0x496eb0
mov rcx, qword [rsp + 0x50]
jmp 0x496edb
mov r14, qword [rsp + 0x50]
test r14, r14
je 0x497000
mov rcx, r14
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 [0x0085f180], eax
je 0x4973a8
mov eax, dword [rsp + 0x40]
xchg dword [0x00a2f5e8], eax
mov r12, qword [rsp + 0x50]
test r12, r12
je 0x4973c0
mov rcx, r12
call qword [sym.imp.KERNEL32.dll_SetEvent]
mov rcx, qword [rsp + 0x50]
lea rax, [rcx - 1]
cmp rax, 0xfffffffffffffffd
jbe 0x497040
mov ecx, dword [0x0085f180]
cmp ecx, 0xffffffff
je 0x496f93
mov rdx, r13
call qword [sym.imp.KERNEL32.dll_TlsSetValue]
mov rax, qword [r13]
mov rcx, r13
call qword [rax + 0x10]
call method.boost._anonymous_namespace_::run_thread_exit_callbacks__
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 0x497210
lea r9, [rsp + 0x58]
xor r8d, r8d
mov edx, 1
xor ecx, ecx
call qword [sym.imp.KERNEL32.dll_CreateEventA]
mov rcx, qword [rsp + 0x50]
mov r14, rax
lea rax, [rcx - 1]
cmp rax, 0xfffffffffffffffd
jbe 0x497200
mov qword [rsp + 0x50], r14
jmp 0x496ee9
cmp byte [rsp + 0x58], 0
je 0x497070
mov ecx, 0x100002
lea r8, [rsp + 0x58]
xor edx, edx
call qword [sym.imp.KERNEL32.dll_OpenEventA]
mov rcx, qword [rsp + 0x50]
mov r14, rax
lea rax, [rcx - 1]
cmp rax, 0xfffffffffffffffd
jbe 0x497050
mov qword [rsp + 0x50], r14
test r14, r14
je 0x496f2f
jmp 0x496f26
call qword [sym.imp.KERNEL32.dll_CloseHandle]
jmp 0x496f7f
call qword [sym.imp.KERNEL32.dll_CloseHandle]
mov qword [rsp + 0x50], r14
test r14, r14
je 0x496f2f
jmp 0x496f26
mov eax, dword [0x009b7230]
movdqu xmm3, xmmword [str.LocalC15730E2_145C_4c5e_B005_3BC753F42475_once_flag]
and ebx, 0xf
mov byte [rsp + 0x99], sil
movdqu xmm4, xmmword [0x009b7210]
movdqu xmm5, xmmword [0x009b7220]
add ebx, 0x41
mov dword [rsp + 0x88], eax
movzx eax, word [0x009b7234]
movups xmmword [rsp + 0x58], xmm3
mov word [rsp + 0x8c], ax
movzx eax, byte [rsp + 0x28]
movups xmmword [rsp + 0x68], xmm4
mov byte [rsp + 0x8f], al
movzx eax, byte [rsp + 0x37]
movups xmmword [rsp + 0x78], xmm5
mov byte [rsp + 0x90], al
movzx eax, byte [rsp + 0x38]
mov byte [rsp + 0x8e], bl
mov byte [rsp + 0x91], al
movzx eax, byte [rsp + 0x39]
mov byte [rsp + 0x92], al
movzx eax, byte [rsp + 0x3a]
mov byte [rsp + 0x93], al
movzx eax, byte [rsp + 0x3b]
mov byte [rsp + 0x94], al
movzx eax, byte [rsp + 0x3c]
mov byte [rsp + 0x95], al
movzx eax, byte [rsp + 0x3d]
mov byte [rsp + 0x96], al
movzx eax, byte [rsp + 0x3e]
mov byte [rsp + 0x97], al
movzx eax, byte [rsp + 0x3f]
mov byte [rsp + 0x98], al
mov byte [rsp + 0x9a], dil
mov byte [rsp + 0x9b], bpl
mov byte [rsp + 0x9c], r12b
mov byte [rsp + 0x9d], r15b
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 0x497007
call qword [sym.imp.KERNEL32.dll_CloseHandle]
jmp 0x496ff6
mov eax, dword [0x009b7230]
movdqu xmm0, xmmword [str.LocalC15730E2_145C_4c5e_B005_3BC753F42475_once_flag]
mov byte [rsp + 0x99], sil
movdqu xmm1, xmmword [0x009b7210]
movdqu xmm2, xmmword [0x009b7220]
mov dword [rsp + 0x88], eax
movzx eax, word [0x009b7234]
movups xmmword [rsp + 0x58], xmm0
mov word [rsp + 0x8c], ax
mov eax, ebx
and eax, 0xf
movups xmmword [rsp + 0x68], xmm1
add eax, 0x41
movups xmmword [rsp + 0x78], xmm2
mov byte [rsp + 0x8e], al
movzx eax, byte [rsp + 0x28]
mov byte [rsp + 0x8f], al
movzx eax, byte [rsp + 0x37]
mov byte [rsp + 0x90], al
movzx eax, byte [rsp + 0x38]
mov byte [rsp + 0x91], al
movzx eax, byte [rsp + 0x39]
mov byte [rsp + 0x92], al
movzx eax, byte [rsp + 0x3a]
mov byte [rsp + 0x93], al
movzx eax, byte [rsp + 0x3b]
mov byte [rsp + 0x94], al
movzx eax, byte [rsp + 0x3c]
mov byte [rsp + 0x95], al
movzx eax, byte [rsp + 0x3d]
mov byte [rsp + 0x96], al
movzx eax, byte [rsp + 0x3e]
mov byte [rsp + 0x97], al
movzx eax, byte [rsp + 0x3f]
mov byte [rsp + 0x98], al
mov byte [rsp + 0x9a], dil
mov byte [rsp + 0x9b], bpl
mov byte [rsp + 0x9c], r12b
mov byte [rsp + 0x9d], r15b
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 0x496fcb
lock add dword [0x00a2f5ec], 1
mov byte [rsp + 0x48], 1
jmp 0x496f4b
mov eax, dword [0x00a2f5ec]
cmp eax, 1
jg 0x4973e0
mov r12, qword [rsp + 0x50]
test r12, r12
je 0x496f7f
jmp 0x496f63
cmp byte [rsp + 0x58], 0
lea r9, [rsp + 0x58]
je 0x497415
xor ecx, ecx
xor r8d, r8d
mov edx, 1
call qword [sym.imp.KERNEL32.dll_CreateEventA]
mov rcx, qword [rsp + 0x50]
mov r12, rax
lea rax, [rcx - 1]
cmp rax, 0xfffffffffffffffd
jbe 0x497430
mov qword [rsp + 0x50], r12
jmp 0x4973d0
mov rcx, r9
lea rdx, [0x00a2f5e8]
mov qword [rsp + 0x28], r9
call method.boost::detail.name_once_mutex_char__void_
mov r9, qword [rsp + 0x28]
jmp 0x4973ec
call qword [sym.imp.KERNEL32.dll_CloseHandle]
jmp 0x49740e