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

Disassembly:
sub esp, 0xc
push esi
push edi
mov esi, eax
call fcn.0041a4ae
test byte [eax + 0x8c], 0x80
mov dword [esp + 8], eax
jne 0x427121
cmp dword [0x4a8e00], 0
je 0x4270df
mov eax, dword [0x4aac14]
mov ecx, dword fs:[0x2c]
mov eax, dword [ecx + eax*4]
mov eax, dword [eax + 0xc]
jmp 0x4270eb
push dword [0x4ab05c]
call dword [sym.imp.KERNEL32.dll_TlsGetValue]
cmp dword [0x4a8e00], 0
mov dword [esp + 0xc], eax
je 0x427113
mov eax, dword fs:[0x2c]
mov ecx, dword [0x4aac14]
mov eax, dword [eax + ecx*4]
mov dword [eax + 0xc], 1
jmp 0x427121
push 1
push dword [0x4ab05c]
call dword [sym.imp.KERNEL32.dll_TlsSetValue]
push ebx
mov ebx, dword [sym.imp.KERNEL32.dll_EnterCriticalSection]
lea eax, [esi + 0x3c]
push eax
mov dword [esp + 0x18], eax
call ebx
mov eax, dword [esi]
dec eax
je 0x427298
dec eax
je 0x427298
dec eax
je 0x42726d
dec eax
je 0x427264
dec eax
dec eax
je 0x427264
dec eax
je 0x427165
call sym.AdobeCollabSync.exe_PR_Abort
jmp 0x427298
lea eax, [esi + 0x8c]
and dword [eax], 0xffffffbf
test byte [eax], 0x80
mov dword [esi], 1
jne 0x427298
mov eax, dword [esi + 0x98]
mov eax, dword [eax + 0x24]
push ebp
add eax, 0x30
push eax
call ebx
mov eax, dword [esi + 0x68]
and dword [esi + 0x54], 0
lea edi, [esi + 0x64]
mov ecx, dword [edi]
mov dword [eax], ecx
mov eax, dword [edi]
mov ecx, dword [esi + 0x68]
mov dword [eax + 4], ecx
mov eax, dword [esi + 0x98]
mov eax, dword [eax + 0x24]
add eax, 0x30
push eax
call dword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
mov eax, dword [esi + 0x98]
push dword [eax + 0x24]
mov ebp, dword [esi + 4]
call ebx
mov eax, dword [esi + 0x98]
mov ecx, dword [eax + 0x24]
lea ecx, [ecx + ebp*8 + 0x48]
mov dword [edi], ecx
mov ecx, dword [eax + 0x24]
mov ecx, dword [ecx + ebp*8 + 0x4c]
mov dword [esi + 0x68], ecx
mov eax, dword [eax + 0x24]
mov eax, dword [eax + ebp*8 + 0x4c]
mov dword [eax], edi
mov eax, dword [esi + 0x98]
mov eax, dword [eax + 0x24]
mov dword [eax + ebp*8 + 0x4c], edi
mov eax, dword [esi + 0x98]
mov eax, dword [eax + 0x24]
xor edx, edx
inc edx
mov edi, edx
mov ecx, ebp
shl edi, cl
or dword [eax + 0x68], edi
mov eax, dword [esi + 0x98]
mov dword [esi + 0x54], edx
push dword [eax + 0x24]
call dword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
call fcn.0041a4ae
cmp ebp, dword [eax + 4]
pop ebp
jle 0x427298
mov eax, dword [esp + 0xc]
test byte [eax + 0x8c], 0x80
jne 0x427298
cmp dword [0x4a8e00], 0
je 0x427252
mov eax, dword fs:[0x2c]
mov ecx, dword [0x4aac14]
mov eax, dword [eax + ecx*4]
mov eax, dword [eax + 0x10]
jmp 0x42725e
push dword [0x4ab06c]
call dword [sym.imp.KERNEL32.dll_TlsGetValue]
mov byte [eax + 0xf], 1
jmp 0x427298
and dword [esi + 0x8c], 0xffffffbf
jmp 0x427298
and dword [esi + 0x8c], 0xffffffbf
lea edi, [esi + 0x80]
mov eax, dword [edi]
lea esi, [eax + 0x1c]
push esi
call ebx
mov edi, dword [edi]
cmp dword [edi + 8], 0
jne 0x427291
push edi
call fcn.00418df3
pop ecx
push esi
call dword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
push dword [esp + 0x14]
call dword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
mov eax, dword [esp + 0xc]
test byte [eax + 0x8c], 0x80
pop ebx
jne 0x42734c
mov esi, dword [esp + 0xc]
xor edi, edi
cmp esi, edi
jne 0x427320
cmp dword [0x4a8e00], edi
je 0x4272dd
mov eax, dword [0x4aac14]
mov ecx, dword fs:[0x2c]
mov eax, dword [ecx + eax*4]
mov eax, dword [eax + 0x10]
jmp 0x4272e9
push dword [0x4ab06c]
call dword [sym.imp.KERNEL32.dll_TlsGetValue]
cmp dword [eax + 0xc], edi
je 0x427320
cmp dword [0x4a8e00], edi
je 0x42730d
mov eax, dword fs:[0x2c]
mov ecx, dword [0x4aac14]
mov eax, dword [eax + ecx*4]
mov eax, dword [eax + 0x10]
jmp 0x427319
push dword [0x4ab06c]
call dword [sym.imp.KERNEL32.dll_TlsGetValue]
push eax
call fcn.00418d0c
pop ecx
cmp dword [0x4a8e00], edi
je 0x42733f
mov eax, dword fs:[0x2c]
mov ecx, dword [0x4aac14]
mov eax, dword [eax + ecx*4]
mov dword [eax + 0xc], esi
jmp 0x42734c
push esi
push dword [0x4ab05c]
call dword [sym.imp.KERNEL32.dll_TlsSetValue]
pop edi
pop esi
add esp, 0xc
ret