Function at 0x478660
Capabilities:
Check for unmoving mouse cursor

Disassembly:
push ebp
mov ebp, esp
mov eax, dword fs:[0]
push 0xffffffffffffffff
push 0x4d97d8
push eax
mov dword fs:[0], esp
sub esp, 0x30
push edi
mov edi, ecx
mov ecx, dword [edi + 0x54]
test ecx, ecx
je 0x47915a
push ebx
push esi
push 0
push 0
call fcn.0047bbe0
mov ecx, dword [ebp + 0x18]
and eax, 0x4000
mov ebx, dword [ebp + 8]
mov esi, dword [ebp + 0x10]
mov dword [ebp - 0x10], eax
mov eax, dword [ebp + 0x14]
mov dword [edi + 0x38], ecx
lea ecx, [edi + 4]
push ebx
mov dword [edi + 0x40], 0
mov dword [edi + 0x34], 0
mov dword [ebp + 0x18], eax
call fcn.00440500
test eax, eax
je 0x4786d2
mov eax, dword [ebp + 0x18]
mov dword [edi + 0x20], esi
mov dword [edi + 0x24], eax
mov ecx, dword [0x517368]
cmp ecx, dword [edi + 0x58]
mov esi, dword [ebp + 0xc]
cmovne ecx, dword [edi + 0x58]
mov dword [0x517368], ecx
mov ecx, dword [esi]
test ecx, ecx
jne 0x4786f2
xor eax, eax
jmp 0x478704
mov eax, dword [ecx]
lea edx, [ebp + 0x18]
push edx
push 0x10000312
push ecx
call dword [eax + 0xc]
mov eax, dword [ebp + 0x18]
shr eax, 0x10
test al, 1
jne 0x47881c
mov ecx, dword [ebx]
test ecx, ecx
jne 0x478719
xor eax, eax
jmp 0x47872b
mov eax, dword [ecx]
lea edx, [ebp + 0x18]
push edx
push 0x10000312
push ecx
call dword [eax + 0xc]
mov eax, dword [ebp + 0x18]
shr eax, 0x10
test al, 1
je 0x47881c
cmp dword [edi + 0xf8], 0
je 0x47881c
mov dword [ebp - 0x2c], 0
mov dword [ebp - 0x28], 0
mov dword [ebp - 0x24], 0
mov ecx, dword [edi + 0x54]
mov eax, dword [edi + 0x50]
add eax, 0xbf4
mov dword [ebp - 4], 0
push eax
mov edx, dword [ecx]
call dword [edx + 0x2c]
test eax, eax
je 0x47877d
mov dword [ebp + 0x18], 0xd
jmp 0x4787ce
call dword [sym.imp.USER32.dll_GetForegroundWindow]
mov ecx, dword [edi + 0x54]
push eax
call fcn.00475540
mov dword [ebp + 0x18], eax
test eax, eax
je 0x4787da
lea eax, [ebp - 0x20]
push eax
call dword [sym.imp.USER32.dll_GetCursorPos]
mov ecx, dword [edi + 0x54]
lea eax, [ebp - 0x3c]
push eax
push dword [ebp + 0x18]
call fcn.00475110
push dword [ebp - 0x1c]
lea eax, [ebp - 0x3c]
push dword [ebp - 0x20]
push eax
call dword [sym.imp.USER32.dll_PtInRect]
mov dword [ebp + 0x18], 0xd
test eax, eax
jne 0x4787ce
mov dword [ebp + 0x18], 0x1b
lea eax, [ebp + 0x18]
push eax
lea ecx, [ebp - 0x2c]
call fcn.0047ac90
mov ecx, dword [edi + 0x54]
lea eax, [ebp - 0x2c]
push eax
call fcn.00479c90
mov ecx, dword [edi + 0x54]
push 3
push 0
call fcn.0047a640
mov ecx, edi
call fcn.00474ee0
lea ecx, [ebp - 0x2c]
mov dword [edi + 0xf0], 0
mov dword [edi + 0xf8], 0
mov dword [ebp - 4], 0xffffffff
call fcn.00446850
mov ecx, dword [edi + 0x54]
push 0
push 0
call fcn.0047bb00
mov ecx, esi
mov dword [ebp + 8], eax
call fcn.0041df00
test al, al
je 0x479150
mov ecx, ebx
call fcn.0041df00
test al, al
je 0x479150
mov ecx, dword [edi + 0x54]
push ebx
call fcn.004763b0
test eax, eax
jne 0x479150
mov eax, dword [edi + 0x54]
mov ecx, dword [eax + 0xc]
lea ecx, [ecx + 0xbf4]
call fcn.0040c2e0
mov ecx, ebx
mov esi, eax
call fcn.0040c2e0
mov ecx, dword [edi + 0x54]
sub eax, esi
mov edx, dword [edi + 0x50]
add edx, 0xbf4
mov dword [ebp - 0x18], eax
push edx
mov esi, dword [ecx]
call dword [esi + 0x2c]
mov ecx, dword [edi + 0x54]
push ebx
mov dword [ebp - 0x1c], eax
mov edx, dword [ecx]
call dword [edx + 0x2c]
mov esi, dword [edi + 0x58]
mov dword [ebp - 0x14], eax
mov dword [ebp + 0x18], esi
cmp esi, 0xa
ja case.0x4788a9.6
jmp dword [esi*4 + 0x47916c]
mov ecx, ebx
call fcn.00404850
cmp eax, 1
jne case.0x4788a9.6
mov edx, dword [ebp - 0x1c]
mov ecx, dword [ebp - 0x14]
mov dword [edi + 0xcc], 0
mov dword [edi + 0xd0], 0
test edx, edx
je 0x4788e4
test ecx, ecx
je 0x4788e4
jmp 0x4788e6
xor eax, eax
test ecx, ecx
jne 0x4788f4
test edx, edx
je 0x4788f4
cmp dword [ebp - 0x18], 0x64
jb 0x4788fc
test eax, eax
je case.0x4788a9.6
lea eax, [edi + 0xb0]
push eax
call dword [sym.imp.USER32.dll_GetCursorPos]
mov ecx, dword [edi + 0x50]
push 1
mov dword [edi + 0xc0], 0
mov dword [edi + 0xf0], 0
mov dword [edi + 0xfc], 0
call fcn.00424550
push ebx
mov ecx, edi
call fcn.00476530
test eax, eax
je 0x4789b9
call dword [sym.imp.USER32.dll_GetForegroundWindow]
mov ecx, dword [edi + 0x54]
push eax
call fcn.00475540
test eax, eax
je 0x4789b9
mov ecx, edi
call fcn.004794f0
mov esi, dword [edi + 0x60]
mov eax, 5
cmp esi, 8
cmove esi, eax
test byte [ebp + 8], 0x80
je case.0x4788a9.6
cmp esi, eax
jne case.0x4788a9.6
mov ecx, dword [edi + 0x50]
lea ecx, [ecx + 0xba4]
call fcn.0040a0b0
test al, al
je case.0x4788a9.6
mov ecx, ebx
call fcn.0040a0b0
test al, al
jne case.0x4788a9.6
mov ecx, edi
call fcn.00476be0
mov ecx, dword [edi + 0x54]
push 3
push 0
call fcn.0047a640
mov esi, 0xa
jmp case.0x4788a9.6
test byte [ebp + 8], 0x80
je 0x4789ed
mov ecx, dword [edi + 0x50]
lea ecx, [ecx + 0xba4]
call fcn.0040a0b0
test al, al
jne 0x4789ed
mov ecx, ebx
call fcn.0040a0b0
test al, al
je 0x4789ed
mov ecx, edi
mov esi, 9
call fcn.00476df0
jmp case.0x4788a9.6
mov esi, 1
jmp case.0x4788a9.6
mov ecx, ebx
call fcn.00404850
cmp eax, 1
jne case.0x4788a9.6
mov ecx, ebx
call fcn.0042a250
add dword [edi + 0xcc], eax
mov ecx, ebx
call fcn.0042a410
add dword [edi + 0xd0], eax
mov ecx, edi
push ebx
call fcn.00479530
test eax, eax
je 0x478a60
xor eax, eax
mov dword [edi + 0xd0], 0
cmp dword [ebp - 0x10], eax
mov esi, 8
mov dword [edi + 0xcc], 0
setne al
lea eax, [eax*2 - 1]
mov dword [edi + 0xc4], eax
jmp 0x478b7b
push ebx
mov ecx, edi
call fcn.00475e30
test eax, eax
je 0x478a9f
xor eax, eax
mov dword [edi + 0xd0], 0
cmp dword [ebp - 0x10], eax
mov esi, 8
mov dword [edi + 0xcc], 0
setne al
lea eax, [eax*2 - 1]
mov dword [edi + 0xc4], eax
jmp 0x478b7b
mov eax, dword [ebp + 8]
test al, 0x20
je 0x478afd
mov ecx, ebx
call fcn.0042a250
cdq
xor eax, edx
sub eax, edx
cmp eax, 0xa
jge 0x478afa
mov ecx, ebx
call fcn.0042a410
cmp eax, 0xfffffff6
jge 0x478afa
mov ecx, dword [edi + 0x54]
push 1
mov eax, dword [ecx]
call dword [eax + 0x84]
mov ecx, dword [edi + 0x54]
push 3
push 1
call fcn.0047a640
mov dword [edi + 0xd0], 0
mov esi, 3
mov dword [edi + 0xcc], 0
jmp 0x478b7b
mov eax, dword [ebp + 8]
test al, 0x40
je 0x478b7e
mov ecx, ebx
call fcn.0042a250
cdq
xor eax, edx
sub eax, edx
cmp eax, 0xa
jge 0x478b7b
mov ecx, ebx
call fcn.0042a410
cdq
xor eax, edx
sub eax, edx
cmp eax, 0xa
jge 0x478b7b
mov eax, dword [edi + 0x54]
mov ecx, dword [eax + 0xc]
lea ecx, [ecx + 0xbf4]
call fcn.0040c2e0
mov ecx, ebx
mov esi, eax
call fcn.0040c2e0
sub eax, esi
cmp eax, 0x64
jbe 0x478b78
mov ecx, dword [edi + 0x54]
push 1
mov eax, dword [ecx]
call dword [eax + 0x84]
mov ecx, dword [edi + 0x54]
push 3
push 1
call fcn.0047a640
mov dword [edi + 0xd0], 0
mov esi, 2
mov dword [edi + 0xcc], 0
jmp 0x478b7b
mov esi, dword [ebp + 0x18]
mov eax, dword [ebp + 8]
test al, al
jns case.0x4788a9.6
mov ecx, dword [edi + 0x50]
lea ecx, [ecx + 0xba4]
call fcn.0040a0b0
test al, al
jne case.0x4788a9.6
mov ecx, ebx
call fcn.0040a0b0
test al, al
je case.0x4788a9.6
mov ecx, edi
mov esi, 9
call fcn.00476df0
jmp case.0x4788a9.6
test byte [ebp + 8], 0x40
je case.0x4788a9.6
mov ecx, ebx
call fcn.00404850
cmp eax, 1
jne case.0x4788a9.6
mov eax, dword [edi + 0x50]
test eax, eax
je 0x478bf2
mov ecx, dword [eax + 0x34]
test ecx, ecx
jne 0x478beb
lea ecx, [eax + 0x40]
test ecx, ecx
je 0x478bf2
mov ecx, edi
call fcn.00476df0
mov dword [edi + 0xd0], 0
mov esi, 3
mov dword [edi + 0xcc], 0
jmp case.0x4788a9.6
mov ecx, ebx
call fcn.00404850
cmp eax, 1
jne case.0x4788a9.6
mov ecx, ebx
call fcn.0042a250
add dword [edi + 0xcc], eax
mov ecx, ebx
call fcn.0042a410
add dword [edi + 0xd0], eax
mov ecx, dword [ebp + 8]
test cl, 0x40
je 0x478c89
mov ecx, ebx
call fcn.0042a250
cdq
xor eax, edx
sub eax, edx
cmp eax, 0xa
jge 0x478c86
mov ecx, ebx
call fcn.0042a410
cdq
xor eax, edx
sub eax, edx
cmp eax, 0xa
jge 0x478c86
mov eax, dword [edi + 0x54]
mov ecx, 0x190
mov edx, 0x384
cmp dword [eax + 0x2bc], 0
cmovne ecx, edx
cmp dword [ebp - 0x18], ecx
jbe case.0x4788a9.6
jmp 0x478cc7
mov ecx, dword [ebp + 8]
test cl, 0x20
je 0x478d1c
mov eax, dword [edi + 0xcc]
cdq
xor eax, edx
sub eax, edx
cmp eax, 0x32
jge 0x478d1c
mov eax, dword [edi + 0xd0]
cdq
xor eax, edx
sub eax, edx
cmp eax, 0x32
jle 0x478d1c
mov eax, dword [edi + 0x50]
test eax, eax
je 0x478cce
mov ecx, dword [eax + 0x34]
test ecx, ecx
jne 0x478cc7
lea ecx, [eax + 0x40]
test ecx, ecx
je 0x478cce
mov ecx, edi
call fcn.00476df0
xor eax, eax
mov esi, 5
cmp dword [edi + 0xcc], eax
mov dword [edi + 0xcc], 0
setge al
lea eax, [eax*2 - 1]
mov dword [edi + 0xc4], eax
xor eax, eax
cmp dword [edi + 0xd0], eax
mov dword [edi + 0xd0], 0
setge al
lea eax, [eax*2 - 1]
mov dword [edi + 0xc8], eax
jmp case.0x4788a9.6
test cl, 0x10
je case.0x4788a9.6
mov eax, dword [edi + 0xcc]
cdq
xor eax, edx
sub eax, edx
cmp eax, 0x32
jg 0x478d73
mov ecx, ebx
call fcn.00404df0
mov ecx, dword [edi + 0xdc]
mov esi, dword [ebp - 0x10]
sub ecx, eax
cmp ecx, 0x1ae
jle 0x478d53
test esi, esi
je 0x478d73
mov ecx, ebx
call fcn.00404df0
sub eax, dword [edi + 0xe0]
cmp eax, 0x1ae
jle 0x479132
test esi, esi
je 0x479132
mov eax, dword [edi + 0xd0]
cdq
xor eax, edx
sub eax, edx
cmp eax, 0x64
jge 0x479132
mov ecx, edi
call fcn.00476df0
xor eax, eax
mov esi, 8
cmp dword [edi + 0xcc], eax
mov dword [edi + 0xcc], 0
setge al
lea eax, [eax*2 - 1]
mov dword [edi + 0xc4], eax
xor eax, eax
cmp dword [edi + 0xd0], eax
mov dword [edi + 0xd0], 0
setge al
lea eax, [eax*2 - 1]
mov dword [edi + 0xc8], eax
jmp case.0x4788a9.6
mov ecx, ebx
call fcn.00404850
cmp eax, 1
jne case.0x4788a9.6
mov ecx, ebx
call fcn.0042a250
cdq
xor eax, edx
sub eax, edx
cmp eax, 0xa
jle case.0x4788a9.6
mov esi, dword [ebp + 0xc]
mov ecx, esi
call fcn.0042a250
cdq
xor eax, edx
sub eax, edx
cmp eax, 0xa
jle 0x479132
mov ecx, ebx
call fcn.0042a410
cdq
xor eax, edx
sub eax, edx
cmp eax, 0xa
jge 0x479132
mov ecx, esi
call fcn.0042a410
cdq
xor eax, edx
sub eax, edx
cmp eax, 0xa
jge 0x479132
mov dword [edi + 0xd0], 0
mov esi, 5
mov dword [edi + 0xcc], 0
jmp case.0x4788a9.6
mov ecx, ebx
call fcn.00404850
cmp eax, 1
jne case.0x4788a9.6
mov ecx, ebx
call fcn.0042a250
add dword [edi + 0xcc], eax
mov ecx, ebx
call fcn.0042a410
add dword [edi + 0xd0], eax
mov eax, dword [edi + 0xd0]
cdq
xor eax, edx
sub eax, edx
cmp eax, 0x78
jle 0x478edd
call dword [sym.imp.USER32.dll_GetForegroundWindow]
mov ecx, dword [edi + 0x54]
push eax
call fcn.00475540
test eax, eax
je 0x478ed1
xor ecx, ecx
cmp dword [edi + 0xd0], ecx
setle cl
lea ecx, [ecx*2 - 1]
push ecx
push ebx
mov dword [edi + 0xc8], ecx
mov ecx, dword [edi + 0x54]
push eax
call fcn.0047a380
mov dword [edi + 0xf0], 1
jmp 0x478f0f
push ebx
mov ecx, edi
call fcn.00479530
test eax, eax
jne 0x478ef5
push ebx
mov ecx, edi
call fcn.00475e30
test eax, eax
je 0x478f23
xor eax, eax
mov esi, 8
cmp dword [ebp - 0x10], eax
setne al
lea eax, [eax*2 - 1]
mov dword [edi + 0xc4], eax
mov dword [edi + 0xcc], 0
mov dword [edi + 0xd0], 0
mov ecx, dword [edi + 0x50]
lea ecx, [ecx + 0xba4]
call fcn.0040a0b0
test al, al
je case.0x4788a9.6
mov ecx, ebx
call fcn.0040a0b0
test al, al
jne case.0x4788a9.6
mov ecx, edi
call fcn.00476be0
mov ecx, dword [edi + 0x54]
push 3
push 0
mov dword [edi + 0xd0], 0
mov dword [edi + 0xcc], 0
call fcn.0047a640
mov eax, dword [ebp + 8]
not al
movzx esi, al
shr esi, 7
or esi, 0xa
jmp case.0x4788a9.6
mov ecx, ebx
call fcn.00404850
cmp eax, 1
jne case.0x4788a9.6
mov ecx, ebx
call fcn.0042a250
cdq
xor eax, edx
sub eax, edx
cmp eax, 0xa
jge 0x478ff7
mov esi, dword [ebp + 0xc]
mov ecx, esi
call fcn.0042a250
cdq
xor eax, edx
sub eax, edx
cmp eax, 0xa
jge 0x478ff4
mov ecx, ebx
call fcn.0042a410
cdq
xor eax, edx
sub eax, edx
cmp eax, 0xa
jle 0x478ff4
mov ecx, esi
call fcn.0042a410
cdq
xor eax, edx
sub eax, edx
cmp eax, 0xa
jle 0x478ff4
mov dword [edi + 0xd0], 0
mov esi, 5
mov dword [edi + 0xcc], 0
jmp 0x478ff7
mov esi, dword [ebp + 0x18]
cmp dword [edi + 0xc4], 0
jge 0x479026
mov ecx, ebx
call fcn.0042a250
cmp eax, 0xa
jle 0x47901f
mov ecx, dword [ebp + 0xc]
call fcn.0042a250
cmp eax, 0xa
jle 0x47901f
cmp dword [ebp - 0x10], 0
je 0x479047
cmp dword [edi + 0xc4], 0
jle 0x47906e
mov ecx, ebx
call fcn.0042a250
cmp eax, 0xfffffff6
jge 0x47906e
mov ecx, dword [ebp + 0xc]
call fcn.0042a250
cmp eax, 0xfffffff6
jge 0x47906e
cmp dword [ebp - 0x10], 0
je 0x47906e
mov ecx, ebx
call fcn.0042a410
cdq
xor eax, edx
sub eax, edx
cmp eax, 0xa
jge 0x47906e
mov ecx, dword [ebp + 0xc]
call fcn.0042a410
cdq
xor eax, edx
sub eax, edx
cmp eax, 0xa
jl 0x4790f9
cmp dword [edi + 0xc4], 0
jle 0x47909d
mov ecx, ebx
call fcn.0042a250
cmp eax, 0xfffffff6
jge 0x479096
mov ecx, dword [ebp + 0xc]
call fcn.0042a250
cmp eax, 0xfffffff6
jge 0x479096
cmp dword [ebp - 0x10], 0
je 0x4790ce
cmp dword [edi + 0xc4], 0
jge 0x478f23
mov ecx, ebx
call fcn.0042a250
cmp eax, 0xa
jle 0x478f23
mov ecx, dword [ebp + 0xc]
call fcn.0042a250
cmp eax, 0xa
jle 0x478f23
cmp dword [ebp - 0x10], 0
je 0x478f23
mov ecx, ebx
call fcn.0042a410
cdq
xor eax, edx
sub eax, edx
cmp eax, 0xa
jge 0x478f23
mov ecx, dword [ebp + 0xc]
call fcn.0042a410
cdq
xor eax, edx
sub eax, edx
cmp eax, 0xa
jge 0x478f23
mov esi, 3
jmp 0x478f0f
mov ecx, dword [edi + 0x50]
lea ecx, [ecx + 0xba4]
call fcn.0040a0b0
test al, al
je case.0x4788a9.6
mov ecx, ebx
call fcn.0040a0b0
test al, al
jne case.0x4788a9.6
mov esi, 5
jmp case.0x4788a9.6
test byte [ebp + 8], 0x80
je case.0x4788a9.6
jmp 0x478b86
mov esi, dword [ebp + 0x18]
cmp dword [edi + 0x58], esi
je 0x479158
mov dword [edi + 0x58], esi
pop esi
pop ebx
pop edi
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
mov esp, ebp
pop ebp
ret 0x18
push ebx
mov ecx, edi
call fcn.00479b00
pop esi
pop ebx
mov ecx, dword [ebp - 0xc]
pop edi
mov dword fs:[0], ecx
mov esp, ebp
pop ebp
ret 0x18