Function at 0x418ac0
Capabilities:
Delete service
Get common file path
Query service status
Set registry value
Stop service

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x8d4
push ebx
push esi
push edi
sub esp, 0x28
mov eax, esp
mov dword [eax + 0x24], 0
call fcn.00404580
add esp, 0x28
mov dword [ebp - 0xa0], 0
xorps xmm0, xmm0
mov byte [ebp - 1], 0
movups xmmword [ebp - 0xb8], xmm0
mov byte [ebp - 2], 0
push 1
push 0
push 0
movq qword [ebp - 0xa8], xmm0
call dword [sym.imp.ADVAPI32.dll_OpenSCManagerW]
mov ebx, eax
mov dword [ebp - 8], ebx
test ebx, ebx
je 0x418bb9
push 0x10024
push str.Wallpaper_Engine_Service
push ebx
call dword [sym.imp.ADVAPI32.dll_OpenServiceW]
mov edi, eax
test edi, edi
je 0x418bb2
lea eax, [ebp - 0xb8]
push eax
push 1
push edi
call dword [sym.imp.ADVAPI32.dll_ControlService]
cmp eax, 1
jne 0x418ba0
mov ebx, dword [sym.imp.KERNEL32.dll_Sleep]
mov esi, 0x1388
push 0x64
call ebx
lea eax, [ebp - 0xb8]
push eax
push edi
call dword [sym.imp.ADVAPI32.dll_QueryServiceStatus]
test eax, eax
je 0x418b9d
nop word [eax + eax]
test esi, esi
jle 0x418b9d
mov eax, dword [ebp - 0xb4]
cmp eax, 3
je 0x418b84
cmp eax, 2
jne 0x418b9d
push 0x64
call ebx
lea eax, [ebp - 0xb8]
sub esi, 0x64
push eax
push edi
call dword [sym.imp.ADVAPI32.dll_QueryServiceStatus]
test eax, eax
jne 0x418b70
mov ebx, dword [ebp - 8]
push edi
call dword [sym.imp.ADVAPI32.dll_DeleteService]
push edi
mov byte [ebp - 1], 1
call dword [sym.imp.ADVAPI32.dll_CloseServiceHandle]
push ebx
call dword [sym.imp.ADVAPI32.dll_CloseServiceHandle]
lea ecx, [ebp - 0x6c]
call fcn.00402110
push str.version.json
mov ecx, eax
call fcn.00401af0
push eax
lea ecx, [ebp - 0xd0]
call fcn.00416810
mov edx, dword [ebp - 0x58]
cmp edx, 8
jb 0x418c13
mov ecx, dword [ebp - 0x6c]
lea edx, [edx*2 + 2]
mov eax, ecx
cmp edx, 0x1000
jb 0x418c09
mov ecx, dword [ecx - 4]
add edx, 0x23
sub eax, ecx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x419658
push edx
push ecx
call fcn.004386eb
add esp, 8
lea ecx, [ebp - 0xd0]
call fcn.004020a0
test al, al
je 0x418c2d
lea ecx, [ebp - 0xd0]
call fcn.004173e0
lea ecx, [ebp - 0x6c]
call fcn.00402110
push 0x473edc
mov ecx, eax
call fcn.00401af0
push eax
lea ecx, [ebp - 0x84]
call fcn.00416810
mov edx, dword [ebp - 0x58]
cmp edx, 8
jb 0x418c87
mov ecx, dword [ebp - 0x6c]
lea edx, [edx*2 + 2]
mov eax, ecx
cmp edx, 0x1000
jb 0x418c7d
mov ecx, dword [ecx - 4]
add edx, 0x23
sub eax, ecx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x41965d
push edx
push ecx
call fcn.004386eb
add esp, 8
lea ecx, [ebp - 0x84]
call fcn.004020a0
test al, al
je 0x418ca1
lea ecx, [ebp - 0x84]
call fcn.004173e0
lea ecx, [ebp - 0x6c]
call fcn.00402110
push 0x473f34
mov ecx, eax
call fcn.00401af0
push eax
lea ecx, [ebp - 0x54]
call fcn.00416810
cmp dword [ebp - 0x40], 8
lea eax, [ebp - 0x54]
push dword [ebp - 0x44]
cmovae eax, dword [ebp - 0x54]
lea ecx, [ebp - 0x84]
push eax
call fcn.004164d0
mov edx, dword [ebp - 0x40]
cmp edx, 8
jb 0x418d12
mov ecx, dword [ebp - 0x54]
lea edx, [edx*2 + 2]
mov eax, ecx
cmp edx, 0x1000
jb 0x418d08
mov ecx, dword [ecx - 4]
add edx, 0x23
sub eax, ecx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x419662
push edx
push ecx
call fcn.004386eb
add esp, 8
mov edx, dword [ebp - 0x58]
cmp edx, 8
jb 0x418d4c
mov ecx, dword [ebp - 0x6c]
lea edx, [edx*2 + 2]
mov eax, ecx
cmp edx, 0x1000
jb 0x418d42
mov ecx, dword [ecx - 4]
add edx, 0x23
sub eax, ecx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x419662
push edx
push ecx
call fcn.004386eb
add esp, 8
lea ecx, [ebp - 0x84]
call fcn.004020a0
test al, al
je 0x418d66
lea ecx, [ebp - 0x84]
call fcn.004173e0
lea ecx, [ebp - 0x9c]
call fcn.00402110
push str.projects_defaultprojects_visibility.json
mov ecx, eax
call fcn.00401af0
push eax
lea ecx, [ebp - 0x6c]
call fcn.00416810
mov edx, dword [ebp - 0x88]
cmp edx, 8
jb 0x418dc6
mov ecx, dword [ebp - 0x9c]
lea edx, [edx*2 + 2]
mov eax, ecx
cmp edx, 0x1000
jb 0x418dbc
mov ecx, dword [ecx - 4]
add edx, 0x23
sub eax, ecx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x419667
push edx
push ecx
call fcn.004386eb
add esp, 8
lea ecx, [ebp - 0x6c]
call fcn.004020a0
test al, al
je 0x418dda
lea ecx, [ebp - 0x6c]
call fcn.004173e0
lea ecx, [ebp - 0x20]
call fcn.00402110
push str.ui_thumbnails
mov ecx, eax
call fcn.00401af0
push eax
lea ecx, [ebp - 0x9c]
call fcn.00416810
mov edx, dword [ebp - 0xc]
cmp edx, 8
jb 0x418e34
mov ecx, dword [ebp - 0x20]
lea edx, [edx*2 + 2]
mov eax, ecx
cmp edx, 0x1000
jb 0x418e2a
mov ecx, dword [ecx - 4]
add edx, 0x23
sub eax, ecx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x41966c
push edx
push ecx
call fcn.004386eb
add esp, 8
lea ecx, [ebp - 0x9c]
call fcn.00402030
test al, al
je 0x418e59
lea ecx, [ebp - 0x9c]
call fcn.00417450
lea ecx, [ebp - 0x9c]
call fcn.004173e0
lea ecx, [ebp - 0x20]
call fcn.00402110
push str.projects
mov ecx, eax
call fcn.00401af0
push str.temp
mov ecx, eax
call fcn.00401af0
push str.transcode
mov ecx, eax
call fcn.00401af0
push eax
lea ecx, [ebp - 0x38]
call fcn.00416810
mov edx, dword [ebp - 0xc]
cmp edx, 8
jb 0x418ec8
mov ecx, dword [ebp - 0x20]
lea edx, [edx*2 + 2]
mov eax, ecx
cmp edx, 0x1000
jb 0x418ebe
mov ecx, dword [ecx - 4]
add edx, 0x23
sub eax, ecx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x419671
push edx
push ecx
call fcn.004386eb
add esp, 8
lea ecx, [ebp - 0x38]
call fcn.00402030
test al, al
je 0x418ee4
lea ecx, [ebp - 0x38]
call fcn.00417450
lea ecx, [ebp - 0x38]
call fcn.004173e0
lea ecx, [ebp - 0x20]
call fcn.00402110
push str.projects
mov ecx, eax
call fcn.00401af0
push str.temp
mov ecx, eax
call fcn.00401af0
push str.mobile
mov ecx, eax
call fcn.00401af0
lea ecx, [ebp - 0x38]
cmp ecx, eax
je 0x418f2c
cmp dword [eax + 0x14], 8
mov ecx, dword [eax + 0x10]
jb 0x418f22
mov eax, dword [eax]
push ecx
push eax
lea ecx, [ebp - 0x38]
call fcn.004164d0
mov edx, dword [ebp - 0xc]
cmp edx, 8
jb 0x418f66
mov ecx, dword [ebp - 0x20]
lea edx, [edx*2 + 2]
mov eax, ecx
cmp edx, 0x1000
jb 0x418f5c
mov ecx, dword [ecx - 4]
add edx, 0x23
sub eax, ecx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x419676
push edx
push ecx
call fcn.004386eb
add esp, 8
lea ecx, [ebp - 0x38]
call fcn.00402030
test al, al
je 0x418f82
lea ecx, [ebp - 0x38]
call fcn.00417450
lea ecx, [ebp - 0x38]
call fcn.004173e0
lea ecx, [ebp - 0x20]
call fcn.00402110
push str.projects
mov ecx, eax
call fcn.00401af0
push str.temp
mov ecx, eax
call fcn.00401af0
push str.edit
mov ecx, eax
call fcn.00401af0
lea ecx, [ebp - 0x38]
cmp ecx, eax
je 0x418fca
cmp dword [eax + 0x14], 8
mov ecx, dword [eax + 0x10]
jb 0x418fc0
mov eax, dword [eax]
push ecx
push eax
lea ecx, [ebp - 0x38]
call fcn.004164d0
mov edx, dword [ebp - 0xc]
cmp edx, 8
jb 0x419004
mov ecx, dword [ebp - 0x20]
lea edx, [edx*2 + 2]
mov eax, ecx
cmp edx, 0x1000
jb 0x418ffa
mov ecx, dword [ecx - 4]
add edx, 0x23
sub eax, ecx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x41967b
push edx
push ecx
call fcn.004386eb
add esp, 8
lea ecx, [ebp - 0x38]
call fcn.00402030
test al, al
je 0x419020
lea ecx, [ebp - 0x38]
call fcn.00417450
lea ecx, [ebp - 0x38]
call fcn.004173e0
lea ecx, [ebp - 0x20]
call fcn.00402110
push str.projects
mov ecx, eax
call fcn.00401af0
push str.temp
mov ecx, eax
call fcn.00401af0
push str.video
mov ecx, eax
call fcn.00401af0
lea ecx, [ebp - 0x38]
cmp ecx, eax
je 0x419068
cmp dword [eax + 0x14], 8
mov ecx, dword [eax + 0x10]
jb 0x41905e
mov eax, dword [eax]
push ecx
push eax
lea ecx, [ebp - 0x38]
call fcn.004164d0
mov edx, dword [ebp - 0xc]
cmp edx, 8
jb 0x4190a2
mov ecx, dword [ebp - 0x20]
lea edx, [edx*2 + 2]
mov eax, ecx
cmp edx, 0x1000
jb 0x419098
mov ecx, dword [ecx - 4]
add edx, 0x23
sub eax, ecx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x419680
push edx
push ecx
call fcn.004386eb
add esp, 8
lea ecx, [ebp - 0x38]
call fcn.00402030
test al, al
je 0x4190be
lea ecx, [ebp - 0x38]
call fcn.00417450
lea ecx, [ebp - 0x38]
call fcn.004173e0
lea ecx, [ebp - 0x20]
call fcn.00402110
push str.bin_wallpaperservice32_c.exe
mov ecx, eax
call fcn.00401af0
push eax
lea ecx, [ebp - 0x54]
call fcn.00416810
cmp dword [ebp - 0x40], 8
lea eax, [ebp - 0x54]
push dword [ebp - 0x44]
cmovae eax, dword [ebp - 0x54]
lea ecx, [ebp - 0x84]
push eax
call fcn.004164d0
mov edx, dword [ebp - 0x40]
cmp edx, 8
jb 0x41912f
mov ecx, dword [ebp - 0x54]
lea edx, [edx*2 + 2]
mov eax, ecx
cmp edx, 0x1000
jb 0x419125
mov ecx, dword [ecx - 4]
add edx, 0x23
sub eax, ecx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x419685
push edx
push ecx
call fcn.004386eb
add esp, 8
mov edx, dword [ebp - 0xc]
cmp edx, 8
jb 0x419169
mov ecx, dword [ebp - 0x20]
lea edx, [edx*2 + 2]
mov eax, ecx
cmp edx, 0x1000
jb 0x41915f
mov ecx, dword [ecx - 4]
add edx, 0x23
sub eax, ecx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x419685
push edx
push ecx
call fcn.004386eb
add esp, 8
lea ecx, [ebp - 0x84]
call fcn.004020a0
test al, al
je 0x419194
lea ecx, [ebp - 0x84]
call fcn.004173e0
test al, al
jne 0x419190
cmp byte [ebp - 1], al
jne 0x419190
xor bl, bl
jmp 0x419197
mov bl, 1
jmp 0x419197
mov bl, byte [ebp - 1]
push 0x800
lea eax, [ebp - 0x8d0]
push 0
push eax
call fcn.0043d050
add esp, 0xc
lea eax, [ebp - 0x8d0]
push eax
push 0
push 0
push 0x25
push 0
call dword [sym.imp.SHELL32.dll_SHGetFolderPathW]
test eax, eax
js 0x419345
lea eax, [ebp - 8]
push eax
call dword [sym.imp.KERNEL32.dll_Wow64DisableWow64FsRedirection]
lea ecx, [ebp - 0x8d0]
lea edx, [ecx + 2]
nop dword [eax]
mov ax, word [ecx]
add ecx, 2
test ax, ax
jne 0x4191e0
sub ecx, edx
mov dword [ebp - 0x20], 0
sar ecx, 1
lea eax, [ebp - 0x8d0]
push ecx
push eax
lea ecx, [ebp - 0x20]
mov dword [ebp - 0x10], 0
mov dword [ebp - 0xc], 7
call fcn.004164d0
push str.wpxscreensaver64.scr
lea ecx, [ebp - 0x20]
call fcn.00401a50
push eax
lea ecx, [ebp - 0x54]
call fcn.00416810
mov edx, dword [ebp - 0xc]
cmp edx, 8
jb 0x419264
mov ecx, dword [ebp - 0x20]
lea edx, [edx*2 + 2]
mov eax, ecx
cmp edx, 0x1000
jb 0x41925a
mov ecx, dword [ecx - 4]
add edx, 0x23
sub eax, ecx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x41968a
push edx
push ecx
call fcn.004386eb
add esp, 8
lea ecx, [ebp - 0x54]
call fcn.004020a0
test al, al
je 0x41927c
lea ecx, [ebp - 0x54]
mov byte [ebp - 2], 1
call fcn.004173e0
lea ecx, [ebp - 0x8d0]
lea edx, [ecx + 2]
mov ax, word [ecx]
add ecx, 2
test ax, ax
jne 0x419285
sub ecx, edx
mov dword [ebp - 0x20], 0
sar ecx, 1
lea eax, [ebp - 0x8d0]
push ecx
push eax
lea ecx, [ebp - 0x20]
mov dword [ebp - 0x10], 0
mov dword [ebp - 0xc], 7
call fcn.004164d0
push str.wpxscreensaver32.scr
lea ecx, [ebp - 0x20]
call fcn.00401a50
lea ecx, [ebp - 0x54]
cmp ecx, eax
je 0x4192e2
cmp dword [eax + 0x14], 8
mov ecx, dword [eax + 0x10]
jb 0x4192d8
mov eax, dword [eax]
push ecx
push eax
lea ecx, [ebp - 0x54]
call fcn.004164d0
mov edx, dword [ebp - 0xc]
cmp edx, 8
jb 0x41931c
mov ecx, dword [ebp - 0x20]
lea edx, [edx*2 + 2]
mov eax, ecx
cmp edx, 0x1000
jb 0x419312
mov ecx, dword [ecx - 4]
add edx, 0x23
sub eax, ecx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x41968f
push edx
push ecx
call fcn.004386eb
add esp, 8
lea ecx, [ebp - 0x54]
call fcn.004020a0
test al, al
je 0x419334
lea ecx, [ebp - 0x54]
mov byte [ebp - 2], 1
call fcn.004173e0
push dword [ebp - 8]
call dword [sym.imp.KERNEL32.dll_Wow64RevertWow64FsRedirection]
lea ecx, [ebp - 0x54]
call fcn.00401fa0
mov esi, dword [sym.imp.ADVAPI32.dll_RegOpenKeyExW]
test bl, bl
mov edi, dword [sym.imp.ADVAPI32.dll_RegSetValueExW]
mov ebx, dword [sym.imp.ADVAPI32.dll_RegCloseKey]
je 0x419392
lea eax, [ebp - 8]
mov dword [ebp - 0x3c], 1
push eax
push 0xf003f
push 0
push str.SoftwareWallpaperEngine_
push 0x80000001
call esi
push 4
lea eax, [ebp - 0x3c]
push eax
push 4
push 0
push str.needsReinstallService
push dword [ebp - 8]
call edi
push dword [ebp - 8]
call ebx
cmp byte [ebp - 2], 0
je 0x4193cf
lea eax, [ebp - 8]
mov dword [ebp - 0x3c], 1
push eax
push 0xf003f
push 0
push str.SoftwareWallpaperEngine_
push 0x80000001
call esi
push 4
lea eax, [ebp - 0x3c]
push eax
push 4
push 0
push str.needsReinstallScreensaver
push dword [ebp - 8]
call edi
push dword [ebp - 8]
call ebx
lea ecx, [ebp - 0x20]
call fcn.00402110
push 0x477028
mov ecx, eax
call fcn.00401af0
lea ecx, [ebp - 0x38]
cmp ecx, eax
je 0x4193ff
cmp dword [eax + 0x14], 8
mov ecx, dword [eax + 0x10]
jb 0x4193f5
mov eax, dword [eax]
push ecx
push eax
lea ecx, [ebp - 0x38]
call fcn.004164d0
mov edx, dword [ebp - 0xc]
cmp edx, 8
jb 0x419439
mov ecx, dword [ebp - 0x20]
lea edx, [edx*2 + 2]
mov eax, ecx
cmp edx, 0x1000
jb 0x41942f
mov ecx, dword [ecx - 4]
add edx, 0x23
sub eax, ecx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x419694
push edx
push ecx
call fcn.004386eb
add esp, 8
lea ecx, [ebp - 0x38]
call fcn.00402030
test al, al
je 0x419455
lea ecx, [ebp - 0x38]
call fcn.00417450
lea ecx, [ebp - 0x38]
call fcn.004173e0
lea ecx, [ebp - 0x20]
call fcn.00402110
push str.plugins_led
mov ecx, eax
enter 0xffffffffffff87e8, 0xffffffffffffff86
invalid
dec dword [ebp - 0x37c437b3]
je 0x419485
cmp dword [eax + 0x14], 8
mov ecx, dword [eax + 0x10]
jb 0x41947b
mov eax, dword [eax]
push ecx
push eax
lea ecx, [ebp - 0x38]
call fcn.004164d0
mov edx, dword [ebp - 0xc]
cmp edx, 8
jb 0x4194bf
mov ecx, dword [ebp - 0x20]
lea edx, [edx*2 + 2]
mov eax, ecx
cmp edx, 0x1000
jb 0x4194b5
mov ecx, dword [ecx - 4]
add edx, 0x23
sub eax, ecx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x419699
push edx
push ecx
call fcn.004386eb
add esp, 8
lea ecx, [ebp - 0x38]
call fcn.00402030
test al, al
je 0x4194db
lea ecx, [ebp - 0x38]
call fcn.00417450
lea ecx, [ebp - 0x38]
call fcn.004173e0
lea ecx, [ebp - 0x20]
call fcn.00402110
push str.plugins
mov ecx, eax
call fcn.00401af0
lea ecx, [ebp - 0x38]
cmp ecx, eax
je 0x41950b
cmp dword [eax + 0x14], 8
mov ecx, dword [eax + 0x10]
jb 0x419501
mov eax, dword [eax]
push ecx
push eax
lea ecx, [ebp - 0x38]
call fcn.004164d0
mov edx, dword [ebp - 0xc]
cmp edx, 8
jb 0x419545
mov ecx, dword [ebp - 0x20]
lea edx, [edx*2 + 2]
mov eax, ecx
cmp edx, 0x1000
jb 0x41953b
mov ecx, dword [ecx - 4]
add edx, 0x23
sub eax, ecx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x41969e
push edx
push ecx
call fcn.004386eb
add esp, 8
lea ecx, [ebp - 0x38]
call fcn.00402030
test al, al
je 0x419559
lea ecx, [ebp - 0x38]
call fcn.004173e0
mov edx, dword [ebp - 0x24]
cmp edx, 8
jb 0x419593
mov ecx, dword [ebp - 0x38]
lea edx, [edx*2 + 2]
mov eax, ecx
cmp edx, 0x1000
jb 0x419589
mov ecx, dword [ecx - 4]
add edx, 0x23
sub eax, ecx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x4196a3
push edx
push ecx
call fcn.004386eb
add esp, 8
mov edx, dword [ebp - 0x88]
cmp edx, 8
jb 0x4195d3
mov ecx, dword [ebp - 0x9c]
lea edx, [edx*2 + 2]
mov eax, ecx
cmp edx, 0x1000
jb 0x4195c9
mov ecx, dword [ecx - 4]
add edx, 0x23
sub eax, ecx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x4196a3
push edx
push ecx
call fcn.004386eb
add esp, 8
mov edx, dword [ebp - 0x58]
cmp edx, 8
jb 0x41960d
mov ecx, dword [ebp - 0x6c]
lea edx, [edx*2 + 2]
mov eax, ecx
cmp edx, 0x1000
jb 0x419603
mov ecx, dword [ecx - 4]
add edx, 0x23
sub eax, ecx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x4196a3
push edx
push ecx
call fcn.004386eb
add esp, 8
mov edx, dword [ebp - 0x70]
cmp edx, 8
jb 0x419646
mov ecx, dword [ebp - 0x84]
lea edx, [edx*2 + 2]
mov eax, ecx
cmp edx, 0x1000
jb 0x41963c
mov ecx, dword [ecx - 4]
add edx, 0x23
sub eax, ecx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x4196a3
push edx
push ecx
call fcn.004386eb
add esp, 8
lea ecx, [ebp - 0xd0]
call fcn.00401fa0
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
call fcn.0043fc0f
call fcn.0043fc0f
call fcn.0043fc0f
call fcn.0043fc0f
call fcn.0043fc0f
call fcn.0043fc0f
call fcn.0043fc0f
call fcn.0043fc0f
call fcn.0043fc0f
call fcn.0043fc0f
call fcn.0043fc0f
call fcn.0043fc0f
call fcn.0043fc0f
call fcn.0043fc0f
call fcn.0043fc0f
call fcn.0043fc0f
int3