Function at 0x40e224
Capabilities:
Check for unmoving mouse cursor
Persist via windows service
Set registry value

Disassembly:
test dword [0x4b63ec], 0xffffff80
jne 0x40e24c
test dword [0x4b63ec], 0xffffffff
jne 0x40e900
call fcn.00490ee4
jmp fcn.0040e224
push edi
push esi
push ebp
push ebx
sub esp, 0x474
mov dword [ecx + 0x20], 1
mov ecx, 0x4a3b98
mov dword [esp + 0x460], ecx
mov dword [esp + 0x464], 0
mov dword [esp + 0x468], 0x4b8bc0
cmp dword [0x4a3ba4], 0
jl 0x40e29c
lea eax, [esp + 0x46c]
push eax
push dword [esp + 0x46c]
call fcn.0045763c
lea eax, [esp + 0x1f0]
push 0x9c
push 0
push eax
call fcn.004910c4
add esp, 0xc
mov eax, 0x9c
xor ecx, ecx
lea edx, [esp + 0x1f0]
mov word [esp + 0x214], ax
mov word [esp + 0x216], cx
push edx
push 0xffffffffffffffff
push ecx
call dword [sym.imp.USER32.dll_EnumDisplaySettingsA]
mov dword [esp + 0x218], 0x3c0020
push 0x4b8adc
call dword [sym.imp.KERNEL32.dll_LoadLibraryA]
mov ebx, eax
push 0x4b8ae4
push ebx
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
mov esi, eax
push 0x4b8c20
push ebx
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
mov dword [esp + 0x46c], eax
mov edx, eax
test edx, edx
je 0x40e5c1
test esi, esi
je 0x40e8c0
lea edx, [esp + 0x29c]
push 0x1a8
push 0
push edx
call fcn.004910c4
add esp, 0xc
mov dword [esp + 0x29c], 0x1a8
xor edx, edx
lea ebp, [esp + 0x29c]
mov byte [esp + 0x1f0], dl
push edx
push ebp
push edx
push edx
call esi
test eax, eax
je 0x40e3b6
mov dword [esp + 0x470], ebx
xor ebp, ebp
mov ebx, esi
lea edi, [esp + 0x2c0]
mov esi, 0x4b8ac0
mov dl, byte [edi]
cmp dl, byte [esi]
jne 0x40e399
or dl, dl
je 0x40e395
mov dl, byte [edi + 1]
cmp dl, byte [esi + 1]
jne 0x40e399
add edi, 2
add esi, 2
or dl, dl
jne 0x40e379
xor eax, eax
jmp 0x40e39e
sbb eax, eax
or eax, 1
test eax, eax
je 0x40e40f
inc ebp
xor ecx, ecx
lea edx, [esp + 0x29c]
push ecx
push edx
push ebp
push ecx
call ebx
test eax, eax
jne 0x40e36d
mov dword [esp + 0x44c], 0
mov ecx, 0x4a3b98
mov dword [esp + 0x448], ecx
mov dword [esp + 0x450], 0x4b8c40
mov dword [esp + 0x454], 0x4b8ac0
cmp dword [0x4a3ba4], 0
jl 0x40e400
lea eax, [esp + 0x454]
push eax
push dword [esp + 0x454]
call fcn.0045763c
xor eax, eax
add esp, 0x474
pop ebx
pop ebp
pop esi
pop edi
ret 0x14
mov ebx, dword [esp + 0x470]
lea esi, [esp + 0xa8]
mov edi, 0x4b8ca0
mov dl, byte [edi]
inc edi
mov byte [esi], dl
inc esi
test dl, dl
jne 0x40e422
mov dword [esp + 0x45c], 0
lea edx, [esp + 0x45c]
push edx
push 0x4b8d80
push reloc.WSOCK32.dll_bind
call dword [sym.imp.ADVAPI32.dll_RegCreateKeyA]
test eax, eax
je 0x40e4a1
mov dword [esp + 0x294], 0
mov ecx, 0x4a3b98
mov dword [esp + 0x290], ecx
mov dword [esp + 0x298], 0x4b8cc0
cmp dword [0x4a3ba4], 0
jl 0x40e492
lea eax, [esp + 0x29c]
push eax
push dword [esp + 0x29c]
call fcn.0045763c
xor eax, eax
add esp, 0x474
pop ebx
pop ebp
pop esi
pop edi
ret 0x14
mov dword [esp + 0x458], 0
lea ecx, [esp + 0xa8]
lea edx, [esp + 0x458]
push edx
push ecx
push dword [esp + 0x464]
call dword [sym.imp.ADVAPI32.dll_RegCreateKeyA]
test eax, eax
je 0x40e536
mov dword [esp + 0x1e4], 0
mov ecx, 0x4a3b98
lea eax, [esp + 0xa8]
mov dword [esp + 0x1e0], ecx
mov dword [esp + 0x1e8], 0x4b8de0
mov dword [esp + 0x1ec], eax
cmp dword [0x4a3ba4], 0
jl 0x40e51a
lea eax, [esp + 0x1ec]
push eax
push dword [esp + 0x1ec]
call fcn.0045763c
push dword [esp + 0x45c]
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
xor eax, eax
add esp, 0x474
pop ebx
pop ebp
pop esi
pop edi
ret 0x14
mov dword [esp + 0x444], 1
mov ecx, 4
lea edx, [esp + 0x444]
push ecx
push edx
push ecx
push 0
push 0x4b8ec0
push dword [esp + 0x46c]
call dword [sym.imp.ADVAPI32.dll_RegSetValueExA]
test eax, eax
je 0x40e5d0
mov dword [esp + 0x1d0], 0
mov ecx, 0x4a3b98
mov dword [esp + 0x1cc], ecx
mov dword [esp + 0x1d4], 0x4b8e40
cmp dword [0x4a3ba4], 0
jl 0x40e5a7
lea eax, [esp + 0x1d8]
push eax
push dword [esp + 0x1d8]
call fcn.0045763c
push dword [esp + 0x458]
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
push dword [esp + 0x45c]
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
xor eax, eax
add esp, 0x474
pop ebx
pop ebp
pop esi
pop edi
ret 0x14
lea esi, [esp + 0x1f0]
mov edi, 0x4b8ed4
mov dl, byte [edi]
inc edi
mov byte [esi], dl
inc esi
test dl, dl
jne 0x40e5dc
call dword [sym.imp.KERNEL32.dll_GetCurrentThreadId]
push eax
call dword [sym.imp.USER32.dll_GetThreadDesktop]
mov esi, eax
test esi, esi
je 0x40e61b
push 0x2000000
xor edx, edx
push edx
push edx
call dword [sym.imp.USER32.dll_OpenInputDesktop]
mov ebp, eax
test ebp, ebp
je 0x40e8e8
push ebp
call dword [sym.imp.USER32.dll_SetThreadDesktop]
jmp 0x40e61d
xor ebp, ebp
mov dword [esp + 0x218], 0x3c0020
mov edx, dword [esp + 0x258]
cmp edx, 8
je 0x40e642
cmp edx, 0x10
je 0x40e642
cmp edx, 0x20
jne 0x40e80e
mov edx, dword [esp + 0x494]
mov ecx, dword [esp + 0x498]
mov edi, dword [esp + 0x48c]
mov dword [esp + 0x25c], edx
mov edx, dword [esp + 0x490]
mov dword [esp + 0x260], ecx
mov dword [esp + 0x21c], edi
mov dword [esp + 0x220], edx
lea edx, [esp + 0x1d8]
push edx
call dword [sym.imp.USER32.dll_GetCursorPos]
lea ecx, [esp + 0x1f0]
xor edx, edx
push edx
push 1
push edx
push ecx
lea edi, [esp + 0x2b0]
push edi
mov edx, dword [esp + 0x480]
call edx
mov dword [esp + 0x1c0], 0
mov ecx, 0x4a3b98
mov dword [esp + 0x1bc], ecx
mov dword [esp + 0x1c4], 0x4b8ee0
mov dword [esp + 0x1c8], eax
cmp dword [0x4a3ba4], 0
jl 0x40e6ed
lea edx, [esp + 0x1c8]
push edx
push dword [esp + 0x1c8]
call fcn.0045763c
push dword [esp + 0x1dc]
push dword [esp + 0x1dc]
call dword [sym.imp.USER32.dll_SetCursorPos]
lea edx, [esp + 0xc]
push 0x9c
push 0
push edx
call fcn.004910c4
add esp, 0xc
mov dword [esp + 0x34], 0x20
mov edx, 0x9c
xor ecx, ecx
mov word [esp + 0x30], dx
mov edi, dword [esp + 0x48c]
mov edx, dword [esp + 0x490]
mov word [esp + 0x32], cx
mov dword [esp + 0x38], edi
mov dword [esp + 0x3c], edx
push esi
call dword [sym.imp.USER32.dll_SetThreadDesktop]
push ebp
call dword [sym.imp.USER32.dll_CloseDesktop]
mov dword [esp + 0x28c], 1
mov ecx, 4
lea edx, [esp + 0x28c]
push ecx
push edx
push ecx
push 0
push 0x4b8ec0
push dword [esp + 0x46c]
call dword [sym.imp.ADVAPI32.dll_RegSetValueExA]
test eax, eax
je 0x40e7ef
mov dword [esp + 0x1b4], 0
mov ecx, 0x4a3b98
mov dword [esp + 0x1b0], ecx
mov dword [esp + 0x1b8], 0x4b8e40
cmp dword [0x4a3ba4], 0
jl 0x40e7c3
lea eax, [esp + 0x1bc]
push eax
push dword [esp + 0x1bc]
call fcn.0045763c
push dword [esp + 0x458]
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
push dword [esp + 0x45c]
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
mov eax, 1
add esp, 0x474
pop ebx
pop ebp
pop esi
pop edi
ret 0x14
push dword [esp + 0x458]
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
push dword [esp + 0x45c]
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
jmp 0x40e8c0
push esi
call dword [sym.imp.USER32.dll_SetThreadDesktop]
push ebp
call dword [sym.imp.USER32.dll_CloseDesktop]
xor ebp, ebp
mov ecx, 4
lea edx, [esp + 0x1ac]
mov dword [esp + 0x1ac], ebp
push ecx
push edx
push ecx
push ebp
push 0x4b8ec0
push dword [esp + 0x46c]
call dword [sym.imp.ADVAPI32.dll_RegSetValueExA]
test eax, eax
je 0x40e8a6
mov dword [esp + 4], 0
mov ecx, 0x4a3b98
mov dword [esp], ecx
mov dword [esp + 8], 0x4b8e40
cmp dword [0x4a3ba4], 0
jl 0x40e87a
lea eax, [esp + 0xc]
push eax
push dword [esp + 0xc]
call fcn.0045763c
push dword [esp + 0x458]
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
push dword [esp + 0x45c]
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
mov eax, 1
add esp, 0x474
pop ebx
pop ebp
pop esi
pop edi
ret 0x14
push dword [esp + 0x458]
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
push dword [esp + 0x45c]
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
test ebx, ebx
je 0x40e8cb
push ebx
call dword [sym.imp.KERNEL32.dll_FreeLibrary]
push 0x1f4
call dword [sym.imp.KERNEL32.dll_Sleep]
mov eax, 1
add esp, 0x474
pop ebx
pop ebp
pop esi
pop edi
ret 0x14
push 0x1f4
push 0x3e8
call dword [sym.imp.KERNEL32.dll_Beep]
jmp 0x40e61d
push edi
push esi
push ebp
push ebx
sub esp, 0x474
mov dword [ecx + 0x20], 1
mov ecx, 0x4a3b98
mov dword [esp + 0x460], ecx
mov dword [esp + 0x464], 0
mov dword [esp + 0x468], 0x4b8bc0
cmp dword [0x4a3ba4], 0
jl 0x40e950
lea eax, [esp + 0x46c]
push eax
push dword [esp + 0x46c]
call fcn.0045763c
lea eax, [esp + 0x1f0]
push 0x9c
push 0
push eax
call fcn.004910c4
add esp, 0xc
mov eax, 0x9c
mov word [esp + 0x214], ax
xor ecx, ecx
mov word [esp + 0x216], cx
lea edx, [esp + 0x1f0]
push edx
push 0xffffffffffffffff
push ecx
call dword [sym.imp.USER32.dll_EnumDisplaySettingsA]
mov dword [esp + 0x218], 0x3c0020
push 0x4b8adc
call dword [sym.imp.KERNEL32.dll_LoadLibraryA]
mov ebp, eax
push 0x4b8ae4
push ebp
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
mov esi, eax
push 0x4b8c20
push ebp
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
mov dword [esp + 0x46c], eax
mov edx, eax
test edx, edx
je 0x40ec84
test esi, esi
je 0x40ef83
lea edx, [esp + 0x29c]
push 0x1a8
push 0
push edx
call fcn.004910c4
add esp, 0xc
mov dword [esp + 0x29c], 0x1a8
xor edx, edx
mov byte [esp + 0x1f0], dl
lea edi, [esp + 0x29c]
push edx
push edi
push edx
push edx
call esi
test eax, eax
je 0x40ea7c
xor ebx, ebx
mov dword [esp + 0x470], ebp
mov ecx, eax
mov ebp, esi
lea edi, [esp + 0x2c0]
mov esi, 0x4b8ac0
mov dl, byte [edi]
cmp dl, byte [esi]
jne 0x40ea4f
or dl, dl
je 0x40ea4b
mov dl, byte [edi + 1]
cmp dl, byte [esi + 1]
jne 0x40ea4f
add edi, 2
add esi, 2
or dl, dl
jne 0x40ea2f
xor eax, eax
jmp 0x40ea54
sbb eax, eax
or eax, 1
test eax, eax
je 0x40ea73
inc ebx
xor ecx, ecx
lea edx, [esp + 0x29c]
push ecx
push edx
push ebx
push ecx
call ebp
mov ecx, eax
test ecx, ecx
jne 0x40ea23
jmp 0x40efc0
mov eax, ecx
mov ebp, dword [esp + 0x470]
test eax, eax
jne 0x40ead9
mov ecx, 0x4a3b98
mov dword [esp + 0x448], ecx
mov dword [esp + 0x44c], 0
mov dword [esp + 0x450], 0x4b8c40
mov dword [esp + 0x454], 0x4b8ac0
cmp dword [0x4a3ba4], 0
jl 0x40eaca
lea eax, [esp + 0x454]
push eax
push dword [esp + 0x454]
call fcn.0045763c
xor eax, eax
add esp, 0x474
pop ebx
pop ebp
pop esi
pop edi
ret 0x14
lea esi, [esp + 0xa8]
mov edi, 0x4b8ca0
mov dl, byte [edi]
inc edi
mov byte [esi], dl
inc esi
test dl, dl
jne 0x40eae5
mov dword [esp + 0x45c], 0
lea edx, [esp + 0x45c]
push edx
push 0x4b8d80
push reloc.WSOCK32.dll_bind
call dword [sym.imp.ADVAPI32.dll_RegCreateKeyA]
test eax, eax
je 0x40eb64
mov ecx, 0x4a3b98
mov dword [esp + 0x290], ecx
mov dword [esp + 0x294], 0
mov dword [esp + 0x298], 0x4b8cc0
cmp dword [0x4a3ba4], 0
jl 0x40eb55
lea eax, [esp + 0x29c]
push eax
push dword [esp + 0x29c]
call fcn.0045763c
xor eax, eax
add esp, 0x474
pop ebx
pop ebp
pop esi
pop edi
ret 0x14
mov dword [esp + 0x458], 0
lea ecx, [esp + 0xa8]
lea edx, [esp + 0x458]
push edx
push ecx
push dword [esp + 0x464]
call dword [sym.imp.ADVAPI32.dll_RegCreateKeyA]
test eax, eax
je 0x40ebf9
mov ecx, 0x4a3b98
mov dword [esp + 0x1e0], ecx
mov dword [esp + 0x1e4], 0
mov dword [esp + 0x1e8], 0x4b8de0
lea eax, [esp + 0xa8]
mov dword [esp + 0x1ec], eax
cmp dword [0x4a3ba4], 0
jl 0x40ebdd
lea eax, [esp + 0x1ec]
push eax
push dword [esp + 0x1ec]
call fcn.0045763c
push dword [esp + 0x45c]
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
xor eax, eax
add esp, 0x474
pop ebx
pop ebp
pop esi
pop edi
ret 0x14
mov dword [esp + 0x444], 1
mov ecx, 4
lea edx, [esp + 0x444]
push ecx
push edx
push ecx
push 0
push 0x4b8ec0
push dword [esp + 0x46c]
call dword [sym.imp.ADVAPI32.dll_RegSetValueExA]
test eax, eax
je 0x40ec93
mov ecx, 0x4a3b98
mov dword [esp + 0x1cc], ecx
mov dword [esp + 0x1d0], 0
mov dword [esp + 0x1d4], 0x4b8e40
cmp dword [0x4a3ba4], 0
jl 0x40ec6a
lea eax, [esp + 0x1d8]
push eax
push dword [esp + 0x1d8]
call fcn.0045763c
push dword [esp + 0x458]
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
push dword [esp + 0x45c]
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
xor eax, eax
add esp, 0x474
pop ebx
pop ebp
pop esi
pop edi
ret 0x14
lea esi, [esp + 0x1f0]
mov edi, 0x4b8ed4
mov dl, byte [edi]
inc edi
mov byte [esi], dl
inc esi
test dl, dl
jne 0x40ec9f
call dword [sym.imp.KERNEL32.dll_GetCurrentThreadId]
push eax
call dword [sym.imp.USER32.dll_GetThreadDesktop]
mov esi, eax
test esi, esi
je 0x40ecde
xor edx, edx
push 0x2000000
push edx
push edx
call dword [sym.imp.USER32.dll_OpenInputDesktop]
mov ebx, eax
test ebx, ebx
je 0x40efab
push ebx
call dword [sym.imp.USER32.dll_SetThreadDesktop]
jmp 0x40ece0
xor ebx, ebx
mov dword [esp + 0x218], 0x3c0020
mov edx, dword [esp + 0x258]
cmp edx, 8
je 0x40ed05
cmp edx, 0x10
je 0x40ed05
cmp edx, 0x20
jne 0x40eed1
mov edx, dword [esp + 0x494]
mov dword [esp + 0x25c], edx
mov ecx, dword [esp + 0x498]
mov dword [esp + 0x260], ecx
mov edi, dword [esp + 0x48c]
mov dword [esp + 0x21c], edi
mov edx, dword [esp + 0x490]
mov dword [esp + 0x220], edx
lea edx, [esp + 0x1d8]
push edx
call dword [sym.imp.USER32.dll_GetCursorPos]
lea ecx, [esp + 0x1f0]
xor edx, edx
push edx
push 1
push edx
push ecx
lea edi, [esp + 0x2b0]
push edi
mov edx, dword [esp + 0x480]
call edx
mov ecx, 0x4a3b98
mov dword [esp + 0x1bc], ecx
mov dword [esp + 0x1c0], 0
mov dword [esp + 0x1c4], 0x4b8ee0
mov dword [esp + 0x1c8], eax
cmp dword [0x4a3ba4], 0
jl 0x40edb0
lea edx, [esp + 0x1c8]
push edx
push dword [esp + 0x1c8]
call fcn.0045763c
push dword [esp + 0x1dc]
push dword [esp + 0x1dc]
call dword [sym.imp.USER32.dll_SetCursorPos]
lea edx, [esp + 0xc]
push 0x9c
push 0
push edx
call fcn.004910c4
add esp, 0xc
mov edx, 0x9c
mov word [esp + 0x30], dx
xor ecx, ecx
mov word [esp + 0x32], cx
mov dword [esp + 0x34], 0x20
mov edi, dword [esp + 0x48c]
mov dword [esp + 0x38], edi
mov edx, dword [esp + 0x490]
mov dword [esp + 0x3c], edx
push esi
call dword [sym.imp.USER32.dll_SetThreadDesktop]
push ebx
call dword [sym.imp.USER32.dll_CloseDesktop]
mov dword [esp + 0x28c], 1
mov ecx, 4
lea edx, [esp + 0x28c]
push ecx
push edx
push ecx
push 0
push 0x4b8ec0
push dword [esp + 0x46c]
call dword [sym.imp.ADVAPI32.dll_RegSetValueExA]
test eax, eax
je 0x40eeb2
mov ecx, 0x4a3b98
mov dword [esp + 0x1b0], ecx
mov dword [esp + 0x1b4], 0
mov dword [esp + 0x1b8], 0x4b8e40
cmp dword [0x4a3ba4], 0
jl 0x40ee86
lea eax, [esp + 0x1bc]
push eax
push dword [esp + 0x1bc]
call fcn.0045763c
push dword [esp + 0x458]
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
push dword [esp + 0x45c]
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
mov eax, 1
add esp, 0x474
pop ebx
pop ebp
pop esi
pop edi
ret 0x14
push dword [esp + 0x458]
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
push dword [esp + 0x45c]
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
jmp 0x40ef83
push esi
call dword [sym.imp.USER32.dll_SetThreadDesktop]
push ebx
call dword [sym.imp.USER32.dll_CloseDesktop]
xor ebx, ebx
mov dword [esp + 0x1ac], ebx
mov ecx, 4
lea edx, [esp + 0x1ac]
push ecx
push edx
push ecx
push ebx
push 0x4b8ec0
push dword [esp + 0x46c]
call dword [sym.imp.ADVAPI32.dll_RegSetValueExA]
test eax, eax
je 0x40ef69
mov ecx, 0x4a3b98
mov dword [esp], ecx
mov dword [esp + 4], 0
mov dword [esp + 8], 0x4b8e40
cmp dword [0x4a3ba4], 0
jl 0x40ef3d
lea eax, [esp + 0xc]
push eax
push dword [esp + 0xc]
call fcn.0045763c
push dword [esp + 0x458]
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
push dword [esp + 0x45c]
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
mov eax, 1
add esp, 0x474
pop ebx
pop ebp
pop esi
pop edi
ret 0x14
push dword [esp + 0x458]
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
push dword [esp + 0x45c]
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
test ebp, ebp
je 0x40ef8e
push ebp
call dword [sym.imp.KERNEL32.dll_FreeLibrary]
push 0x1f4
call dword [sym.imp.KERNEL32.dll_Sleep]
mov eax, 1
add esp, 0x474
pop ebx
pop ebp
pop esi
pop edi
ret 0x14
push 0x1f4
push 0x3e8
call dword [sym.imp.KERNEL32.dll_Beep]
jmp 0x40ece0
mov eax, ecx
mov ebp, dword [esp + 0x470]
jmp 0x40ea7c