Function at 0x4022c4
Capabilities:
Check for unmoving mouse cursor

Disassembly:
sub esp, 8
push ebx
push esi
mov esi, ecx
push edi
mov eax, dword [esi + 8]
add eax, 0xfffffffe
cmp eax, 8
ja case.default.0x4022d7
jmp dword [eax*4 + 0x402940]
mov edx, dword [esi + 0x18]
inc edx
mov eax, edx
mov dword [esi + 0x18], edx
cmp eax, 0x28
jle case.default.0x4022d7
call fcn.004104f0
cdq
mov ecx, 0x28
idiv ecx
test edx, edx
je case.default.0x4022d7
push 0
call fcn.00406130
add esp, 4
cmp eax, 2
jge case.default.0x4022d7
mov edx, dword [esi]
push 1
mov ecx, esi
call dword [edx + 0x28]
xor eax, eax
pop edi
pop esi
pop ebx
add esp, 8
ret
mov edi, dword [esi + 0x18]
inc edi
mov eax, edi
mov dword [esi + 0x18], edi
cdq
idiv dword [esi + 0x8c]
mov eax, dword [esi + 0x88]
mov ecx, dword [eax + edx*4]
mov edx, dword [esi + 0x7c]
add edx, 3
mov dword [esi + 0x14], ecx
mov eax, edx
mov dword [esi + 0x7c], edx
cmp eax, 0x1e
jle 0x40235d
mov dword [esi + 0x7c], 0x1e
mov ecx, esi
call fcn.00402140
mov edx, dword [esi + 0x90]
mov ebx, dword [esi + 0x40]
mov edi, eax
mov eax, dword [edx + 4]
mov edx, dword [esi + 0x7c]
add eax, ebx
add eax, edx
cmp edi, eax
jge 0x402853
mov edx, dword [esi]
push 3
mov ecx, esi
call dword [edx + 0x28]
mov eax, dword [esi + 0x90]
mov ecx, dword [eax + 4]
mov eax, dword [esi + 0x40]
sub edi, ecx
sub edi, eax
mov dword [esi + 0x7c], edi
jmp 0x402853
mov edi, dword [esi + 0x18]
mov ecx, dword [esi + 0x8c]
inc edi
mov eax, edi
mov dword [esi + 0x18], edi
cmp eax, ecx
jl 0x4023c7
mov edx, dword [esi]
push 4
mov ecx, esi
call dword [edx + 0x28]
xor eax, eax
pop edi
pop esi
pop ebx
add esp, 8
ret
cdq
idiv ecx
mov eax, dword [esi + 0x88]
mov ecx, dword [eax + edx*4]
xor eax, eax
mov dword [esi + 0x14], ecx
pop edi
pop esi
pop ebx
add esp, 8
ret
mov ecx, esi
call fcn.00402230
test eax, eax
jne 0x4023f8
mov edx, dword [esi]
push 2
mov ecx, esi
call dword [edx + 0x28]
jmp 0x402853
mov ebx, dword [esi + 0x18]
mov edx, dword [esi]
inc ebx
push 0
mov ecx, esi
mov dword [esi + 0x18], ebx
call dword [edx + 0x4c]
test eax, eax
jne case.default.0x4022d7
mov eax, dword [esi + 0x18]
cdq
idiv dword [esi + 0x8c]
mov eax, dword [esi + 0x88]
mov ecx, dword [eax + edx*4]
xor eax, eax
mov dword [esi + 0x14], ecx
pop edi
pop esi
pop ebx
add esp, 8
ret
mov eax, dword [esi + 0x44]
mov ecx, esi
test eax, eax
jge 0x402472
call fcn.0040b360
mov edi, eax
sub edi, 0x4b
call fcn.004104f0
cdq
idiv edi
mov edi, dword [esi]
push 0x69
push 0x4b
push 0xffffffffffffff97
mov ecx, esi
push edx
call dword [edi + 0xc]
push 8
mov ecx, esi
mov dword [esi + 0x90], 0x41a050
call dword [edi + 0x28]
xor eax, eax
pop edi
pop esi
pop ebx
add esp, 8
ret
call fcn.00402230
test eax, eax
jne 0x402489
mov edx, dword [esi]
push 2
mov ecx, esi
call dword [edx + 0x28]
jmp 0x402853
push 1
mov ecx, esi
call fcn.00402180
mov edx, dword [esi + 0x78]
mov edi, dword [esi + 0x3c]
add edx, edi
cmp edx, eax
jge 0x4024b9
call fcn.00406720
test eax, eax
je 0x4024b9
mov eax, dword [esi]
push 6
mov ecx, esi
call dword [eax + 0x28]
xor eax, eax
pop edi
pop esi
pop ebx
add esp, 8
ret
call fcn.00406710
push eax
call fcn.00406670
add esp, 4
test eax, eax
jne 0x402506
push eax
call fcn.00406710
push eax
mov ecx, esi
call fcn.00402250
mov ecx, dword [esi + 0x78]
mov edi, dword [esi + 0x3c]
add ecx, edi
cmp ecx, eax
jge 0x402506
mov edx, dword [esi]
push 9
mov ecx, esi
call dword [edx + 0x28]
xor eax, eax
xor ecx, ecx
mov ax, word [esi + 0x7c]
mov cx, word [esi + 0x78]
shl eax, 0x10
or eax, ecx
pop edi
pop esi
pop ebx
add esp, 8
ret
mov ecx, esi
call fcn.0040b360
cdq
idiv dword [esi + 0x78]
mov ecx, dword [esi + 0x18]
mov edi, eax
cdq
and edx, 3
add eax, edx
sar eax, 2
cmp ecx, eax
jl 0x4026da
call fcn.004104f0
mov ecx, eax
mov eax, edi
cdq
sub eax, edx
mov edi, eax
mov eax, ecx
cdq
sar edi, 1
idiv edi
test edx, edx
jne 0x4026da
push 0xa
mov ecx, esi
call fcn.004021f0
test eax, eax
jne 0x4026da
call fcn.004104f0
cdq
xor eax, edx
sub eax, edx
and eax, 1
xor eax, edx
sub eax, edx
sub eax, 0
jne 0x4026af
mov eax, dword [esi]
push 6
mov ecx, esi
call dword [eax + 0x28]
xor eax, eax
pop edi
pop esi
pop ebx
add esp, 8
ret
mov ecx, esi
call fcn.0040b360
mov ecx, dword [esi + 0x3c]
cmp ecx, eax
mov ecx, esi
jle 0x4025cb
call fcn.0040b360
mov edi, eax
sub edi, 0x4b
call fcn.004104f0
cdq
idiv edi
mov edi, dword [esi]
push 0x69
push 0x4b
push 0xffffffffffffff97
mov ecx, esi
push edx
call dword [edi + 0xc]
push 8
mov ecx, esi
mov dword [esi + 0x90], 0x41a050
call dword [edi + 0x28]
xor eax, eax
pop edi
pop esi
pop ebx
add esp, 8
ret
call fcn.00402230
test eax, eax
je 0x40284a
push 2
mov ecx, esi
call fcn.00402180
mov edx, dword [esi + 0x78]
mov edi, dword [esi + 0x44]
add edx, edi
cmp edx, eax
jle 0x402608
call fcn.00406720
test eax, eax
je 0x402608
mov eax, dword [esi]
push 5
mov ecx, esi
call dword [eax + 0x28]
xor eax, eax
pop edi
pop esi
pop ebx
add esp, 8
ret
call fcn.00406710
push eax
call fcn.00406670
add esp, 4
test eax, eax
jne 0x402656
push 1
call fcn.00406710
push eax
mov ecx, esi
call fcn.00402250
mov ecx, dword [esi + 0x78]
mov edi, dword [esi + 0x44]
add ecx, edi
cmp ecx, eax
jle 0x402656
mov edx, dword [esi]
push 0xa
mov ecx, esi
call dword [edx + 0x28]
xor eax, eax
xor ecx, ecx
mov ax, word [esi + 0x7c]
mov cx, word [esi + 0x78]
shl eax, 0x10
or eax, ecx
pop edi
pop esi
pop ebx
add esp, 8
ret
mov ecx, esi
call fcn.0040b360
cdq
idiv dword [esi + 0x78]
mov ecx, dword [esi + 0x18]
mov edi, eax
cdq
and edx, 3
add eax, edx
sar eax, 2
cmp ecx, eax
jl 0x4026da
call fcn.004104f0
mov ecx, eax
mov eax, edi
cdq
sub eax, edx
mov edi, eax
mov eax, ecx
cdq
sar edi, 1
idiv edi
test edx, edx
jne 0x4026da
push 0xa
mov ecx, esi
call fcn.004021f0
test eax, eax
jne 0x4026da
call fcn.004104f0
cdq
xor eax, edx
sub eax, edx
and eax, 1
xor eax, edx
sub eax, edx
sub eax, 0
je 0x4026c8
dec eax
jne case.default.0x4022d7
mov edx, dword [esi]
push 4
mov ecx, esi
call dword [edx + 0x28]
xor eax, eax
pop edi
pop esi
pop ebx
add esp, 8
ret
mov eax, dword [esi]
push 5
mov ecx, esi
call dword [eax + 0x28]
xor eax, eax
pop edi
pop esi
pop ebx
add esp, 8
ret
mov ecx, dword [esi + 0x18]
inc ecx
mov eax, ecx
mov dword [esi + 0x18], ecx
cdq
idiv dword [esi + 0x8c]
mov ecx, dword [esi + 0x88]
mov edx, dword [ecx + edx*4]
cmp edx, 6
mov dword [esi + 0x14], edx
je case.default.0x4022d7
xor eax, eax
xor edx, edx
mov ax, word [esi + 0x7c]
mov dx, word [esi + 0x78]
shl eax, 0x10
or eax, edx
pop edi
pop esi
pop ebx
add esp, 8
ret
mov ecx, esi
call fcn.00402230
test eax, eax
je 0x40284a
mov ecx, dword [esi + 0x18]
inc ecx
mov eax, ecx
mov dword [esi + 0x18], ecx
cdq
idiv dword [esi + 0x8c]
test edx, edx
jne case.default.0x40275d
mov edx, dword [esi + 8]
mov dword [esi + 0xc0], edx
call fcn.004104f0
cdq
mov ecx, 0x32
idiv ecx
cmp edx, 0xa
ja case.default.0x40275d
jmp dword [edx*4 + 0x402964]
mov edx, dword [esi]
push 0x3ed
jmp 0x4028a0
mov eax, dword [esi]
push 0x3ee
mov ecx, esi
call dword [eax + 0x28]
jmp case.default.0x40275d
mov edx, dword [esi]
push 0x3eb
jmp 0x4028a0
mov eax, dword [esi]
push 0x3ec
mov ecx, esi
call dword [eax + 0x28]
jmp case.default.0x40275d
mov edx, dword [esi]
push 6
jmp 0x4028a0
mov ecx, esi
call fcn.00402230
test eax, eax
jne 0x4027c0
mov edx, dword [esi]
push 2
mov ecx, esi
call dword [edx + 0x28]
jmp 0x402853
mov ecx, dword [esi + 0x18]
inc ecx
mov eax, ecx
mov dword [esi + 0x18], ecx
cdq
idiv dword [esi + 0x8c]
test edx, edx
jne case.default.0x40275d
mov edx, dword [esi + 8]
mov dword [esi + 0xc0], edx
call fcn.004104f0
cdq
mov ecx, 0x32
idiv ecx
cmp edx, 0xa
ja case.default.0x40275d
jmp dword [edx*4 + 0x402990]
mov edx, dword [esi]
push 0x3ed
jmp 0x4028a0
mov eax, dword [esi]
push 0x3ee
mov ecx, esi
call dword [eax + 0x28]
jmp case.default.0x40275d
mov edx, dword [esi]
push 0x3e9
jmp 0x4028a0
mov eax, dword [esi]
push 0x3ea
mov ecx, esi
call dword [eax + 0x28]
jmp case.default.0x40275d
mov edx, dword [esi]
push 5
jmp 0x4028a0
call fcn.00406710
push eax
call fcn.004066c0
add esp, 4
test eax, eax
jne case.0x40275d.6
mov eax, dword [esi]
push 2
mov ecx, esi
call dword [eax + 0x28]
xor ecx, ecx
xor eax, eax
mov cx, word [esi + 0x7c]
mov ax, word [esi + 0x78]
shl ecx, 0x10
or eax, ecx
pop edi
pop esi
pop ebx
add esp, 8
ret
mov edx, dword [esi]
push 0x3f1
jmp 0x4028a0
mov eax, dword [esi]
push 0x3f4
mov ecx, esi
call dword [eax + 0x28]
jmp case.default.0x40275d
mov edx, dword [esi]
push 0x3f5
jmp 0x4028a0
mov eax, dword [esi]
push 0x3f6
mov ecx, esi
call dword [eax + 0x28]
jmp case.default.0x40275d
mov edx, dword [esi]
push 0x3f7
mov ecx, esi
call dword [edx + 0x28]
mov eax, dword [esi + 0x18]
cdq
idiv dword [esi + 0x8c]
mov eax, dword [esi + 0x88]
mov ecx, dword [eax + edx*4]
xor eax, eax
mov dword [esi + 0x14], ecx
pop edi
pop esi
pop ebx
add esp, 8
ret
mov edx, dword [esi + 0x18]
mov ebx, dword [sym.imp.USER32.dll_GetCursorPos]
inc edx
mov eax, edx
mov dword [esi + 0x18], edx
cdq
idiv dword [esi + 0x8c]
mov eax, dword [esi + 0x88]
mov ecx, dword [eax + edx*4]
lea edx, [esp + 0xc]
push edx
mov dword [esi + 0x14], ecx
call ebx
mov edx, dword [esi + 0x98]
mov edi, dword [esp + 0xc]
mov eax, dword [esp + 0x10]
lea ecx, [esi + 0x98]
cmp edi, edx
jne 0x40290d
cmp eax, dword [esi + 0x9c]
je case.default.0x4022d7
sub edi, edx
mov edx, dword [esi + 0x9c]
sub eax, edx
push ecx
mov esi, eax
call ebx
mov eax, esi
and edi, 0xffff
and eax, 0xffff
shl eax, 0x10
or eax, edi
pop edi
pop esi
pop ebx
add esp, 8
ret
pop edi
pop esi
xor eax, eax
pop ebx
add esp, 8
ret