Function at 0x4dffe0
Capabilities:
Execute anti-debugging instructions
Get thread local storage value

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff0
sub esp, 0x38
push esi
push edi
push dword [0x884c50]
mov dword [esp + 0x10], ecx
call dword [sym.imp.KERNEL32.dll_TlsGetValue]
mov edi, eax
mov esi, dword [edi + 4]
cmp esi, dword [edi + 0xc]
jae 0x4e001e
mov dword [esi], 0x77f990
rdtsc
mov dword [esp + 8], eax
mov ecx, dword [esp + 8]
lea eax, [esi + 0xc]
mov dword [esi + 4], ecx
mov dword [edi + 4], eax
mov eax, dword [esp + 0xc]
mov edi, dword [ebp + 0xc]
movss xmm3, dword [eax + 0x10]
movaps xmm1, xmmword [edi]
shufps xmm3, xmm3, 0
addps xmm3, xmmword [eax + 0x20]
movaps xmm0, xmm3
movaps xmm2, xmm3
xorps xmm2, xmmword [0x719130]
cmpleps xmm0, xmm1
cmpleps xmm1, xmm2
movmskps esi, xmm0
movaps xmm0, xmmword [edi + 0x10]
cmpleps xmm3, xmm0
and esi, 7
cmpleps xmm0, xmm2
movmskps edx, xmm3
movmskps ecx, xmm1
movmskps eax, xmm0
and edx, 7
movaps xmmword [esp + 0x30], xmm2
and ecx, 7
and eax, 7
mov dword [esp + 0x10], ecx
mov dword [esp + 0xc], eax
test esi, edx
jne 0x4e01ce
test ecx, eax
jne 0x4e01ce
mov eax, ecx
or eax, esi
je 0x4e01ce
mov eax, dword [ebp + 0x10]
or edx, esi
movss xmm5, dword [0x718824]
xorps xmm4, xmm4
movss xmm6, dword [0x717e40]
mov dword [esp + 0x14], 1
movss xmm3, dword [eax + 0x10]
mov dword [esp + 0x18], 2
mov dword [esp + 0x1c], 4
mov dword [esp + 8], 1
xor eax, eax
mov ecx, dword [esp + eax + 0x1c]
test edx, ecx
je 0x4e0132
movss xmm2, dword [edi + eax + 8]
movss xmm1, dword [edi + eax + 0x18]
movss xmm0, dword [esp + eax + 0x38]
mulss xmm2, xmm5
mulss xmm1, xmm5
addss xmm2, xmm0
addss xmm1, xmm0
movaps xmm0, xmm2
subss xmm0, xmm1
divss xmm2, xmm0
test esi, ecx
je 0x4e0125
comiss xmm2, xmm4
jb 0x4e012d
xorps xmm0, xmm0
movaps xmm4, xmm2
movaps xmmword [esp + 0x20], xmm0
movss dword [esp + eax + 0x28], xmm5
jmp 0x4e012d
comiss xmm2, xmm3
ja 0x4e012d
movaps xmm3, xmm2
comiss xmm4, xmm3
ja 0x4e01a9
sub eax, 4
cmp eax, 0xfffffff8
jge 0x4e00d4
mov edx, dword [esp + 0xc]
movaps xmm5, xmm6
or edx, dword [esp + 0x10]
sub dword [esp + 8], 1
mov esi, dword [esp + 0x10]
jns 0x4e00d2
mov ecx, dword [ebp + 0x10]
movaps xmm0, xmmword [esp + 0x20]
mov eax, dword [ecx + 0x40]
movaps xmmword [ecx], xmm0
movss dword [ecx + 0x10], xmm4
mov dword [ecx + eax*4 + 0x20], 0xffffffff
push dword [0x884c50]
mov eax, dword [sym.imp.KERNEL32.dll_TlsGetValue]
call eax
mov edi, eax
mov esi, dword [edi + 4]
cmp esi, dword [edi + 0xc]
jae 0x4e019b
mov dword [esi], 0x77f5ec
rdtsc
mov dword [esp + 0x10], eax
mov ecx, dword [esp + 0x10]
lea eax, [esi + 0xc]
mov dword [esi + 4], ecx
mov dword [edi + 4], eax
mov eax, dword [ebp + 8]
mov byte [eax], 1
pop edi
pop esi
mov esp, ebp
pop ebp
ret 0xc
push dword [0x884c50]
mov eax, dword [sym.imp.KERNEL32.dll_TlsGetValue]
call eax
mov edi, eax
mov esi, dword [edi + 4]
cmp esi, dword [edi + 0xc]
jae 0x4e01fe
mov dword [esi], 0x77f5ec
rdtsc
mov dword [esp + 0x10], eax
jmp 0x4e01f1
push dword [0x884c50]
mov eax, dword [sym.imp.KERNEL32.dll_TlsGetValue]
call eax
mov edi, eax
mov esi, dword [edi + 4]
cmp esi, dword [edi + 0xc]
jae 0x4e01fe
mov dword [esi], 0x77f5ec
rdtsc
mov dword [esp + 0x10], eax
mov ecx, dword [esp + 0x10]
lea eax, [esi + 0xc]
mov dword [esi + 4], ecx
mov dword [edi + 4], eax
mov eax, dword [ebp + 8]
pop edi
pop esi
mov byte [eax], 0
mov esp, ebp
pop ebp
ret 0xc