Function at 0x1400f4dd0
Capabilities:
Get thread local storage value

Disassembly:
push r15
push r14
push r12
push rsi
push rdi
push rbp
push rbx
sub rsp, 0x50
mov r15d, r9d
mov r14d, r8d
mov rbp, rdx
mov rsi, rcx
mov rax, qword [0x140219028]
xor rax, rsp
mov qword [rsp + 0x48], rax
mov rdi, qword [0x1402276f0]
cmp rdi, 1
jbe 0x1400f51bc
mov ecx, dword [0x14021aed0]
call qword [sym.imp.KERNEL32.dll_TlsGetValue]
and rax, 0xfffffffffffffffc
je 0x1400f53ca
movsxd rcx, dword [rdi]
shl rcx, 4
mov edx, dword [rax + rcx + 8]
cmp edx, dword [rdi + 4]
jne 0x1400f53ca
mov rdi, qword [rax + rcx]
movabs rbx, 0xfffffffe00000000
mov rax, rdi
and rax, rbx
cmp rax, qword [0x14021af08]
je 0x1400f513f
mov qword [rsi], rdi
mov rdi, qword [0x140227710]
cmp rdi, 1
jbe 0x1400f52fe
mov ecx, dword [0x14021aed0]
call qword [sym.imp.KERNEL32.dll_TlsGetValue]
and rax, 0xfffffffffffffffc
je 0x1400f53d1
movsxd rcx, dword [rdi]
shl rcx, 4
mov edx, dword [rax + rcx + 8]
cmp edx, dword [rdi + 4]
jne 0x1400f53d1
mov rdi, qword [rax + rcx]
mov rax, rdi
and rax, rbx
cmp rax, qword [0x14021af08]
je 0x1400f53d8
mov qword [rsi + 8], rdi
cmp r14d, 1
sete al
je 0x1400f4ec0
test rdi, rdi
jne 0x1400f5196
mov byte [rsi + 0x10], al
mov rdi, qword [rbp + 0x18]
mov qword [rsp + 0x30], 0x11be9915
mov rcx, qword [0x140227618]
test rcx, rcx
jne 0x1400f53e5
xor ebp, ebp
lea r12, [rsi + 0x18]
and rbx, rbp
cmp rbx, qword [0x14021af08]
je 0x1400f53f2
mov qword [r12], rbp
test rbp, rbp
jne 0x1400f53ff
mov qword [rsi + 0x28], 0
mov dword [rsi + 0x30], 0x11be9915
mov byte [rsi + 0x38], 0
mov rdi, qword [0x140227710]
cmp rdi, 1
jbe 0x1400f534b
mov ecx, dword [0x14021aed0]
call qword [sym.imp.KERNEL32.dll_TlsGetValue]
and rax, 0xfffffffffffffffc
je 0x1400f53a9
movsxd rcx, dword [rdi]
shl rcx, 4
mov qword [rax + rcx], rsi
mov ecx, dword [rdi + 4]
movsxd rdx, dword [rdi]
shl rdx, 4
mov dword [rax + rdx + 8], ecx
mov rdi, qword [0x14022a130]
cmp rdi, 1
jbe 0x1400f52b1
mov ecx, dword [0x14021aed0]
call qword [sym.imp.KERNEL32.dll_TlsGetValue]
and rax, 0xfffffffffffffffc
je 0x1400f4f96
movsxd rcx, dword [rdi]
shl rcx, 4
mov edx, dword [rax + rcx + 8]
cmp edx, dword [rdi + 4]
jne 0x1400f4f96
mov rax, qword [rax + rcx]
test rax, rax
jne 0x1400f50d2
test r15d, r15d
jne 0x1400f514c
cmp byte [rsi + 0x10], 0
jne 0x1400f514c
cmp qword [rsi + 8], 0
jne 0x1400f509e
cmp byte [rsi + 0x38], 0
jne 0x1400f54ca
lea rbp, [rsi + 0x40]
mov rax, qword [fcn.1401122d0]
lea rcx, [0x14011c810]
cmp rax, rcx
jne 0x1400f53bc
mov qword [rsp + 0x30], 0
lea rcx, [rsp + 0x30]
call qword [sym.imp.KERNEL32.dll_QueryPerformanceCounter]
mov rax, qword [rsp + 0x30]
movabs rcx, 0x8637bd05af6
cmp rax, rcx
jg 0x1400f54dc
imul rax, rax, 0xf4240
cqo
idiv qword [0x140227198]
mov qword [rbp], rax
mov eax, dword [0x140227708]
mov ecx, dword [0x140222a94]
mov rdx, qword gs:[0x58]
mov rcx, qword [rdx + rcx*8]
cmp eax, dword [rcx + 4]
jg 0x1400f5209
lea rcx, [0x140227700]
call qword [sym.imp.KERNEL32.dll_TryAcquireSRWLockExclusive]
test al, al
je 0x1400f5398
mov eax, dword [0x14022770c]
mov ecx, dword [0x140222a94]
mov rdx, qword gs:[0x58]
mov rcx, qword [rdx + rcx*8]
cmp eax, dword [rcx + 4]
jg 0x1400f523e
mov qword [rsi + 0x48], 0
lea rcx, [0x140227700]
call qword [sym.imp.KERNEL32.dll_ReleaseSRWLockExclusive]
mov rax, qword [rsi + 0x48]
test rax, rax
jne 0x1400f5125
mov byte [rsi + 0x38], 1
mov rcx, qword [rsi]
test rcx, rcx
jne 0x1400f510e
mov rax, qword [r12]
test rax, rax
jne 0x1400f5422
mov rcx, qword [rsp + 0x48]
xor rcx, rsp
call fcn.14011fe20
mov rax, rsi
add rsp, 0x50
pop rbx
pop rbp
pop rdi
pop rsi
pop r12
pop r14
pop r15
ret
cmp byte [rax], 0
jne 0x1400f4f96
mov eax, dword [0x14022a114]
mov ecx, dword [0x140222a94]
mov rdx, qword gs:[0x58]
mov rcx, qword [rdx + rcx*8]
cmp eax, dword [rcx + 4]
jg 0x1400f5268
cmp byte [0x14022a110], 0
jne 0x1400f509e
jmp 0x1400f4f96
mov rax, qword [rsi + 8]
test rax, rax
jne 0x1400f519e
mov edx, r14d
call fcn.140113410
jmp 0x1400f50a6
mov rax, qword [rax + 0x1f0]
cmp qword [rbp], rax
jge 0x1400f509a
mov qword [rbp], rax
jmp 0x1400f509a
mov rcx, rdi
call fcn.1400f2260
jmp 0x1400f4e55
mov rax, qword [rsi + 8]
test rax, rax
je 0x1400f509e
cmp byte [rax + 0x38], 0
je 0x1400f509e
mov rdi, qword [rax + 0x48]
mov qword [rax + 0x48], 0
test rdi, rdi
je 0x1400f509e
lock dec dword [rdi]
jne 0x1400f509e
mov rcx, rdi
call fcn.14005b670
mov rcx, rdi
call fcn.14011d780
jmp 0x1400f509e
mov al, byte [rdi + 0x10]
jmp 0x1400f4ec0
cmp r14d, 1
jne 0x1400f50a6
cmp byte [rax + 0x10], 0
jne 0x1400f50a6
call fcn.140187ba0
jmp 0x1400f50a6
lea rcx, [0x1402276f0]
call fcn.1400f5aa0
test al, al
je 0x1400f5503
mov qword [0x1402276f8], 0
lea rbx, [0x1402276f0]
lea rdi, [0x1402276f8]
mov rcx, rdi
xor edx, edx
call fcn.140012fc0
mov rcx, rbx
mov rdx, rdi
xor r8d, r8d
mov r9, rbx
call fcn.140014c00
jmp 0x1400f4e0a
lea rcx, [0x140227708]
call fcn.14011d638
cmp dword [0x140227708], 0xffffffff
jne 0x1400f503e
mov qword [0x140227700], 0
lea rcx, [0x140227708]
call fcn.14011d5d8
jmp 0x1400f503e
lea rcx, [0x14022770c]
call fcn.14011d638
cmp dword [0x14022770c], 0xffffffff
jne 0x1400f5078
lea rcx, [0x14022770c]
call fcn.14011d5d8
jmp 0x1400f5078
lea rcx, [0x14022a114]
call fcn.14011d638
cmp dword [0x14022a114], 0xffffffff
jne 0x1400f5100
mov rcx, qword [0x1402256a0]
test rcx, rcx
je 0x1400f5299
lea rdx, str.enable_background_thread_pool
call fcn.1400d5150
mov byte [0x14022a110], 1
lea rcx, [0x14022a114]
call fcn.14011d5d8
jmp 0x1400f5100
lea rcx, [0x14022a130]
call fcn.1400f5aa0
test al, al
je 0x1400f550f
mov qword [0x14022a138], 0
lea rbp, [0x14022a130]
lea rdi, [0x14022a138]
mov rcx, rdi
xor edx, edx
call fcn.140012fc0
mov rcx, rbp
mov rdx, rdi
xor r8d, r8d
mov r9, rbp
call fcn.140014c00
jmp 0x1400f4f67
lea rcx, [0x140227710]
call fcn.1400f5aa0
test al, al
je 0x1400f551b
mov qword [0x140227718], 0
lea r12, [0x140227710]
lea rdi, [0x140227718]
mov rcx, rdi
xor edx, edx
call fcn.140012fc0
mov rcx, r12
mov rdx, rdi
xor r8d, r8d
mov r9, r12
call fcn.140014c00
jmp 0x1400f4e69
lea rcx, [0x140227710]
call fcn.1400f5aa0
test al, al
je 0x1400f5527
mov qword [0x140227718], 0
lea rbp, [0x140227710]
lea rdi, [0x140227718]
mov rcx, rdi
xor edx, edx
call fcn.140012fc0
mov rcx, rbp
mov rdx, rdi
xor r8d, r8d
mov r9, rbp
call fcn.140014c00
jmp 0x1400f4f27
lea rcx, [0x140227700]
call fcn.1400fd520
jmp 0x1400f5053
test rsi, rsi
je 0x1400f4f56
call fcn.140013120
jmp 0x1400f4f3d
mov rcx, rbp
call qword [0x14023a010]
jmp 0x1400f5019
xor edi, edi
jmp 0x1400f4e38
xor edi, edi
jmp 0x1400f4e97
mov rcx, rdi
call fcn.1400f2260
jmp 0x1400f4eaa
call fcn.140178d80
mov rbp, rax
jmp 0x1400f4ee2
mov rcx, rbp
call fcn.1400f2260
jmp 0x1400f4ef6
lea rax, [rsp + 0x30]
mov qword [rsp + 0x20], rax
mov rcx, rbp
mov rdx, rdi
xor r8d, r8d
mov r9b, 0xf0
call fcn.140177ad0
mov dword [rsi + 0x20], eax
jmp 0x1400f4f03
mov eax, dword [rax + 0x18]
cmp eax, dword [rsi + 0x20]
jbe 0x1400f50b3
movabs rax, 0xaaaaaaaaaaaaaaaa
lea rdi, [rsp + 0x28]
mov qword [rdi], rax
mov rcx, rdi
call fcn.140112220
mov rcx, r12
call fcn.140178440
mov rbx, rax
mov rax, qword [rdi]
lea rdi, [rsp + 0x40]
mov qword [rdi], rax
lea rax, str.timestamp_us
lea rbp, [rsp + 0x30]
mov qword [rbp], rax
mov qword [rbp + 8], 0xc
mov r15d, 8
mov qword [rsp + 0x20], r15
mov rcx, rbx
mov rdx, rbp
mov r8b, 8
mov r9, rdi
call fcn.140177730
movsxd rax, r14d
mov qword [rdi], rax
lea rax, str.blocking_type
mov qword [rbp], rax
mov qword [rbp + 8], 0xd
mov qword [rsp + 0x20], r15
lea rdx, [rsp + 0x30]
lea r9, [rsp + 0x40]
mov rcx, rbx
mov r8b, 8
call fcn.140177730
jmp 0x1400f50b3
lea rcx, [rsi + 0x40]
call fcn.14017bb70
mov byte [rsi + 0x38], 0
jmp 0x1400f4fbe
mov rcx, qword [0x140227198]
cqo
idiv rcx
imul rbx, rax, 0xf4240
imul rax, rdx, 0xf4240
cqo
idiv rcx
add rax, rbx
jmp 0x1400f5015
mov rdi, qword [0x1402276f0]
jmp 0x1400f4e0a
mov rdi, qword [0x14022a130]
jmp 0x1400f4f67
mov rdi, qword [0x140227710]
jmp 0x1400f4e69
mov rdi, qword [0x140227710]
jmp 0x1400f4f27