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

Disassembly:
sub esp, 0xc
push esi
call fcn.0041a4ae
mov esi, dword [esp + 0x14]
test byte [esi + 0x8c], 0x80
mov dword [esp + 4], eax
je 0x426bdc
push dword [esp + 0x18]
add esi, 0xac
push esi
call fcn.0041a1b5
pop ecx
pop ecx
jmp 0x426e7b
test byte [eax + 0x8c], 0x80
push ebx
mov ebx, dword [0x4aac14]
jne 0x426c42
cmp dword [0x4a8e00], 0
je 0x426c06
mov eax, dword fs:[0x2c]
mov eax, dword [eax + ebx*4]
mov eax, dword [eax + 0xc]
jmp 0x426c12
push dword [0x4ab05c]
call dword [sym.imp.KERNEL32.dll_TlsGetValue]
cmp dword [0x4a8e00], 0
mov dword [esp + 0x18], eax
je 0x426c34
mov eax, dword fs:[0x2c]
mov eax, dword [eax + ebx*4]
mov dword [eax + 0xc], 1
jmp 0x426c42
push 1
push dword [0x4ab05c]
call dword [sym.imp.KERNEL32.dll_TlsSetValue]
push ebp
lea eax, [esi + 0x3c]
push edi
push eax
mov dword [esp + 0x1c], eax
call dword [sym.imp.KERNEL32.dll_EnterCriticalSection]
mov ebp, dword [esp + 0x24]
cmp ebp, dword [esi + 4]
je 0x426dd7
mov eax, dword [esi]
cmp eax, 1
mov edi, dword [esi + 0x98]
je 0x426cf4
cmp eax, 2
je 0x426c94
jbe 0x426dd7
cmp eax, 4
jbe 0x426c8c
add eax, 0xfffffffa
cmp eax, 1
ja 0x426dd7
mov dword [esi + 4], ebp
jmp 0x426dd7
push dword [edi + 0x24]
call dword [sym.imp.KERNEL32.dll_EnterCriticalSection]
mov dword [esi + 4], ebp
mov eax, dword [edi + 0x24]
mov eax, dword [eax + 0x68]
lea ecx, [ebp + 1]
shr eax, cl
test eax, eax
je 0x426ce6
mov eax, dword [esp + 0x10]
test byte [eax + 0x8c], 0x80
jne 0x426ce6
cmp dword [0x4a8e00], 0
je 0x426cd6
mov eax, dword fs:[0x2c]
mov eax, dword [eax + ebx*4]
mov eax, dword [eax + 0x10]
jmp 0x426ce2
push dword [0x4ab06c]
call dword [sym.imp.KERNEL32.dll_TlsGetValue]
mov byte [eax + 0xf], 1
push dword [edi + 0x24]
call dword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
jmp 0x426dd7
push dword [edi + 0x24]
call dword [sym.imp.KERNEL32.dll_EnterCriticalSection]
mov eax, dword [esi + 4]
mov edx, dword [esi + 0x68]
mov ecx, dword [esi + 0x98]
mov dword [esp + 0x14], eax
lea eax, [esi + 0x64]
mov ebx, dword [eax]
mov dword [edx], ebx
mov edx, dword [eax]
mov ebx, dword [esi + 0x68]
mov dword [edx + 4], ebx
mov edx, dword [ecx + 0x24]
mov ebx, dword [esp + 0x14]
lea edx, [edx + ebx*8 + 0x48]
cmp dword [edx], edx
jne 0x426d42
mov edx, dword [ecx + 0x24]
xor ecx, ecx
inc ecx
mov dword [esp + 0x14], ecx
mov ecx, ebx
mov ebx, dword [esp + 0x14]
shl ebx, cl
not ebx
and dword [edx + 0x68], ebx
and dword [esi + 0x54], 0
mov dword [esi + 4], ebp
mov ecx, dword [edi + 0x24]
lea ecx, [ecx + ebp*8 + 0x48]
mov dword [eax], ecx
mov ecx, dword [edi + 0x24]
mov ecx, dword [ecx + ebp*8 + 0x4c]
mov dword [esi + 0x68], ecx
mov ecx, dword [edi + 0x24]
mov ecx, dword [ecx + ebp*8 + 0x4c]
mov dword [ecx], eax
mov ecx, dword [edi + 0x24]
mov dword [ecx + ebp*8 + 0x4c], eax
mov eax, dword [edi + 0x24]
xor edx, edx
inc edx
mov ebx, edx
mov ecx, ebp
shl ebx, cl
or dword [eax + 0x68], ebx
mov dword [esi + 0x54], edx
push dword [edi + 0x24]
call dword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
mov eax, dword [esp + 0x10]
cmp ebp, dword [eax + 4]
jle 0x426dd1
test byte [eax + 0x8c], 0x80
jne 0x426dd1
cmp dword [0x4a8e00], 0
je 0x426db9
mov ebx, dword [0x4aac14]
mov eax, dword fs:[0x2c]
mov eax, dword [eax + ebx*4]
mov eax, dword [eax + 0x10]
jmp 0x426dcb
push dword [0x4ab06c]
call dword [sym.imp.KERNEL32.dll_TlsGetValue]
mov ebx, dword [0x4aac14]
mov byte [eax + 0xf], 1
jmp 0x426dd7
mov ebx, dword [0x4aac14]
push dword [esp + 0x18]
call dword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
mov eax, dword [esp + 0x10]
test byte [eax + 0x8c], 0x80
jne 0x426e78
mov esi, dword [esp + 0x20]
xor edi, edi
cmp esi, edi
jne 0x426e52
cmp dword [0x4a8e00], edi
je 0x426e15
mov eax, dword fs:[0x2c]
mov eax, dword [eax + ebx*4]
mov eax, dword [eax + 0x10]
jmp 0x426e21
push dword [0x4ab06c]
call dword [sym.imp.KERNEL32.dll_TlsGetValue]
cmp dword [eax + 0xc], edi
je 0x426e52
cmp dword [0x4a8e00], edi
je 0x426e3f
mov eax, dword fs:[0x2c]
mov eax, dword [eax + ebx*4]
mov eax, dword [eax + 0x10]
jmp 0x426e4b
push dword [0x4ab06c]
call dword [sym.imp.KERNEL32.dll_TlsGetValue]
push eax
call fcn.00418d0c
pop ecx
cmp dword [0x4a8e00], edi
je 0x426e6b
mov eax, dword fs:[0x2c]
mov eax, dword [eax + ebx*4]
mov dword [eax + 0xc], esi
jmp 0x426e78
push esi
push dword [0x4ab05c]
call dword [sym.imp.KERNEL32.dll_TlsSetValue]
pop edi
pop ebp
pop ebx
pop esi
add esp, 0xc
ret