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

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff0
sub esp, 0x158
push esi
push edi
push dword [0x884c50]
mov edi, ecx
mov dword [esp + 0x4c], edi
call dword [sym.imp.KERNEL32.dll_TlsGetValue]
mov dword [esp + 0x14], eax
mov esi, dword [eax + 4]
cmp esi, dword [eax + 0xc]
jae 0x4ec819
mov dword [esi], str.TtrcHeightFild
rdtsc
mov dword [esp + 8], eax
mov ecx, dword [esp + 8]
lea eax, [esi + 0xc]
mov dword [esi + 4], ecx
mov ecx, dword [esp + 0x14]
mov dword [ecx + 4], eax
mov edx, dword [ebp + 8]
movaps xmm0, xmmword [edi + 0x40]
movaps xmm2, xmmword [edi + 0x30]
movaps xmm1, xmmword [edx]
addps xmm0, xmm1
mulps xmm0, xmm2
addps xmm0, xmmword [0x873350]
movd ecx, xmm0
psrldq xmm0, 8
movd eax, xmm0
movaps xmm0, xmm2
mulps xmm0, xmm1
shr ecx, 6
shr eax, 6
cwde
movsx esi, cx
lea ecx, [esp + 0x13]
movaps xmmword [esp + 0x150], xmm0
movaps xmmword [esp + 0xc0], xmm0
movaps xmm0, xmmword [edx + 0x10]
mulps xmm0, xmm2
mov dword [esp + 0xc], eax
mov dword [esp + 0x60], eax
mov eax, dword [edi]
push ecx
mov ecx, edi
mov dword [esp + 0x5c], esi
movaps xmmword [esp + 0xd4], xmm0
movaps xmmword [esp + 0xb4], xmm0
call dword [eax + 0x38]
cmp byte [esp + 0x13], 0
movaps xmm0, xmmword [esp + 0x150]
movss xmm3, dword [esp + 0xc0]
movss xmm4, dword [esp + 0xb0]
movss xmm5, dword [esp + 0xc8]
movaps xmm1, xmm4
shufps xmm0, xmm0, 0x55
movaps xmmword [esp + 0x150], xmm0
movss dword [esp + 0xcc], xmm0
movaps xmm0, xmmword [esp + 0xd0]
shufps xmm0, xmm0, 0x55
movaps xmmword [esp + 0xd0], xmm0
movss dword [esp + 0xbc], xmm0
movaps xmm0, xmm3
jne 0x4ec901
addss xmm1, dword [esp + 0xb8]
addss xmm0, xmm5
jmp 0x4ec90e
subss xmm1, dword [esp + 0xb8]
subss xmm0, xmm5
movss xmm2, dword [0x77fe10]
subss xmm4, xmm3
movss dword [esp + 0xb4], xmm1
movss dword [esp + 0xc4], xmm0
movss dword [esp + 0x4c], xmm0
movaps xmm6, xmm4
andps xmm6, xmmword [0x719120]
comiss xmm2, xmm6
movss xmm2, dword [0x77fe14]
movss dword [esp + 0xa0], xmm6
movss xmm6, dword [0x719730]
movss dword [esp + 0x98], xmm2
xorps xmm2, xmm2
jbe 0x4ec98b
movss xmm0, dword [esp + 0xd0]
movaps xmm7, xmm2
movss xmm4, dword [0x77fe14]
or ecx, 0xffffffff
movss dword [esp + 0x70], xmm0
movss xmm0, dword [esp + 0x4c]
jmp 0x4ec9c5
comiss xmm2, xmm4
movss xmm7, dword [0x718824]
divss xmm7, xmm4
movss dword [esp + 0x70], xmm7
jbe 0x4ec9aa
or ecx, 0xffffffff
xorps xmm7, xmm6
jmp 0x4ec9b4
inc esi
mov ecx, 1
mov dword [esp + 0x58], esi
movd xmm4, esi
cvtdq2ps xmm4, xmm4
subss xmm4, xmm3
mulss xmm4, dword [esp + 0x70]
subss xmm1, xmm0
movss dword [esp + 0x20], xmm7
movss dword [esp + 0xe0], xmm7
movss xmm7, dword [0x77fe10]
mov dword [esp + 0x64], ecx
movss dword [esp + 0x8c], xmm4
movaps xmm0, xmm1
andps xmm0, xmmword [0x719120]
comiss xmm7, xmm0
jbe 0x4eca23
movaps xmm1, xmm2
mov dword [esp + 0x68], 0xffffffff
movss dword [esp + 0x1c], xmm1
movss dword [esp + 0xe4], xmm1
mov dword [esp + 0x90], 0x7f7fffee
jmp 0x4eca91
comiss xmm2, xmm1
mov eax, dword [esp + 0x5c]
movss xmm0, dword [0x718824]
divss xmm0, xmm1
movss dword [esp + 8], xmm0
jbe 0x4eca5d
movaps xmm1, xmm0
mov dword [esp + 0x68], 0xffffffff
xorps xmm1, xmm6
movss dword [esp + 0x1c], xmm1
movss dword [esp + 0xe4], xmm1
jmp 0x4eca75
mov dword [esp + 0x68], 1
inc eax
movss dword [esp + 0x1c], xmm0
movss dword [esp + 0xe4], xmm0
movd xmm0, eax
cvtdq2ps xmm0, xmm0
subss xmm0, dword [esp + 0x4c]
mulss xmm0, dword [esp + 8]
movss dword [esp + 0x90], xmm0
movss xmm1, dword [esp + 0xb8]
movss xmm0, dword [0x77fe10]
subss xmm1, xmm5
mov edx, dword [esp + 0xc]
movaps xmm7, xmm1
andps xmm7, xmmword [0x719120]
comiss xmm0, xmm7
movss dword [esp + 0x9c], xmm7
jbe 0x4ecae6
movss xmm0, dword [esp + 0xd8]
movaps xmm1, xmm2
movss xmm6, dword [0x77fe14]
mov dword [esp + 0x6c], 0xffffffff
movss dword [esp + 0x50], xmm0
jmp 0x4ecb2d
movss xmm0, dword [0x718824]
divss xmm0, xmm1
comiss xmm2, xmm1
movss dword [esp + 0x50], xmm0
movaps xmm1, xmm0
jbe 0x4ecb0d
mov dword [esp + 0x6c], 0xffffffff
xorps xmm1, xmm6
jmp 0x4ecb1e
inc edx
mov dword [esp + 0x6c], 1
mov dword [esp + 0xc], edx
mov dword [esp + 0x60], edx
movd xmm6, edx
cvtdq2ps xmm6, xmm6
subss xmm6, xmm5
mulss xmm6, xmm0
movss xmm7, dword [esp + 0x20]
movaps xmm0, xmm7
movss dword [esp + 0x40], xmm1
addss xmm0, xmm1
movss dword [esp + 0xe8], xmm1
movss dword [esp + 0x94], xmm6
ucomiss xmm0, xmm2
lahf
test ah, 0x44
jnp 0x4ed876
movss xmm0, dword [esp + 0x1c]
addss xmm0, xmm7
ucomiss xmm0, xmm2
lahf
test ah, 0x44
jnp 0x4ed876
movss xmm0, dword [esp + 0x1c]
addss xmm0, xmm1
ucomiss xmm0, xmm2
lahf
test ah, 0x44
jnp 0x4ed876
movaps xmm0, xmmword [esp + 0xc0]
movaps xmmword [esp + 0xf0], xmm0
mov dword [esp + 0x3c], esi
test ecx, ecx
jle 0x4ecc0b
test esi, esi
jg 0x4ecd4b
comiss xmm2, dword [esp + 0xb0]
jbe 0x4ecbf3
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 0x4edd3e
mov dword [esi], 0x77f5ec
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
pop edi
pop esi
mov esp, ebp
pop ebp
ret 0x14
movss xmm4, dword [esp + 0x20]
mov esi, 1
mulss xmm7, xmm3
xorps xmm7, xmmword [0x719730]
jmp 0x4ecc7e
mov eax, dword [edi + 0x10]
lea ecx, [eax - 2]
cmp esi, ecx
jle 0x4ecd4b
movss xmm0, dword [esp + 0xb0]
dec eax
movd xmm1, eax
cvtdq2ps xmm1, xmm1
comiss xmm0, xmm1
jbe 0x4ecc6b
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 0x4edd3e
mov dword [esi], 0x77f5ec
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
pop edi
pop esi
mov esp, ebp
pop ebp
ret 0x14
movss xmm4, dword [esp + 0x20]
movaps xmm7, xmm3
subss xmm7, xmm1
mov esi, ecx
mulss xmm7, xmm4
movaps xmm0, xmmword [0x727d50]
addss xmm4, xmm7
movaps xmm1, xmm7
mov dword [esp + 0x58], esi
mulss xmm7, dword [esp + 0x9c]
shufps xmm1, xmm1, 0
subps xmm0, xmm1
movss dword [esp + 0x8c], xmm4
movss dword [esp + 8], xmm7
mulps xmm0, xmmword [esp + 0xc0]
movaps xmmword [esp + 0xd0], xmm0
movaps xmm0, xmmword [esp + 0xb0]
mulps xmm0, xmm1
movaps xmm1, xmmword [esp + 0xd0]
addps xmm1, xmm0
movaps xmmword [esp + 0xf0], xmm1
fld dword [esp + 8]
fistp dword [esp + 0x14]
mov ecx, dword [esp + 0x6c]
mov eax, ecx
imul eax, dword [esp + 0x14]
shufps xmm1, xmm1, 0xaa
add eax, 0xfffffffe
add edx, eax
movd xmm0, edx
cvtdq2ps xmm0, xmm0
comiss xmm1, xmm0
jb 0x4ecd12
inc edx
movd xmm0, edx
cvtdq2ps xmm0, xmm0
comiss xmm1, xmm0
jae 0x4ecd05
movss xmm1, dword [esp + 0x40]
mov eax, ecx
movss xmm7, dword [esp + 0x20]
sar eax, 1
add edx, eax
ucomiss xmm1, xmm2
mov dword [esp + 0x60], edx
lahf
test ah, 0x44
jnp 0x4ecd4b
movd xmm6, edx
cvtdq2ps xmm6, xmm6
subss xmm6, xmm5
mulss xmm6, dword [esp + 0x50]
movss dword [esp + 0x94], xmm6
cmp dword [esp + 0x6c], 0
jle 0x4ecdb5
test edx, edx
jg 0x4ecee2
comiss xmm2, dword [esp + 0xb8]
jbe 0x4ecda0
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 0x4edd3e
mov dword [esi], 0x77f5ec
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
pop edi
pop esi
mov esp, ebp
pop ebp
ret 0x14
movaps xmm7, xmm1
mov edx, 1
mulss xmm7, xmm5
xorps xmm7, xmmword [0x719730]
jmp 0x4ece22
mov eax, dword [edi + 0x14]
lea ecx, [eax - 2]
cmp edx, ecx
jle 0x4ecee2
movss xmm0, dword [esp + 0xb8]
dec eax
movd xmm6, eax
cvtdq2ps xmm6, xmm6
comiss xmm0, xmm6
jbe 0x4ece15
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 0x4edd3e
mov dword [esi], 0x77f5ec
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
pop edi
pop esi
mov esp, ebp
pop ebp
ret 0x14
movaps xmm7, xmm5
mov edx, ecx
subss xmm7, xmm6
mulss xmm7, xmm1
movaps xmm5, xmmword [0x727d50]
movaps xmm6, xmm1
movaps xmm0, xmmword [esp + 0xb0]
addss xmm6, xmm7
movaps xmm1, xmm7
mov dword [esp + 0x60], edx
shufps xmm1, xmm1, 0
subps xmm5, xmm1
mulps xmm0, xmm1
movss dword [esp + 0x94], xmm6
mulps xmm5, xmmword [esp + 0xc0]
addps xmm5, xmm0
movss xmm0, dword [esp + 0xa0]
mulss xmm0, xmm7
movaps xmmword [esp + 0xf0], xmm5
movss dword [esp + 8], xmm0
fld dword [esp + 8]
fistp dword [esp + 0x14]
mov eax, dword [esp + 0x64]
imul eax, dword [esp + 0x14]
mov esi, dword [esp + 0x3c]
add esi, 0xfffffffe
add esi, eax
movd xmm0, esi
cvtdq2ps xmm0, xmm0
comiss xmm5, xmm0
jb 0x4ecead
nop
inc esi
movd xmm0, esi
cvtdq2ps xmm0, xmm0
comiss xmm5, xmm0
jae 0x4ecea0
mov eax, dword [esp + 0x64]
movss xmm7, dword [esp + 0x20]
sar eax, 1
add esi, eax
ucomiss xmm7, xmm2
mov dword [esp + 0x58], esi
lahf
test ah, 0x44
jnp 0x4ecee2
movd xmm4, esi
cvtdq2ps xmm4, xmm4
subss xmm4, xmm3
mulss xmm4, dword [esp + 0x70]
movss dword [esp + 0x8c], xmm4
mov ecx, dword [edi + 0x10]
cmp esi, ecx
jb 0x4ecf25
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 0x4edd3e
mov dword [esi], 0x77f5ec
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
pop edi
pop esi
mov esp, ebp
pop ebp
ret 0x14
mov eax, esi
sub eax, dword [esp + 0x64]
cmp eax, ecx
jb 0x4ecf6b
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 0x4edd3e
mov dword [esi], 0x77f5ec
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
pop edi
pop esi
mov esp, ebp
pop ebp
ret 0x14
mov eax, dword [esp + 0x6c]
xor eax, dword [esp + 0x64]
movss xmm3, dword [esp + 0x1c]
setge al
cmp byte [esp + 0x13], 0
setne cl
xor al, cl
ucomiss xmm3, xmm2
mov byte [esp + 0x1b], al
lahf
test ah, 0x44
jp 0x4ecf99
xor al, al
mov byte [esp + 0x1b], al
cmp byte [esp + 0x13], 0
mov dword [esp + 0x70], 2
jne 0x4ecfac
add esi, edx
jmp 0x4ecfae
sub esi, edx
movss xmm1, dword [esp + 0xf4]
mov ecx, dword [esp + 0x68]
movd xmm0, esi
mov dword [esp + 0x5c], esi
cvtdq2ps xmm0, xmm0
subss xmm1, xmm0
test al, al
je 0x4ed018
andps xmm1, xmmword [0x719120]
comiss xmm1, dword [0x718824]
jbe 0x4ed010
sub esi, ecx
mov dword [esp + 0x5c], esi
mov edx, 2
ucomiss xmm3, xmm2
lahf
test ah, 0x44
jnp 0x4ed036
movd xmm1, esi
cvtdq2ps xmm1, xmm1
movd xmm0, ecx
subss xmm1, dword [esp + 0x4c]
cvtdq2ps xmm0, xmm0
mulss xmm1, xmm3
mulss xmm1, xmm0
jmp 0x4ed03e
xor edx, edx
mov dword [esp + 0x70], edx
jmp 0x4ecfe9
movd xmm0, ecx
cvtdq2ps xmm0, xmm0
mulss xmm0, xmm1
comiss xmm0, xmm2
jbe 0x4ecfe4
xor edx, edx
add esi, ecx
mov dword [esp + 0x70], edx
mov dword [esp + 0x5c], esi
jmp 0x4ecfe9
movss xmm1, dword [0x77fe14]
movss xmm5, dword [0x77fafc]
ucomiss xmm7, xmm2
movss dword [esp + 0x90], xmm1
lahf
test ah, 0x44
jp 0x4ed05d
movaps xmm4, xmm5
jmp 0x4ed061
subss xmm4, xmm7
ucomiss xmm3, xmm2
lahf
test ah, 0x44
jp 0x4ed06f
movaps xmm1, xmm5
jmp 0x4ed073
subss xmm1, xmm3
movss xmm0, dword [esp + 0x40]
ucomiss xmm0, xmm2
lahf
test ah, 0x44
jnp 0x4ed089
movaps xmm5, xmm6
subss xmm5, xmm0
test al, al
je 0x4ed0a7
test edx, edx
jne 0x4ed098
mov edx, 1
jmp 0x4ed0e0
xor ecx, ecx
mov edx, 2
comiss xmm4, xmm5
cmova edx, ecx
jmp 0x4ed0e0
movss xmm0, dword [esp + 0x9c]
comiss xmm0, dword [esp + 0xa0]
jbe 0x4ed0cf
test edx, edx
je 0x4ed0c5
mov edx, 2
jmp 0x4ed0e0
xor edx, edx
comiss xmm4, xmm1
setbe dl
jmp 0x4ed0e0
test edx, edx
je 0x4ed0d7
xor edx, edx
jmp 0x4ed0e0
xor edx, edx
comiss xmm1, xmm5
setbe dl
inc edx
movss xmm0, dword [esp + edx*4 + 0x8c]
subss xmm0, dword [esp + edx*4 + 0xe0]
mov ecx, dword [esp + edx*4 + 0x64]
sub dword [esp + edx*4 + 0x58], ecx
movss xmm1, dword [0x717e40]
mov ecx, dword [esp + 0x58]
mov dword [esp + 0xc], edx
movss dword [esp + edx*4 + 0x8c], xmm0
movss dword [esp + 0x4c], xmm2
movss dword [esp + 0x40], xmm1
cmp ecx, dword [edi + 0x10]
jae 0x4ed7c2
nop dword [eax + eax]
mov esi, dword [esp + 0x60]
mov dword [esp + 0x20], esi
cmp esi, dword [edi + 0x14]
jae 0x4ed7c2
mov ecx, dword [ebp + 0x18]
comiss xmm1, dword [ecx + 4]
mov ecx, dword [esp + 0x58]
ja 0x4ed83a
movss xmm0, dword [esp + edx*4 + 0x8c]
movaps xmm2, xmmword [0x727d50]
movaps xmm1, xmm0
mov edi, dword [esp + 0x64]
shufps xmm1, xmm1, 0
subps xmm2, xmm1
movss dword [esp + 0x1c], xmm0
movaps xmm0, xmmword [esp + 0xb0]
mulps xmm0, xmm1
mov dword [esp + 0x3c], ecx
sub dword [esp + 0x3c], edi
mulps xmm2, xmmword [esp + 0xc0]
mov edi, dword [esp + 0x48]
mov dword [esp + 0x50], esi
addps xmm2, xmm0
movaps xmmword [esp + 0xf0], xmm2
movaps xmmword [esp + 0xd0], xmm2
test edx, edx
jne 0x4ed20f
mov edx, dword [edi]
mov eax, esi
sub eax, dword [esp + 0x6c]
push eax
push ecx
mov eax, dword [edx + 0x34]
mov ecx, edi
call eax
mov eax, dword [edi]
mov ecx, edi
push esi
push dword [esp + 0x5c]
fstp dword [esp + 0x10]
mov eax, dword [eax + 0x34]
call eax
movss xmm3, dword [esp + 0xd8]
movd xmm0, esi
cvtdq2ps xmm0, xmm0
fstp dword [esp + 0x14]
movss xmm1, dword [esp + 0x14]
subss xmm3, xmm0
movss xmm0, dword [esp + 8]
subss xmm0, xmm1
andps xmm3, xmmword [0x719120]
mulss xmm3, xmm0
addss xmm3, xmm1
jmp 0x4ed2f1
cmp edx, 2
jne 0x4ed273
mov eax, dword [edi]
mov ecx, edi
push esi
push dword [esp + 0x40]
mov eax, dword [eax + 0x34]
call eax
mov eax, dword [edi]
mov ecx, edi
push esi
push dword [esp + 0x5c]
fstp dword [esp + 0x10]
mov eax, dword [eax + 0x34]
call eax
mov edx, dword [esp + 0x58]
movaps xmm3, xmmword [esp + 0xf0]
fstp dword [esp + 0x14]
movss xmm1, dword [esp + 0x14]
movd xmm0, edx
cvtdq2ps xmm0, xmm0
subss xmm3, xmm0
movss xmm0, dword [esp + 8]
subss xmm0, xmm1
andps xmm3, xmmword [0x719120]
mulss xmm3, xmm0
addss xmm3, xmm1
jmp 0x4ed2f5
movd xmm0, ecx
test al, al
cvtdq2ps xmm0, xmm0
mov dword [esp + 0x14], esi
mov eax, esi
subss xmm2, xmm0
andps xmm2, xmmword [0x719120]
movaps xmmword [esp + 0xf0], xmm2
je 0x4ed2a1
sub eax, dword [esp + 0x6c]
mov dword [esp + 0x14], eax
jmp 0x4ed2a9
sub eax, dword [esp + 0x6c]
mov dword [esp + 0x50], eax
mov eax, dword [edi]
mov ecx, edi
push dword [esp + 0x50]
push dword [esp + 0x40]
mov eax, dword [eax + 0x34]
call eax
mov eax, dword [edi]
mov ecx, edi
push dword [esp + 0x14]
fstp dword [esp + 0xc]
push dword [esp + 0x5c]
mov eax, dword [eax + 0x34]
call eax
movss xmm1, dword [esp + 8]
fstp dword [esp + 0x14]
subss xmm1, dword [esp + 0x14]
mulss xmm1, dword [esp + 0xf0]
addss xmm1, dword [esp + 0x14]
movaps xmm3, xmm1
mov edx, dword [esp + 0x58]
mov al, byte [ebp + 0x10]
movss xmm4, dword [esp + 0xdc]
mov esi, dword [esp + 0xc]
test al, al
je 0x4ed370
comiss xmm4, xmm3
jae 0x4ed6eb
movss xmm6, dword [esp + esi*4 + 0x8c]
movaps xmm2, xmm4
movss xmm5, dword [esp + 0x40]
subss xmm2, xmm3
movss xmm7, dword [esp + 0x4c]
movaps xmm1, xmm6
subss xmm7, dword [esp + 0x98]
subss xmm1, xmm5
movaps xmm0, xmm7
mulss xmm1, dword [ebp + 0x14]
subss xmm0, xmm1
comiss xmm2, xmm0
jae 0x4ed6f1
xorps xmm2, xmm2
comiss xmm2, xmm7
jb 0x4ed3a2
comiss xmm2, xmm5
jbe 0x4ed368
movaps xmm1, xmm2
jmp 0x4ed433
movaps xmm1, xmm5
jmp 0x4ed433
comiss xmm4, xmm3
jae 0x4ed6eb
movss xmm0, dword [esp + 0x4c]
movss xmm1, dword [esp + 0x98]
comiss xmm1, xmm0
movss xmm6, dword [esp + 0x1c]
ja 0x4ed6f1
movss xmm5, dword [esp + 0x40]
xorps xmm2, xmm2
jmp 0x4ed3a8
movss xmm0, dword [esp + 0x4c]
comiss xmm5, xmm2
movaps xmm7, xmm4
subss xmm7, xmm3
jb 0x4ed3dc
movaps xmm1, xmm0
subss xmm1, dword [esp + 0x98]
movaps xmm0, xmm1
subss xmm0, xmm7
divss xmm1, xmm0
movaps xmm0, xmm6
subss xmm0, xmm5
mulss xmm1, xmm0
addss xmm1, xmm5
jmp 0x4ed433
movaps xmm0, xmm6
movaps xmm1, xmm6
subss xmm0, xmm5
divss xmm1, xmm0
movss xmm0, dword [0x718824]
subss xmm0, xmm1
mulss xmm1, dword [esp + 0x98]
mulss xmm0, xmm3
addss xmm0, xmm1
movss xmm1, dword [esp + 0x150]
subss xmm1, xmm0
comiss xmm2, xmm1
jbe 0x4ed424
test al, al
je 0x4ed6f1
movaps xmm1, xmm2
movaps xmm0, xmm1
subss xmm0, xmm7
divss xmm1, xmm0
mulss xmm1, xmm6
movss dword [esp + 0x50], xmm1
mov eax, dword [ebp + 0x18]
movss dword [esp + 0x98], xmm3
movss dword [esp + 0x4c], xmm4
movss dword [esp + 0x40], xmm6
comiss xmm1, dword [eax + 4]
ja 0x4ed7fe
mov ecx, dword [esp + 0x20]
sub ecx, dword [esp + 0x6c]
cmp byte [esp + 0x1b], 0
mov eax, dword [edi]
mov dword [esp + 0xc], ecx
push ecx
mov dword [esp + 0x114], 0x3f800000
mov ecx, edi
mov eax, dword [eax + 0x34]
mov dword [esp + 0x11c], 0xffffffff
mov dword [esp + 0x118], 0xffffffff
mov dword [esp + 0x144], 0
mov dword [esp + 0x124], 0xffffffff
mov dword [esp + 0x110], 0
mov dword [esp + 0x108], 0x3f800000
je 0x4ed546
push edx
call eax
mov eax, dword [edi]
mov ecx, edi
push dword [esp + 0x20]
fstp dword [esp + 0xc]
push dword [esp + 0x40]
mov eax, dword [eax + 0x34]
call eax
mov eax, dword [edi]
mov ecx, edi
fstp dword [esp + 0x14]
mov eax, dword [eax + 0x34]
cmp esi, 1
jne 0x4ed511
push dword [esp + 0xc]
push dword [esp + 0x40]
call eax
fstp dword [esp + 0x3c]
movss xmm1, dword [esp + 0x3c]
movaps xmm2, xmm1
subss xmm2, dword [esp + 8]
jmp 0x4ed5c9
push dword [esp + 0x20]
push dword [esp + 0x5c]
call eax
movss xmm2, dword [esp + 0x14]
fstp dword [esp + 0x3c]
subss xmm2, dword [esp + 0x3c]
movss xmm1, dword [esp + 8]
xor ecx, ecx
mov edx, dword [esp + 0x20]
subss xmm1, dword [esp + 0x3c]
cmp edx, dword [esp + 0xc]
jmp 0x4ed5d9
push dword [esp + 0x40]
call eax
mov eax, dword [edi]
mov ecx, edi
push dword [esp + 0x20]
fstp dword [esp + 0xc]
push dword [esp + 0x5c]
mov eax, dword [eax + 0x34]
call eax
fstp dword [esp + 0x14]
test esi, esi
je 0x4ed5a4
cmp esi, 1
jne 0x4ed581
movss xmm0, dword [esp + 0x9c]
comiss xmm0, dword [esp + 0xa0]
ja 0x4ed5a4
mov eax, dword [edi]
mov ecx, edi
push dword [esp + 0x20]
push dword [esp + 0x40]
mov eax, dword [eax + 0x34]
call eax
fstp dword [esp + 0x3c]
movss xmm2, dword [esp + 0x3c]
subss xmm2, dword [esp + 0x14]
jmp 0x4ed52b
mov eax, dword [edi]
mov ecx, edi
push dword [esp + 0xc]
push dword [esp + 0x5c]
mov eax, dword [eax + 0x34]
call eax
movss xmm2, dword [esp + 8]
fstp dword [esp + 0x3c]
movss xmm1, dword [esp + 0x3c]
subss xmm2, xmm1
mov edx, dword [esp + 0x20]
xor ecx, ecx
cmp dword [esp + 0xc], edx
subss xmm1, dword [esp + 0x14]
movd xmm0, dword [esp + 0x64]
setg cl
cvtdq2ps xmm0, xmm0
xor eax, eax
cmp byte [esp + 0x13], al
setne al
xor ecx, eax
xorps xmm6, xmm6
mov eax, dword [esp + 0x6c]
mulss xmm0, xmm2
movss dword [esp + 0x100], xmm0
movd xmm0, eax
cvtdq2ps xmm0, xmm0
sar eax, 1
sub edx, eax
mov eax, dword [esp + 0x64]
shl edx, 0xf
sar eax, 1
sub edx, eax
mulss xmm0, xmm1
add edx, 0xffff7fff
add edx, dword [esp + 0x58]
movss dword [esp + 0x108], xmm0
movaps xmm5, xmmword [esp + 0x100]
lea eax, [ecx + edx*2]
mulps xmm5, xmmword [edi + 0x30]
lea edx, [esp + 0x100]
mov ecx, dword [ebp + 0x18]
mov dword [esp + 0x114], eax
push edx
push dword [ebp + 0xc]
movaps xmm4, xmm5
mov eax, dword [ecx]
mulps xmm4, xmm5
movaps xmm0, xmm4
shufps xmm0, xmm4, 0x55
addss xmm0, xmm4
shufps xmm4, xmm4, 0xaa
addss xmm4, xmm0
movaps xmm0, xmm6
shufps xmm4, xmm4, 0
movaps xmm2, xmm4
movaps xmm3, xmm4
rsqrtss xmm2, xmm2
cmpeqss xmm3, xmm0
mulss xmm4, xmm2
movss xmm0, dword [0x719764]
movaps xmm1, xmm0
mulss xmm4, xmm2
subss xmm1, xmm4
movss xmm4, dword [0x719760]
movaps xmm0, xmm4
mulss xmm0, xmm2
mulss xmm0, xmm1
andnps xmm3, xmm0
movss xmm0, dword [esp + 0x58]
shufps xmm3, xmm3, 0
mulps xmm3, xmm5
movss dword [esp + 0x118], xmm0
movaps xmmword [esp + 0x108], xmm3
call dword [eax]
cmp byte [ebp + 0x10], 0
movss xmm1, dword [esp + 0x40]
movss xmm6, dword [esp + 0x1c]
je 0x4ed709
mov byte [ebp + 0x10], 0
jmp 0x4ed709
movss xmm6, dword [esp + 0x1c]
movaps xmm1, xmm6
movss dword [esp + 0x98], xmm3
movss dword [esp + 0x4c], xmm4
movss dword [esp + 0x40], xmm1
movss xmm0, dword [esp + esi*4 + 0xe0]
mov eax, dword [esp + esi*4 + 0x64]
addss xmm0, xmm6
mov ecx, dword [esp + 0x70]
add dword [esp + esi*4 + 0x58], eax
xor ecx, 2
mov al, byte [esp + 0x1b]
mov dword [esp + 0x70], ecx
movss dword [esp + esi*4 + 0x8c], xmm0
test al, al
je 0x4ed760
test ecx, ecx
jne 0x4ed743
lea edx, [ecx + 1]
jmp 0x4ed7b1
movss xmm0, dword [esp + 0x94]
xor ecx, ecx
comiss xmm0, dword [esp + 0x8c]
mov edx, 2
cmova edx, ecx
jmp 0x4ed7b1
movss xmm0, dword [esp + 0x9c]
comiss xmm0, dword [esp + 0xa0]
jbe 0x4ed796
test ecx, ecx
je 0x4ed77e
mov edx, 2
jmp 0x4ed7b1
movss xmm0, dword [esp + 0x90]
xor edx, edx
comiss xmm0, dword [esp + 0x8c]
setbe dl
jmp 0x4ed7b1
xor edx, edx
test ecx, ecx
jne 0x4ed7b1
movss xmm0, dword [esp + 0x94]
comiss xmm0, dword [esp + 0x90]
setbe dl
inc edx
mov ecx, dword [esp + 0x58]
mov dword [esp + 0xc], edx
cmp ecx, dword [edi + 0x10]
jb 0x4ed130
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 0x4edd3e
mov dword [esi], 0x77f5ec
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
pop edi
pop esi
mov esp, ebp
pop ebp
ret 0x14
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 0x4edd3e
mov dword [esi], 0x77f5ec
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
pop edi
pop esi
mov esp, ebp
pop ebp
ret 0x14
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 0x4edd3e
mov dword [esi], 0x77f5ec
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
pop edi
pop esi
mov esp, ebp
pop ebp
ret 0x14
mov eax, dword [edi + 0x10]
dec eax
cmp esi, eax
jae 0x4edd0e
mov eax, dword [edi + 0x14]
dec eax
cmp edx, eax
jae 0x4edd0e
mov eax, dword [edi]
lea ecx, [esp + 0x1b]
movd xmm0, esi
cvtdq2ps xmm0, xmm0
push ecx
mov ecx, edi
mov dword [esp + 0x114], 0x3f800000
mov dword [esp + 0x11c], 0xffffffff
mov dword [esp + 0x118], 0xffffffff
mov dword [esp + 0x144], 0
subss xmm3, xmm0
mov dword [esp + 0x124], 0xffffffff
movd xmm0, edx
cvtdq2ps xmm0, xmm0
movss dword [esp + 0x44], xmm3
subss xmm5, xmm0
movaps xmm0, xmmword [0x719da0]
movaps xmmword [esp + 0x104], xmm0
movss dword [esp + 0x20], xmm5
call dword [eax + 0x38]
cmp byte [esp + 0x1b], 0
mov eax, dword [edi]
push dword [esp + 0xc]
mov eax, dword [eax + 0x34]
je 0x4eda0a
push esi
mov ecx, edi
call eax
mov ecx, dword [esp + 0xc]
lea edx, [esi + 1]
mov eax, dword [edi]
inc ecx
push ecx
mov dword [esp + 0x4c], ecx
mov ecx, edi
fstp dword [esp + 0x18]
mov eax, dword [eax + 0x34]
push edx
call eax
mov eax, dword [edi]
movss xmm0, dword [esp + 0x40]
comiss xmm0, dword [esp + 0x1c]
mov eax, dword [eax + 0x34]
fstp dword [esp + 8]
jbe 0x4ed9b0
push dword [esp + 0xc]
lea ecx, [esi + 1]
push ecx
mov ecx, edi
call eax
movss xmm2, dword [esp + 8]
mov edx, 1
fstp dword [esp + 0x48]
subss xmm2, dword [esp + 0x48]
movss xmm3, dword [esp + 0x48]
subss xmm3, dword [esp + 0x14]
movaps xmm4, xmm2
xorps xmm2, xmmword [0x719730]
mulss xmm4, dword [esp + 0x1c]
movaps xmm0, xmm3
movss dword [esp + 0x108], xmm2
xorps xmm3, xmmword [0x719730]
addss xmm4, dword [esp + 0x14]
movss dword [esp + 0x100], xmm3
jmp 0x4edb0e
push dword [esp + 0x48]
mov ecx, edi
push esi
call eax
movss xmm1, dword [esp + 8]
fstp dword [esp + 0x48]
movss xmm2, dword [esp + 0x48]
subss xmm1, xmm2
subss xmm2, dword [esp + 0x14]
movaps xmm0, xmm1
xorps xmm1, xmmword [0x719730]
movaps xmm4, xmm2
movss dword [esp + 0x100], xmm1
mulss xmm4, dword [esp + 0x1c]
xorps xmm2, xmmword [0x719730]
movss dword [esp + 0x108], xmm2
addss xmm4, dword [esp + 0x14]
jmp 0x4edb0c
lea ecx, [esi + 1]
push ecx
mov ecx, edi
call eax
mov ecx, dword [esp + 0xc]
mov eax, dword [edi]
inc ecx
push ecx
mov dword [esp + 0x4c], ecx
mov ecx, edi
fstp dword [esp + 0xc]
mov eax, dword [eax + 0x34]
push esi
call eax
movss xmm0, dword [esp + 0x40]
addss xmm0, dword [esp + 0x1c]
mov eax, dword [edi]
fstp dword [esp + 0x14]
comiss xmm0, dword [0x718824]
mov eax, dword [eax + 0x34]
jbe 0x4edab5
push dword [esp + 0x48]
lea ecx, [esi + 1]
push ecx
mov ecx, edi
call eax
movss xmm0, dword [esp + 0x40]
mov edx, 1
subss xmm0, dword [0x718824]
fstp dword [esp + 0x48]
movss xmm2, dword [esp + 0x48]
movaps xmm1, xmm2
subss xmm2, dword [esp + 8]
subss xmm1, dword [esp + 0x14]
movaps xmm4, xmm2
xorps xmm2, xmmword [0x719730]
mulss xmm4, dword [esp + 0x1c]
mulss xmm0, xmm1
xorps xmm1, xmmword [0x719730]
addss xmm4, dword [esp + 8]
movss dword [esp + 0x100], xmm1
movss dword [esp + 0x108], xmm2
jmp 0x4edb14
push dword [esp + 0xc]
mov ecx, edi
push esi
call eax
movss xmm1, dword [esp + 0x14]
movss xmm2, dword [esp + 8]
fstp dword [esp + 0x48]
movss xmm0, dword [esp + 0x48]
subss xmm1, xmm0
subss xmm2, xmm0
movaps xmm4, xmm1
xorps xmm1, xmmword [0x719730]
mulss xmm4, dword [esp + 0x1c]
movss dword [esp + 0x108], xmm1
addss xmm4, xmm0
movaps xmm0, xmm2
xorps xmm2, xmmword [0x719730]
movss dword [esp + 0x100], xmm2
xor edx, edx
mulss xmm0, dword [esp + 0x40]
movaps xmm7, xmmword [esp + 0x150]
addss xmm4, xmm0
movaps xmm1, xmmword [esp + 0xd0]
subss xmm7, xmm4
subss xmm1, xmm4
comiss xmm1, xmm7
jbe 0x4edb71
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 0x4edd3e
mov dword [esi], 0x77f5ec
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
pop edi
pop esi
mov esp, ebp
pop ebp
ret 0x14
cmp byte [ebp + 0x10], 0
xorps xmm6, xmm6
je 0x4edbca
comiss xmm6, xmm7
jbe 0x4edbd3
subss xmm7, dword [ebp + 0x14]
comiss xmm1, xmm7
jbe 0x4edbc5
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 0x4edd3e
mov dword [esi], 0x77f5ec
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
pop edi
pop esi
mov esp, ebp
pop ebp
ret 0x14
movaps xmm7, xmm6
jmp 0x4edbe7
comiss xmm6, xmm7
ja 0x4edcd6
comiss xmm1, xmm6
jae 0x4edcd6
movaps xmm0, xmm7
subss xmm0, xmm1
divss xmm7, xmm0
mov ecx, dword [ebp + 0x18]
movss xmm0, dword [ecx + 4]
comiss xmm0, xmm7
jbe 0x4edc9a
movaps xmm5, xmmword [esp + 0x100]
mulps xmm5, xmmword [edi + 0x30]
mov eax, dword [esp + 0xc]
shl eax, 0xf
add eax, esi
movss dword [esp + 0x110], xmm7
movaps xmm1, xmm5
mulps xmm1, xmm5
lea eax, [edx + eax*2]
lea edx, [esp + 0x100]
mov dword [esp + 0x114], eax
mov eax, dword [ecx]
push edx
movaps xmm0, xmm1
shufps xmm0, xmm1, 0x55
addss xmm0, xmm1
shufps xmm1, xmm1, 0xaa
push dword [ebp + 0xc]
addss xmm1, xmm0
movaps xmm0, xmm6
shufps xmm1, xmm1, 0
movaps xmm3, xmm1
movaps xmm4, xmm1
rsqrtss xmm3, xmm3
mulss xmm1, xmm3
cmpeqss xmm4, xmm0
movss xmm0, dword [0x719764]
movaps xmm2, xmm0
movss xmm0, dword [0x719760]
mulss xmm1, xmm3
subss xmm2, xmm1
movaps xmm1, xmm0
mulss xmm1, xmm3
mulss xmm1, xmm2
andnps xmm4, xmm1
shufps xmm4, xmm4, 0
mulps xmm4, xmm5
movaps xmmword [esp + 0x108], xmm4
call dword [eax]
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 0x4edd3e
mov dword [esi], 0x77f5ec
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
pop edi
pop esi
mov esp, ebp
pop ebp
ret 0x14
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 0x4edd3e
mov dword [esi], 0x77f5ec
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
pop edi
pop esi
mov esp, ebp
pop ebp
ret 0x14
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 0x4edd3e
mov dword [esi], 0x77f5ec
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
pop edi
pop esi
mov esp, ebp
pop ebp
ret 0x14