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

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff0
sub esp, 0x90
mov esi, ecx
mov eax, dword [0x5300a4]
test eax, eax
je 0x49fd84
dec eax
push eax
call dword [sym.imp.KERNEL32.dll_TlsGetValue]
cmp eax, 2
jb 0x49fc1b
mov ebx, eax
mov eax, dword [eax]
or eax, dword [ebx + 4]
je 0x49fc1b
add ebx, 8
jmp 0x49fd7a
mov eax, dword [0x5300a4]
test eax, eax
je 0x49fd93
dec eax
push eax
call dword [sym.imp.KERNEL32.dll_TlsGetValue]
cmp eax, 1
je 0x49fcdd
mov edi, eax
test eax, eax
jne 0x49fc7e
mov al, byte [0x530b2c]
xor ebx, ebx
xor ecx, ecx
mov edx, 0x48
call fcn.0049cbc0
test eax, eax
je 0x49fdb1
mov edi, eax
mov dword [eax + 4], ebx
mov dword [eax], ebx
mov dword [eax + 0x40], 0x5300a4
mov eax, dword [0x5300a4]
test eax, eax
je 0x49fda2
dec eax
push edi
push eax
call dword [sym.imp.KERNEL32.dll_TlsSetValue]
test esi, esi
je 0x49fced
movups xmm0, xmmword [esi + 0x30]
movaps xmmword [esp + 0x70], xmm0
movups xmm0, xmmword [esi + 0x20]
movaps xmmword [esp + 0x60], xmm0
movups xmm0, xmmword [esi]
movups xmm1, xmmword [esi + 0x10]
movaps xmmword [esp + 0x50], xmm1
movaps xmmword [esp + 0x40], xmm0
xor eax, eax
mov dword [esi + 4], eax
mov dword [esi], eax
mov eax, dword [esp + 0x40]
or eax, dword [esp + 0x44]
je 0x49fce4
movsd xmm0, qword [esp + 0x78]
movsd qword [esp + 0x30], xmm0
movups xmm0, xmmword [esp + 0x68]
movaps xmmword [esp + 0x20], xmm0
movups xmm0, xmmword [esp + 0x48]
movups xmm1, xmmword [esp + 0x58]
movaps xmmword [esp + 0x10], xmm1
jmp 0x49fd1a
xor ebx, ebx
jmp 0x49fd7a
lea ecx, [esp + 0x40]
call fcn.004a2c3d
movsd xmm0, qword [0x4fd450]
movsd qword [esp + 0x30], xmm0
movups xmm0, xmmword [0x4fd440]
movaps xmmword [esp + 0x20], xmm0
movups xmm0, xmmword [0x4fd430]
movaps xmmword [esp + 0x10], xmm0
movups xmm0, xmmword [0x4fd420]
movaps xmmword [esp], xmm0
movups xmm0, xmmword [edi + 0x30]
lea ecx, [esp + 0x40]
movaps xmmword [ecx + 0x30], xmm0
movups xmm0, xmmword [edi + 0x20]
movaps xmmword [ecx + 0x20], xmm0
movups xmm0, xmmword [edi]
movups xmm1, xmmword [edi + 0x10]
movaps xmmword [ecx + 0x10], xmm1
movaps xmmword [ecx], xmm0
mov dword [edi + 4], 0
mov dword [edi], 1
lea ebx, [edi + 8]
movaps xmm0, xmmword [esp]
movaps xmm1, xmmword [esp + 0x10]
movups xmmword [edi + 8], xmm0
movups xmmword [edi + 0x18], xmm1
movaps xmm0, xmmword [esp + 0x20]
movups xmmword [edi + 0x28], xmm0
movsd xmm0, qword [esp + 0x30]
movsd qword [edi + 0x38], xmm0
call fcn.004a2c3d
mov eax, ebx
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret
mov ecx, 0x5300a4
call fcn.004ce4f0
jmp 0x49fbfe
mov ecx, 0x5300a4
call fcn.004ce4f0
jmp 0x49fc29
mov ecx, 0x5300a4
call fcn.004ce4f0
jmp 0x49fc76
mov ecx, 8
mov edx, 0x48
call fcn.004cb610
push edi
push esi
mov edi, dword [esp + 0xc]
mov esi, dword [edi + 0x40]
mov eax, dword [esi]
test eax, eax
je 0x49fe02
dec eax
push 1
push eax
call dword [sym.imp.KERNEL32.dll_TlsSetValue]
mov ecx, edi
call fcn.004a2c3d
push edi
push 0
push dword [0x530ac8]
call dword [sym.imp.KERNEL32.dll_HeapFree]
mov eax, dword [esi]
test eax, eax
je 0x49fe0b
dec eax
push 0
push eax
call dword [sym.imp.KERNEL32.dll_TlsSetValue]
pop esi
pop edi
ret
mov ecx, esi
call fcn.004ce4f0
jmp 0x49fdd0
mov ecx, esi
call fcn.004ce4f0
jmp 0x49fdf6