Function at 0x403760
Capabilities:
Check for unmoving mouse cursor

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff0
sub esp, 0x78
mov eax, dword [0x542040]
xor eax, esp
mov dword [esp + 0x74], eax
mov eax, dword [ebp + 8]
push esi
mov esi, dword [ebp + 0x18]
push edi
mov edi, ecx
mov dword [esp + 0x58], eax
mov ecx, dword [ebp + 0xc]
mov eax, dword [ebp + 0x1c]
mov dword [esp + 0xc], ecx
cmp dword [edi + 0x110], 0
mov dword [esp + 0x10], eax
je case.0x403d4b.278
mov edx, dword [ebp + 0x10]
cmp edx, 0x114
ja 0x403d21
je 0x403cb7
add edx, 0xfffffff1
cmp edx, 0xda
ja case.0x403d4b.278
movzx eax, byte [edx + 0x404134]
jmp dword [eax*4 + 0x404100]
mov al, byte [edi + 0x11c]
test al, al
jne 0x4037e5
cmp byte [edi + 0x11d], al
je case.0x403d4b.278
cmp byte [edi + 0x120], 0
jne case.0x403d4b.278
movsx ecx, si
shr esi, 0x10
movsx esi, si
mov dword [esp + 0xc], ecx
mov dword [esp + 0x58], esi
test al, al
je 0x403863
cmp dword [edi + 0xe8], 1
je 0x403863
push ecx
push 0
push 0
sub esp, 0xc
lea eax, [esp + 0x78]
mov ecx, edi
push 0
push eax
call fcn.00404320
push esi
mov esi, dword [esp + 0x10]
lea eax, [esp + 0x64]
push esi
push eax
call dword [sym.imp.USER32.dll_PtInRect]
test eax, eax
je 0x403865
movups xmm0, xmmword [esp + 0x60]
mov ecx, dword [esp + 0x10]
mov al, 1
movups xmmword [edi + 0x7c], xmm0
mov dword [ecx], 7
pop edi
pop esi
mov ecx, dword [esp + 0x74]
xor ecx, esp
call fcn.004dadd7
mov esp, ebp
pop ebp
ret 0x18
mov esi, ecx
cmp byte [edi + 0x11d], 0
je case.0x403d4b.278
cmp dword [edi + 0xe8], 1
je case.0x403d4b.278
push ecx
push 0
push 0
sub esp, 0xc
lea eax, [esp + 0x78]
mov ecx, edi
push 0
push eax
call fcn.00404550
push dword [esp + 0x58]
lea eax, [esp + 0x64]
push esi
push eax
call dword [sym.imp.USER32.dll_PtInRect]
test eax, eax
je case.0x403d4b.278
mov ecx, dword [esp + 0x10]
mov al, 1
movups xmm0, xmmword [esp + 0x60]
mov dword [ecx], 6
movups xmmword [edi + 0xc8], xmm0
pop edi
pop esi
mov ecx, dword [esp + 0x74]
xor ecx, esp
call fcn.004dadd7
mov esp, ebp
pop ebp
ret 0x18
push ecx
push esi
sub esp, 8
push ecx
push ecx
mov ecx, edi
call fcn.00404950
pop edi
pop esi
mov ecx, dword [esp + 0x74]
xor ecx, esp
call fcn.004dadd7
mov esp, ebp
pop ebp
ret 0x18
push ecx
push esi
push dword [ebp + 0x14]
push ecx
push ecx
push ecx
mov ecx, edi
call fcn.004050c0
pop edi
pop esi
mov ecx, dword [esp + 0x74]
xor ecx, esp
call fcn.004dadd7
mov esp, ebp
pop ebp
ret 0x18
mov eax, dword [edi + 0xe8]
cmp eax, 3
jne 0x403959
mov eax, dword [edi + 0x110]
push ecx
push eax
sub esp, 8
push ecx
push ecx
mov ecx, edi
call fcn.00405390
mov dword [edi + 0xe8], 0
mov al, 1
pop edi
pop esi
mov ecx, dword [esp + 0x74]
xor ecx, esp
call fcn.004dadd7
mov esp, ebp
pop ebp
ret 0x18
test eax, eax
je 0x403963
call dword [sym.imp.USER32.dll_ReleaseCapture]
mov dword [edi + 0xe8], 0
mov al, 1
pop edi
pop esi
mov ecx, dword [esp + 0x74]
xor ecx, esp
call fcn.004dadd7
mov esp, ebp
pop ebp
ret 0x18
mov eax, dword [ebp + 0x14]
cmp eax, 7
je 0x40396d
cmp eax, 6
je 0x40396d
xor al, al
pop edi
pop esi
mov ecx, dword [esp + 0x74]
xor ecx, esp
call fcn.004dadd7
mov esp, ebp
pop ebp
ret 0x18
cmp byte [edi + 0x120], 0
jne case.0x403d4b.278
cmp dword [ebp + 0x14], 0
je 0x4039ed
mov eax, dword [edi + 0x40]
test eax, eax
je 0x4039c6
push esi
push edi
call eax
test al, al
jne 0x403a15
mov eax, dword [edi + 0x10c]
test eax, eax
je 0x4039ed
add dword [esi], eax
mov eax, dword [edi + 0x10c]
add dword [esi + 4], eax
mov eax, dword [edi + 0x10c]
sub dword [esi + 8], eax
mov eax, dword [edi + 0x10c]
sub dword [esi + 0xc], eax
cmp byte [edi + 0x11c], 0
je 0x403a01
cvttss2si eax, dword [edi + 0x214]
sub dword [esi + 8], eax
cmp byte [edi + 0x11d], 0
je 0x403a15
cvttss2si eax, dword [edi + 0x214]
sub dword [esi + 0xc], eax
mov ecx, dword [esp + 0x10]
mov al, 1
mov dword [ecx], 0
pop edi
pop esi
mov ecx, dword [esp + 0x74]
xor ecx, esp
call fcn.004dadd7
mov esp, ebp
pop ebp
ret 0x18
push str.350C4F6A_7D58_43BF_8B92_AD9A3F4BC5B9
push ecx
call dword [sym.imp.USER32.dll_GetPropW]
test eax, eax
je case.0x403d4b.278
push dword [esp + 0xc]
call dword [sym.imp.USER32.dll_GetWindowDC]
mov esi, eax
mov ecx, edi
push esi
call fcn.00404c40
push esi
push dword [esp + 0x10]
mov byte [esp + 0x1f], al
call dword [sym.imp.USER32.dll_ReleaseDC]
mov al, byte [esp + 0x17]
pop edi
pop esi
mov ecx, dword [esp + 0x74]
xor ecx, esp
call fcn.004dadd7
mov esp, ebp
pop ebp
ret 0x18
cmp byte [edi + 0x120], 0
je case.0x403d4b.278
lea eax, [esp + 0x18]
push eax
push ecx
call dword [sym.imp.USER32.dll_BeginPaint]
push dword [esp + 0x18]
mov ecx, edi
call fcn.00404c40
lea eax, [esp + 0x18]
push eax
push dword [esp + 0x10]
call dword [sym.imp.USER32.dll_EndPaint]
mov al, 1
pop edi
pop esi
mov ecx, dword [esp + 0x74]
xor ecx, esp
call fcn.004dadd7
mov esp, ebp
pop ebp
ret 0x18
cmp dword [ebp + 0x14], 0xfffffff0
mov dword [edi + 0x10c], 0
mov eax, dword [esi + 4]
jne 0x403b1f
test eax, 0x800000
je 0x403aee
mov dword [edi + 0x10c], 1
mov eax, dword [esi + 4]
shr eax, 0x15
and al, 1
mov byte [edi + 0x11c], al
mov eax, dword [esi + 4]
shr eax, 0x14
and al, 1
mov byte [edi + 0x11d], al
xor al, al
pop edi
pop esi
mov ecx, dword [esp + 0x74]
xor ecx, esp
call fcn.004dadd7
mov esp, ebp
pop ebp
ret 0x18
test eax, 0x301
je case.0x403d4b.278
mov dword [edi + 0x10c], 1
xor al, al
pop edi
pop esi
mov ecx, dword [esp + 0x74]
xor ecx, esp
call fcn.004dadd7
mov esp, ebp
pop ebp
ret 0x18
cmp byte [edi + 0x120], 0
je case.0x403d4b.278
cmp byte [edi + 0x11c], 0
je 0x403b83
lea eax, [edi + 0x130]
mov dword [esp + 0x10], eax
lea ecx, [edi + 0x13c]
lea eax, [edi + 0x12c]
lea edx, [edi + 0x138]
add edi, 0x134
jmp 0x403ba5
lea eax, [edi + 0x14c]
mov dword [esp + 0x10], eax
lea ecx, [edi + 0x158]
lea eax, [edi + 0x148]
lea edx, [edi + 0x154]
add edi, 0x150
test byte [esi + 4], 2
mov dword [esp + 0xc], eax
je 0x403bb4
mov eax, dword [esi + 0x10]
mov dword [edi], eax
test byte [esi + 4], 4
je 0x403bbf
mov eax, dword [esi + 0x14]
mov dword [edx], eax
test byte [esi + 4], 1
je 0x403bd7
mov edx, dword [esp + 0x10]
mov eax, dword [esi + 0xc]
mov dword [edx], eax
mov edx, dword [esp + 0xc]
mov eax, dword [esi + 8]
mov dword [edx], eax
test byte [esi + 4], 0x10
je case.0x403d4b.278
mov eax, dword [esi + 0x18]
mov dword [ecx], eax
xor al, al
pop edi
pop esi
mov ecx, dword [esp + 0x74]
xor ecx, esp
call fcn.004dadd7
mov esp, ebp
pop ebp
ret 0x18
cmp byte [edi + 0x120], 0
je case.0x403d4b.278
cmp byte [edi + 0x11c], 0
je 0x403c39
mov eax, dword [ebp + 0x14]
lea ecx, [edi + 0x12c]
add edi, 0x130
mov dword [ecx], eax
xor al, al
mov dword [edi], esi
pop edi
pop esi
mov ecx, dword [esp + 0x74]
xor ecx, esp
call fcn.004dadd7
mov esp, ebp
pop ebp
ret 0x18
mov eax, dword [ebp + 0x14]
lea ecx, [edi + 0x148]
add edi, 0x14c
mov dword [ecx], eax
xor al, al
mov dword [edi], esi
pop edi
pop esi
mov ecx, dword [esp + 0x74]
xor ecx, esp
call fcn.004dadd7
mov esp, ebp
pop ebp
ret 0x18
cmp byte [edi + 0x120], 0
je case.0x403d4b.278
cmp byte [edi + 0x11c], 0
je 0x403c97
mov eax, dword [ebp + 0x14]
add edi, 0x138
mov dword [edi], eax
xor al, al
pop edi
pop esi
mov ecx, dword [esp + 0x74]
xor ecx, esp
call fcn.004dadd7
mov esp, ebp
pop ebp
ret 0x18
mov eax, dword [ebp + 0x14]
add edi, 0x154
mov dword [edi], eax
xor al, al
pop edi
pop esi
mov ecx, dword [esp + 0x74]
xor ecx, esp
call fcn.004dadd7
mov esp, ebp
pop ebp
ret 0x18
push esi
push dword [ebp + 0x14]
push edx
push ecx
push dword [esp + 0x68]
call dword [sym.imp.USER32.dll_CallWindowProcW]
mov ecx, dword [esp + 0x10]
lea esi, [edi + 0x140]
mov dword [ecx], eax
mov eax, dword [edi + 0x118]
mov dword [esi], 0x1c
mov dword [edi + 0x144], 0x17
test eax, eax
je 0x403d0c
push str.958E4B00_EE56_4C4E_AAFF_0A8287111BB2
push eax
call dword [sym.imp.USER32.dll_GetPropW]
test ax, ax
je 0x403d0c
push esi
push 2
push dword [edi + 0x118]
jmp 0x403f0e
cmp byte [edi + 0x120], 0
push esi
jne 0x403ef5
push 0
jmp 0x403f0a
cmp edx, 0x20a
ja 0x404013
je 0x403f8c
lea eax, [edx - 0x115]
cmp eax, 0xed
ja case.0x403d4b.278
movzx eax, byte [eax + 0x404224]
jmp dword [eax*4 + 0x404210]
cmp dword [edi + 0xe8], 0
je 0x403d7a
sub esp, 0x10
push ecx
push ecx
mov ecx, edi
call fcn.00405520
pop edi
pop esi
mov ecx, dword [esp + 0x74]
xor ecx, esp
call fcn.004dadd7
mov esp, ebp
pop ebp
ret 0x18
cmp byte [edi + 0x120], 0
je case.0x403d4b.278
lea eax, [esp + 0x58]
push eax
call dword [sym.imp.USER32.dll_GetCursorPos]
push ecx
push 0
push 0
sub esp, 0xc
mov ecx, edi
cmp byte [edi + 0x11c], 0
push 0
je 0x403db2
lea eax, [edi + 0x7c]
push eax
call fcn.00404320
jmp 0x403dbe
lea eax, [edi + 0xc8]
push eax
call fcn.00404550
movzx eax, word [esp + 0x58]
push ecx
movzx ecx, word [esp + 0x60]
shl ecx, 0x10
or ecx, eax
push ecx
sub esp, 8
push dword [esp + 0x1c]
push ecx
mov ecx, edi
call fcn.00404950
pop edi
pop esi
mov ecx, dword [esp + 0x74]
xor ecx, esp
call fcn.004dadd7
mov esp, ebp
pop ebp
ret 0x18
cmp byte [edi + 0x120], 0
je case.0x403d4b.278
lea eax, [esp + 0x58]
push eax
call dword [sym.imp.USER32.dll_GetCursorPos]
movzx eax, word [esp + 0x58]
push ecx
movzx ecx, word [esp + 0x60]
shl ecx, 0x10
or ecx, eax
xor eax, eax
cmp byte [edi + 0x11c], al
push ecx
setne al
add eax, 6
push eax
push ecx
push dword [esp + 0x1c]
push ecx
mov ecx, edi
call fcn.004050c0
pop edi
pop esi
mov ecx, dword [esp + 0x74]
xor ecx, esp
call fcn.004dadd7
mov esp, ebp
pop ebp
ret 0x18
cmp dword [edi + 0xe8], 0
je 0x403e6d
call dword [sym.imp.USER32.dll_ReleaseCapture]
mov al, 1
pop edi
pop esi
mov ecx, dword [esp + 0x74]
xor ecx, esp
call fcn.004dadd7
mov esp, ebp
pop ebp
ret 0x18
cmp byte [edi + 0x120], 0
je case.0x403d4b.278
mov dword [edi + 0xe8], 0
mov al, 1
pop edi
pop esi
mov ecx, dword [esp + 0x74]
xor ecx, esp
call fcn.004dadd7
mov esp, ebp
pop ebp
ret 0x18
push esi
push dword [ebp + 0x14]
push edx
push ecx
push dword [esp + 0x68]
call dword [sym.imp.USER32.dll_CallWindowProcW]
mov ecx, dword [esp + 0x10]
lea esi, [edi + 0x124]
mov dword [ecx], eax
mov eax, dword [edi + 0x114]
mov dword [esi], 0x1c
mov dword [edi + 0x128], 0x17
test eax, eax
je 0x403eeb
push str.958E4B00_EE56_4C4E_AAFF_0A8287111BB2
push eax
call dword [sym.imp.USER32.dll_GetPropW]
test ax, ax
je 0x403eeb
push esi
push 2
push dword [edi + 0x114]
jmp 0x403f0e
cmp byte [edi + 0x120], 0
push esi
je 0x403f08
push 2
push 0xea
push dword [esp + 0x18]
call dword [sym.imp.USER32.dll_SendMessageW]
jmp 0x403f14
push 1
push dword [esp + 0x14]
call dword [sym.imp.USER32.dll_GetScrollInfo]
cmp byte [edi + 0x120], 0
mov esi, dword [edi + 0x110]
mov dword [esp + 0x58], esi
je 0x403f47
push 0
push 0
push esi
call dword [sym.imp.USER32.dll_InvalidateRect]
mov al, 1
pop edi
pop esi
mov ecx, dword [esp + 0x74]
xor ecx, esp
call fcn.004dadd7
mov esp, ebp
pop ebp
ret 0x18
push str.350C4F6A_7D58_43BF_8B92_AD9A3F4BC5B9
push esi
call dword [sym.imp.USER32.dll_GetPropW]
test eax, eax
je 0x40396d
push esi
call dword [sym.imp.USER32.dll_GetWindowDC]
mov esi, eax
mov ecx, edi
push esi
call fcn.00404c40
push esi
push dword [esp + 0x5c]
call dword [sym.imp.USER32.dll_ReleaseDC]
mov al, 1
pop edi
pop esi
mov ecx, dword [esp + 0x74]
xor ecx, esp
call fcn.004dadd7
mov esp, ebp
pop ebp
ret 0x18
cmp byte [edi + 0x120], 0
je case.0x403d4b.278
mov eax, dword [ebp + 0x14]
shr eax, 0x10
movsx ecx, ax
mov eax, 0x88888889
imul ecx
mov esi, dword [edi + 0x130]
add edx, ecx
mov ecx, dword [edi + 0x138]
sar edx, 6
mov eax, edx
shr eax, 0x1f
add eax, edx
mov edx, dword [edi + 0x12c]
sub ecx, eax
cmp ecx, edx
mov eax, ecx
cmovle eax, edx
cmp esi, eax
jl 0x403fdb
cmp ecx, edx
mov esi, ecx
cmovle esi, edx
cmp esi, dword [edi + 0x138]
je case.0x403d4b.278
mov eax, dword [edi + 0x110]
push 0
push 0
push eax
call dword [sym.imp.USER32.dll_InvalidateRect]
mov dword [edi + 0x138], esi
xor al, al
pop edi
pop esi
mov ecx, dword [esp + 0x74]
xor ecx, esp
call fcn.004dadd7
mov esp, ebp
pop ebp
ret 0x18
sub edx, 0x20e
je 0x404080
sub edx, 7
je 0x40405f
sub edx, 0x102
jne case.0x403d4b.278
push str.350C4F6A_7D58_43BF_8B92_AD9A3F4BC5B9
push ecx
call dword [sym.imp.USER32.dll_GetPropW]
test eax, eax
je case.0x403d4b.278
push dword [ebp + 0x14]
mov ecx, edi
call fcn.00404c40
xor al, al
pop edi
pop esi
mov ecx, dword [esp + 0x74]
xor ecx, esp
call fcn.004dadd7
mov esp, ebp
pop ebp
ret 0x18
push ecx
push esi
sub esp, 8
push ecx
push ecx
mov ecx, edi
call fcn.00405390
pop edi
pop esi
mov ecx, dword [esp + 0x74]
xor ecx, esp
call fcn.004dadd7
mov esp, ebp
pop ebp
ret 0x18
cmp byte [edi + 0x120], 0
je case.0x403d4b.278
mov eax, dword [ebp + 0x14]
shr eax, 0x10
movsx ecx, ax
mov eax, 0x88888889
imul ecx
mov esi, dword [edi + 0x14c]
add edx, ecx
mov ecx, dword [edi + 0x154]
sar edx, 6
mov eax, edx
shr eax, 0x1f
add eax, edx
mov edx, dword [edi + 0x148]
sub ecx, eax
cmp ecx, edx
mov eax, ecx
cmovle eax, edx
cmp esi, eax
jl 0x4040cb
cmp ecx, edx
mov esi, ecx
cmovle esi, edx
cmp esi, dword [edi + 0x154]
je case.0x403d4b.278
mov eax, dword [edi + 0x110]
push 0
push 0
push eax
call dword [sym.imp.USER32.dll_InvalidateRect]
mov dword [edi + 0x154], esi
mov ecx, dword [esp + 0x7c]
xor al, al
pop edi
pop esi
xor ecx, esp
call fcn.004dadd7
mov esp, ebp
pop ebp
ret 0x18