Function at 0x4e8010
Capabilities:
Get thread local storage value

Disassembly:
sub esp, 0x34
mov edx, ecx
mov dword [esp + 0x18], connect
mov eax, dword [edx + 0x5c]
push ebx
push esi
lea ebx, [edx + 0x58]
mov dword [esp + 0xc], edx
xor esi, esi
mov dword [esp + 8], esi
push edi
test eax, eax
jle 0x4e8068
shl eax, 4
mov ecx, 0x7d8954
mov dword [esp + 0x1c], eax
lea eax, [esp + 0x1c]
push eax
mov eax, dword [0x7d8954]
call dword [eax + 0xc]
mov esi, eax
mov dword [esp + 0xc], eax
mov eax, dword [esp + 0x1c]
cdq
and edx, 0xf
add eax, edx
mov edx, dword [esp + 0x10]
sar eax, 4
mov dword [esp + 0x24], eax
mov edi, dword [ebx + 4]
mov ecx, dword [ebx]
test edi, edi
jle 0x4e8094
sub ecx, esi
mov eax, esi
mov dword [esp + 0x20], ecx
mov ecx, edi
mov esi, dword [esp + 0x20]
nop
movaps xmm0, xmmword [esi + eax]
lea eax, [eax + 0x10]
movaps xmmword [eax - 0x10], xmm0
sub ecx, 1
jne 0x4e8080
mov esi, dword [esp + 0xc]
mov ecx, dword [edx + 0x4c]
mov dword [edx + 0x5c], 0
mov dword [esp + 0x18], ecx
mov dword [esp + 0x2c], 0
mov dword [esp + 0x30], 0
mov dword [esp + 0x34], connect
mov dword [esp + 0x3c], ecx
test ecx, ecx
je 0x4e811f
push dword [0x884adc]
call dword [sym.imp.KERNEL32.dll_TlsGetValue]
mov ecx, dword [esp + 0x18]
mov edx, eax
shl ecx, 4
add ecx, 0x7f
and ecx, 0xffffff80
mov eax, dword [edx + 0xc]
lea esi, [ecx + eax]
mov dword [esp + 0x20], esi
mov esi, dword [esp + 0xc]
cmp ecx, dword [edx + 8]
jg 0x4e810d
lea esi, [ecx + eax]
cmp esi, dword [edx + 0x10]
mov esi, dword [esp + 0xc]
ja 0x4e810d
mov ecx, dword [esp + 0x20]
mov dword [edx + 0xc], ecx
mov edx, dword [esp + 0x10]
mov ecx, dword [esp + 0x18]
jmp 0x4e8121
push ecx
mov ecx, edx
call fcn.0046a3c0
mov edx, dword [esp + 0x10]
mov ecx, dword [esp + 0x18]
jmp 0x4e8121
xor eax, eax
or ecx, 0x80000000
mov dword [esp + 0x2c], eax
mov dword [esp + 0x38], eax
lea eax, [esp + 0x2c]
mov dword [esp + 0x34], ecx
mov ecx, edx
push eax
call fcn.004e7450
mov edx, dword [esp + 0x10]
xor eax, eax
mov dword [esp + 0x18], eax
xor ecx, ecx
mov dword [esp + 0x14], ecx
mov eax, dword [edx + 0x64]
cmp dword [eax + 0x18], ecx
jle 0x4e8319
mov eax, edi
shl eax, 4
add eax, esi
mov dword [esp + 0x20], eax
test edi, edi
je 0x4e8332
mov edx, dword [edx + 0x64]
mov eax, dword [edx + 0x14]
movzx eax, byte [eax + ecx]
mov dword [esp + 0x28], eax
cmp eax, 3
jl 0x4e8300
mov eax, dword [edx + 8]
mov esi, dword [esp + 0x18]
movzx ecx, word [eax + esi*2]
movzx edx, word [eax + esi*2 + 2]
add ecx, ecx
movzx esi, word [eax + esi*2 + 4]
add edx, edx
mov eax, dword [esp + 0x18]
add esi, esi
add eax, dword [esp + 0x28]
mov dword [esp + 0x18], eax
mov eax, dword [esp + 0x2c]
movups xmm0, xmmword [eax + ecx*8]
movups xmm4, xmmword [eax + esi*8]
mov esi, dword [esp + 0xc]
movups xmm2, xmmword [eax + edx*8]
subps xmm4, xmm0
subps xmm2, xmm0
movaps xmm1, xmm4
shufps xmm1, xmm4, 0xc9
movaps xmm0, xmm2
shufps xmm0, xmm2, 0xd2
mulps xmm1, xmm0
shufps xmm4, xmm4, 0xd2
shufps xmm2, xmm2, 0xc9
mulps xmm4, xmm2
subps xmm4, xmm1
movaps xmm1, xmm4
mulps xmm1, xmm4
movaps xmm0, xmm1
shufps xmm0, xmm1, 0x55
addss xmm0, xmm1
shufps xmm1, xmm1, 0xaa
addss xmm1, xmm0
movaps xmm0, xmmword [0x719550]
shufps xmm1, xmm1, 0
subps xmm0, xmm1
shufps xmm0, xmm0, 0
movmskps eax, xmm0
test al, 1
je 0x4e82eb
movaps xmm3, xmmword [0x719710]
xor edx, edx
rsqrtps xmm0, xmm1
mulps xmm1, xmm0
movaps xmm2, xmmword [esi]
lea eax, [edx + 1]
mulps xmm1, xmm0
mulps xmm0, xmmword [0x719700]
subps xmm3, xmm1
mulps xmm3, xmm0
shufps xmm3, xmm3, 0
mulps xmm3, xmm4
mulps xmm2, xmm3
movaps xmm0, xmm2
shufps xmm0, xmm2, 0x55
addss xmm0, xmm2
shufps xmm2, xmm2, 0xaa
addss xmm2, xmm0
shufps xmm2, xmm2, 0
cmp edi, eax
jle 0x4e829b
lea ecx, [esi + 0x10]
nop dword [eax + eax]
movaps xmm1, xmm3
mulps xmm1, xmmword [ecx]
movaps xmm0, xmm1
shufps xmm0, xmm1, 0x55
addss xmm0, xmm1
shufps xmm1, xmm1, 0xaa
addss xmm1, xmm0
comiss xmm1, xmm2
jbe 0x4e8293
movaps xmm2, xmm1
mov edx, eax
inc eax
add ecx, 0x10
cmp eax, edi
jl 0x4e8270
mov eax, dword [ebx + 4]
mov ecx, edx
shl ecx, 4
dec edi
shl eax, 4
add ecx, esi
add eax, dword [ebx]
movaps xmm0, xmmword [ecx]
movaps xmmword [eax], xmm0
mov eax, dword [esp + 0x20]
inc dword [ebx + 4]
sub eax, 0x10
mov dword [esp + 0x20], eax
cmp edi, edx
je 0x4e82fc
mov edx, eax
mov esi, 2
sub edx, ecx
nop dword [eax]
mov eax, dword [edx + ecx]
lea ecx, [ecx + 8]
mov dword [ecx - 8], eax
mov eax, dword [edx + ecx - 4]
mov dword [ecx - 4], eax
sub esi, 1
jne 0x4e82d0
mov esi, dword [esp + 0xc]
jmp 0x4e82fc
mov eax, dword [ebx + 4]
movaps xmm0, xmmword [esi]
shl eax, 4
add eax, dword [ebx]
movaps xmmword [eax], xmm0
inc dword [ebx + 4]
mov ecx, dword [esp + 0x14]
mov eax, dword [esp + 0x10]
inc ecx
mov edx, dword [esp + 0x10]
mov dword [esp + 0x14], ecx
mov eax, dword [eax + 0x64]
cmp ecx, dword [eax + 0x18]
jl 0x4e8166
test edi, edi
jle 0x4e8332
mov eax, dword [esp + 0x10]
mov ecx, ebx
push edi
push esi
push dword [eax + 0x5c]
push 0x7d8954
call fcn.004a8a80
mov edi, dword [esp + 0x38]
xor ecx, ecx
mov eax, dword [esp + 0x30]
cmp edi, dword [esp + 0x2c]
mov esi, dword [esp + 0x3c]
push dword [0x884adc]
cmove eax, ecx
shl esi, 4
add esi, 0x7f
mov dword [esp + 0x34], eax
and esi, 0xffffff80
call dword [sym.imp.KERNEL32.dll_TlsGetValue]
lea edx, [esi + 0xf]
and edx, 0xfffffff0
cmp esi, dword [eax + 8]
jg 0x4e837d
lea ecx, [edx + edi]
cmp ecx, dword [eax + 0xc]
jne 0x4e837d
cmp dword [eax + 0x14], edi
je 0x4e837d
mov dword [eax + 0xc], edi
jmp 0x4e8386
push edx
push edi
mov ecx, eax
call fcn.0046a590
mov eax, dword [esp + 0x34]
mov dword [esp + 0x30], 0
pop edi
pop esi
pop ebx
test eax, eax
js 0x4e83b3
and eax, 0x3fffffff
mov ecx, 0x7d8954
shl eax, 4
push eax
mov eax, dword [0x7d8954]
push dword [esp + 0x24]
call dword [eax + 0x10]
mov eax, dword [esp + 0x18]
mov dword [esp + 0x20], 0
mov dword [esp + 0x28], connect
test eax, eax
js 0x4e83e5
and eax, 0x3fffffff
mov ecx, 0x7d8954
shl eax, 4
push eax
mov eax, dword [0x7d8954]
push dword [esp + 4]
call dword [eax + 0x10]
add esp, 0x34
ret