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

Disassembly:
push 0x1c
mov eax, 0x10043ba2
call fcn.10041b35
mov ebx, ecx
mov dword [ebp - 0x1c], ebx
call dword [sym.imp.KERNEL32.dll_GetCurrentThreadId]
mov edi, dword [ebp + 0xc]
mov esi, dword [ebp + 8]
mov edx, dword [edi + 0x94]
mov ecx, dword [edx]
mov dword [ebp - 0x28], ecx
cmp eax, dword [esi + 4]
je 0x1005ab77
cmp eax, dword [ebx + 0xc]
je 0x1005ab77
cmp byte [esi], 0
je 0x1005ace8
push 0xb0
push 0xa00000
push dword [0x100e4034]
call dword [sym.imp.MSDART.DLL_MpHeapAlloc]
add esp, 0xc
mov dword [ebp - 0x28], eax
mov dword [ebp - 4], 2
test eax, eax
je 0x1005ab3c
push edi
mov ecx, eax
call fcn.1005467e
mov ecx, eax
xor ebx, ebx
jmp 0x1005ab40
xor ebx, ebx
mov ecx, ebx
test ecx, ecx
je 0x1005ab70
mov eax, dword [edi + 0x80]
cmp byte [eax + 0x100102b8], 0
je 0x1005ab5d
mov dword [ecx + 0xa8], 3
push ecx
push ebx
mov ebx, dword [ebp - 0x1c]
push 0x2001
push dword [ebx + 0x10]
call dword [sym.imp.USER32.dll_PostMessageW]
xor eax, eax
jmp 0x1005ad26
mov eax, dword [0x100e4064]
push dword [eax + 0xc]
call dword [sym.imp.KERNEL32.dll_TlsGetValue]
mov dword [ebp - 0x20], eax
test eax, eax
je 0x1005acb1
push 0x20
xor ebx, ebx
mov dword [ebp - 4], ebx
push 0xa00000
push dword [0x100e4034]
mov byte [ebp - 0x15], bl
call dword [sym.imp.MSDART.DLL_MpHeapAlloc]
add esp, 0xc
mov dword [ebp - 0x24], eax
test eax, eax
je 0x1005abd8
mov edx, dword [ebp - 0x20]
mov edi, eax
push 8
pop ecx
mov esi, edx
mov byte [ebp - 0x15], 1
rep movsd dword es:[edi], dword [esi]
mov esi, dword [ebp + 8]
xor eax, eax
push 8
pop ecx
mov edi, edx
rep stosd dword es:[edi], eax
mov edi, dword [ebp + 0xc]
mov byte [edx + 0x12], 1
cmp byte [esi], 0
je 0x1005ac12
mov ecx, dword [esi + 8]
lea eax, [edi + 0x84]
push ebx
push ebx
push ebx
mov esi, dword [ecx]
push eax
push 1
push 0x800
push 0x10008570
push dword [edi + 0x80]
push ecx
mov ecx, dword [esi + 0x18]
call dword [0x100e52dc]
call dword [esi + 0x18]
mov esi, eax
mov dword [ebp - 0x1c], esi
jmp 0x1005ac2d
mov ebx, dword [ebp - 0x1c]
push edi
push esi
mov eax, dword [ebx]
mov esi, dword [eax + 0x2c]
mov ecx, esi
call dword [0x100e52dc]
mov ecx, ebx
call esi
mov esi, eax
mov dword [ebp - 0x1c], eax
or dword [ebp - 4], 0xffffffff
mov ebx, dword [ebp - 0x24]
test ebx, ebx
je 0x1005acfd
mov eax, dword [ebp - 0x20]
mov esi, ebx
push 8
pop ecx
mov edi, eax
push eax
mov eax, dword [0x100e4064]
rep movsd dword es:[edi], dword [esi]
push dword [eax + 0xc]
call dword [sym.imp.KERNEL32.dll_TlsSetValue]
push ebx
push dword [0x100e4034]
call dword [sym.imp.MSDART.DLL_MpHeapFree]
mov edi, dword [ebp + 0xc]
mov esi, dword [ebp - 0x1c]
pop ecx
pop ecx
jmp 0x1005acfd
cmp byte [esi], 0
je 0x1005ace8
mov ecx, dword [esi + 8]
lea eax, [edi + 0x84]
xor ebx, ebx
push ebx
push ebx
mov esi, dword [ecx]
push ebx
push eax
push 1
push 0x800
push 0x10008570
push dword [edi + 0x80]
push ecx
mov ecx, dword [esi + 0x18]
call dword [0x100e52dc]
call dword [esi + 0x18]
jmp 0x1005acfb
mov eax, dword [ebx]
push edi
push esi
mov esi, dword [eax + 0x2c]
mov ecx, esi
call dword [0x100e52dc]
mov ecx, ebx
call esi
mov esi, eax
mov eax, dword [edi + 0x80]
cmp byte [eax + 0x100102b8], 0
je 0x1005ad24
cmp dword [ebp - 0x28], 3
je 0x1005ad24
mov eax, dword [edi + 0x94]
cmp dword [eax], 4
jne 0x1005ad24
mov ecx, edi
call fcn.100daaf3
mov eax, esi
call fcn.10041a87
ret 8