Function at 0x1400cd8e0
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 ebx, r9d
mov edi, r8d
mov r14, rdx
mov rsi, rcx
mov rax, qword [0x14033f038]
xor rax, rsp
mov qword [rsp + 0x48], rax
mov r15, qword [0x14035aa98]
cmp r15, 1
jbe 0x1400cdc07
mov ecx, dword [0x1403411e0]
call qword [sym.imp.KERNEL32.dll_TlsGetValue]
and rax, 0xfffffffffffffffc
je 0x1400cdd40
mov rcx, qword [r15]
shl rcx, 4
mov edx, dword [rax + rcx + 8]
cmp edx, dword [r15 + 8]
jne 0x1400cdd40
mov r15, qword [rax + rcx]
mov rax, qword [0x1403428e0]
and rax, r15
cmp rax, qword [0x1403428c8]
je 0x1400cdd50
mov qword [rsi], r15
mov r15, qword [0x14035aab0]
cmp r15, 1
jbe 0x1400cdc53
mov ecx, dword [0x1403411e0]
call qword [sym.imp.KERNEL32.dll_TlsGetValue]
and rax, 0xfffffffffffffffc
je 0x1400cdd48
mov rcx, qword [r15]
shl rcx, 4
mov edx, dword [rax + rcx + 8]
cmp edx, dword [r15 + 8]
jne 0x1400cdd48
mov r15, qword [rax + rcx]
mov rax, qword [0x1403428e0]
and rax, r15
cmp rax, qword [0x1403428c8]
je 0x1400cdd5d
mov qword [rsi + 8], r15
cmp edi, 1
sete bpl
mov eax, ebp
je 0x1400cd9d2
test r15, r15
jne 0x1400cdceb
mov byte [rsi + 0x10], al
mov r15, qword [r14 + 0x18]
mov qword [rsp + 0x30], 0x11be9915
mov rcx, qword [0x140352ad8]
test rcx, rcx
jne 0x1400cdd6a
xor r12d, r12d
lea r14, [rsi + 0x18]
mov rax, qword [0x1403428e0]
and rax, r12
cmp rax, qword [0x1403428c8]
je 0x1400cdd77
mov qword [r14], r12
test r12, r12
jne 0x1400cdd84
mov qword [rsi + 0x28], 0
mov dword [rsi + 0x30], 0x11be9915
mov byte [rsi + 0x38], 0
mov r15, qword [0x14035aab0]
cmp r15, 1
jbe 0x1400cdda7
mov ecx, dword [0x1403411e0]
call qword [sym.imp.KERNEL32.dll_TlsGetValue]
and rax, 0xfffffffffffffffc
je 0x1400cddf3
mov rcx, qword [r15]
shl rcx, 4
mov qword [rax + rcx], rsi
mov ecx, dword [r15 + 8]
mov rdx, qword [r15]
shl rdx, 4
mov dword [rax + rdx + 8], ecx
mov r15, qword [0x14035be50]
cmp r15, 1
jbe 0x1400cdc9f
mov ecx, dword [0x1403411e0]
call qword [sym.imp.KERNEL32.dll_TlsGetValue]
and rax, 0xfffffffffffffffc
je 0x1400cdab1
mov rcx, qword [r15]
shl rcx, 4
mov edx, dword [rax + rcx + 8]
cmp edx, dword [r15 + 8]
jne 0x1400cdab1
mov rax, qword [rax + rcx]
test rax, rax
jne 0x1400cdecd
test ebx, ebx
jne 0x1400cdcf6
cmp byte [rsi + 0x10], 0
jne 0x1400cdcf6
cmp qword [rsi + 8], 0
jne 0x1400cdb71
lea rbx, [rsi + 0x40]
cmp byte [rsi + 0x38], 0
jne 0x1400cdf0d
mov rax, qword [fcn.14007a620]
mov rcx, rbx
call qword [case.0x140211850.0]
mov eax, dword [0x14035aa90]
mov ecx, dword [0x14034fed0]
mov rdx, qword gs:[0x58]
mov rcx, qword [rdx + rcx*8]
cmp eax, dword [rcx + 4]
jg 0x1400cdba8
lea rcx, [0x14035aa88]
call qword [sym.imp.KERNEL32.dll_TryAcquireSRWLockExclusive]
test al, al
je 0x1400cdf1e
mov eax, dword [0x14035aa94]
mov ecx, dword [0x14034fed0]
mov rdx, qword gs:[0x58]
mov rcx, qword [rdx + rcx*8]
cmp eax, dword [rcx + 4]
jg 0x1400cdbdd
mov qword [rsi + 0x48], 0
lea rcx, [0x14035aa88]
call qword [sym.imp.KERNEL32.dll_ReleaseSRWLockExclusive]
mov rax, qword [rsi + 0x48]
test rax, rax
jne 0x1400cdf2f
mov byte [rsi + 0x38], 1
mov rcx, qword [rsi]
test rcx, rcx
jne 0x1400cde06
mov rax, qword [r14]
test rax, rax
jne 0x1400cde1f
mov rcx, qword [rsp + 0x48]
xor rcx, rsp
call fcn.140171860
mov rax, rsi
add rsp, 0x50
pop rbx
pop rbp
pop rdi
pop rsi
pop r12
pop r14
pop r15
ret
lea rcx, [0x14035aa90]
call fcn.14016f8b4
cmp dword [0x14035aa90], 0xffffffff
jne 0x1400cdb11
mov qword [0x14035aa88], 0
lea rcx, [0x14035aa90]
call fcn.14016ef8c
jmp 0x1400cdb11
lea rcx, [0x14035aa94]
call fcn.14016f8b4
cmp dword [0x14035aa94], 0xffffffff
jne 0x1400cdb4b
lea rcx, [0x14035aa94]
call fcn.14016ef8c
jmp 0x1400cdb4b
lea rcx, [0x14035aa98]
call fcn.14006d330
test al, al
je 0x1400cdf47
xorps xmm0, xmm0
movups xmmword [0x14035aaa0], xmm0
lea r12, [0x14035aa98]
lea r15, [0x14035aaa0]
mov rcx, r15
xor edx, edx
call fcn.140041af0
mov rcx, r12
mov rdx, r15
xor r8d, r8d
mov r9, r12
call fcn.14006d410
jmp 0x1400cd91a
lea rcx, [0x14035aab0]
call fcn.14006d330
test al, al
je 0x1400cdf53
xorps xmm0, xmm0
movups xmmword [0x14035aab8], xmm0
lea r12, [0x14035aab0]
lea r15, [0x14035aab8]
mov rcx, r15
xor edx, edx
call fcn.140041af0
mov rcx, r12
mov rdx, r15
xor r8d, r8d
mov r9, r12
call fcn.14006d410
jmp 0x1400cd974
lea rcx, [0x14035be50]
call fcn.14006d330
test al, al
je 0x1400cdf5f
xorps xmm0, xmm0
movups xmmword [0x14035be58], xmm0
lea r12, [0x14035be50]
lea r15, [0x14035be58]
mov rcx, r15
xor edx, edx
call fcn.140041af0
mov rcx, r12
mov rdx, r15
xor r8d, r8d
mov r9, r12
call fcn.14006d410
jmp 0x1400cda81
mov al, byte [r15 + 0x10]
xor ebp, ebp
jmp 0x1400cd9d2
mov rax, qword [rsi + 8]
test rax, rax
je 0x1400cdb71
cmp byte [rax + 0x38], 0
je 0x1400cdb71
mov rbx, qword [rax + 0x48]
mov qword [rax + 0x48], 0
test rbx, rbx
je 0x1400cdb71
lock dec dword [rbx]
jne 0x1400cdb71
mov rcx, rbx
call fcn.14011feb0
mov rcx, rbx
call fcn.14016eccc
jmp 0x1400cdb71
xor r15d, r15d
jmp 0x1400cd949
xor r15d, r15d
jmp 0x1400cd9a3
mov rcx, r15
call fcn.140156f20
jmp 0x1400cd960
mov rcx, r15
call fcn.140156f20
jmp 0x1400cd9ba
call fcn.1402097d0
mov r12, rax
jmp 0x1400cd9f5
mov rcx, r12
call fcn.140156f20
jmp 0x1400cda10
lea rax, [rsp + 0x30]
mov qword [rsp + 0x20], rax
mov rcx, r12
mov rdx, r15
xor r8d, r8d
mov r9b, 0xf0
call fcn.140207de0
mov dword [rsi + 0x20], eax
jmp 0x1400cda1c
lea rcx, [0x14035aab0]
call fcn.14006d330
test al, al
je 0x1400cdfbd
xorps xmm0, xmm0
movups xmmword [0x14035aab8], xmm0
lea r12, [0x14035aab0]
lea r15, [0x14035aab8]
mov rcx, r15
xor edx, edx
call fcn.140041af0
mov rcx, r12
mov rdx, r15
xor r8d, r8d
mov r9, r12
call fcn.14006d410
jmp 0x1400cda40
test rsi, rsi
je 0x1400cda70
call fcn.140001120
jmp 0x1400cda56
mov rax, qword [rsi + 8]
test rax, rax
jne 0x1400cdf6b
mov edx, edi
call fcn.14015aa80
jmp 0x1400cdb7d
mov eax, dword [rax + 0x18]
cmp eax, dword [rsi + 0x20]
jbe 0x1400cdb89
movabs rax, 0xaaaaaaaaaaaaaaaa
lea rbx, [rsp + 0x28]
mov qword [rbx], rax
mov rax, qword [fcn.14007a620]
mov rcx, rbx
call qword [case.0x140211850.0]
mov rcx, r14
call fcn.140208760
mov r14, rax
mov rax, qword [rbx]
lea rbx, [rsp + 0x40]
mov qword [rbx], rax
lea rax, str.timestamp_us
lea r15, [rsp + 0x30]
mov qword [r15], rax
mov qword [r15 + 8], 0xc
mov r12d, 8
mov qword [rsp + 0x20], r12
mov rcx, r14
mov rdx, r15
mov r8b, 8
mov r9, rbx
call fcn.140207a80
movsxd rax, edi
mov qword [rbx], rax
lea rax, str.blocking_type
mov qword [r15], rax
mov qword [r15 + 8], 0xd
mov qword [rsp + 0x20], r12
lea rdx, [rsp + 0x30]
lea r9, [rsp + 0x40]
mov rcx, r14
mov r8b, 8
call fcn.140207a80
jmp 0x1400cdb89
cmp byte [rax], 0
jne 0x1400cdab1
mov eax, dword [0x14035bde8]
mov ecx, dword [0x14034fed0]
mov rdx, qword gs:[0x58]
mov rcx, qword [rdx + rcx*8]
cmp eax, dword [rcx + 4]
jg 0x1400cdf88
cmp byte [0x14035bde4], 0
jne 0x1400cdb71
jmp 0x1400cdab1
mov rcx, rbx
call fcn.140225c40
mov byte [rsi + 0x38], 0
jmp 0x1400cdadc
lea rcx, [0x14035aa88]
call fcn.140047ff0
jmp 0x1400cdb26
mov rax, qword [rax + 0x1f0]
cmp qword [rbx], rax
jge 0x1400cdb6d
mov qword [rbx], rax
jmp 0x1400cdb6d
mov r15, qword [0x14035aa98]
jmp 0x1400cd91a
mov r15, qword [0x14035aab0]
jmp 0x1400cd974
mov r15, qword [0x14035be50]
jmp 0x1400cda81
test bpl, bpl
je 0x1400cdb7d
cmp byte [rax + 0x10], 0
jne 0x1400cdb7d
call fcn.1402449c0
jmp 0x1400cdb7d
lea rcx, [0x14035bde8]
call fcn.14016f8b4
cmp dword [0x14035bde8], 0xffffffff
jne 0x1400cdefb
call fcn.1400ef390
mov byte [0x14035bde4], al
lea rcx, [0x14035bde8]
call fcn.14016ef8c
jmp 0x1400cdefb
mov r15, qword [0x14035aab0]
jmp 0x1400cda40