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

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff0
sub esp, 0xd8
push esi
mov esi, dword [sym.imp.KERNEL32.dll_TlsGetValue]
push edi
push dword [0x884c50]
call esi
mov edi, eax
mov ecx, dword [edi + 4]
cmp ecx, dword [edi + 0xc]
jae 0x4dc7f6
mov dword [ecx], str.LtHeightField
mov dword [ecx + 0xc], str.StbTA
rdtsc
mov dword [esp + 0x18], eax
mov eax, dword [esp + 0x18]
mov dword [ecx + 4], eax
lea eax, [ecx + 0x10]
mov dword [edi + 4], eax
mov edx, dword [ebp + 8]
mov eax, dword [ebp + 0xc]
push dword [edx + 8]
mov ecx, dword [eax]
mov edi, dword [edx]
push dword [eax + 8]
mov dword [esp + 0x34], ecx
lea ecx, [esp + 0xa8]
mov dword [esp + 0x2c], edi
call fcn.0046efa0
mov eax, dword [edi]
mov ecx, edi
mov eax, dword [eax + 0x2c]
call eax
push dword [0x884adc]
mov edi, eax
mov dword [esp + 0x1c], edi
call esi
mov ecx, eax
shl edi, 4
add edi, 0x7f
and edi, 0xffffff80
mov dword [esp + 0x30], edi
mov eax, dword [ecx + 0xc]
mov dword [esp + 0x1c], eax
add eax, edi
cmp edi, dword [ecx + 8]
jg 0x4dc858
cmp eax, dword [ecx + 0x10]
ja 0x4dc858
mov dword [ecx + 0xc], eax
jmp 0x4dc862
push edi
call fcn.0046a3c0
mov dword [esp + 0x1c], eax
push dword [0x884c50]
call esi
mov dword [esp + 0x14], eax
mov ecx, dword [eax + 4]
cmp ecx, dword [eax + 0xc]
jae 0x4dc893
mov dword [ecx], str.StgetSpheres
rdtsc
mov dword [esp + 0x20], eax
mov edx, dword [esp + 0x20]
lea eax, [ecx + 0xc]
mov dword [ecx + 4], edx
mov edx, dword [esp + 0x14]
mov dword [edx + 4], eax
mov ecx, dword [esp + 0x24]
push dword [esp + 0x1c]
mov eax, dword [ecx]
mov eax, dword [eax + 0x30]
call eax
push dword [0x884c50]
mov dword [esp + 0x18], eax
call esi
mov ecx, eax
mov dword [esp + 0x28], ecx
mov eax, dword [ecx + 4]
mov dword [esp + 0x20], eax
cmp eax, dword [ecx + 0xc]
jae 0x4dc8e1
mov dword [eax], str.Sttransform
rdtsc
mov dword [esp + 0x24], eax
mov eax, dword [esp + 0x20]
mov ecx, dword [esp + 0x24]
mov dword [eax + 4], ecx
add eax, 0xc
mov ecx, dword [esp + 0x28]
mov dword [ecx + 4], eax
mov ecx, dword [esp + 0x18]
mov edx, dword [esp + 0x1c]
dec ecx
movaps xmm3, xmmword [esp + 0xa0]
mov eax, ecx
movaps xmm4, xmmword [esp + 0xb0]
movaps xmm5, xmmword [esp + 0xc0]
movaps xmm6, xmmword [esp + 0xd0]
shl eax, 4
add eax, dword [esp + 0x14]
sub edx, dword [esp + 0x14]
mov dword [esp + 0x20], ecx
nop dword [eax + eax]
movaps xmm1, xmmword [eax]
movaps xmm2, xmm1
movaps xmm0, xmm1
shufps xmm0, xmm1, 0
mulps xmm0, xmm3
shufps xmm2, xmm1, 0x55
mulps xmm2, xmm4
addps xmm2, xmm0
movaps xmm0, xmm1
shufps xmm0, xmm1, 0xaa
mulps xmm0, xmm5
addps xmm0, xmm6
addps xmm2, xmm0
movaps xmm0, xmm2
unpckhps xmm0, xmm1
shufps xmm2, xmm0, 0xc4
movaps xmmword [edx + eax], xmm2
sub eax, 0x10
sub ecx, 1
jns 0x4dc920
push dword [0x884c50]
call esi
mov ecx, eax
mov dword [esp + 0x14], ecx
mov eax, dword [ecx + 4]
mov dword [esp + 0x24], eax
cmp eax, dword [ecx + 0xc]
jae 0x4dc99b
mov dword [eax], str.Stcollide
rdtsc
mov dword [esp + 0x28], eax
mov eax, dword [esp + 0x24]
mov ecx, dword [esp + 0x28]
mov dword [eax + 4], ecx
add eax, 0xc
mov ecx, dword [esp + 0x14]
mov dword [ecx + 4], eax
push dword [0x884adc]
call esi
mov esi, dword [eax + 0xc]
mov dword [esp + 0x14], esi
lea ecx, [edi + esi]
cmp edi, dword [eax + 8]
jg 0x4dc9bc
cmp ecx, dword [eax + 0x10]
ja 0x4dc9bc
mov dword [eax + 0xc], ecx
jmp 0x4dc9ca
push edi
mov ecx, eax
call fcn.0046a3c0
mov esi, eax
mov dword [esp + 0x14], eax
mov eax, dword [esp + 0x1c]
lea ecx, [esp + 0x34]
mov dword [esp + 0x34], eax
mov eax, dword [esp + 0x18]
mov dword [esp + 0x38], eax
mov eax, dword [ebp + 0x10]
push esi
push ecx
movss xmm0, dword [eax + 0xc]
mov eax, dword [esp + 0x34]
mov ecx, eax
movss dword [esp + 0x44], xmm0
mov edx, dword [eax]
call dword [edx + 0x2c]
push dword [0x884c50]
call dword [sym.imp.KERNEL32.dll_TlsGetValue]
mov ecx, eax
mov dword [esp + 0x24], ecx
mov eax, dword [ecx + 4]
mov dword [esp + 0x28], eax
cmp eax, dword [ecx + 0xc]
jae 0x4dca38
mov dword [eax], str.Stexamine
rdtsc
mov dword [esp + 0x2c], eax
mov eax, dword [esp + 0x28]
mov ecx, dword [esp + 0x2c]
mov dword [eax + 4], ecx
add eax, 0xc
mov ecx, dword [esp + 0x24]
mov dword [ecx + 4], eax
mov eax, dword [ebp + 0x10]
movss xmm0, dword [eax + 0xc]
mov eax, dword [esp + 0x20]
movss dword [esp + 0x2c], xmm0
test eax, eax
js 0x4dcb3b
mov edi, dword [esp + 0x1c]
sub edi, dword [esp + 0x14]
nop word [eax + eax]
movss xmm4, dword [esi + 0xc]
comiss xmm0, xmm4
jb 0x4dcb27
movss xmm1, dword [edi + esi + 0xc]
lea edx, [esp + 0x60]
xorps xmm1, xmmword [0x719730]
movaps xmm3, xmmword [esi]
subss xmm1, xmm4
mov ecx, dword [ebp + 0xc]
push edx
mov eax, dword [ecx + 8]
shufps xmm1, xmm1, 0
mulps xmm1, xmm3
addps xmm1, xmmword [edi + esi]
movaps xmm2, xmm1
movaps xmm0, xmm1
shufps xmm0, xmm1, 0
mulps xmm0, xmmword [eax]
shufps xmm2, xmm1, 0x55
mulps xmm2, xmmword [eax + 0x10]
shufps xmm1, xmm1, 0xaa
mulps xmm1, xmmword [eax + 0x20]
addps xmm2, xmm0
movaps xmm0, xmm3
shufps xmm0, xmm3, 0
mulps xmm0, xmmword [eax]
addps xmm1, xmmword [eax + 0x30]
addps xmm2, xmm1
movaps xmm1, xmm3
shufps xmm1, xmm3, 0x55
mulps xmm1, xmmword [eax + 0x10]
shufps xmm3, xmm3, 0xaa
mulps xmm3, xmmword [eax + 0x20]
mov eax, dword [ebp + 8]
addps xmm1, xmm0
mov dword [esp + 0x98], ecx
mov ecx, dword [ebp + 0x14]
mov dword [esp + 0x94], eax
movaps xmmword [esp + 0x64], xmm2
mov eax, dword [ecx]
addps xmm1, xmm3
movaps xmmword [esp + 0x54], xmm1
movss dword [esp + 0x60], xmm4
movaps xmm0, xmmword [esp + 0x54]
movaps xmmword [esp + 0x74], xmm0
movaps xmmword [esp + 0x84], xmm0
call dword [eax + 4]
movss xmm0, dword [esp + 0x2c]
mov eax, dword [esp + 0x20]
add esi, 0x10
sub eax, 1
mov dword [esp + 0x20], eax
jns 0x4dca60
mov edi, dword [esp + 0x30]
push dword [0x884adc]
mov esi, dword [sym.imp.KERNEL32.dll_TlsGetValue]
call esi
mov edx, eax
lea eax, [edi + 0xf]
and eax, 0xfffffff0
mov dword [esp + 0x18], eax
mov eax, dword [esp + 0x14]
cmp edi, dword [edx + 8]
jg 0x4dcb73
mov ecx, dword [esp + 0x18]
add ecx, eax
cmp ecx, dword [edx + 0xc]
jne 0x4dcb73
cmp dword [edx + 0x14], eax
je 0x4dcb73
mov dword [edx + 0xc], eax
jmp 0x4dcb7f
push dword [esp + 0x18]
mov ecx, edx
push eax
call fcn.0046a590
push dword [0x884adc]
call esi
mov edx, eax
lea eax, [edi + 0xf]
and eax, 0xfffffff0
mov dword [esp + 0x18], eax
mov eax, dword [esp + 0x1c]
cmp edi, dword [edx + 8]
mov edi, dword [esp + 0x18]
jg 0x4dcbb2
lea ecx, [edi + eax]
cmp ecx, dword [edx + 0xc]
jne 0x4dcbb2
cmp dword [edx + 0x14], eax
je 0x4dcbb2
mov dword [edx + 0xc], eax
jmp 0x4dcbbb
push edi
push eax
mov ecx, edx
call fcn.0046a590
push dword [0x884c50]
call esi
mov edi, eax
mov esi, dword [edi + 4]
cmp esi, dword [edi + 0xc]
jae 0x4dcbe6
mov dword [esi], 0x77f784
rdtsc
mov dword [esp + 0x30], eax
mov ecx, dword [esp + 0x30]
lea eax, [esi + 0xc]
mov dword [esi + 4], ecx
mov dword [edi + 4], eax
pop edi
pop esi
mov esp, ebp
pop ebp
ret