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

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff0
sub esp, 0x1a8
push esi
mov esi, ecx
push edi
cmp dword [esi + 0x5c], 0
jne 0x4e7bc6
mov ecx, dword [esi + 0x50]
test ecx, ecx
je 0x4e7cab
mov edx, dword [esi + 0x54]
test edx, edx
je 0x4e7cab
lea eax, [esi + 0x58]
push eax
push ecx
call edx
add esp, 8
push dword [0x884c50]
call dword [sym.imp.KERNEL32.dll_TlsGetValue]
mov dword [esp + 0x1c], eax
mov edi, dword [eax + 4]
cmp edi, dword [eax + 0xc]
jae 0x4e7bfb
mov dword [edi], str.TtconvexVertCastRayPlaneEq
rdtsc
mov dword [esp + 0x14], eax
mov ecx, dword [esp + 0x14]
lea eax, [edi + 0xc]
mov dword [edi + 4], ecx
mov ecx, dword [esp + 0x1c]
mov dword [ecx + 4], eax
mov eax, dword [ebp + 0x10]
xorps xmm0, xmm0
mov edi, dword [esi + 0x5c]
sub edi, 1
movss xmm6, dword [0x717e40]
movaps xmmword [esp + 0x20], xmm0
movss xmm7, dword [eax + 0x10]
js 0x4e7e1f
mov ecx, dword [ebp + 0xc]
mov edx, edi
shl edx, 4
mov eax, dword [esi + 0x58]
movaps xmm0, xmmword [ecx]
movaps xmm1, xmmword [ecx + 0x10]
movaps xmm5, xmmword [eax + edx]
mulps xmm0, xmm5
movaps xmm2, xmm5
shufps xmm2, xmm5, 0xff
mulps xmm1, xmm5
movaps xmm3, xmm0
shufps xmm3, xmm0, 0x55
addss xmm3, xmm0
shufps xmm0, xmm0, 0xaa
addss xmm0, xmm2
movaps xmm4, xmm1
shufps xmm4, xmm1, 0xaa
addss xmm4, xmm2
addps xmm3, xmm0
movaps xmm0, xmm1
shufps xmm0, xmm1, 0x55
addss xmm0, xmm1
shufps xmm3, xmm3, 0
addps xmm4, xmm0
xorps xmm0, xmm0
comiss xmm3, xmm0
jb 0x4e7d43
comiss xmm4, xmm0
jae 0x4e7dd5
movaps xmm0, xmm3
subss xmm0, xmm4
divss xmm3, xmm0
comiss xmm3, xmm6
jb 0x4e7d5b
movaps xmm6, xmm3
movaps xmmword [esp + 0x20], xmm5
jmp 0x4e7d5b
push dword [0x884c50]
call dword [sym.imp.KERNEL32.dll_TlsGetValue]
mov dword [esp + 0x14], eax
mov edi, dword [eax + 4]
cmp edi, dword [eax + 0xc]
jae 0x4e7ce0
mov dword [edi], 0x77fc40
rdtsc
mov dword [esp + 0x1c], eax
mov ecx, dword [esp + 0x1c]
lea eax, [edi + 0xc]
mov dword [edi + 4], ecx
mov ecx, dword [esp + 0x14]
mov dword [ecx + 4], eax
push dword [ebp + 0x10]
lea eax, [esp + 0x1f]
mov dword [esp + 0x44], 0
push dword [ebp + 0xc]
lea ecx, [esp + 0x38]
push esi
push eax
call fcn.00548720
push dword [0x884c50]
mov al, byte [eax]
mov byte [esp + 0x1f], al
call dword [sym.imp.KERNEL32.dll_TlsGetValue]
mov edi, eax
mov esi, dword [edi + 4]
cmp esi, dword [edi + 0xc]
jae 0x4e7d32
mov dword [esi], 0x77f5ec
rdtsc
mov dword [esp + 0x14], eax
mov ecx, dword [esp + 0x14]
lea eax, [esi + 0xc]
mov dword [esi + 4], ecx
mov dword [edi + 4], eax
mov eax, dword [ebp + 8]
mov cl, byte [esp + 0x1b]
mov byte [eax], cl
pop edi
pop esi
mov esp, ebp
pop ebp
ret 0xc
comiss xmm4, xmm0
jb 0x4e7d67
movaps xmm0, xmm3
subss xmm0, xmm4
divss xmm3, xmm0
comiss xmm3, xmm7
ja 0x4e7d5b
movaps xmm7, xmm3
comiss xmm6, xmm7
ja 0x4e7dfa
xorps xmm0, xmm0
sub edx, 0x10
sub edi, 1
jns 0x4e7c27
comiss xmm0, xmm6
ja 0x4e7e1f
mov ecx, dword [ebp + 0x10]
movaps xmm0, xmmword [esp + 0x20]
mov eax, dword [ecx + 0x40]
movaps xmmword [ecx], xmm0
movss dword [ecx + 0x10], xmm6
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 0x4e7dc7
mov dword [esi], 0x77f5ec
rdtsc
mov dword [esp + 0x14], eax
mov ecx, dword [esp + 0x14]
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 0x4e7e4f
mov dword [esi], 0x77f5ec
rdtsc
mov dword [esp + 0x14], eax
jmp 0x4e7e42
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 0x4e7e4f
mov dword [esi], 0x77f5ec
rdtsc
mov dword [esp + 0x14], eax
jmp 0x4e7e42
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 0x4e7e4f
mov dword [esi], 0x77f5ec
rdtsc
mov dword [esp + 0x14], eax
mov ecx, dword [esp + 0x14]
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