Function at 0x14008e1b0
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 0x14008ebfe
lea rax, [0x14062d6b0]
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 0x14008eaee
mov qword [rbx + 0x88], rax
lea rax, fcn.14008e0f0
lea rsi, [0x1406a3aa8]
mov qword [rbx], rax
mov rbp, rsi
mov rdi, rsi
movabs rax, 0x7f0725e3c15730e2
mov byte [rbx + 0x90], 0
sar rbp, 0x18
sar rdi, 0x1c
add dword [rbx + 8], 1
and ebp, 0xf
and edi, 0xf
mov qword [rsp + 0x40], rax
mov eax, esi
add ebp, 0x41
add edi, 0x41
shr al, 4
mov byte [rsp + 0x48], 0
add eax, 0x41
mov byte [rsp + 0x58], 0
mov byte [rsp + 0x20], 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, 0x20
and eax, 0xf
add eax, 0x41
mov byte [rsp + 0x39], al
mov rax, rsi
sar rax, 0x24
and eax, 0xf
add eax, 0x41
mov byte [rsp + 0x3a], al
mov rax, rsi
sar rax, 0x28
and eax, 0xf
add eax, 0x41
mov byte [rsp + 0x3b], al
mov rax, rsi
sar rax, 0x2c
and eax, 0xf
add eax, 0x41
mov byte [rsp + 0x3c], al
mov rax, rsi
sar rax, 0x30
and eax, 0xf
add eax, 0x41
mov byte [rsp + 0x3d], al
mov rax, rsi
sar rax, 0x34
and eax, 0xf
add eax, 0x41
mov byte [rsp + 0x3e], al
mov rax, rsi
sar rax, 0x38
and eax, 0xf
add eax, 0x41
mov byte [rsp + 0x3f], al
mov rax, rsi
shr rax, 0x3c
mov r12, rax
add r12d, 0x41
jmp 0x14008e3c9
lock add dword [0x1406a3aac], 1
mov byte [rsp + 0x48], 1
mov eax, dword [0x1406a3aa8]
cmp eax, dword [rsp + 0x40]
je 0x14008e44c
mov rcx, qword [rsp + 0x50]
test rcx, rcx
je 0x14008e488
xor r8d, r8d
mov edx, 0xffffffff
call qword [sym.imp.KERNEL32.dll_WaitForSingleObjectEx]
mov eax, dword [0x1406a3aa8]
cmp eax, dword [rsp + 0x40]
je 0x14008e44c
mov edx, dword [rsp + 0x44]
xor eax, eax
lock cmpxchg dword [0x1406a3aa8], edx
test eax, eax
je 0x14008e3f8
cmp byte [rsp + 0x48], 0
je 0x14008e390
mov rcx, qword [rsp + 0x50]
jmp 0x14008e3bb
mov r13, qword [rsp + 0x50]
test r13, r13
je 0x14008e4c8
mov rcx, r13
call qword [sym.imp.KERNEL32.dll_ResetEvent]
call fcn.14008f050
call qword [sym.imp.KERNEL32.dll_TlsAlloc]
cmp byte [rsp + 0x48], 0
mov dword [0x140548540], eax
je 0x14008e8c0
mov eax, dword [rsp + 0x40]
xchg dword [0x1406a3aa8], eax
mov r13, qword [rsp + 0x50]
test r13, r13
je 0x14008e8d8
mov rcx, r13
call qword [sym.imp.KERNEL32.dll_SetEvent]
mov rcx, qword [rsp + 0x50]
lea rax, [rcx - 1]
cmp rax, 0xfffffffffffffffd
jbe 0x14008e538
mov ecx, dword [0x140548540]
cmp ecx, 0xffffffff
jne 0x14008e510
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 0x14008e720
lea r9, [rsp + 0x58]
xor r8d, r8d
mov edx, 1
xor ecx, ecx
call r14
mov rcx, qword [rsp + 0x50]
mov r13, rax
lea rax, [rcx - 1]
cmp rax, 0xfffffffffffffffd
jbe 0x14008e710
mov qword [rsp + 0x50], r13
jmp 0x14008e3c9
cmp byte [rsp + 0x58], 0
je 0x14008e570
mov ecx, 0x100002
lea r8, [rsp + 0x58]
xor edx, edx
call qword [sym.imp.KERNEL32.dll_OpenEventA]
mov rcx, qword [rsp + 0x50]
mov r13, rax
lea rax, [rcx - 1]
cmp rax, 0xfffffffffffffffd
jbe 0x14008e550
mov qword [rsp + 0x50], r13
test r13, r13
je 0x14008e40f
jmp 0x14008e406
mov rdx, rbx
call qword [sym.imp.KERNEL32.dll_TlsSetValue]
mov ecx, dword [0x140548540]
cmp ecx, 0xffffffff
je 0x14008e46e
call qword [sym.imp.KERNEL32.dll_TlsGetValue]
jmp 0x14008e470
call qword [sym.imp.KERNEL32.dll_CloseHandle]
mov ecx, dword [0x140548540]
cmp ecx, 0xffffffff
je 0x14008e46e
jmp 0x14008e510
call qword [sym.imp.KERNEL32.dll_CloseHandle]
mov qword [rsp + 0x50], r13
test r13, r13
je 0x14008e40f
jmp 0x14008e406
mov eax, dword [0x140638870]
movdqu xmm4, xmmword [str.LocalC15730E2_145C_4c5e_B005_3BC753F42475_once_flag]
mov byte [rsp + 0x94], bpl
movdqu xmm5, xmmword [0x140638850]
mov byte [rsp + 0x95], dil
mov dword [rsp + 0x88], eax
movzx eax, word [0x140638874]
movups xmmword [rsp + 0x58], xmm4
movdqu xmm4, xmmword [0x140638860]
mov word [rsp + 0x8c], ax
mov eax, esi
and eax, 0xf
movups xmmword [rsp + 0x68], xmm5
add eax, 0x41
movups xmmword [rsp + 0x78], xmm4
mov byte [rsp + 0x8e], al
movzx eax, byte [rsp + 0x20]
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 + 0x96], al
movzx eax, byte [rsp + 0x3a]
mov byte [rsp + 0x97], al
movzx eax, byte [rsp + 0x3b]
mov byte [rsp + 0x98], al
movzx eax, byte [rsp + 0x3c]
mov byte [rsp + 0x99], al
movzx eax, byte [rsp + 0x3d]
mov byte [rsp + 0x9a], al
movzx eax, byte [rsp + 0x3e]
mov byte [rsp + 0x9d], r12b
mov byte [rsp + 0x9b], al
movzx eax, byte [rsp + 0x3f]
mov byte [rsp + 0x9e], 0
mov byte [rsp + 0x9c], al
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 0x14008e4d3
call qword [sym.imp.KERNEL32.dll_CloseHandle]
jmp 0x14008e4bb
mov eax, dword [0x140638870]
movdqu xmm1, xmmword [str.LocalC15730E2_145C_4c5e_B005_3BC753F42475_once_flag]
mov byte [rsp + 0x94], bpl
movdqu xmm2, xmmword [0x140638850]
movdqu xmm3, xmmword [0x140638860]
mov byte [rsp + 0x95], dil
mov dword [rsp + 0x88], eax
movzx eax, word [0x140638874]
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 + 0x20]
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 + 0x96], al
movzx eax, byte [rsp + 0x3a]
mov byte [rsp + 0x97], al
movzx eax, byte [rsp + 0x3b]
mov byte [rsp + 0x98], al
movzx eax, byte [rsp + 0x3c]
mov byte [rsp + 0x99], al
movzx eax, byte [rsp + 0x3d]
mov byte [rsp + 0x9a], al
movzx eax, byte [rsp + 0x3e]
mov byte [rsp + 0x9d], r12b
mov byte [rsp + 0x9b], al
movzx eax, byte [rsp + 0x3f]
mov byte [rsp + 0x9e], 0
mov byte [rsp + 0x9c], al
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 0x14008e493
lock add dword [0x1406a3aac], 1
mov byte [rsp + 0x48], 1
jmp 0x14008e42b
mov eax, dword [0x1406a3aac]
cmp eax, 1
jg 0x14008e908
mov r13, qword [rsp + 0x50]
test r13, r13
jne 0x14008e443
mov ecx, dword [0x140548540]
cmp ecx, 0xffffffff
je 0x14008e46e
jmp 0x14008e510
cmp byte [rsp + 0x58], 0
je 0x14008e940
xor ecx, ecx
lea r9, [rsp + 0x58]
xor r8d, r8d
mov edx, 1
call r14
mov rcx, qword [rsp + 0x50]
mov r13, rax
lea rax, [rcx - 1]
cmp rax, 0xfffffffffffffffd
ja 0x14008e939
call qword [sym.imp.KERNEL32.dll_CloseHandle]
mov qword [rsp + 0x50], r13
jmp 0x14008e8e8
movzx edi, dil
movzx ebp, bpl
movzx edx, byte [rsp + 0x38]
and esi, 0xf
shl rdi, 8
movzx r12d, r12b
mov eax, dword [0x140638870]
movdqu xmm5, xmmword [str.LocalC15730E2_145C_4c5e_B005_3BC753F42475_once_flag]
or rdi, rbp
shl r12, 8
mov byte [rsp + 0x9e], 0
shl rdi, 8
mov dword [rsp + 0x88], eax
movzx eax, word [0x140638874]
or rdi, rdx
movzx edx, byte [rsp + 0x37]
movups xmmword [rsp + 0x58], xmm5
movdqu xmm5, xmmword [0x140638850]
shl rdi, 8
mov word [rsp + 0x8c], ax
lea eax, [rsi + 0x41]
or rdi, rdx
movzx edx, byte [rsp + 0x36]
movups xmmword [rsp + 0x68], xmm5
movzx eax, al
shl rdi, 8
movdqu xmm5, xmmword [0x140638860]
or rdi, rdx
movzx edx, byte [rsp + 0x35]
shl rdi, 8
movups xmmword [rsp + 0x78], xmm5
or rdi, rdx
movzx edx, byte [rsp + 0x20]
shl rdi, 8
or rdi, rdx
movzx edx, byte [rsp + 0x3f]
shl rdi, 8
or r12, rdx
movzx edx, byte [rsp + 0x3e]
or rdi, rax
shl r12, 8
mov qword [rsp + 0x20], rdi
or r12, rdx
movzx edx, byte [rsp + 0x3d]
shl r12, 8
or r12, rdx
movzx edx, byte [rsp + 0x3c]
shl r12, 8
or r12, rdx
movzx edx, byte [rsp + 0x3b]
shl r12, 8
or r12, rdx
movzx edx, byte [rsp + 0x3a]
shl r12, 8
or r12, rdx
movzx edx, byte [rsp + 0x39]
shl r12, 8
or r12, rdx
mov qword [rsp + 0x28], r12
movdqu xmm5, xmmword [rsp + 0x20]
movups xmmword [rsp + 0x8e], xmm5
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 0x14008e90f
lea r13, [rsp + 0x40]
lea r8, str.boost::thread_resource_error
mov edx, 0xb
mov rcx, r13
call fcn.14040d5d0
lea rax, [0x14062c850]
mov rcx, r13
mov qword [rsp + 0x40], rax
call fcn.14040bcc0
mov rcx, rax
call fcn.14053f220
lea rdx, [rsp + 0x40]
lea rcx, [0x1406a3aa8]
call fcn.1404771b0
call fcn.14053f830
mov r12, rax
mov rcx, r13
lea rax, [0x14062d820]
mov qword [rsp + 0x40], rax
call fcn.140502ef0
lea rcx, [rbx + 0x70]
call fcn.140513330
mov rcx, qword [rbx + 0x58]
test rcx, rcx
je 0x14008eb67
call fcn.14053f080
mov rdx, qword [rbx + 0x38]
lea rcx, [rbx + 0x28]
call fcn.14052f290
mov rcx, qword [rbx + 0x10]
lea rax, [rcx - 1]
cmp rax, 0xfffffffffffffffd
ja 0x14008eb88
call qword [sym.imp.KERNEL32.dll_CloseHandle]
mov rcx, r12
call fcn.14053f220
call r15
mov rcx, rax
mov r8, rbx
xor edx, edx
call qword [sym.imp.KERNEL32.dll_HeapFree]
call fcn.14053f830
mov rsi, rax
call fcn.14053f430
mov rcx, qword [rsp + 0x50]
lea rax, [rcx - 1]
cmp rax, 0xfffffffffffffffd
ja 0x14008ebc3
call qword [sym.imp.KERNEL32.dll_CloseHandle]
mov rcx, rsi
call fcn.14053f220
mov rcx, rbx
call fcn.14008e0f0
call r15
mov rcx, rax
mov r8, rbx
xor edx, edx
call qword [sym.imp.KERNEL32.dll_HeapFree]
call fcn.14053f830
mov r12, rax
call fcn.14053f430
mov rcx, r12
call fcn.1403e4610
mov rsi, rax
jmp 0x14008ebae
mov rax, qword [0x14061be60]
add rax, 0x10
mov qword [rsp + 0x40], rax
call fcn.140544280
mov rcx, rax
jmp 0x14008ebc6