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

Disassembly:
push 0xffffffffffffffff
push 0x5a0fc0
mov eax, dword fs:[0]
push eax
sub esp, 0x40
mov eax, dword [0x61c850]
xor eax, esp
mov dword [esp + 0x3c], eax
push ebp
push esi
push edi
mov eax, dword [0x61c850]
xor eax, esp
push eax
lea eax, [esp + 0x50]
mov dword fs:[0], eax
mov eax, dword [0x61c61c]
cmp eax, 0xffffffff
jne 0x48ce9f
xor ebp, ebp
jmp 0x48cea8
push eax
call dword [sym.imp.KERNEL32.dll_TlsGetValue]
mov ebp, eax
mov dword [esp + 0x14], ebp
mov dword [esp + 0x58], 0
test ebp, ebp
je 0x48cefd
jmp 0x48cec0
cmp dword [ebp + 0x1c], 0
jne 0x48cf4e
cmp dword [ebp + 0x10], 0
jne 0x48cf54
push 0x48c9c0
push 0x62c1a0
call fcn.00460260
mov eax, dword [0x61c61c]
add esp, 8
cmp eax, 0xffffffff
je 0x48d026
push 0
push eax
call dword [sym.imp.KERNEL32.dll_TlsSetValue]
mov dword [esp + 0x58], 0xffffffff
test ebp, ebp
je 0x48cf30
lea ecx, [ebp + 4]
or edx, 0xffffffff
lock xadd dword [ecx], edx
jne 0x48cf30
mov eax, dword [ebp]
mov edx, dword [eax]
push 0
mov ecx, ebp
call edx
push ebp
push 0
call dword [sym.imp.KERNEL32.dll_GetProcessHeap]
push eax
call dword [sym.imp.KERNEL32.dll_HeapFree]
mov ecx, dword [esp + 0x50]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebp
mov ecx, dword [esp + 0x3c]
xor ecx, esp
call fcn.00493f9c
add esp, 0x4c
ret
cmp dword [ebp + 0x10], 0
je 0x48cf9c
mov edi, dword [ebp + 0x10]
mov eax, dword [edi + 4]
mov dword [ebp + 0x10], eax
mov ecx, dword [edi]
test ecx, ecx
je 0x48cf86
mov edx, dword [ecx]
mov eax, dword [edx + 4]
call eax
mov esi, dword [edi]
mov edx, dword [esi]
mov eax, dword [edx]
push 0
mov ecx, esi
call eax
push esi
push 0
call dword [sym.imp.KERNEL32.dll_GetProcessHeap]
push eax
call dword [sym.imp.KERNEL32.dll_HeapFree]
push edi
push 0
call dword [sym.imp.KERNEL32.dll_GetProcessHeap]
push eax
call dword [sym.imp.KERNEL32.dll_HeapFree]
cmp dword [ebp + 0x10], 0
jne 0x48cf54
mov eax, dword [ebp + 0x18]
mov esi, dword [eax]
mov dword [esp + 0x10], eax
cmp esi, eax
je 0x48cec0
lea ecx, [ecx]
cmp byte [esi + 0x1d], 0
mov edi, esi
jne 0x48cff7
mov eax, dword [esi + 8]
cmp byte [eax + 0x1d], 0
jne 0x48cfdc
mov esi, eax
mov eax, dword [esi]
cmp byte [eax + 0x1d], 0
jne 0x48cff7
jmp 0x48cfd0
mov esi, eax
mov eax, dword [esi]
cmp byte [eax + 0x1d], 0
je 0x48cfd0
jmp 0x48cff7
mov eax, dword [esi + 4]
cmp byte [eax + 0x1d], 0
jne 0x48cff5
cmp esi, dword [eax + 8]
jne 0x48cff5
mov esi, eax
mov eax, dword [eax + 4]
cmp byte [eax + 0x1d], 0
je 0x48cfe5
mov esi, eax
mov ecx, dword [edi + 0x10]
test ecx, ecx
je 0x48d00d
mov eax, dword [edi + 0x18]
test eax, eax
je 0x48d00d
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
push edi
lea ecx, [esp + 0x1c]
push ecx
lea ecx, [ebp + 0x14]
call fcn.00484fa0
cmp esi, dword [esp + 0x10]
jne 0x48cfb0
jmp 0x48cec0
call fcn.0048bb60
lea edx, [esp + 0x10]
push edx
lea ecx, [esp + 0x20]
mov esi, eax
mov edi, 0xb
mov dword [esp + 0x14], str.boost::thread_resource_error
call fcn.004943aa
mov dword [esp + 0x28], edi
mov dword [esp + 0x2c], esi
mov dword [esp + 0x44], 0xf
mov dword [esp + 0x40], 0
mov byte [esp + 0x30], 0
mov dword [esp + 0x1c], vtable.boost::thread_resource_error.0
lea eax, [esp + 0x1c]
push eax
mov byte [esp + 0x5c], 1
call fcn.0040bf90
int3