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

Disassembly:
push rbx
sub rsp, 0x50
mov ecx, dword [0x180006020]
cmp ecx, 0xffffffff
je 0x180002ce9
call qword [sym.imp.api_ms_win_core_processthreads_l1_1_0.dll_TlsGetValue]
nop dword [rax + rax]
test rax, rax
jne 0x180002ce9
lea edx, [rax + 0x20]
xor ecx, ecx
call qword [sym.imp.api_ms_win_core_heap_l2_1_0.dll_LocalAlloc]
nop dword [rax + rax]
mov rbx, rax
test rax, rax
je 0x180002ce9
mov ecx, dword [0x180006020]
mov rdx, rax
call qword [sym.imp.api_ms_win_core_processthreads_l1_1_0.dll_TlsSetValue]
nop dword [rax + rax]
test eax, eax
je 0x180002cda
mov eax, dword [0x1800066b0]
test eax, eax
jne 0x180002be4
lea rcx, str.CABINET.DLL
call qword [sym.imp.api_ms_win_core_libraryloader_l1_2_1.dll_LoadLibraryW]
nop dword [rax + rax]
mov qword [0x180006680], rax
test rax, rax
je 0x180002cc3
lea rdx, str.FDICreate
mov rcx, rax
call qword [sym.imp.api_ms_win_core_libraryloader_l1_2_0.dll_GetProcAddress]
nop dword [rax + rax]
mov rcx, qword [0x180006680]
lea rdx, str.FDIDestroy
mov qword [0x1800066a8], rax
call qword [sym.imp.api_ms_win_core_libraryloader_l1_2_0.dll_GetProcAddress]
nop dword [rax + rax]
mov rcx, qword [0x180006680]
lea rdx, str.FDIIsCabinet
mov qword [0x180006698], rax
call qword [sym.imp.api_ms_win_core_libraryloader_l1_2_0.dll_GetProcAddress]
nop dword [rax + rax]
mov rcx, qword [0x180006680]
lea rdx, str.FDICopy
mov qword [0x1800066a0], rax
call qword [sym.imp.api_ms_win_core_libraryloader_l1_2_0.dll_GetProcAddress]
nop dword [rax + rax]
cmp qword [0x1800066a8], 0
mov qword [0x180006688], rax
je 0x180002cb0
cmp qword [0x180006698], 0
je 0x180002cb0
cmp qword [0x1800066a0], 0
je 0x180002cb0
test rax, rax
je 0x180002cb0
mov eax, 1
lock xadd dword [0x1800066b0], eax
test eax, eax
je 0x180002be4
mov rcx, qword [0x180006680]
call qword [sym.imp.api_ms_win_core_libraryloader_l1_2_0.dll_FreeLibrary]
nop dword [rax + rax]
mov ecx, dword [0x180006020]
mov rbx, qword [0x1800066a8]
call qword [sym.imp.api_ms_win_core_processthreads_l1_1_0.dll_TlsGetValue]
nop dword [rax + rax]
add rax, 0x10
movabs r10, 0xd5e92e9f14537170
mov qword [rsp + 0x40], rax
lea r9, [0x180002ec0]
mov dword [rsp + 0x38], 0xffffffff
lea rax, [0x180002f00]
mov qword [rsp + 0x30], rax
lea r8, [fcn.180002e60]
lea rax, [0x180002e20]
mov qword [rsp + 0x28], rax
lea rdx, [0x180002e40]
lea rax, [0x180002f40]
mov qword [rsp + 0x20], rax
lea rcx, [0x180002e00]
mov rax, rbx
call qword [0x180004488]
mov ecx, dword [0x180006020]
mov rbx, rax
call qword [sym.imp.api_ms_win_core_processthreads_l1_1_0.dll_TlsGetValue]
nop dword [rax + rax]
mov qword [rax + 8], rbx
xor ebx, ebx
mov ecx, dword [0x180006020]
cmp ecx, 0xffffffff
je 0x180002cca
call qword [sym.imp.api_ms_win_core_processthreads_l1_1_0.dll_TlsGetValue]
nop dword [rax + rax]
test rax, rax
je 0x180002cca
mov ecx, dword [0x180006020]
call qword [sym.imp.api_ms_win_core_processthreads_l1_1_0.dll_TlsGetValue]
nop dword [rax + rax]
mov rcx, qword [rax + 8]
jmp 0x180002ccd
mov rcx, qword [0x180006680]
call qword [sym.imp.api_ms_win_core_libraryloader_l1_2_0.dll_FreeLibrary]
nop dword [rax + rax]
mov eax, 0x100000
jmp 0x180002cee
mov rcx, rbx
test rcx, rcx
mov eax, 0x100000
cmovne eax, ebx
jmp 0x180002cee
mov rcx, rbx
call qword [sym.imp.api_ms_win_core_heap_l2_1_0.dll_LocalFree]
nop dword [rax + rax]
mov eax, 0x8000
add rsp, 0x50
pop rbx
ret