Function at 0x140001e1f
Capabilities:
Allocate thread local storage
Set thread local storage value

Disassembly:
push rbp
push rbx
sub rsp, 0x58
lea rbp, [rsp + 0x50]
mov qword [rbp + 0x20], rcx
mov dword [rbp + 0x28], edx
mov qword [rbp + 0x30], r8
mov rax, qword [0x14001d050]
test rax, rax
sete al
test al, al
jne 0x140002064
mov eax, dword [rbp + 0x28]
mov ecx, eax
call dbg.ReasonToString
mov rdx, rax
lea rax, str._info__TLS_callback_enter___s__n
mov rcx, rax
call fcn.140001d70
cmp dword [rbp + 0x28], 1
jne 0x140001e7f
mov rax, qword [0x14001d050]
test rax, rax
je 0x140001e7f
mov eax, 1
jmp 0x140001e84
mov eax, 0
test al, al
je 0x140001eaa
mov rax, qword [sym.imp.KERNEL32.dll_TlsAlloc]
call rax
mov dword [0x14001d058], eax
mov eax, dword [0x14001d058]
mov rdx, qword [0x14001d050]
mov rdx, qword [rdx + 0x10]
mov dword [rdx], eax
cmp dword [rbp + 0x28], 2
je 0x140001eba
cmp dword [rbp + 0x28], 1
jne 0x140001f83
mov rax, qword [0x14001d050]
mov rdx, qword [rax + 8]
mov rax, qword [0x14001d050]
mov rax, qword [rax]
sub rdx, rax
lea rax, [rdx + 1]
mov qword [rbp - 0x10], rax
mov rax, qword [0x14001d050]
mov eax, dword [rax + 0x20]
mov edx, eax
mov rax, qword [rbp - 0x10]
add rax, rdx
mov qword [rbp - 0x18], rax
mov rax, qword [rbp - 0x18]
mov r9d, 4
mov r8d, 0x3000
mov rdx, rax
mov ecx, 0
call dbg.fnVirtualAlloc(void*, unsigned long long, unsigned long, unsigned long)
mov qword [rbp - 0x20], rax
mov rdx, qword [0x14001d060]
mov rax, qword [0x14001d050]
mov rax, qword [rax]
mov rcx, rax
mov rax, qword [rbp - 0x20]
mov r8, rdx
mov rdx, rcx
mov rcx, rax
call sym.memcpy
mov rax, qword [0x14001d050]
mov eax, dword [rax + 0x20]
mov ecx, eax
mov rdx, qword [rbp - 0x20]
mov rax, qword [rbp - 0x10]
add rax, rdx
mov r8, rcx
mov edx, 0
mov rcx, rax
call sym.memset
mov eax, dword [0x14001d058]
mov rdx, qword [rbp - 0x20]
mov ecx, eax
mov rax, qword [sym.imp.KERNEL32.dll_TlsSetValue]
call rax
lea rax, str.___info__Copied_TLS_data_n
mov rcx, rax
call fcn.140001d70
mov dword [rbp - 4], 0
jmp 0x140002014
mov eax, dword [rbp - 4]
cdqe
mov rdx, rax
lea rax, [0x14001d030]
mov rcx, rax
call dbg.std::vector<void (*)(void*, unsigned long, void*), std::allocator<void (*)(void*, unsigned long, void*)> >::operator[](unsigned long long)
mov rbx, qword [rax]
lea rax, [0x14001d030]
mov rcx, rax
call dbg.std::vector<void (*)(void*, unsigned long, void*), std::allocator<void (*)(void*, unsigned long, void*)> >::size() const
mov rdx, rax
mov eax, dword [rbp - 4]
add eax, 1
mov r9, rbx
mov r8, rdx
mov edx, eax
lea rax, str.___info__Calling_TLS_callback__i__lli__0x_llx__n
mov rcx, rax
call fcn.140001d70
mov eax, dword [rbp - 4]
cdqe
mov rdx, rax
lea rax, [0x14001d030]
mov rcx, rax
call dbg.std::vector<void (*)(void*, unsigned long, void*), std::allocator<void (*)(void*, unsigned long, void*)> >::operator[](unsigned long long)
mov rax, qword [rax]
mov qword [rbp - 0x28], rax
mov r9, qword [rbp - 0x28]
mov rax, qword [0x14001d048]
mov edx, dword [rbp + 0x28]
mov r8d, 0
mov rcx, rax
call r9
add dword [rbp - 4], 1
mov eax, dword [rbp - 4]
movsxd rbx, eax
lea rax, [0x14001d030]
mov rcx, rax
call dbg.std::vector<void (*)(void*, unsigned long, void*), std::allocator<void (*)(void*, unsigned long, void*)> >::size() const
cmp rbx, rax
setb al
test al, al
jne 0x140001f8f
lea rax, str.___info__Called_TLS_callbacks_n
mov rcx, rax
call fcn.140001d70
mov eax, dword [rbp + 0x28]
mov ecx, eax
call dbg.ReasonToString
mov rdx, rax
lea rax, str._info__TLS_callback_exit___s__n
mov rcx, rax
call fcn.140001d70
jmp 0x140002065
nop
add rsp, 0x58
pop rbx
pop rbp
ret