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

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff0
sub esp, 0x138
push esi
push edi
push dword [0x884c50]
mov esi, ecx
mov dword [esp + 0x2c], esi
call dword [sym.imp.KERNEL32.dll_TlsGetValue]
mov dword [esp + 0x18], eax
mov edi, dword [eax + 4]
cmp edi, dword [eax + 0xc]
jae 0x5ade89
mov dword [edi], str.TtHandIkModifier
rdtsc
mov dword [esp + 0x1c], eax
mov ecx, dword [esp + 0x1c]
lea eax, [edi + 0xc]
mov dword [edi + 4], ecx
mov ecx, dword [esp + 0x18]
mov dword [ecx + 4], eax
mov eax, dword [ebp + 0xc]
mov eax, dword [eax]
cmp dword [eax + 4], 2
jle 0x5ae708
movsx eax, word [eax + 0x32]
mov dword [esp + 0x30], eax
test eax, eax
je 0x5ae708
mov eax, dword [ebp + 8]
movaps xmm0, xmmword [0x717f30]
mov eax, dword [eax]
mov eax, dword [eax + 0x2c]
mov eax, dword [eax + 0x14]
movups xmmword [esp + 0x38], xmm0
mov dword [esp + 0x34], eax
movaps xmm0, xmmword [0x71ac40]
movups xmmword [esp + 0x48], xmm0
mov dword [esp + 0x58], connect
mov word [esp + 0x5c], 0
mov dword [esp + 0x60], 0
mov dword [esp + 0x64], 0
mov dword [esp + 0x68], connect
mov edi, dword [eax + 0x1c]
mov dword [esp + 0x18], eax
lea ecx, [edi + 3]
and ecx, 0xfffffffc
mov dword [esp + 0x14], ecx
jle 0x5adf22
push 0x30
push ecx
lea eax, [esp + 0x4c]
push eax
push 0x7d8954
call fcn.00467b80
mov ecx, dword [esp + 0x24]
add esp, 0x10
mov eax, dword [esp + 0x40]
and eax, 0x3fffffff
cmp eax, ecx
jge 0x5adf48
push 0x30
push ecx
lea eax, [esp + 0x40]
push eax
push 0x7d8954
call fcn.00467b80
mov ecx, dword [esp + 0x24]
add esp, 0x10
mov eax, dword [esp + 0x58]
and eax, 0x3fffffff
cmp eax, ecx
jge 0x5adf6a
push 4
push ecx
lea eax, [esp + 0x58]
push eax
push 0x7d8954
call fcn.00467b80
add esp, 0x10
mov ecx, dword [esp + 0x4c]
and ecx, 0x3fffffff
cmp ecx, edi
jge 0x5adf96
add ecx, ecx
mov eax, edi
cmp edi, ecx
push 0x30
cmovl eax, ecx
push eax
lea eax, [esp + 0x4c]
push eax
push 0x7d8954
call fcn.00467b80
add esp, 0x10
mov ecx, dword [esp + 0x40]
and ecx, 0x3fffffff
mov dword [esp + 0x48], edi
cmp ecx, edi
jge 0x5adfc6
add ecx, ecx
mov eax, edi
cmp edi, ecx
push 0x30
cmovl eax, ecx
push eax
lea eax, [esp + 0x40]
push eax
push 0x7d8954
call fcn.00467b80
add esp, 0x10
mov ecx, dword [esp + 0x58]
and ecx, 0x3fffffff
mov dword [esp + 0x3c], edi
cmp ecx, edi
jge 0x5adff6
add ecx, ecx
mov eax, edi
cmp edi, ecx
push 4
cmovl eax, ecx
push eax
lea eax, [esp + 0x58]
push eax
push 0x7d8954
call fcn.00467b80
add esp, 0x10
mov eax, dword [esp + 0x34]
mov dword [esp + 0x54], edi
mov edi, dword [eax + 0x40]
mov eax, dword [esp + 0x68]
and eax, 0x3fffffff
mov dword [esp + 0x1c], edi
lea ecx, [edi + 3]
and ecx, 0xfffffffc
cmp eax, ecx
jge 0x5ae02d
push 4
push ecx
lea eax, [esp + 0x68]
push eax
push 0x7d8954
call fcn.00467b80
add esp, 0x10
mov ecx, dword [esp + 0x68]
and ecx, 0x3fffffff
cmp ecx, edi
jge 0x5ae059
add ecx, ecx
mov eax, edi
cmp edi, ecx
push 4
cmovl eax, ecx
push eax
lea eax, [esp + 0x68]
push eax
push 0x7d8954
call fcn.00467b80
add esp, 0x10
mov edx, dword [esp + 0x64]
mov ecx, edi
mov eax, dword [esp + 0x60]
sub ecx, edx
lea edx, [eax + edx*4]
test ecx, ecx
jle 0x5ae076
xor eax, eax
mov edi, edx
rep stosd dword es:[edi], eax
mov edi, dword [esp + 0x1c]
lea ecx, [esp + 0x34]
mov dword [esp + 0x64], edi
call fcn.00580a40
mov edi, dword [ebp + 0xc]
push dword [eax]
push dword [esp + 0x1c]
push edi
call fcn.005df320
add esp, 0xc
mov dword [esp + 0x20], 0
cmp dword [esi + 0x30], 0
jle 0x5ae6a2
xor edi, edi
mov dword [esp + 0x24], 0xd0
mov dword [esp + 0x2c], edi
xorps xmm1, xmm1
mov dword [esp + 0x14], edi
nop dword [eax]
mov eax, dword [esi + 0x2c]
movsx edx, word [edi + eax + 0x50]
movsx ecx, word [edi + eax + 0x4c]
movsx eax, word [edi + eax + 0x48]
mov dword [esp + 0x1c], ecx
mov dword [esp + 0x18], eax
test edx, edx
js 0x5ae67c
test ecx, ecx
js 0x5ae67c
test eax, eax
js 0x5ae67c
cmp edx, dword [esp + 0x30]
jge 0x5ae67c
mov edx, dword [esp + 0x30]
cmp ecx, edx
jge 0x5ae67c
cmp eax, edx
jge 0x5ae67c
mov eax, dword [ebp + 0xc]
mov edi, dword [esi + 0x3c]
add edi, dword [esp + 0x14]
mov edx, dword [eax]
mov eax, dword [esp + 0x20]
add eax, 0xd
mov dword [esp + 0x10], edx
mov ecx, dword [edx + 4]
cmp ecx, eax
jle 0x5ae448
cmp eax, ecx
jge 0x5ae448
mov eax, dword [esp + 0x24]
movss xmm0, dword [edx + eax + 0x18]
comiss xmm0, xmm1
seta al
test al, al
je 0x5ae448
mov eax, dword [esp + 0x24]
movss xmm0, dword [edi + 0x60]
movsx ecx, word [edx + eax + 0x14]
add ecx, edx
comiss xmm0, dword [edx + eax + 0x18]
mov dword [esp + 0x6c], ecx
jbe 0x5ae187
mov dword [edi + 0x4c], 0
mov dword [edi + 0x54], 0
mov eax, dword [edx + eax + 0x18]
mov dword [edi + 0x60], eax
jmp 0x5ae456
mov eax, dword [ecx + 0x34]
mov dword [edi + 0x4c], eax
mov eax, dword [ecx + 0x38]
mov dword [edi + 0x54], eax
mov eax, dword [ecx + 0x3c]
mov dword [edi + 0x58], eax
mov eax, dword [ecx + 0x40]
mov dword [edi + 0x5c], eax
movaps xmm0, xmmword [ecx + 0x10]
movss xmm2, dword [ecx + 0xc]
comiss xmm2, xmm1
movaps xmmword [esp + 0xc0], xmm0
movaps xmm0, xmmword [0x719da0]
movaps xmmword [esp + 0xd0], xmm0
jbe 0x5ae36a
movss xmm0, dword [0x718824]
divss xmm0, xmm2
mov eax, dword [ebp + 0xc]
mov eax, dword [eax]
shufps xmm0, xmm0, 0
mulps xmm0, xmmword [ecx]
movsx ecx, word [eax + 0x14]
add ecx, eax
movaps xmmword [esp + 0x70], xmm0
movaps xmm4, xmmword [ecx + 0x10]
movaps xmm2, xmmword [ecx]
movaps xmm5, xmm4
movaps xmmword [esp + 0xb0], xmm0
movaps xmm3, xmm2
mulps xmm3, xmm4
movaps xmm7, xmm2
shufps xmm7, xmm2, 0xc9
movaps xmm1, xmm2
shufps xmm1, xmm2, 0xd2
shufps xmm5, xmm4, 0xff
movaps xmm0, xmm3
shufps xmm0, xmm3, 0x55
addss xmm0, xmm3
shufps xmm3, xmm3, 0xaa
addss xmm3, xmm0
movaps xmm0, xmm4
shufps xmm0, xmm4, 0xd2
mulps xmm7, xmm0
movaps xmm0, xmm4
shufps xmm0, xmm4, 0xc9
mulps xmm1, xmm0
shufps xmm3, xmm3, 0
mulps xmm3, xmm4
subps xmm7, xmm1
movaps xmm1, xmmword [ecx + 0x20]
movaps xmm0, xmm1
unpckhps xmm0, xmmword [0x719330]
shufps xmm1, xmm0, 0xc4
mulps xmm7, xmm5
mulps xmm5, xmm5
addps xmm5, xmmword [0x7195c0]
mulps xmm5, xmm2
rcpps xmm2, xmm1
addps xmm5, xmm3
movaps xmm0, xmm2
mulps xmm0, xmm1
movaps xmm1, xmmword [esp + 0x70]
addps xmm7, xmm5
movaps xmm5, xmmword [0x719d70]
xorps xmm5, xmmword [ecx + 0x10]
mulps xmm0, xmm2
movaps xmm3, xmm5
addps xmm2, xmm2
mulps xmm3, xmm1
addps xmm7, xmm7
movaps xmmword [esp + 0xf0], xmm5
movaps xmm4, xmm5
shufps xmm4, xmm5, 0xff
subps xmm2, xmm0
movaps xmm0, xmm3
shufps xmm0, xmm3, 0x55
xorps xmm7, xmmword [0x719130]
addss xmm0, xmm3
shufps xmm3, xmm3, 0xaa
movaps xmmword [esp + 0xe0], xmm7
andps xmm2, xmmword [0x719150]
movaps xmmword [esp + 0x100], xmm2
movaps xmm2, xmm5
addss xmm3, xmm0
shufps xmm2, xmm5, 0xc9
movaps xmm0, xmm1
shufps xmm0, xmm1, 0xd2
movaps xmm1, xmm5
mulps xmm2, xmm0
movaps xmm0, xmmword [esp + 0x70]
shufps xmm0, xmmword [esp + 0x70], 0xc9
shufps xmm1, xmm5, 0xd2
mulps xmm1, xmm0
subps xmm2, xmm1
mulps xmm2, xmm4
mulps xmm4, xmm4
addps xmm4, xmmword [0x7195c0]
shufps xmm3, xmm3, 0
lea eax, [esp + 0xc0]
mulps xmm3, xmm5
lea ecx, [esp + 0x120]
push eax
lea eax, [esp + 0xf4]
mulps xmm4, xmmword [esp + 0x74]
push eax
addps xmm4, xmm3
addps xmm2, xmm4
addps xmm2, xmm2
addps xmm2, xmm7
movaps xmmword [esp + 0x118], xmm2
call fcn.004782a0
movaps xmm0, xmmword [esp + 0x110]
mov ecx, dword [esp + 0x6c]
mov edx, dword [esp + 0x10]
movaps xmmword [edi], xmm0
movaps xmm0, xmmword [esp + 0x120]
movaps xmmword [edi + 0x10], xmm0
movaps xmm6, xmmword [ecx + 0x20]
movaps xmm2, xmm6
mulps xmm2, xmm6
movaps xmm0, xmm2
shufps xmm0, xmm2, 0x55
addss xmm0, xmm2
shufps xmm2, xmm2, 0xaa
addss xmm2, xmm0
movaps xmm0, xmmword [0x719550]
shufps xmm2, xmm2, 0
subps xmm0, xmm2
shufps xmm0, xmm0, 0
movmskps eax, xmm0
test al, 1
je 0x5ae3c4
movaps xmm1, xmmword [0x719710]
rsqrtps xmm0, xmm2
mulps xmm2, xmm0
mulps xmm2, xmm0
mulps xmm0, xmmword [0x719700]
subps xmm1, xmm2
mulps xmm1, xmm0
shufps xmm1, xmm1, 0
mulps xmm6, xmm1
mov eax, dword [ebp + 0xc]
movaps xmm3, xmm6
movaps xmm2, xmm6
movaps xmm1, xmm6
shufps xmm2, xmm6, 0xc9
shufps xmm1, xmm6, 0xd2
mov ecx, dword [eax]
movsx eax, word [ecx + 0x14]
movaps xmm4, xmmword [eax + ecx + 0x10]
mulps xmm3, xmm4
movaps xmm5, xmm4
mov eax, dword [esp + 0x24]
shufps xmm5, xmm4, 0xff
movaps xmm0, xmm3
shufps xmm0, xmm3, 0x55
addss xmm0, xmm3
shufps xmm3, xmm3, 0xaa
addss xmm3, xmm0
movaps xmm0, xmm4
shufps xmm0, xmm4, 0xd2
mulps xmm2, xmm0
movaps xmm0, xmm4
shufps xmm0, xmm4, 0xc9
mulps xmm1, xmm0
shufps xmm3, xmm3, 0
mulps xmm3, xmm4
subps xmm2, xmm1
mulps xmm2, xmm5
mulps xmm5, xmm5
addps xmm5, xmmword [0x7195c0]
mulps xmm5, xmm6
addps xmm5, xmm3
addps xmm2, xmm5
addps xmm2, xmm2
movaps xmmword [edi + 0x20], xmm2
mov eax, dword [edx + eax + 0x18]
mov dword [edi + 0x60], eax
jmp 0x5ae456
mov dword [edi + 0x4c], 0
mov dword [edi + 0x54], 0
mov eax, dword [esi + 0x2c]
mov ecx, dword [esp + 0x2c]
movaps xmm0, xmmword [0x7194c0]
movaps xmmword [esp + 0x70], xmm0
movaps xmmword [esp + 0x80], xmm0
movzx eax, word [ecx + eax + 0x4a]
test ax, ax
js 0x5ae4bf
lea ecx, [esp + 0x34]
movsx esi, ax
call fcn.0057fe50
lea esi, [esi + esi*2]
shl esi, 4
lea ecx, [esp + 0x34]
add esi, dword [eax]
call fcn.0057fe50
mov ecx, dword [esp + 0x18]
mov eax, dword [eax]
lea ecx, [ecx + ecx*2]
shl ecx, 4
add ecx, 0x10
add eax, ecx
lea ecx, [esp + 0x70]
push eax
lea eax, [esi + 0x10]
push eax
call fcn.004fd6e0
mov esi, dword [esp + 0x28]
mov ecx, dword [esp + 0x2c]
mov eax, dword [esi + 0x2c]
movzx eax, word [ecx + eax + 0x4e]
test ax, ax
js 0x5ae50f
lea ecx, [esp + 0x34]
movsx esi, ax
call fcn.0057fe50
lea esi, [esi + esi*2]
shl esi, 4
lea ecx, [esp + 0x34]
add esi, dword [eax]
call fcn.0057fe50
mov ecx, dword [esp + 0x1c]
mov eax, dword [eax]
lea ecx, [ecx + ecx*2]
shl ecx, 4
add ecx, 0x10
add eax, ecx
lea ecx, [esp + 0x80]
push eax
lea eax, [esi + 0x10]
push eax
call fcn.004fd6e0
mov esi, dword [esp + 0x28]
movss xmm1, dword [edi + 0x48]
xorps xmm0, xmm0
comiss xmm1, xmm0
jbe 0x5ae565
movsx eax, byte [esi + 0x38]
push ecx
movss dword [esp], xmm1
push eax
call fcn.005e0040
add esp, 8
lea eax, [esp + 0x34]
fstp dword [esp + 0x10]
movss xmm0, dword [esp + 0x10]
mov ecx, esi
push eax
lea eax, [edi + 0x10]
push eax
push edi
sub esp, 0xc
movss dword [esp + 8], xmm0
movss dword [esp + 4], xmm0
movss dword [esp], xmm0
push dword [esp + 0x38]
call fcn.005ae7b0
xorps xmm0, xmm0
movss xmm1, dword [edi + 0x50]
comiss xmm1, xmm0
jbe 0x5ae5b2
movsx eax, byte [esi + 0x38]
push ecx
movss dword [esp], xmm1
push eax
call fcn.005e0040
mov eax, dword [ebp + 0xc]
add esp, 8
fstp dword [esp + 0x10]
movss xmm0, dword [esp + 0x10]
mov ecx, dword [eax]
lea eax, [esp + 0x34]
push eax
movsx eax, word [ecx + 0x14]
add eax, ecx
push eax
lea eax, [edi + 0x20]
push eax
push ecx
movss dword [esp], xmm0
mov ecx, esi
push dword [esp + 0x30]
call fcn.005aef50
mov eax, dword [esi + 0x2c]
mov edi, dword [esp + 0x2c]
cmp word [edi + eax + 0x4a], 0
jl 0x5ae616
lea ecx, [esp + 0x34]
call fcn.0057fe50
lea ecx, [esp + 0x70]
push ecx
mov ecx, dword [esp + 0x1c]
mov eax, dword [eax]
lea ecx, [ecx + ecx*2]
shl ecx, 4
add ecx, 0x10
add eax, ecx
lea ecx, [esp + 0x94]
push eax
call fcn.00558c20
mov eax, dword [esi + 0x2c]
lea ecx, [esp + 0x34]
movsx esi, word [edi + eax + 0x4a]
call fcn.00580a20
movaps xmm0, xmmword [esp + 0x90]
lea ecx, [esi + esi*2]
mov esi, dword [esp + 0x28]
add ecx, ecx
mov eax, dword [eax]
movaps xmmword [eax + ecx*8 + 0x10], xmm0
mov eax, dword [esi + 0x2c]
cmp word [edi + eax + 0x4e], 0
jl 0x5ae679
lea ecx, [esp + 0x34]
call fcn.0057fe50
lea ecx, [esp + 0x80]
push ecx
mov ecx, dword [esp + 0x20]
mov eax, dword [eax]
lea ecx, [ecx + ecx*2]
shl ecx, 4
add ecx, 0x10
add eax, ecx
lea ecx, [esp + 0xa4]
push eax
call fcn.00558c20
mov eax, dword [esi + 0x2c]
lea ecx, [esp + 0x34]
movsx esi, word [edi + eax + 0x4e]
call fcn.00580a20
movaps xmm0, xmmword [esp + 0xa0]
lea ecx, [esi + esi*2]
mov esi, dword [esp + 0x28]
add ecx, ecx
mov eax, dword [eax]
movaps xmmword [eax + ecx*8 + 0x10], xmm0
xorps xmm1, xmm1
mov eax, dword [esp + 0x20]
add edi, 0x60
add dword [esp + 0x24], 0x10
inc eax
add dword [esp + 0x14], 0x70
mov dword [esp + 0x20], eax
mov dword [esp + 0x2c], edi
cmp eax, dword [esi + 0x30]
jl 0x5ae0c0
mov edi, dword [ebp + 0xc]
lea ecx, [esp + 0x34]
call fcn.0057fe50
mov ecx, dword [esp + 0x30]
mov esi, dword [edi]
lea edx, [ecx + ecx*2]
shl edx, 4
push edx
push dword [eax]
movsx eax, word [esi + 0x34]
add eax, esi
push eax
call fcn.0045d810
add esp, 0xc
mov ecx, edi
call fcn.005dd090
push dword [0x884c50]
call dword [sym.imp.KERNEL32.dll_TlsGetValue]
mov edi, eax
mov esi, dword [edi + 4]
cmp esi, dword [edi + 0xc]
jae 0x5ae6ff
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
lea ecx, [esp + 0x34]
call fcn.005ac3a0
pop edi
pop esi
mov esp, ebp
pop ebp
ret 8