Function at 0x7ffe04621f90
Capabilities:
Get thread local storage value
Set thread local storage value

Disassembly:
push r14
sub rsp, 0x30
cmp dword [0x7ffe0466eeac], 0
mov r14d, ecx
jne 0x7ffe046245e4
cmp dword [0x7ffe0466e8d0], 0
jne 0x7ffe04622444
mov rcx, qword [0x7ffe0466e8c8]
mov dword [0x7ffe0466e8d0], 1
test rcx, rcx
je 0x7ffe04621fd5
call qword [sym.imp.api_ms_win_core_synch_l1_1_0.dll_ResetEvent]
nop dword [rax + rax]
cmp byte [0x7ffe0466e884], 0
mov byte [0x7ffe0466e8c0], 1
je 0x7ffe04624619
mov qword [rsp + 0x40], rbx
lea rcx, [0x7ffe0466eda8]
mov qword [rsp + 0x50], rsi
mov qword [rsp + 0x58], rdi
mov qword [rsp + 0x28], r12
mov qword [rsp + 0x20], r15
call qword [sym.imp.api_ms_win_core_synch_l1_1_0.dll_EnterCriticalSection]
nop dword [rax + rax]
mov rbx, qword [0x7ffe0466e7b0]
lea rsi, [0x7ffe0466e7b0]
xor r12d, r12d
cmp rbx, rsi
jne 0x7ffe0462465b
lea rcx, [0x7ffe0466eda8]
call qword [sym.imp.api_ms_win_core_synch_l1_1_0.dll_LeaveCriticalSection]
nop dword [rax + rax]
lea rcx, [0x7ffe0466ee70]
call qword [sym.imp.api_ms_win_core_synch_l1_1_0.dll_EnterCriticalSection]
nop dword [rax + rax]
mov rbx, qword [0x7ffe0466e7f0]
lea rsi, [0x7ffe0466e7f0]
cmp rbx, rsi
jne 0x7ffe04624715
lea rcx, [0x7ffe0466ee70]
call qword [sym.imp.api_ms_win_core_synch_l1_1_0.dll_LeaveCriticalSection]
nop dword [rax + rax]
lea rcx, [0x7ffe0466ed30]
call qword [sym.imp.api_ms_win_core_synch_l1_1_0.dll_EnterCriticalSection]
nop dword [rax + rax]
mov rbx, qword [0x7ffe0466e798]
lea rdi, [0x7ffe0466e798]
cmp rbx, rdi
jne 0x7ffe046247d7
lea rcx, [0x7ffe0466ed30]
call qword [sym.imp.api_ms_win_core_synch_l1_1_0.dll_LeaveCriticalSection]
nop dword [rax + rax]
mov r8d, dword [0x7ffe0466e80c]
test r8d, r8d
jg 0x7ffe046247fb
mov rcx, qword [0x7ffe0466e8c8]
test rcx, rcx
je 0x7ffe046220eb
call qword [sym.imp.api_ms_win_core_handle_l1_1_0.dll_CloseHandle]
nop dword [rax + rax]
mov qword [0x7ffe0466e8c8], r12
call qword [sym.imp.api_ms_win_core_processthreads_l1_1_0.dll_GetCurrentThreadId]
nop dword [rax + rax]
mov ecx, dword [0x7ffe0466e0ac]
mov ebx, eax
call qword [sym.imp.api_ms_win_core_processthreads_l1_1_0.dll_TlsGetValue]
nop dword [rax + rax]
test rax, rax
je 0x7ffe0462212a
mov rcx, qword [rax + 8]
test rcx, rcx
je 0x7ffe0462212a
cmp dword [0x7ffe0466eeac], r12d
mov byte [rcx + 0x28], 1
jne 0x7ffe0462485f
mov ecx, dword [0x7ffe0466e0ac]
call qword [sym.imp.api_ms_win_core_processthreads_l1_1_0.dll_TlsGetValue]
nop dword [rax + rax]
test rax, rax
je 0x7ffe04622162
mov edx, 0x6c546864
mov rcx, rax
call fcn.7ffe04621ee0
mov ecx, dword [0x7ffe0466e0ac]
xor edx, edx
call qword [sym.imp.api_ms_win_core_processthreads_l1_1_0.dll_TlsSetValue]
nop dword [rax + rax]
lea rcx, [0x7ffe0466ed80]
call qword [sym.imp.api_ms_win_core_synch_l1_1_0.dll_EnterCriticalSection]
nop dword [rax + rax]
mov rdi, qword [0x7ffe0466e828]
lea r15, [0x7ffe0466e828]
cmp rdi, r15
je 0x7ffe046221e7
cmp dword [0x7ffe0466eeac], r12d
jne 0x7ffe04624897
cmp rdi, r15
je 0x7ffe046221e7
mov qword [rsp + 0x48], rbp
mov rsi, rdi
mov rdi, qword [rdi]
cmp byte [rsi + 0x28], 1
jne 0x7ffe046221dd
mov rax, qword [rsi + 8]
mov qword [rax], rdi
mov qword [rdi + 8], rax
mov rbx, qword [rsi + 0x18]
test rbx, rbx
jne 0x7ffe046248d2
mov rcx, qword [rsi + 0x20]
test rcx, rcx
jne 0x7ffe046248fd
mov edx, 0x6c546864
mov rcx, rsi
call fcn.7ffe04621ee0
cmp rdi, r15
jne 0x7ffe0462219f
mov rbp, qword [rsp + 0x48]
lea rcx, [0x7ffe0466ed80]
call qword [sym.imp.api_ms_win_core_synch_l1_1_0.dll_LeaveCriticalSection]
nop dword [rax + rax]
lea rcx, [0x7ffe0466edf8]
call qword [sym.imp.api_ms_win_core_synch_l1_1_0.dll_EnterCriticalSection]
nop dword [rax + rax]
mov r15, qword [rsp + 0x20]
lea rbx, [0x7ffe0466e770]
mov rsi, qword [rsp + 0x50]
mov edi, 5
mov rcx, qword [rbx]
test rcx, rcx
jne 0x7ffe04624917
add rbx, 8
sub rdi, 1
jne 0x7ffe04622223
lea rcx, [0x7ffe0466edf8]
call qword [sym.imp.api_ms_win_core_synch_l1_1_0.dll_LeaveCriticalSection]
nop dword [rax + rax]
lea rcx, [0x7ffe0466edf8]
call qword [sym.imp.api_ms_win_core_synch_l1_1_0.dll_DeleteCriticalSection]
nop dword [rax + rax]
lea rcx, [0x7ffe0466ee70]
call qword [sym.imp.api_ms_win_core_synch_l1_1_0.dll_DeleteCriticalSection]
nop dword [rax + rax]
lea rcx, [0x7ffe0466eda8]
call qword [sym.imp.api_ms_win_core_synch_l1_1_0.dll_DeleteCriticalSection]
nop dword [rax + rax]
lea rcx, [0x7ffe0466ed30]
call qword [sym.imp.api_ms_win_core_synch_l1_1_0.dll_DeleteCriticalSection]
nop dword [rax + rax]
lea rcx, [0x7ffe0466ee20]
call qword [sym.imp.api_ms_win_core_synch_l1_1_0.dll_EnterCriticalSection]
nop dword [rax + rax]
mov rcx, qword [0x7ffe0466e898]
mov rdi, qword [rsp + 0x58]
test rcx, rcx
jne 0x7ffe04624924
mov rcx, qword [0x7ffe0466e870]
test rcx, rcx
jne 0x7ffe04624967
lea rcx, [0x7ffe0466ee20]
call qword [sym.imp.api_ms_win_core_synch_l1_1_0.dll_LeaveCriticalSection]
nop dword [rax + rax]
cmp qword [0x7ffe0466e840], r12
mov rbx, qword [rsp + 0x40]
je 0x7ffe0462230d
call qword [sym.imp.api_ms_win_core_heap_l1_1_0.dll_GetProcessHeap]
nop dword [rax + rax]
mov rcx, qword [0x7ffe0466e840]
cmp rcx, rax
jne 0x7ffe046249aa
mov rcx, qword [0x7ffe0466e0b0]
cmp rcx, 0xffffffffffffffff
jne 0x7ffe046249c2
test r14d, r14d
jne 0x7ffe04624a1b
mov rcx, qword [0x7ffe0466e850]
test rcx, rcx
jne 0x7ffe04624a42
mov rcx, qword [0x7ffe0466e820]
test rcx, rcx
jne 0x7ffe04624a62
mov rcx, qword [0x7ffe0466e848]
test rcx, rcx
jne 0x7ffe04624a7a
mov rcx, qword [0x7ffe0466e888]
test rcx, rcx
jne 0x7ffe04624a9a
mov rcx, qword [0x7ffe0466e8b0]
test rcx, rcx
jne 0x7ffe04624ab2
mov ecx, dword [0x7ffe0466e0ac]
cmp ecx, 0xffffffff
je 0x7ffe04622398
call qword [sym.imp.api_ms_win_core_processthreads_l1_1_0.dll_TlsFree]
nop dword [rax + rax]
mov dword [0x7ffe0466e0ac], 0xffffffff
test r14d, r14d
jne 0x7ffe04624aca
lea rcx, [0x7ffe0466ee48]
call qword [sym.imp.api_ms_win_core_synch_l1_1_0.dll_DeleteCriticalSection]
nop dword [rax + rax]
lea rcx, [0x7ffe0466edd0]
call qword [sym.imp.api_ms_win_core_synch_l1_1_0.dll_DeleteCriticalSection]
nop dword [rax + rax]
lea rcx, [0x7ffe0466ed08]
call qword [sym.imp.api_ms_win_core_synch_l1_1_0.dll_DeleteCriticalSection]
nop dword [rax + rax]
lea rcx, [0x7ffe0466ed80]
call qword [sym.imp.api_ms_win_core_synch_l1_1_0.dll_DeleteCriticalSection]
nop dword [rax + rax]
lea rcx, [0x7ffe0466ee20]
call qword [sym.imp.api_ms_win_core_synch_l1_1_0.dll_DeleteCriticalSection]
nop dword [rax + rax]
lea rcx, [0x7ffe0466ed58]
call qword [sym.imp.api_ms_win_core_synch_l1_1_0.dll_DeleteCriticalSection]
nop dword [rax + rax]
cmp dword [0x7ffe0466eeac], r12d
jne 0x7ffe04624ad5
mov rcx, qword [0x7ffe0466e8a8]
test rcx, rcx
je 0x7ffe0462243f
call qword [sym.imp.ntdll.dll_EtwEventUnregister]
nop dword [rax + rax]
mov qword [0x7ffe0466e8a8], r12
mov r12, qword [rsp + 0x28]
mov eax, 1
add rsp, 0x30
pop r14
ret
cmp dword [0x7ffe0466eea8], 0
je 0x7ffe04621fa6
test qword [0x7ffe0466eea0], 0x4000000
je 0x7ffe04621fa6
lea rdx, str.LDAP_Client_API_32_terminating._n
mov ecx, 0x4000000
call fcn.7ffe04636c10
nop
jmp 0x7ffe04621fa6
cmp dword [0x7ffe0466eeac], 0
je 0x7ffe04622444
cmp dword [0x7ffe0466eea8], 0
je 0x7ffe04622444
test qword [0x7ffe0466eea0], 0x4000000
je 0x7ffe04622444
lea rdx, str.LDAP_Client_API_32_termination_after_incomplete_initialization._n
mov ecx, 0x4000000
call fcn.7ffe04636c10
nop
jmp 0x7ffe04622444
mov rcx, rbx
call fcn.7ffe0465a858
mov rdi, rax
test rax, rax
jne 0x7ffe04624673
mov rbx, qword [rbx]
jmp 0x7ffe04624707
lea rcx, [0x7ffe0466eda8]
call qword [sym.imp.api_ms_win_core_synch_l1_1_0.dll_LeaveCriticalSection]
nop dword [rax + rax]
mov rcx, rdi
call fcn.7ffe0464dc78
lea rcx, [rdi + 0x30]
call qword [sym.imp.api_ms_win_core_synch_l1_1_0.dll_EnterCriticalSection]
nop dword [rax + rax]
cmp dword [0x7ffe0466eeac], r12d
je 0x7ffe046246d1
cmp dword [0x7ffe0466eea8], r12d
je 0x7ffe046246d1
test byte [0x7ffe0466eea0], 4
je 0x7ffe046246d1
mov r9d, dword [rdi + 0x10]
lea rdx, str.Cleaning_up_LDAP_request_0x_x.__Prev_ref_count__0x_x_n
mov r8, rdi
mov ecx, 4
call fcn.7ffe04636b9c
lea rcx, [rdi + 0x30]
mov dword [rdi + 0x10], r12d
call qword [sym.imp.api_ms_win_core_synch_l1_1_0.dll_LeaveCriticalSection]
nop dword [rax + rax]
mov rcx, rdi
call fcn.7ffe0464df28
lea rcx, [0x7ffe0466eda8]
call qword [sym.imp.api_ms_win_core_synch_l1_1_0.dll_EnterCriticalSection]
nop dword [rax + rax]
mov rbx, qword [0x7ffe0466e7b0]
cmp rbx, rsi
jne 0x7ffe0462465b
jmp 0x7ffe0462202f
lea rcx, [rbx - 8]
call fcn.7ffe0465a794
mov rdi, rax
test rax, rax
jne 0x7ffe0462472e
mov rbx, qword [rbx]
jmp 0x7ffe046247c9
lea rcx, [0x7ffe0466ee70]
call qword [sym.imp.api_ms_win_core_synch_l1_1_0.dll_LeaveCriticalSection]
nop dword [rax + rax]
mov rcx, rdi
call fcn.7ffe04658718
lea rcx, [rdi + 0x200]
call qword [sym.imp.api_ms_win_core_synch_l1_1_0.dll_EnterCriticalSection]
nop dword [rax + rax]
cmp dword [0x7ffe0466eeac], r12d
je 0x7ffe0462478e
cmp dword [0x7ffe0466eea8], r12d
je 0x7ffe0462478e
test byte [0x7ffe0466eea0], 4
je 0x7ffe0462478e
mov r9d, dword [rdi]
lea rdx, str.Cleaning_up_LDAP_connection_0x_x.__Prev_ref_count__0x_x_n
mov r8, rdi
mov ecx, 4
call fcn.7ffe04636b9c
lea rcx, [rdi + 0x200]
mov dword [rdi], r12d
call qword [sym.imp.api_ms_win_core_synch_l1_1_0.dll_LeaveCriticalSection]
nop dword [rax + rax]
mov edx, r14d
mov rcx, rdi
call fcn.7ffe04658c14
lea rcx, [0x7ffe0466ee70]
call qword [sym.imp.api_ms_win_core_synch_l1_1_0.dll_EnterCriticalSection]
nop dword [rax + rax]
mov rbx, qword [0x7ffe0466e7f0]
cmp rbx, rsi
jne 0x7ffe04624715
jmp 0x7ffe0462206c
lea rcx, [rbx]
mov rbx, qword [rbx]
mov byte [rcx + 0x28], 1
mov rcx, qword [rcx + 0x18]
call qword [sym.imp.api_ms_win_core_synch_l1_1_0.dll_SetEvent]
nop dword [rax + rax]
cmp rbx, rdi
jne 0x7ffe046247d7
jmp 0x7ffe046220a9
mov rcx, qword [0x7ffe0466e8c8]
test rcx, rcx
je 0x7ffe046220eb
cmp dword [0x7ffe0466eeac], r12d
je 0x7ffe04624842
cmp dword [0x7ffe0466eea8], r12d
je 0x7ffe04624842
test qword [0x7ffe0466eea0], 0x4000000
je 0x7ffe04624842
lea rdx, str.LdapClientTerminate_waiting_for_0x_x_threads._n
mov ecx, 0x4000000
call fcn.7ffe04636b9c
mov rcx, qword [0x7ffe0466e8c8]
mov edx, 0xffffffff
mov r8d, 1
call qword [sym.imp.api_ms_win_core_synch_l1_1_0.dll_WaitForSingleObjectEx]
nop dword [rax + rax]
nop
jmp 0x7ffe046220cc
cmp dword [0x7ffe0466eea8], r12d
je 0x7ffe0462212a
test qword [0x7ffe0466eea0], 0x200000
je 0x7ffe0462212a
mov r8d, ebx
lea rdx, str.Marking_thread_data_entry_for_thread_0x_0lx_as_deleted_n
mov ecx, 0x200000
call fcn.7ffe04636b9c
nop
jmp 0x7ffe0462212a
cmp dword [0x7ffe0466eea8], r12d
je 0x7ffe04622195
test qword [0x7ffe0466eea0], 0x200000
je 0x7ffe04622195
lea rdx, str.Removing_all_per_thread_data_entries_that_are_marked_as_deleted_n
mov ecx, 0x200000
call fcn.7ffe04636c10
mov rdi, qword [0x7ffe0466e828]
jmp 0x7ffe04622195
mov rcx, qword [rbx + 0x18]
mov rbp, qword [rbx]
test rcx, rcx
je 0x7ffe046248e3
call sym.WLDAP32.dll_ldap_memfreeA
mov edx, 0x7272454c
mov rcx, rbx
call fcn.7ffe04621ee0
mov rbx, rbp
test rbp, rbp
jne 0x7ffe046248d2
jmp 0x7ffe046221c3
mov rbx, qword [rcx]
mov edx, 0x7274414c
call fcn.7ffe04621ee0
mov rcx, rbx
test rbx, rbx
jne 0x7ffe046248fd
jmp 0x7ffe046221d0
call fcn.7ffe0462b5f4
mov qword [rbx], r12
jmp 0x7ffe0462222f
mov rbx, r12
mov rax, qword [rbx + rcx]
test rax, rax
je 0x7ffe04624944
mov edx, 0x7272454c
mov rcx, rax
call fcn.7ffe04621ee0
mov rcx, qword [0x7ffe0466e898]
add rbx, 8
cmp rbx, 0x310
jl 0x7ffe04624927
mov edx, 0x7272454c
call fcn.7ffe04621ee0
mov qword [0x7ffe0466e898], r12
jmp 0x7ffe046222c0
mov rbx, r12
mov rax, qword [rbx + rcx]
test rax, rax
je 0x7ffe04624987
mov edx, 0x7272454c
mov rcx, rax
call fcn.7ffe04621ee0
mov rcx, qword [0x7ffe0466e870]
add rbx, 8
cmp rbx, 0x310
jl 0x7ffe0462496a
mov edx, 0x7272454c
call fcn.7ffe04621ee0
mov qword [0x7ffe0466e870], r12
jmp 0x7ffe046222d0
call qword [sym.imp.api_ms_win_core_heap_l1_1_0.dll_HeapDestroy]
nop dword [rax + rax]
mov qword [0x7ffe0466e840], r12
jmp 0x7ffe0462230d
test r14d, r14d
je 0x7ffe04624a0b
mov rax, qword [0x7ffe0466eeb0]
call qword [0x7ffe0465c528]
cmp dword [0x7ffe0466eeac], r12d
je 0x7ffe04624a0b
cmp dword [0x7ffe0466eea8], r12d
je 0x7ffe04624a0b
test qword [0x7ffe0466eea0], 0x10000000
je 0x7ffe04624a0b
test eax, eax
je 0x7ffe04624a0b
mov r8d, eax
lea rdx, str.LdapClientTerminate_wakeup_socket_close_failed_with_error_0x_x._n
mov ecx, 0x10000000
call fcn.7ffe04636b9c
mov qword [0x7ffe0466e0b0], 0xffffffffffffffff
jmp 0x7ffe0462231e
cmp byte [0x7ffe0466e818], r12b
je 0x7ffe04622327
mov rax, qword [0x7ffe0466ef20]
mov byte [0x7ffe0466e818], r12b
call qword [0x7ffe0465c528]
nop
jmp 0x7ffe04622327
mov rax, qword [0x7ffe0466e858]
mov rax, qword [rax + 0x80]
call qword [0x7ffe0465c528]
mov qword [0x7ffe0466e850], r12
jmp 0x7ffe04622337
call qword [sym.imp.api_ms_win_core_libraryloader_l1_2_0.dll_FreeLibrary]
nop dword [rax + rax]
mov qword [0x7ffe0466e820], r12
jmp 0x7ffe04622347
mov rax, qword [0x7ffe0466e800]
mov rax, qword [rax + 0x80]
call qword [0x7ffe0465c528]
mov qword [0x7ffe0466e848], r12
jmp 0x7ffe04622357
call qword [sym.imp.api_ms_win_core_libraryloader_l1_2_0.dll_FreeLibrary]
nop dword [rax + rax]
mov qword [0x7ffe0466e888], r12
jmp 0x7ffe04622367
call qword [sym.imp.api_ms_win_core_libraryloader_l1_2_0.dll_FreeLibrary]
nop dword [rax + rax]
mov qword [0x7ffe0466e8b0], r12
jmp 0x7ffe04622377
call fcn.7ffe046338e8
nop
jmp 0x7ffe046223a1
cmp dword [0x7ffe0466eea8], r12d
je 0x7ffe04622420
test qword [0x7ffe0466eea0], 0x4000000
je 0x7ffe04622420
lea rdx, str.LDAP_Client_API_32_termination_complete._n
mov ecx, 0x4000000
call fcn.7ffe04636c10
nop
jmp 0x7ffe04622420