Function at 0x180002a10
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 0x180002c74
call qword [sym.imp.api_ms_win_core_processthreads_l1_1_0.dll_TlsGetValue]
nop dword [rax + rax]
test rax, rax
jne 0x180002c74
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 0x180002c74
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 0x180002c65
mov eax, dword [0x180006690]
test eax, eax
jne 0x180002b7c
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 [0x180006660], rax
test rax, rax
je 0x180002c4e
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 [0x180006660]
lea rdx, str.FDIDestroy
mov qword [0x180006688], rax
call qword [sym.imp.api_ms_win_core_libraryloader_l1_2_0.dll_GetProcAddress]
nop dword [rax + rax]
mov rcx, qword [0x180006660]
lea rdx, str.FDIIsCabinet
mov qword [0x180006670], rax
call qword [sym.imp.api_ms_win_core_libraryloader_l1_2_0.dll_GetProcAddress]
nop dword [rax + rax]
mov rcx, qword [0x180006660]
lea rdx, str.FDICopy
mov qword [0x180006680], rax
call qword [sym.imp.api_ms_win_core_libraryloader_l1_2_0.dll_GetProcAddress]
nop dword [rax + rax]
cmp qword [0x180006688], 0
mov qword [0x180006678], rax
je 0x180002c3b
cmp qword [0x180006670], 0
je 0x180002c3b
cmp qword [0x180006680], 0
je 0x180002c3b
test rax, rax
je 0x180002c3b
mov eax, 1
lock xadd dword [0x180006690], eax
test eax, eax
je 0x180002b7c
mov rcx, qword [0x180006660]
call qword [sym.imp.api_ms_win_core_libraryloader_l1_2_0.dll_FreeLibrary]
nop dword [rax + rax]
mov ecx, dword [0x180006020]
call qword [sym.imp.api_ms_win_core_processthreads_l1_1_0.dll_TlsGetValue]
nop dword [rax + rax]
add rax, 0x10
lea r9, [0x180002e40]
mov qword [rsp + 0x40], rax
lea r8, [fcn.180002de0]
mov dword [rsp + 0x38], 0xffffffff
lea rax, [0x180002e80]
mov qword [rsp + 0x30], rax
lea rdx, [0x180002dc0]
lea rax, [0x180002da0]
mov qword [rsp + 0x28], rax
lea rcx, [0x180002d80]
lea rax, [0x180002ec0]
mov qword [rsp + 0x20], rax
mov rax, qword [0x180006688]
call qword [0x180004450]
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 0x180002c55
call qword [sym.imp.api_ms_win_core_processthreads_l1_1_0.dll_TlsGetValue]
nop dword [rax + rax]
test rax, rax
je 0x180002c55
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 0x180002c58
mov rcx, qword [0x180006660]
call qword [sym.imp.api_ms_win_core_libraryloader_l1_2_0.dll_FreeLibrary]
nop dword [rax + rax]
mov eax, 0x100000
jmp 0x180002c79
mov rcx, rbx
test rcx, rcx
mov eax, 0x100000
cmovne eax, ebx
jmp 0x180002c79
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