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

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff0
sub esp, 0x68
push esi
push edi
push dword [0x884c50]
mov edi, dword [sym.imp.KERNEL32.dll_TlsGetValue]
call edi
mov esi, eax
mov ecx, dword [esi + 4]
cmp ecx, dword [esi + 0xc]
jae 0x4dc503
mov dword [ecx], str.LtHeightField
mov dword [ecx + 0xc], str.StGetSpheres
rdtsc
mov dword [esp + 0x10], eax
mov eax, dword [esp + 0x10]
mov dword [ecx + 4], eax
lea eax, [ecx + 0x10]
mov dword [esi + 4], eax
mov ecx, dword [ebp + 8]
mov edx, dword [ebp + 0xc]
push dword [ecx + 8]
mov esi, dword [ecx]
lea ecx, [esp + 0x34]
mov eax, dword [edx]
push dword [edx + 8]
mov dword [esp + 0x1c], esi
mov dword [esp + 0x28], eax
call fcn.0046efa0
mov eax, dword [esi]
mov ecx, esi
mov eax, dword [eax + 0x2c]
call eax
push dword [0x884adc]
mov esi, eax
mov dword [esp + 0x10], esi
call edi
mov edx, eax
mov eax, esi
shl eax, 4
add eax, 0x7f
and eax, 0xffffff80
mov ecx, dword [edx + 0xc]
mov dword [esp + 0x10], eax
mov dword [esp + 8], ecx
lea esi, [ecx + eax]
cmp eax, dword [edx + 8]
jg 0x4dc565
cmp esi, dword [edx + 0x10]
ja 0x4dc565
mov dword [edx + 0xc], esi
jmp 0x4dc573
push eax
mov ecx, edx
call fcn.0046a3c0
mov ecx, eax
mov dword [esp + 8], eax
mov eax, dword [esp + 0x14]
push ecx
mov ecx, eax
mov edx, dword [eax]
mov edx, dword [edx + 0x30]
call edx
mov esi, dword [esp + 0xc]
movaps xmm3, xmmword [esp + 0x30]
dec esi
movaps xmm4, xmmword [esp + 0x40]
mov edx, esi
mov esi, dword [esp + 8]
mov ecx, edx
movaps xmm5, xmmword [esp + 0x50]
movaps xmm6, xmmword [esp + 0x60]
shl ecx, 4
add ecx, eax
sub esi, eax
mov dword [esp + 0x18], esi
mov esi, edx
mov eax, dword [esp + 0x18]
movaps xmm1, xmmword [ecx]
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 [eax + ecx], xmm2
sub ecx, 0x10
sub edx, 1
jns 0x4dc5b3
push dword [0x884c50]
call edi
mov ecx, eax
mov dword [esp + 0x1c], ecx
mov eax, dword [ecx + 4]
mov dword [esp + 0x14], eax
cmp eax, dword [ecx + 0xc]
jae 0x4dc62e
mov dword [eax], str.StCollide
rdtsc
mov dword [esp + 0x18], eax
mov eax, dword [esp + 0x14]
mov ecx, dword [esp + 0x18]
mov dword [eax + 4], ecx
add eax, 0xc
mov ecx, dword [esp + 0x1c]
mov dword [ecx + 4], eax
push dword [0x884adc]
call edi
mov ecx, dword [esp + 0x10]
mov edi, dword [eax + 0xc]
lea edx, [edi + ecx]
cmp ecx, dword [eax + 8]
jg 0x4dc64f
cmp edx, dword [eax + 0x10]
ja 0x4dc64f
mov dword [eax + 0xc], edx
jmp 0x4dc659
push ecx
mov ecx, eax
call fcn.0046a3c0
mov edi, eax
mov eax, dword [esp + 8]
lea ecx, [esp + 0x24]
mov edx, dword [ebp + 0x10]
mov dword [esp + 0x24], eax
mov eax, dword [esp + 0xc]
mov dword [esp + 0x28], eax
mov eax, dword [esp + 0x20]
movss xmm0, dword [edx + 0xc]
push edi
push ecx
mov edx, dword [eax]
mov ecx, eax
movss dword [esp + 0x34], xmm0
call dword [edx + 0x2c]
push dword [0x884c50]
call dword [sym.imp.KERNEL32.dll_TlsGetValue]
mov ecx, eax
mov dword [esp + 0x18], ecx
mov eax, dword [ecx + 4]
mov dword [esp + 0x1c], eax
cmp eax, dword [ecx + 0xc]
jae 0x4dc6c7
mov dword [eax], str.StExamine
rdtsc
mov dword [esp + 0x20], eax
mov eax, dword [esp + 0x1c]
mov ecx, dword [esp + 0x20]
mov dword [eax + 4], ecx
add eax, 0xc
mov ecx, dword [esp + 0x18]
mov dword [ecx + 4], eax
test esi, esi
js 0x4dc6ee
lea eax, [edi + 0xc]
xorps xmm0, xmm0
comiss xmm0, dword [eax]
ja 0x4dc6e0
add eax, 0x10
sub esi, 1
jns 0x4dc6d1
jmp 0x4dc6ee
mov ecx, dword [ebp + 0x14]
push dword [ebp + 0xc]
push dword [ebp + 8]
mov eax, dword [ecx]
call dword [eax + 4]
push dword [0x884adc]
call dword [sym.imp.KERNEL32.dll_TlsGetValue]
mov esi, dword [esp + 0x10]
lea edx, [esi + 0xf]
and edx, 0xfffffff0
cmp esi, dword [eax + 8]
jg 0x4dc71b
lea ecx, [edx + edi]
cmp ecx, dword [eax + 0xc]
jne 0x4dc71b
cmp dword [eax + 0x14], edi
je 0x4dc71b
mov dword [eax + 0xc], edi
jmp 0x4dc724
push edx
push edi
mov ecx, eax
call fcn.0046a590
push dword [0x884adc]
mov edi, dword [sym.imp.KERNEL32.dll_TlsGetValue]
call edi
lea edx, [esi + 0xf]
and edx, 0xfffffff0
cmp esi, dword [eax + 8]
mov esi, dword [esp + 8]
jg 0x4dc753
lea ecx, [edx + esi]
cmp ecx, dword [eax + 0xc]
jne 0x4dc753
cmp dword [eax + 0x14], esi
je 0x4dc753
mov dword [eax + 0xc], esi
jmp 0x4dc75c
push edx
push esi
mov ecx, eax
call fcn.0046a590
push dword [0x884c50]
call edi
mov edi, eax
mov esi, dword [edi + 4]
cmp esi, dword [edi + 0xc]
jae 0x4dc787
mov dword [esi], 0x77f784
rdtsc
mov dword [esp + 0x20], eax
mov ecx, dword [esp + 0x20]
lea eax, [esi + 0xc]
mov dword [esi + 4], ecx
mov dword [edi + 4], eax
pop edi
pop esi
mov esp, ebp
pop ebp
ret