Function at 0x140101b20
Capabilities:
Get thread local storage value

Disassembly:
push r15
push r14
push rsi
push rdi
push rbp
push rbx
sub rsp, 0x38
mov rsi, rcx
mov rax, qword [0x14029a038]
xor rax, rsp
mov qword [rsp + 0x30], rax
cmp byte [rcx + 0x120], 0
je 0x140101c1d
mov eax, dword [0x1402a4558]
mov ecx, dword [0x14029dfe4]
mov rdx, qword gs:[0x58]
mov rcx, qword [rdx + rcx*8]
cmp eax, dword [rcx + 4]
jg 0x140101f66
mov ecx, dword [0x14029bf80]
call qword [sym.imp.KERNEL32.dll_TlsGetValue]
and rax, 0xfffffffffffffffc
je 0x140101c16
mov rcx, qword [0x1402a4548]
shl rcx, 4
mov edx, dword [rax + rcx + 8]
cmp edx, dword [0x1402a4550]
jne 0x140101c16
mov rdi, qword [rax + rcx]
test rdi, rdi
je 0x140101c16
cmp byte [rsi + 0x128], 0
je 0x140101c16
mov rax, qword [rdi]
test rax, rax
js 0x140101fca
cmp dword [rdi + 0x14], 1
movabs rbx, 0x4000000000000000
jne 0x140101feb
cmp qword [rdi + 8], 0
jne 0x140102030
movabs rax, 0xbfffffffffffffff
lock and qword [rdi], rax
mov r14, qword [rsi + 0x130]
cmp qword [rdi + 8], 0
jne 0x14010200c
mov rax, qword [rdi]
and rax, rbx
movabs rcx, 0xffffffffffffff
and r14, rcx
or r14, rax
mov qword [rdi], r14
dec dword [rdi + 0x14]
mov byte [rsi + 0x120], 0
mov rax, qword [rsi + 0xf0]
mov ecx, dword [rax]
inc ecx
je 0x140101fde
mov dword [rax], ecx
mov rax, qword [rsi - 0x18]
mov rdi, qword [rsi - 0x10]
cmp rax, rdi
je 0x140101d95
cmp qword [rsi - 0x58], 0
je 0x140101d7f
cmp qword [rsi - 0x70], 0
je 0x140101d7f
mov rcx, qword [rsi - 0x28]
test rcx, rcx
je 0x140102054
mov rdx, qword [rcx + 0xa8]
sub rdx, qword [rcx + 0xa0]
cmp rdx, 0x38
jne 0x140101d7f
mov rax, qword [fcn.1401193e0]
lea rcx, [0x140179e10]
cmp rax, rcx
jne 0x140101fb4
mov qword [rsp + 0x28], 0
lea rcx, [rsp + 0x28]
call qword [sym.imp.KERNEL32.dll_QueryPerformanceCounter]
mov rax, qword [rsp + 0x28]
movabs rcx, 0x8637bd05af6
cmp rax, rcx
jg 0x1401020f7
imul rax, rax, 0xf4240
cqo
idiv qword [0x1402a2810]
mov rdi, rax
mov rax, qword [rsi - 0x70]
xor edx, edx
cmp rdi, rax
setns dl
movabs r14, 0x7fffffffffffffff
add rdx, r14
mov rcx, rdi
sub rcx, rax
cmovo rcx, rdx
cmp rcx, 0x1c9c37f
jg 0x140101d5c
movabs rax, 0x8000000000000001
lea r8, [rcx + rax]
mov rdx, qword [rsi - 0x88]
cmp r8, 1
jbe 0x140102057
lea rax, [rdx + rcx]
sar rax, 0x3f
movabs r8, 0x8000000000000000
xor r8, rax
add rdx, rcx
cmovo rdx, r8
mov qword [rsi - 0x88], rdx
cmp rdx, 0x186a0
jge 0x140101e93
mov qword [rsi - 0x68], rdi
cmp qword [rsi - 0x28], 0
je 0x140102074
movzx eax, byte [0x14029c980]
test al, 9
setne bpl
jne 0x140102077
mov byte [rsi - 0x30], bpl
mov qword [rsi - 0x70], rdi
mov rax, qword [rsi - 0x18]
mov rdi, qword [rsi - 0x10]
cmp rax, rdi
je 0x140101fe8
cmp dword [rdi - 0x38], 0
mov dword [rdi - 0x38], 0
jne 0x140101db0
mov rcx, qword [rsp + 0x30]
xor rcx, rsp
call fcn.14017e7b0
nop
add rsp, 0x38
pop rbx
pop rbp
pop rdi
pop rsi
pop r14
pop r15
ret
mov eax, dword [0x1402a61a8]
mov ecx, dword [0x14029dfe4]
mov rdx, qword gs:[0x58]
mov rcx, qword [rdx + rcx*8]
cmp eax, dword [rcx + 4]
jg 0x140101eec
mov ebx, dword [rdi - 0x18]
test ebx, ebx
je 0x140102121
call qword [sym.imp.KERNEL32.dll_GetCurrentThreadId]
mov esi, eax
test ebx, ebx
setne bl
mov rdi, qword [rdi - 0x20]
lea rcx, [0x1402a6198]
call qword [sym.imp.KERNEL32.dll_TryAcquireSRWLockExclusive]
test al, al
je 0x140101e57
mov rax, qword [0x1402a6188]
test rax, rax
je 0x140101e81
lea rcx, [0x1402a5534]
xor edx, edx
mov r8d, ebx
xor r8b, 1
cmp rdx, 0x32
je 0x140101fdb
cmp qword [rcx - 0x24], rdi
jne 0x140101e49
cmp byte [rcx - 0x1c], 0
jne 0x140101e49
movzx r9d, byte [rcx - 4]
test r9b, r9b
sete r10b
or r10b, r8b
jne 0x140101e65
cmp dword [rcx], esi
je 0x140101e71
inc rdx
add rcx, 0x40
cmp rax, rdx
jne 0x140101e1e
jmp 0x140101e81
lea rcx, [0x1402a6198]
call fcn.1400fdfc0
jmp 0x140101e02
test r9b, r9b
setne r9b
xor r9b, bl
jne 0x140101e49
xor eax, eax
xchg byte [rcx - 0x2c], al
test al, 1
je 0x140101e81
inc qword [0x1402a6190]
lea rcx, [0x1402a6198]
call qword [sym.imp.KERNEL32.dll_ReleaseSRWLockExclusive]
jmp 0x140101d95
cvtsi2sd xmm0, rdx
divsd xmm0, qword [0x140275810]
cvttsd2si ebx, xmm0
mov rcx, qword [rsi - 0x58]
mov rax, qword [rcx]
mov rax, qword [rax + 0x30]
mov edx, 6
mov r8d, ebx
call qword [case.0x1401e7f70.0]
movsxd rax, ebx
imul rcx, rax, 0x3e8
mov rax, qword [rsi - 0x88]
xor edx, edx
cmp rax, rcx
setns dl
add rdx, r14
sub rax, rcx
cmovo rax, rdx
mov qword [rsi - 0x88], rax
jmp 0x140101d4d
lea rcx, [0x1402a61a8]
call fcn.14017b2bc
cmp dword [0x1402a61a8], 0xffffffff
jne 0x140101dd5
lea rax, [0x14026ca90]
mov qword [0x1402a5500], rax
mov eax, 0x40
lea rcx, [0x1402a5500]
xor edx, edx
mov byte [rax + rcx - 0x38], dl
mov byte [rax + rcx - 0x28], dl
mov byte [rax + rcx - 0x10], dl
mov qword [rax + rcx], 0
add rax, 0x40
cmp rax, 0xcc0
jne 0x140101f21
xorpd xmm0, xmm0
movupd xmmword [0x1402a6198], xmm0
movupd xmmword [0x1402a6188], xmm0
lea rcx, [0x1402a61a8]
call fcn.14017b25c
jmp 0x140101dd5
lea rcx, [0x1402a4558]
call fcn.14017b2bc
cmp dword [0x1402a4558], 0xffffffff
jne 0x140101b70
mov qword [0x1402a4550], 0
lea rcx, [0x1402a4548]
mov qword [0x1402a4548], 0xffffffffffffffff
xor edx, edx
call fcn.140002850
lea rcx, [0x1402a4558]
call fcn.14017b25c
jmp 0x140101b70
lea rdi, [rsp + 0x28]
mov rcx, rdi
call qword [case.0x1401e7f70.0]
mov rdi, qword [rdi]
jmp 0x140101cd2
mov rcx, qword [0x1402a4540]
call fcn.1401ba0f0
jmp 0x140101bbb
int3
mov ecx, 1
jmp 0x140101c2e
int3
cmp byte [rsi + 0x138], 0
je 0x140101be8
cmp qword [rdi + 8], 0
jne 0x140102126
lock or qword [rdi], rbx
jmp 0x140101be8
lea rcx, [rdi + 8]
mov r15, qword [rdi]
call fcn.1401ba590
movabs rcx, 0xff00000000000000
and rcx, r15
or rcx, rax
mov qword [rdi], rcx
jmp 0x140101bfa
lea rcx, [rdi + 8]
mov r14, qword [rdi]
call fcn.1401ba590
movabs rcx, 0xff00000000000000
and rcx, r14
or rcx, rax
mov qword [rdi], rcx
jmp 0x140101bda
int3
lea r8, [rdx + rax]
dec rax
cmp r8, 1
ja 0x140101ee0
cmp rdx, rcx
je 0x140101ee0
int3
int3
and al, 0x19
cmp byte [rsi - 0x30], 0
jne 0x140102087
test al, al
jne 0x14010214a
test al, al
je 0x140101d6f
cmp byte [rsi - 0x50], 0
je 0x14010219a
mov rax, qword [rsi - 0x70]
lea rbx, [rsi - 0x48]
mov qword [rsp + 0x20], rax
lea rdx, [0x14029c980]
lea r8, str.IdleWork
mov cl, 0x42
mov r9, rbx
call fcn.14003a110
test byte [0x14029c980], 0x19
je 0x140101d6f
cmp byte [rsi - 0x50], 0
je 0x14010219a
mov qword [rsp + 0x20], rdi
lea rdx, [0x14029c980]
lea r8, [0x14027250a]
mov cl, 0x45
mov r9, rbx
call fcn.14003a110
jmp 0x140101d6f
mov rcx, qword [0x1402a2810]
cqo
idiv rcx
imul r8, rax, 0xf4240
imul rax, rdx, 0xf4240
cqo
idiv rcx
mov rdi, rax
add rdi, r8
jmp 0x140101cd2
jmp 0x140101de8
lea rcx, [rdi + 8]
mov r14, qword [rdi]
call fcn.1401ba590
movabs rcx, 0xff00000000000000
and rcx, r14
or rcx, rax
mov qword [rdi], rcx
jmp 0x140102003
cmp byte [rsi - 0x50], 0
je 0x14010219a
mov rax, qword [rsi - 0x70]
mov rcx, 0xfffffffffff0bdc0
lea rdx, [rcx + rax]
sar rdx, 0x3f
btc rdx, 0x3f
add rcx, rax
cmovo rcx, rdx
lea r9, [rsi - 0x48]
mov qword [rsp + 0x20], rcx
lea rdx, [0x14029c980]
lea r8, str.MessagePumpPhases
mov cl, 0x49
call fcn.14003a110
mov al, byte [0x14029c980]
and al, 0x19
jmp 0x140102087
ud2