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

Disassembly:
mov qword [rsp + 8], rcx
push rbp
push rbx
push rsi
push rdi
push r12
push r13
push r14
push r15
lea rbp, [rsp - 0x1f]
sub rsp, 0x98
mov r12, rdx
mov rbx, rcx
xor edi, edi
mov dword [rbp + 0x6f], edi
lea rcx, [rbp + 7]
call qword [sym.imp.KERNEL32.dll_QueryPerformanceCounter]
nop
lea rsi, str.secc::CUIPluginManager::DestroyUIPlugin
mov qword [rbp - 1], rsi
mov r8d, dword [0x1401c1658]
mov eax, dword [0x1401c165c]
add r8d, eax
je 0x140053df9
mov dword [rbp - 0x29], edi
call fcn.140005ad0
mov qword [rbp - 0x31], rax
lock inc dword [rbp - 0x29]
mov dword [rbp + 0x6f], 2
mov rax, qword [rbp - 0x31]
test rax, rax
jne 0x140053dbd
call fcn.140005ad0
mov qword [rbp - 0x31], rax
lock inc dword [rbp - 0x29]
mov rcx, qword [rbp - 0x31]
mov dword [rbp + 0x77], 0x20
mov qword [rsp + 0x30], rsi
lea rax, str._s_start:
mov qword [rsp + 0x28], rax
lea rax, str._CScopeTrace::operator___
mov qword [rsp + 0x20], rax
lea r9, [0x140000000]
lea r8, [rbp + 0x77]
movsx edx, di
call fcn.140004c90
nop
mov eax, dword [rbp + 0x6f]
test al, 2
je 0x140053e38
and eax, 0xfffffffd
mov dword [rbp + 0x6f], eax
mov qword [rbp - 0x31], rdi
mov eax, 0xffffffff
lock xadd dword [rbp - 0x29], eax
cmp eax, 1
js 0x140053e34
nop dword [rax]
call fcn.140005e40
mov eax, 0xffffffff
lock xadd dword [rbp - 0x29], eax
cmp eax, 1
jns 0x140053e20
lock inc dword [rbp - 0x29]
mov rax, qword [0x1401c0ff8]
cmp eax, 0xffffffff
je 0x140053e58
mov ecx, eax
call qword [sym.imp.KERNEL32.dll_TlsGetValue]
mov rcx, rax
mov rax, qword [0x1401c0ff8]
jmp 0x140053e5e
mov ecx, dword [0x1401c0ffc]
lea edx, [rcx + 1]
cmp eax, 0xffffffff
je 0x140053e71
movsxd rdx, edx
mov ecx, eax
call qword [sym.imp.KERNEL32.dll_TlsSetValue]
mov esi, edi
mov dword [rbp - 9], edi
lea r14, [rbx + 0x18]
mov qword [rbp - 0x11], r14
test r14, r14
je 0x140053e94
mov rcx, r14
call qword [sym.imp.KERNEL32.dll_EnterCriticalSection]
mov esi, 1
mov dword [rbp - 9], esi
lea r13, [rbx + 8]
mov qword [rbp - 0x39], rdi
test r12, r12
jne 0x140053edf
lea edx, [r12 + 0x40]
lea rcx, [rbp - 0x39]
call fcn.14001c030
test al, al
je 0x140054285
mov rbx, qword [rbp - 0x39]
test rbx, rbx
je 0x140053ed0
mov rax, qword [rbx - 0xc]
mov qword [rax + 8], rdi
mov word [rbx], di
jmp 0x140053f6d
mov rax, rdi
mov qword [rax + 8], rdi
mov word [rbx], di
jmp 0x140053f6d
mov rdi, 0xffffffffffffffff
nop word [rax + rax]
inc rdi
cmp word [r12 + rdi*2], 0
jne 0x140053ef0
mov rdx, rdi
mov eax, 0x40
cmp rdi, rax
cmovb rdx, rax
lea rcx, [rbp - 0x39]
call fcn.14001c030
test al, al
je 0x140054285
lea r15, [rdi + rdi]
mov r8, r15
mov rdx, r12
mov rbx, qword [rbp - 0x39]
mov rcx, rbx
call sub.VCRUNTIME140.dll_memcpy
test rbx, rbx
je 0x140053f45
mov rax, qword [rbx - 0xc]
test rax, rax
je 0x140053f45
mov rcx, qword [rax + 0x10]
jmp 0x140053f47
xor ecx, ecx
cmp rdi, rcx
ja 0x140054285
test rbx, rbx
je 0x140053f5b
mov rax, qword [rbx - 0xc]
jmp 0x140053f5d
xor eax, eax
mov qword [rax + 8], rdi
xor edi, edi
mov word [r15 + rbx], di
test rbx, rbx
je 0x140053fa2
mov rax, qword [rbx - 0xc]
test rax, rax
je 0x140053fa2
cmp dword [rbx - 0x10], 0xabcd
jne 0x140054285
cmp dword [rbx - 4], 0xabcd
jne 0x140054285
mov rax, qword [rax + 0x10]
cmp dword [rbx + rax*2 + 2], 0xabcd
jne 0x140054285
mov r10, qword [r13]
mov rdx, qword [r10 + 8]
mov r15, r10
lea r9, [0x1401836d8]
cmp byte [rdx + 0x19], 0
jne 0x140054012
nop word [rax + rax]
mov r8, r9
test rbx, rbx
cmovne r8, rbx
mov rax, qword [rdx + 0x20]
mov rcx, r9
test rax, rax
cmovne rcx, rax
sub r8, rcx
nop dword [rax + rax]
movzx eax, word [rcx]
cmp ax, word [rcx + r8]
jne 0x140053ff7
add rcx, 2
test ax, ax
jne 0x140053fe0
mov eax, edi
jmp 0x140053ffc
sbb eax, eax
or eax, 1
test eax, eax
jns 0x140054006
mov rdx, qword [rdx + 0x10]
jmp 0x14005400c
mov r15, rdx
mov rdx, qword [rdx]
cmp byte [rdx + 0x19], 0
je 0x140053fc0
cmp byte [r15 + 0x19], 0
jne 0x140054052
mov rax, qword [r15 + 0x20]
mov rcx, r9
test rax, rax
cmovne rcx, rax
test rbx, rbx
cmovne r9, rbx
sub rcx, r9
movzx eax, word [r9]
cmp ax, word [r9 + rcx]
jne 0x140054049
add r9, 2
test ax, ax
jne 0x140054031
mov eax, edi
jmp 0x14005404e
sbb eax, eax
or eax, 1
test eax, eax
jns 0x140054055
mov r15, r10
test rbx, rbx
je 0x1400540de
mov rdi, qword [rbx - 0xc]
test rdi, rdi
je 0x1400540de
cmp dword [rbx - 0x10], 0xabcd
jne 0x14005428f
cmp dword [rbx - 4], 0xabcd
jne 0x14005428f
mov rax, qword [rdi + 0x10]
cmp dword [rbx + rax*2 + 2], 0xabcd
jne 0x14005428f
test rdi, rdi
je 0x1400540de
cmp byte [rdi + 0x20], 0
je 0x1400540b2
mov rcx, qword [rdi]
mov rax, qword [rcx]
lea rdx, [rbx - 0x10]
mov rax, qword [rax + 0x10]
call qword [case.0x140077645.0]
mov rbx, qword [rdi]
cmp byte [rdi + 0x21], 0
je 0x1400540ce
mov rax, qword [rbx]
mov rdx, rdi
mov rcx, rbx
mov rax, qword [rax + 0x10]
call qword [case.0x140077645.0]
mov rax, qword [rbx]
mov rcx, rbx
mov rax, qword [rax + 0x18]
call qword [case.0x140077645.0]
xor ebx, ebx
mov qword [rbp - 0x39], rbx
cmp r15, qword [r13]
je 0x14005417b
mov rcx, qword [r15 + 0x28]
mov rax, qword [rcx]
mov rax, qword [rax + 0x20]
call qword [case.0x140077645.0]
mov rcx, qword [rbp + 0x67]
add rcx, 0x48
lea rdx, [r15 + 0x28]
call fcn.140069800
mov rdx, r15
mov rcx, r13
call fcn.14001aa50
mov rbx, rax
mov rcx, qword [rax + 0x20]
test rcx, rcx
je 0x14005415c
mov rax, qword [rcx - 0xc]
test rax, rax
je 0x14005415c
cmp dword [rcx - 0x10], 0xabcd
jne 0x14005427b
cmp dword [rcx - 4], 0xabcd
jne 0x14005427b
mov rax, qword [rax + 0x10]
cmp dword [rcx + rax*2 + 2], 0xabcd
jne 0x14005427b
lea rcx, [rbx + 0x20]
call fcn.14001bab0
nop
mov edx, 0x30
mov rcx, rbx
call fcn.14007e2a0
mov dil, 1
jmp 0x140054233
mov ecx, dword [0x1401c1658]
mov eax, dword [0x1401c165c]
add ecx, eax
je 0x1400541f1
mov dword [rbp - 0x19], ebx
call fcn.140005ad0
mov qword [rbp - 0x21], rax
lock inc dword [rbp - 0x19]
or dword [rbp + 0x6f], 1
mov rax, qword [rbp - 0x21]
test rax, rax
jne 0x1400541b5
call fcn.140005ad0
mov qword [rbp - 0x21], rax
lock inc dword [rbp - 0x19]
mov rcx, qword [rbp - 0x21]
mov dword [rbp + 0x7f], 4
mov qword [rsp + 0x30], r12
lea rax, str.__s__cannot_be_found
mov qword [rsp + 0x28], rax
lea rax, str.secc::CUIPluginManager::DestroyUIPlugin
mov qword [rsp + 0x20], rax
lea r9, [0x140000000]
lea r8, [rbp + 0x7f]
movsx edx, bx
call fcn.140004c90
nop
mov eax, dword [rbp + 0x6f]
test al, 1
je 0x140054229
and eax, 0xfffffffe
mov dword [rbp + 0x6f], eax
mov qword [rbp - 0x21], rbx
mov eax, 0xffffffff
lock xadd dword [rbp - 0x19], eax
cmp eax, 1
js 0x140054225
call fcn.140005e40
mov eax, 0xffffffff
lock xadd dword [rbp - 0x19], eax
cmp eax, 1
jns 0x140054211
lock inc dword [rbp - 0x19]
xor dil, dil
mov esi, dword [rbp - 9]
mov r14, qword [rbp - 0x11]
mov ebx, esi
test esi, esi
jle 0x14005425a
nop dword [rax]
test r14, r14
je 0x140054254
test esi, esi
jle 0x140054254
dec esi
mov rcx, r14
call qword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
dec ebx
test ebx, ebx
jg 0x140054240
lea rcx, [rbp - 1]
call fcn.140032660
movzx eax, dil
add rsp, 0x98
pop r15
pop r14
pop r13
pop r12
pop rdi
pop rsi
pop rbx
pop rbp
ret
xor edx, edx
xor ecx, ecx
call sub.VCRUNTIME140.dll__CxxThrowException
nop
xor edx, edx
xor ecx, ecx
call sub.VCRUNTIME140.dll__CxxThrowException
nop
xor edx, edx
xor ecx, ecx
call sub.VCRUNTIME140.dll__CxxThrowException
int3