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

Disassembly:
push r15
push r14
push rsi
push rdi
push rbp
push rbx
sub rsp, 0xd8
mov rbx, r8
mov rdi, rdx
mov rsi, rcx
mov ecx, dword [0x1401aa038]
test ecx, ecx
je 0x1400a485e
dec ecx
call sub.kernel32.dll_TlsGetValue
cmp rax, 2
jb 0x1400a4839
cmp dword [rax + 8], 0
jne 0x1400a48eb
mov ecx, dword [0x1401aa038]
test ecx, ecx
je 0x1400a4879
dec ecx
call sub.kernel32.dll_TlsGetValue
test rax, rax
je 0x1400a4891
cmp rax, 1
jne 0x1400a48dc
jmp 0x1400a4a6e
lea rcx, [0x1401aa020]
call fcn.14008d860
mov ecx, eax
call sub.kernel32.dll_TlsGetValue
cmp rax, 2
jae 0x1400a482f
jmp 0x1400a4839
lea rcx, [0x1401aa020]
call fcn.14008d860
mov ecx, eax
call sub.kernel32.dll_TlsGetValue
test rax, rax
jne 0x1400a484f
movzx eax, byte [0x14024d119]
mov edx, 0x18
xor ecx, ecx
call fcn.140082900
test rax, rax
je 0x1400a4a6e
lea rcx, [0x1401aa020]
mov qword [rax], rcx
mov dword [rax + 8], 0
mov ecx, dword [0x1401aa038]
test ecx, ecx
je 0x1400a4a52
dec ecx
mov rdx, rax
mov r14, rax
call sub.kernel32.dll_TlsSetValue
mov rax, r14
mov dword [rax + 8], 1
mov qword [rax + 0xc], 0
add rax, 0xc
mov rcx, qword [rbx + 0x50]
mov qword [rsp + 0x98], rcx
movups xmm0, xmmword [rbx + 0x40]
movups xmmword [rsp + 0x88], xmm0
movups xmm0, xmmword [rbx]
movups xmm1, xmmword [rbx + 0x10]
movups xmm2, xmmword [rbx + 0x20]
movups xmm3, xmmword [rbx + 0x30]
movups xmmword [rsp + 0x78], xmm3
movups xmmword [rsp + 0x68], xmm2
movups xmmword [rsp + 0x58], xmm1
movups xmmword [rsp + 0x48], xmm0
mov qword [rsp + 0x40], rax
mov qword [rsp + 0xa0], 0
lea rdx, [0x1400a64a0]
lea r8, [rsp + 0x40]
mov rcx, rdi
call fcn.1400299e0
mov rbx, qword [rsp + 0x40]
lea rdi, [rbx + 4]
mov cl, 1
xor eax, eax
lock cmpxchg byte [rbx + 4], cl
jne 0x1400a49d7
cmp byte [rbx + 5], 0
je 0x1400a49e5
mov byte [rbx + 5], 0
xor eax, eax
xchg byte [rbx + 4], al
cmp al, 2
jne 0x1400a497e
mov rcx, rdi
call sub.api_ms_win_core_synch_l1_2_0.dll_WakeByAddressSingle
mov rax, qword [rsp + 0xa0]
cmp rax, 1
jne 0x1400a4a6b
movups xmm0, xmmword [rsp + 0xa8]
movups xmm1, xmmword [rsp + 0xb8]
movups xmm2, xmmword [rsp + 0xc8]
movaps xmmword [rsp + 0x30], xmm2
movaps xmmword [rsp + 0x20], xmm1
movups xmmword [rsi], xmm0
movaps xmm0, xmmword [rsp + 0x20]
movaps xmm1, xmmword [rsp + 0x30]
movups xmmword [rsi + 0x10], xmm0
movups xmmword [rsi + 0x20], xmm1
add rsp, 0xd8
pop rbx
pop rbp
pop rdi
pop rsi
pop r14
pop r15
ret
mov rcx, rdi
call fcn.1400905e0
cmp byte [rbx + 5], 0
jne 0x1400a4969
lea r14, [rsp + 0x20]
mov bpl, 1
jmp 0x1400a4a03
xor eax, eax
lock cmpxchg byte [rdi], bpl
jne 0x1400a4a3f
cmp byte [rbx + 5], 0
jne 0x1400a4969
mov r15d, dword [rbx]
xor eax, eax
xchg byte [rbx + 4], al
cmp al, 2
jne 0x1400a4a17
mov rcx, rdi
call sub.api_ms_win_core_synch_l1_2_0.dll_WakeByAddressSingle
mov dword [rsp + 0x20], r15d
mov r8d, 4
mov rcx, rbx
mov rdx, r14
mov r9d, 0xffffffff
call sub.api_ms_win_core_synch_l1_2_0.dll_WaitOnAddress
cmp eax, 1
je 0x1400a49f0
call sub.kernel32.dll_GetLastError
jmp 0x1400a49f0
mov rcx, rdi
call fcn.1400905e0
cmp byte [rbx + 5], 0
je 0x1400a4a03
jmp 0x1400a4969
lea rcx, [0x1401aa020]
mov r14, rax
call fcn.14008d860
mov ecx, eax
mov rax, r14
jmp 0x1400a48ce
test rax, rax
ud2