Function at 0x408550
Capabilities:
Check if process is running under wine
Contain obfuscated stackstrings
Create process on windows
Create thread
Get number of processors
Get process heap flags
Query or enumerate registry value
Set registry value
Terminate process

Disassembly:
push ebp
mov ebp, esp
push edi
push esi
push ebx
sub esp, 0x63c
mov edi, dword [ebp + 8]
movzx esi, word [edi]
mov dword [ebp - 0x5d4], edi
test si, si
je 0x409c19
mov word [ebp - 0x5cc], si
mov eax, esi
mov edx, edi
jmp 0x408589
test ax, ax
je 0x408bb9
cmp ax, 0x20
mov esi, edx
sete bl
cmp ax, 9
movzx eax, word [edx + 2]
sete cl
add edx, 2
or bl, cl
je 0x408580
mov dword [ebp - 0x5d4], edx
mov edx, dword [ebp - 0x5d4]
mov word [esi], 0
test ax, ax
jne 0x4085d0
jmp 0x409483
movzx eax, word [edx + 2]
add edx, 2
test ax, ax
je 0x409483
cmp ax, 0x20
je 0x4085c0
cmp ax, 9
je 0x4085c0
mov dword [ebp - 0x5d4], edx
movzx esi, word [edi]
cmp si, 0x3d
je 0x4085f1
cmp si, 0x2c
jne 0x408604
movzx eax, word [edi + 2]
test ax, ax
je 0x408604
cmp ax, 0x2c
jne 0x409ab2
mov dword [ebp - 0x48c], 0x208
mov eax, dword fs:[0x18]
mov eax, dword [eax + 0x24]
mov dword [esp], eax
call sym._GetThreadDesktop_4
sub esp, 4
test eax, eax
je 0x408659
mov dword [esp + 0x10], 0
mov dword [esp + 0xc], 0x104
mov dword [esp + 8], 0x41b000
mov dword [esp + 4], 2
mov dword [esp], eax
call sym._GetUserObjectInformationW_20
sub esp, 0x14
test eax, eax
jne 0x4097e9
lea eax, [ebp - 0x360]
mov dword [esp + 4], str.SoftwareWineExplorer
mov dword [esp + 8], eax
mov dword [esp], 0x80000001
mov dword [ebp - 0x5d0], eax
call sym._RegOpenKeyW_12
sub esp, 0xc
test eax, eax
lea eax, [ebp - 0x48c]
mov dword [ebp - 0x5dc], eax
jne 0x4086dc
mov dword [esp + 0x14], eax
mov eax, dword [ebp - 0x360]
mov dword [esp + 0x10], 0x41b000
mov dword [esp + 0xc], 0
mov dword [esp + 8], 0
mov dword [esp + 4], str.Desktop
mov dword [esp], eax
call sym._RegQueryValueExW_24
sub esp, 0x18
test eax, eax
mov eax, dword [ebp - 0x360]
je 0x409578
mov dword [esp], eax
call sym._RegCloseKey_4
push esi
lea eax, [ebp - 0x5b8]
mov dword [esp], eax
mov dword [ebp - 0x5d8], eax
call sym._UuidCreate_4
test byte [0x411020], 8
mov dword [ebp - 0x5ec], 0
push eax
mov dword [ebp - 0x5e0], 0
jne 0x40948b
mov dword [ebp - 0x5e4], 0
mov ecx, dword [ebp - 0x5d0]
xor eax, eax
lea esi, [esi]
movzx edx, word [eax + 0x414270]
mov word [ecx + eax], dx
add eax, 2
test dx, dx
jne 0x408728
lea eax, [ebp - 0x5bc]
mov dword [esp + 4], str.SoftwareWineDrivers
mov dword [esp + 8], eax
mov dword [esp], 0x80000001
mov dword [ebp - 0x5f0], eax
call sym._RegOpenKeyW_12
sub esp, 0xc
test eax, eax
je 0x409b5f
mov eax, dword [sym.imp.ucrtbase.dll_wcschr]
mov esi, dword [ebp - 0x5d0]
mov dword [ebp - 0x5cc], eax
jmp 0x4087a4
mov dword [esp + 8], eax
lea eax, [ebp - 0x568]
mov dword [esp + 4], str.Unknown_error___u_.
mov dword [esp], eax
call sym._sprintf.constprop.0
test ebx, ebx
je 0x408853
mov esi, ebx
mov dword [esp + 4], 0x2c
mov eax, dword [ebp - 0x5cc]
xor ebx, ebx
mov dword [esp], esi
call eax
test eax, eax
je 0x4087c5
xor edi, edi
lea ebx, [eax + 2]
mov word [eax], di
mov dword [esp + 4], str.null
mov dword [esp], esi
call dword [sym.imp.ucrtbase.dll_wcscmp]
test eax, eax
je 0x4093d3
lea eax, [ebp - 0x5a8]
mov dword [esp + 0xc], esi
mov dword [esp + 8], str.wine_s.drv
mov dword [esp + 4], 0x20
mov dword [esp], eax
call dbg.swprintf
lea eax, [ebp - 0x5a8]
mov dword [esp], eax
call dword [sym.imp.kernel32.dll_LoadLibraryW]
sub esp, 4
test eax, eax
jne 0x40946c
mov eax, dword fs:[0x18]
mov eax, dword [eax + 0x34]
cmp eax, 0x7e
je 0x408b30
cmp eax, 0x45a
jne 0x408780
lea eax, [ebp - 0x568]
mov esi, str.Make_sure_that_your_X_server_is_running_and_that__DISPLAY_is_set_correctly.
mov ecx, 0x13
mov edi, eax
rep movsd dword es:[edi], dword [esi]
test ebx, ebx
jne 0x4087a2
mov dword [ebp - 0x5e8], 0
test byte [0x411020], 8
jne 0x40940b
movzx eax, byte [ebp - 0x5a9]
mov edi, dword [ebp - 0x5dc]
mov dword [esp + 8], str.SystemCurrentControlSetControlVideo_08x__04x__04x__02x_02x__02x_02x_02x_02x_02x_02x0000
mov dword [esp + 4], 0x86
mov dword [esp + 0x34], eax
movzx eax, byte [ebp - 0x5aa]
mov dword [esp], edi
mov dword [esp + 0x30], eax
movzx eax, byte [ebp - 0x5ab]
mov dword [esp + 0x2c], eax
movzx eax, byte [ebp - 0x5ac]
mov dword [esp + 0x28], eax
movzx eax, byte [ebp - 0x5ad]
mov dword [esp + 0x24], eax
movzx eax, byte [ebp - 0x5ae]
mov dword [esp + 0x20], eax
movzx eax, byte [ebp - 0x5af]
mov dword [esp + 0x1c], eax
movzx eax, byte [ebp - 0x5b0]
mov dword [esp + 0x18], eax
movzx eax, word [ebp - 0x5b2]
mov dword [esp + 0x14], eax
movzx eax, word [ebp - 0x5b4]
mov dword [esp + 0x10], eax
mov eax, dword [ebp - 0x5b8]
mov dword [esp + 0xc], eax
call dbg.swprintf
mov eax, dword [ebp - 0x5f0]
mov dword [esp + 0x20], 0
mov dword [esp + 0x18], 0
mov dword [esp + 0x1c], eax
mov dword [esp + 0x14], 2
mov dword [esp + 0x10], 1
mov dword [esp + 0xc], 0
mov dword [esp + 8], 0
mov dword [esp + 4], edi
mov dword [esp], 0x80000002
call sym._RegCreateKeyExW_36
sub esp, 0x24
test eax, eax
jne 0x4089ce
cmp dword [ebp - 0x5e8], 0
mov esi, dword [ebp - 0x5bc]
jne 0x408968
test ebx, ebx
je 0x4096b7
cmp word [ebp - 0x5a8], 0
lea eax, [ebp - 0x5a8]
je 0x408989
lea esi, [esi]
nop
add eax, 2
cmp word [eax], 0
jne 0x408980
lea edi, [ebp - 0x5a8]
mov dword [esp + 0xc], 1
sub eax, edi
mov dword [esp + 0x10], edi
add eax, 2
mov dword [esp + 8], 0
mov dword [esp + 0x14], eax
mov dword [esp + 4], str.GraphicsDriver
mov dword [esp], esi
call sym._RegSetValueExW_24
sub esp, 0x18
mov eax, dword [ebp - 0x5bc]
mov dword [esp], eax
call sym._RegCloseKey_4
push ebx
mov eax, dword [ebp - 0x5d8]
mov dword [esp + 0x28], 0
mov dword [esp + 0x24], 0
mov dword [esp + 0x2c], eax
mov dword [esp + 0x20], 0
mov dword [esp + 0x1c], 0
mov dword [esp + 0x18], 0
mov dword [esp + 0x14], 0
mov dword [esp + 0x10], 0
mov dword [esp + 0xc], 0x86000000
mov dword [esp + 8], 0
mov dword [esp + 4], 0x8001
mov dword [esp], 0
call sym._CreateWindowExW_48
mov dword [ebp - 0x5d8], eax
sub esp, 0x30
test eax, eax
je 0x408e70
mov dword [esp + 0x2c], 0
mov dword [esp + 0x28], 0
mov dword [esp + 0x24], 0
mov dword [esp + 0x20], 0
mov dword [esp + 0x1c], 0x64
mov dword [esp + 0x18], 0x64
mov dword [esp + 0x14], 0
mov dword [esp + 0x10], 0
mov dword [esp + 0xc], 0x86000000
mov dword [esp + 8], 0
mov dword [esp + 4], global_messageW
mov dword [esp], 0
call sym._CreateWindowExW_48
mov eax, dword [ebp - 0x5d8]
sub esp, 0x30
mov dword [esp + 8], dbg.desktop_wnd_proc
mov dword [esp + 4], 0xfffffffc
mov dword [esp], eax
call sym._SetWindowLongW_12
sub esp, 0xc
cmp dword [ebp - 0x5e4], 0
mov dword [0x41b208], eax
je 0x408bcf
mov eax, dword [ebp - 0x5e8]
test eax, eax
je 0x408bcf
mov ebx, dword [ebp - 0x5c0]
mov esi, dword [ebp - 0x5c4]
mov dword [esp], eax
mov dword [esp + 4], str.wine_create_desktop
call dword [sym.imp.kernel32.dll_GetProcAddress]
push ecx
push ecx
test eax, eax
je 0x408bcf
mov dword [esp + 4], ebx
mov dword [esp], esi
call eax
test eax, eax
sete al
movzx eax, al
jmp 0x408bd4
mov dword [ebp - 0x568], 0x20656854
mov esi, 0x21
mov dword [ebp - 0x564], 0x70617267
mov dword [ebp - 0x560], 0x73636968
mov dword [ebp - 0x55c], 0x69726420
mov dword [ebp - 0x558], 0x20726576
mov dword [ebp - 0x554], 0x6d207369
mov dword [ebp - 0x550], 0x69737369
mov dword [ebp - 0x54c], 0x202e676e
mov dword [ebp - 0x548], 0x63656843
mov dword [ebp - 0x544], 0x6f79206b
mov dword [ebp - 0x540], 0x62207275
mov dword [ebp - 0x53c], 0x646c6975
mov word [ebp - 0x538], si
jmp 0x40879a
movzx esi, word [ebp - 0x5cc]
mov dword [ebp - 0x5d4], 0
jmp 0x4085e5
mov eax, 1
mov dword [esp + 4], 0x7f05
mov dword [esp], 0
mov dword [0x41b294], eax
call sym._LoadIconW_8
push edx
push edx
mov dword [esp + 0xc], eax
mov eax, dword [ebp - 0x5d8]
mov dword [esp + 8], 1
mov dword [esp + 4], pe_nt_image_headers32
mov dword [esp], eax
call sym._SendMessageW_16
mov edi, dword [ebp - 0x5e0]
sub esp, 0x10
mov eax, edi
test edi, edi
je 0x408cec
cmp word [edi], 0
je 0x409704
nop
add eax, 2
cmp word [eax], 0
jne 0x408c30
sub eax, dword [ebp - 0x5e0]
mov dword [esp + 4], 0
add eax, 0x22
mov dword [esp + 8], eax
mov edx, dword fs:[0x18]
mov eax, dword [edx + 0x30]
mov eax, dword [eax + 0x18]
mov dword [esp], eax
call dword [sym.imp.kernel32.dll_HeapAlloc]
mov ecx, dword [ebp - 0x5e0]
mov ebx, eax
sub esp, 0xc
xor eax, eax
test ebx, ebx
je 0x409704
lea esi, [esi]
movzx edx, word [ecx + eax]
mov word [ebx + eax], dx
add eax, 2
test dx, dx
jne 0x408c80
mov dword [esp + 4], 0x413d94
mov dword [esp], ebx
call dbg.lstrcatW
push esi
push esi
mov dword [esp + 4], str.Wine_desktop
mov dword [esp], ebx
call dbg.lstrcatW
mov eax, dword [ebp - 0x5d8]
push edi
push edi
mov dword [esp + 4], ebx
mov dword [esp], eax
call sym._SetWindowTextW_8
push eax
push eax
mov eax, dword fs:[0x18]
mov dword [esp + 8], ebx
mov dword [esp + 4], 0
mov eax, dword [eax + 0x30]
mov eax, dword [eax + 0x18]
mov dword [esp], eax
call dword [sym.imp.kernel32.dll_HeapFree]
sub esp, 0xc
mov dword [esp], 0x4f
call sym._GetSystemMetrics_4
push ebx
mov edi, eax
mov dword [esp], 0x4e
call sym._GetSystemMetrics_4
push esi
mov esi, eax
mov dword [esp], 0x4d
call sym._GetSystemMetrics_4
push edx
mov ebx, eax
mov dword [esp], 0x4c
call sym._GetSystemMetrics_4
push ecx
mov dword [esp + 8], eax
mov eax, dword [ebp - 0x5d8]
mov dword [esp + 0x14], edi
lea edi, [ebp - 0x568]
mov dword [esp + 0xc], ebx
mov dword [esp + 0x18], 0x40
mov dword [esp + 0x10], esi
mov dword [esp + 4], 0
mov dword [esp], eax
call sym._SetWindowPos_28
sub esp, 0x1c
mov dword [esp + 0xc], 0
mov dword [esp + 8], 0
mov dword [esp + 4], 0
mov dword [esp], 0x14
call sym._SystemParametersInfoW_16
sub esp, 0x10
mov dword [esp], 0
call sym._ClipCursor_4
xor eax, eax
mov ecx, 0x37
mov dword [ebp - 0x360], 0x348
push ebx
rep stosd dword es:[edi], eax
lea edi, [ebp - 0x35c]
mov word [ebp - 0x524], 0xdc
mov eax, edi
shr eax, 0x10
mov dword [ebp - 0x600], eax
xor eax, eax
mov ecx, dword [ebp - 0x5d0]
mov dword [esp + 4], eax
lea esi, [eax + 1]
mov dword [esp + 0xc], 0
mov dword [esp + 8], ecx
mov dword [esp], 0
call sym._EnumDisplayDevicesW_16
sub esp, 0x10
test eax, eax
je 0x40927c
lea eax, [ebp - 0x568]
mov dword [esp + 0xc], 0
mov dword [esp + 8], eax
mov dword [esp + 4], 0xffffffff
mov dword [esp], edi
call sym._EnumDisplaySettingsExW_16
sub esp, 0x10
test eax, eax
je 0x409090
test byte [0x411020], 8
jne 0x4090d8
lea eax, [ebp - 0x568]
mov dword [esp + 0x10], 0
mov dword [esp + 0xc], 0x10000009
mov dword [esp + 8], 0
mov dword [esp + 4], eax
mov dword [esp], edi
call sym._ChangeDisplaySettingsExW_20
sub esp, 0x14
test eax, eax
je 0x408e68
test byte [0x411020], 2
jne 0x409052
mov eax, esi
jmp 0x408dc0
xor ebx, ebx
mov eax, dword [ebp - 0x5d4]
test eax, eax
je 0x408f0e
lea edx, [ebp - 0x35c]
mov ecx, 0x10
xor eax, eax
mov edi, edx
rep stosd dword es:[edi], eax
mov dword [ebp - 0x360], 0x44
test byte [0x411020], 8
jne 0x409a7a
mov eax, dword [ebp - 0x5dc]
mov dword [esp + 0x1c], 0
mov dword [esp + 0x18], 0
mov dword [esp + 0x24], eax
mov eax, dword [ebp - 0x5d0]
mov dword [esp + 0x14], 0
mov dword [esp + 0x20], eax
mov eax, dword [ebp - 0x5d4]
mov dword [esp + 0x10], 0
mov dword [esp + 0xc], 0
mov dword [esp + 8], 0
mov dword [esp + 4], eax
mov dword [esp], 0
call dword [sym.imp.kernel32.dll_CreateProcessW]
sub esp, 0x28
test eax, eax
jne 0x409a57
mov eax, dword [ebp - 0x5d0]
mov dword [0x41b20c], 0x4140e0
mov dword [0x41b210], 0x4140c8
mov dword [esp], eax
mov dword [0x41b214], 0x414080
call sym._SHGetDesktopFolder_4
sub esp, 4
test eax, eax
js 0x408f6a
mov eax, dword [ebp - 0x360]
mov edx, dword [eax]
mov dword [esp + 0xc], 0x41b218
mov dword [esp + 8], 0x4160d8
mov dword [esp + 4], 0
mov dword [esp], eax
call dword [edx + 0x20]
sub esp, 0x10
mov dword [esp], 0
call sym._CoInitialize_4
mov dword [0x41b220], 0x414220
sub esp, 4
mov dword [esp], 0x41b224
call dword [sym.imp.kernel32.dll_InitializeCriticalSection]
mov eax, dword [0x41b224]
sub esp, 4
mov dword [eax + 0x18], str.programs_explorer_desktop.c:_shellwindows.cs
mov dword [esp + 0x10], 0x41101c
mov dword [esp + 0xc], 1
mov dword [esp + 8], 4
mov dword [esp + 4], 0x411018
mov dword [esp], 0x4158b8
call sym._CoRegisterClassObject_20
sub esp, 0x14
test eax, eax
js 0x409301
mov esi, dword [ebp - 0x5d8]
test esi, esi
je 0x409037
test byte [0x411020], 8
jne 0x40950c
mov esi, dword [ebp - 0x5d0]
jmp 0x409003
mov dword [esp], esi
call sym._DispatchMessageW_4
sub esp, 4
mov dword [esp + 0xc], 0
mov dword [esp + 8], 0
mov dword [esp + 4], 0
mov dword [esp], esi
call sym._GetMessageW_16
sub esp, 0x10
test eax, eax
jne 0x408ff8
test byte [0x411020], 8
jne 0x409545
test ebx, ebx
je 0x409045
mov dword [esp], 0
call ebx
push ebx
mov dword [esp], 0
call dword [sym.imp.kernel32.dll_ExitProcess]
mov eax, edi
call sym._wine_dbgstr_wn.constprop.0
mov dword [esp + 0xc], str.Failed_to_initialize_registry_display_settings_for__s._n
mov dword [esp + 0x10], eax
mov dword [esp + 8], str.initialize_display_settings
mov dword [esp + 4], global___dbch
mov dword [esp], 1
call sym._wine_dbg_log.constprop.0_1
mov eax, esi
jmp 0x408dc0
test byte [0x411020], 2
je 0x408e68
mov eax, edi
call sym._wine_dbgstr_wn.constprop.0
mov dword [esp + 0xc], str.Failed_to_query_current_display_settings_for__s._n
mov dword [esp + 0x10], eax
mov dword [esp + 8], str.initialize_display_settings
mov dword [esp + 4], global___dbch
mov dword [esp], 1
call sym._wine_dbg_log.constprop.0_1
mov eax, esi
jmp 0x408dc0
mov eax, dword [ebp - 0x518]
mov ecx, dword [ebp - 0x600]
mov dword [ebp - 0x5e0], eax
mov eax, dword [ebp - 0x51c]
mov dword [ebp - 0x5e4], eax
mov eax, dword [ebp - 0x4b0]
mov dword [ebp - 0x5f0], eax
mov eax, dword [ebp - 0x4c0]
mov dword [ebp - 0x5f4], eax
mov eax, dword [ebp - 0x4b8]
mov dword [ebp - 0x5f8], eax
mov eax, dword [ebp - 0x4bc]
mov dword [ebp - 0x5fc], eax
test ecx, ecx
je 0x409454
mov dword [esp + 4], 0xffffffff
mov dword [esp], edi
call dword [sym.imp.kernel32.dll_IsBadStringPtrW]
push edx
push edx
test eax, eax
jne 0x4096ad
cmp word [ebp - 0x35c], 0
je 0x409b41
mov ecx, dword [ebp - 0x5d0]
lea esi, [esi]
mov edx, eax
lea eax, [eax + 1]
cmp word [ecx + edx*2 + 6], 0
jne 0x409160
mov word [ebp - 0x48c], 0x224c
lea ecx, [ebp - 0x48a]
mov dword [ebp - 0x604], esi
mov dword [ebp - 0x5cc], edi
jmp 0x4091cb
cmp ax, 9
je 0x40926f
cmp ax, 0xa
jne 0x409211
mov word [ecx], 0x6e5c
add ecx, 2
lea esi, [esi]
nop
lea eax, [edx - 1]
test edx, edx
jle 0x40933b
lea esi, [ebp - 0x36a]
cmp ecx, esi
ja 0x40933b
mov edx, eax
add dword [ebp - 0x5cc], 2
mov eax, dword [ebp - 0x5cc]
movzx eax, word [eax - 2]
cmp ax, 0xd
je 0x4091fa
jbe 0x409190
cmp ax, 0x22
je 0x409262
cmp ax, 0x5c
jne 0x409204
mov word [ecx], 0x5c5c
add ecx, 2
jmp 0x4091b0
mov word [ecx], 0x725c
add ecx, 2
jmp 0x4091b0
lea esi, [eax - 0x20]
cmp si, 0x5e
jbe 0x409479
mov esi, eax
mov byte [ecx], 0x5c
add ecx, 5
shr si, 0xc
movzx esi, si
movzx ebx, byte [esi + str.0123456789abcdefwebbrowser_ShowBrowserBar]
mov esi, eax
shr si, 8
and esi, 0xf
mov byte [ecx - 4], bl
movzx ebx, byte [esi + str.0123456789abcdefwebbrowser_ShowBrowserBar]
mov esi, eax
and eax, 0xf
shr si, 4
movzx eax, byte [eax + str.0123456789abcdefwebbrowser_ShowBrowserBar]
and esi, 0xf
mov byte [ecx - 3], bl
movzx ebx, byte [esi + str.0123456789abcdefwebbrowser_ShowBrowserBar]
mov byte [ecx - 1], al
mov byte [ecx - 2], bl
jmp 0x4091b0
mov word [ecx], 0x225c
add ecx, 2
jmp 0x4091b0
mov word [ecx], 0x745c
add ecx, 2
jmp 0x4091b0
mov dword [ebp - 0x5cc], eax
call dbg.initialize_appbar
mov edx, dword [0x41b294]
mov eax, dword [ebp - 0x5cc]
test edx, edx
cmove eax, dword [ebp - 0x5ec]
mov dword [esp + 4], edx
mov dword [esp + 8], eax
mov eax, dword [ebp - 0x5e8]
mov dword [esp], eax
call dbg.initialize_systray
cmp dword [0x41b294], 0
je 0x40980b
mov dword [esp], str.shell32.dll
call dword [sym.imp.kernel32.dll_LoadLibraryW]
push ecx
test eax, eax
je 0x408e70
mov dword [esp + 4], 0xbc
mov dword [esp], eax
call dword [sym.imp.kernel32.dll_GetProcAddress]
mov ebx, eax
push edx
push edx
test eax, eax
je 0x408e72
mov dword [esp], 1
call eax
push eax
jmp 0x408e72
test byte [0x411020], 4
je 0x408fd6
mov dword [esp + 0x10], eax
mov dword [esp + 0xc], str.Failed_to_register_ShellWindows_object:__08x_n
mov dword [esp + 8], str.shellwindows_init
mov dword [esp + 4], global___dbch
mov dword [esp], 2
call sym._wine_dbg_log.constprop.0_1
jmp 0x408fd6
mov byte [ecx], 0x22
mov esi, dword [ebp - 0x604]
test eax, eax
jle 0x409b57
mov word [ecx + 1], 0x2e2e
lea eax, [ecx + 4]
mov byte [ecx + 3], 0x2e
mov byte [eax], 0
mov eax, dword [ebp - 0x5dc]
mov dword [esp], eax
call dbg.__wine_dbg_strdup
mov ecx, dword [ebp - 0x5e0]
mov dword [esp + 0x10], eax
mov dword [esp + 0xc], str.Device__s_current_display_mode__ux_u__uBits__uHz_at__d__d._n
mov dword [esp + 0x28], ecx
mov ecx, dword [ebp - 0x5e4]
mov dword [esp + 8], str.initialize_display_settings
mov dword [esp + 0x24], ecx
mov ecx, dword [ebp - 0x5f0]
mov dword [esp + 4], global___dbch
mov dword [esp + 0x20], ecx
mov ecx, dword [ebp - 0x5f4]
mov dword [esp], 3
mov dword [esp + 0x1c], ecx
mov ecx, dword [ebp - 0x5f8]
mov dword [esp + 0x18], ecx
mov ecx, dword [ebp - 0x5fc]
mov dword [esp + 0x14], ecx
call sym._wine_dbg_log.constprop.0_1
jmp 0x408e2a
test byte [0x411020], 8
jne 0x409bba
lea eax, [ebp - 0x5a8]
mov dword [esp + 4], str.null
mov ebx, 1
mov dword [esp], eax
call dword [sym.imp.ucrtbase.dll_wcscpy]
mov dword [ebp - 0x5e8], 0
jmp 0x40885d
lea eax, [ebp - 0x5a8]
call sym._wine_dbgstr_wn.constprop.0
mov esi, eax
mov eax, dword [ebp - 0x5d8]
call sym._wine_dbgstr_guid
mov dword [esp + 0x14], esi
mov dword [esp + 0x10], eax
mov dword [esp + 0xc], str.display__s_driver__s_n
mov dword [esp + 8], str.load_graphics_driver
mov dword [esp + 4], global___dbch
mov dword [esp], 3
call sym._wine_dbg_log.constprop.0_1
jmp 0x40886a
movzx eax, di
mov dword [esp], 0x412461
mov dword [esp + 4], eax
call dbg.wine_dbg_sprintf
jmp 0x40936a
mov dword [ebp - 0x5e8], eax
xor ebx, ebx
jmp 0x40885d
mov byte [ecx], al
add ecx, 1
jmp 0x4091b0
movzx esi, word [edi]
jmp 0x408bc0
mov dword [ebp - 0x5e4], 0
xor ebx, ebx
mov eax, dword [ebp - 0x5d8]
call sym._wine_dbgstr_guid
mov dword [esp + 0xc], str.display_guid__s_n
mov dword [esp + 0x10], eax
mov dword [esp + 8], global___FUNCTION__.7
mov dword [esp + 4], global___dbch
mov dword [esp], 3
call sym._wine_dbg_log.constprop.0_1
mov eax, dword [ebp - 0x5d0]
lea ecx, [ebp - 0x15a]
test ebx, ebx
je 0x40871c
nop
movzx edx, word [ebx]
test dx, dx
je 0x4094f6
add eax, 2
add ebx, 2
mov word [eax - 2], dx
cmp eax, ecx
jne 0x4094e0
mov word [eax], 0
lea eax, [ebp - 0x5bc]
mov dword [ebp - 0x5f0], eax
jmp 0x40876a
mov eax, dword [ebp - 0x5d8]
mov dword [esp + 0xc], str.desktop_message_loop_starting_on_hwnd__p_n
mov dword [esp + 8], global___FUNCTION__.7
mov dword [esp + 0x10], eax
mov dword [esp + 4], global___dbch
mov dword [esp], 3
call sym._wine_dbg_log.constprop.0_1
mov esi, dword [ebp - 0x5d0]
jmp 0x409003
mov eax, dword [ebp - 0x5d8]
mov dword [esp + 0xc], str.desktop_message_loop_exiting_for_hwnd__p_n
mov dword [esp + 8], global___FUNCTION__.7
mov dword [esp + 0x10], eax
mov dword [esp + 4], global___dbch
mov dword [esp], 3
call sym._wine_dbg_log.constprop.0_1
jmp 0x409037
cmp word [section..bss], 0
mov dword [esp], eax
je 0x4096f9
call sym._RegCloseKey_4
push ecx
lea ecx, [ebp - 0x5c0]
lea edx, [ebp - 0x5c4]
mov eax, section..bss
call dbg.get_default_desktop_size
test eax, eax
je 0x4097c4
mov dword [ebp - 0x5e0], section..bss
xor ebx, ebx
lea eax, [ebp - 0x568]
mov dword [esp + 4], 0x413f60
mov dword [esp + 8], eax
mov dword [esp], 0x80000001
mov dword [ebp - 0x360], 4
call sym._RegOpenKeyW_12
sub esp, 0xc
test eax, eax
jne 0x409798
lea eax, [ebp - 0x360]
mov dword [esp + 0x10], 0
mov dword [esp + 0x18], eax
lea eax, [ebp - 0x48c]
mov dword [esp + 0x14], eax
mov eax, dword [ebp - 0x5e0]
mov dword [esp + 0xc], 0x10
mov dword [esp + 4], eax
mov eax, dword [ebp - 0x568]
mov dword [esp + 8], str.EnableShell
mov dword [esp], eax
call sym._RegGetValueW_28
sub esp, 0x1c
test eax, eax
jne 0x409789
mov eax, dword [ebp - 0x568]
mov dword [esp], eax
call sym._RegCloseKey_4
push edx
mov dword [ebp - 0x5e4], 0
mov eax, dword [ebp - 0x48c]
mov dword [ebp - 0x5ec], eax
mov eax, dword [ebp - 0x5c4]
test eax, eax
jne 0x409721
lea eax, [ebp - 0x5b8]
mov dword [esp], eax
mov dword [ebp - 0x5d8], eax
call sym._UuidCreate_4
test byte [0x411020], 8
push eax
lea eax, [ebp - 0x360]
mov dword [ebp - 0x5d0], eax
lea eax, [ebp - 0x48c]
mov dword [ebp - 0x5dc], eax
je 0x4094ca
jmp 0x409497
mov eax, 0x412457
jmp 0x40936a
lea ebx, [ebp - 0x568]
mov dword [esp], ebx
call dword [sym.imp.ucrtbase.dll_strlen]
mov dword [esp + 0x10], ebx
add eax, 1
mov dword [esp + 0xc], 1
mov dword [esp + 0x14], eax
mov dword [esp + 8], 0
mov dword [esp + 4], str.DriverError
mov dword [esp], esi
call sym._RegSetValueExA_24
sub esp, 0x18
jmp 0x4089bf
call sym._RegCloseKey_4
push ebx
jmp 0x4086dc
mov eax, dword [ebp - 0x5d8]
mov dword [esp + 4], str.Wine_desktop
mov dword [esp], eax
call sym._SetWindowTextW_8
push eax
push eax
jmp 0x408cec
cmp dword [ebp - 0x5c0], 0
je 0x40966e
mov eax, dword [ebp - 0x5e0]
mov dword [esp + 0x14], 0
mov dword [esp + 0x10], 0x1ff
mov dword [esp + 0xc], 0
mov dword [esp + 8], 0
mov dword [esp + 4], 0
mov dword [esp], eax
call sym._CreateDesktopW_24
mov dword [ebp - 0x5e4], eax
sub esp, 0x18
test eax, eax
je 0x409c03
mov eax, dword [ebp - 0x5e4]
mov dword [esp], eax
call sym._SetThreadDesktop_4
push eax
jmp 0x40966e
mov eax, dword [ebp - 0x568]
mov dword [esp], eax
call sym._RegCloseKey_4
push ecx
mov eax, dword [ebp - 0x5e0]
mov dword [esp + 4], str.shell
mov dword [esp], eax
call dword [sym.imp.kernel32.dll_lstrcmpiW]
test eax, eax
push edx
sete al
push edx
movzx eax, al
mov dword [ebp - 0x48c], eax
jmp 0x40964a
mov dword [ebp - 0x5c0], 0
xor ebx, ebx
mov dword [ebp - 0x5c4], 0
mov dword [ebp - 0x5e0], 0x41b000
jmp 0x4095b9
mov dword [esp + 4], str.Default
mov dword [esp], section..bss
call dword [sym.imp.ucrtbase.dll__wcsicmp]
test eax, eax
je 0x408659
jmp 0x40958f
mov eax, dword [ebp - 0x5d8]
mov dword [esp], eax
call sym._GetDC_4
mov edi, dword [ebp - 0x5d0]
push ebx
mov ebx, eax
mov dword [esp + 8], edi
mov dword [esp + 0xc], 0
mov dword [esp + 4], 0x5c
mov dword [esp], 0x1f
call sym._SystemParametersInfoW_16
sub esp, 0x10
mov dword [esp], edi
call sym._CreateFontIndirectW_4
push esi
mov dword [esp], ebx
mov dword [esp + 4], eax
call sym._SelectObject_8
mov ecx, dword [ebp - 0x5dc]
push edi
push edi
mov edi, eax
mov dword [esp + 4], ecx
mov dword [esp], ebx
call sym._GetTextMetricsW_8
push edx
mov esi, eax
push edx
mov dword [esp], ebx
mov dword [esp + 4], edi
call sym._SelectObject_8
mov eax, dword [ebp - 0x5d8]
push ecx
push ecx
mov dword [esp + 4], ebx
mov dword [esp], eax
call sym._ReleaseDC_8
push ebx
push ebx
test esi, esi
je 0x4092bf
mov dword [esp], 0xb
call sym._GetSystemMetrics_4
push edi
mov dword [0x41b288], eax
mov dword [esp], 0xc
call sym._GetSystemMetrics_4
mov ebx, dword [0x41b288]
mov dword [0x41b270], 4
mov ecx, eax
mov dword [0x41b284], eax
cmp eax, ebx
mov esi, ebx
push edx
cmovge esi, eax
mov eax, dword [ebp - 0x48c]
imul edx, dword [ebp - 0x478], 0xe
add eax, eax
mov dword [esp], 0
mov dword [0x41b274], eax
lea eax, [esi + eax + 4]
cmp eax, edx
cmovl eax, edx
mov dword [0x41b278], eax
add eax, 8
mov dword [0x41b268], eax
sub eax, ebx
mov ebx, 2
cdq
idiv ebx
mov dword [0x41b280], eax
mov eax, esi
add esi, 8
sub eax, ecx
mov dword [0x41b26c], esi
cdq
idiv ebx
add eax, 4
mov dword [0x41b27c], eax
call sym._GetSystemMetrics_4
cdq
push ecx
idiv dword [0x41b268]
mov dword [esp + 0xc], 0x41b290
mov dword [esp + 8], 0
mov dword [esp + 4], 0x8000
mov dword [esp], 0x4150a8
mov edx, 1
test eax, eax
cmove eax, edx
mov dword [0x41b264], eax
call sym._SHGetKnownFolderPath_16
sub esp, 0x10
test eax, eax
js 0x409c28
mov dword [esp + 0xc], 0x41b28c
mov dword [esp + 8], 0
mov dword [esp + 4], 0x8000
mov dword [esp], 0x414d88
call sym._SHGetKnownFolderPath_16
sub esp, 0x10
test eax, eax
js 0x409ca3
mov dword [esp + 8], 8
mov dword [esp + 4], 0
mov eax, dword fs:[0x18]
mov eax, dword [eax + 0x30]
mov eax, dword [eax + 0x18]
mov dword [esp], eax
call dword [sym.imp.kernel32.dll_HeapAlloc]
mov dword [0x41b260], eax
sub esp, 0xc
test eax, eax
je 0x4092bf
mov dword [esp], 0
mov dword [0x41b258], 2
call sym._CoInitialize_4
push ebx
mov ebx, eax
mov eax, dword [0x41b290]
call dbg.add_folder
mov eax, dword [0x41b28c]
call dbg.add_folder
test ebx, ebx
js 0x409a18
call sym._CoUninitialize_0
mov eax, dword [ebp - 0x5d8]
mov dword [esp + 0x14], 0
mov dword [esp + 0x10], 0
mov dword [esp + 0xc], eax
mov dword [esp + 8], dbg.watch_desktop_folders
mov dword [esp + 4], 0
mov dword [esp], 0
call dword [sym.imp.kernel32.dll_CreateThread]
sub esp, 0x18
jmp 0x4092bf
mov eax, dword [ebp - 0x488]
mov esi, dword [sym.imp.kernel32.dll_CloseHandle]
mov dword [esp], eax
call esi
mov eax, dword [ebp - 0x48c]
push edi
mov dword [esp], eax
call esi
push eax
jmp 0x408f0e
mov eax, dword [ebp - 0x5d4]
call sym._wine_dbgstr_wn.constprop.0
mov dword [esp + 0xc], str.starting__s_n
mov dword [esp + 0x10], eax
mov dword [esp + 8], global___FUNCTION__.7
mov dword [esp + 4], global___dbch
mov dword [esp], 3
call sym._wine_dbg_log.constprop.0_1
jmp 0x408ea8
lea eax, [edi + 2]
mov dword [esp + 4], 0x2c
mov dword [ebp - 0x5e0], eax
mov dword [esp], eax
mov eax, dword [sym.imp.ucrtbase.dll_wcschr]
mov dword [ebp - 0x5cc], eax
call eax
mov ebx, eax
test eax, eax
je 0x409bf2
lea esi, [eax + 2]
mov word [eax], 0
mov eax, dword [ebp - 0x5cc]
mov dword [esp + 4], 0x2c
mov dword [esp], esi
call eax
mov ebx, eax
test eax, eax
je 0x409b06
mov word [eax], 0
add ebx, 2
lea edi, [ebp - 0x5c0]
lea edx, [ebp - 0x5c4]
mov eax, esi
mov ecx, edi
mov dword [ebp - 0x5cc], edx
call dbg.parse_size
mov edx, dword [ebp - 0x5cc]
test eax, eax
jne 0x4095b9
mov eax, dword [ebp - 0x5e0]
mov ecx, edi
call dbg.get_default_desktop_size
jmp 0x4095b9
mov word [ebp - 0x48c], 0x224c
lea ecx, [ebp - 0x48a]
mov byte [ebp - 0x48a], 0x22
lea eax, [ecx + 1]
jmp 0x409359
mov eax, dword [ebp - 0x5dc]
mov dword [esp + 0xc], 0
mov dword [esp + 8], 0
mov dword [esp + 0x14], eax
mov eax, dword [ebp - 0x5d0]
mov dword [esp + 4], str.Graphics
mov dword [esp + 0x10], eax
mov eax, dword [ebp - 0x5bc]
mov dword [ebp - 0x48c], 0x208
mov dword [esp], eax
call sym._RegQueryValueExW_24
mov eax, dword [ebp - 0x5bc]
sub esp, 0x18
mov dword [esp], eax
call sym._RegCloseKey_4
push eax
jmp 0x40876a
mov eax, dword [ebp - 0x5d8]
call sym._wine_dbgstr_guid
mov dword [esp + 0xc], str.display__s_using_null_driver_n
mov dword [esp + 0x10], eax
mov dword [esp + 8], str.load_graphics_driver
mov dword [esp + 4], global___dbch
mov dword [esp], 3
call sym._wine_dbg_log.constprop.0_1
jmp 0x4093e0
lea edi, [ebp - 0x5c0]
lea edx, [ebp - 0x5c4]
jmp 0x409b2f
test byte [0x411020], 2
jne 0x409c5e
mov dword [esp], 1
call dword [sym.imp.kernel32.dll_ExitProcess]
mov dword [ebp - 0x5d4], 0
jmp 0x408604
test byte [0x411020], 2
je 0x4092bf
mov dword [esp + 0xc], str.Could_not_get_user_desktop_folder_n
mov dword [esp + 8], str.initialize_launchers
mov dword [esp + 4], global___dbch
mov dword [esp], 1
call sym._wine_dbg_log.constprop.0_1
jmp 0x4092bf
mov eax, dword fs:[0x18]
mov ebx, dword [eax + 0x34]
mov eax, dword [ebp - 0x5e0]
call sym._wine_dbgstr_wn.constprop.0
mov dword [esp + 0x14], ebx
mov dword [esp + 0x10], eax
mov dword [esp + 0xc], str.failed_to_create_desktop__s_error__d_n
mov dword [esp + 8], global___FUNCTION__.7
mov dword [esp + 4], global___dbch
mov dword [esp], 1
call sym._wine_dbg_log.constprop.0_1
jmp 0x409c0c
test byte [0x411020], 2
jne 0x409cbf
mov eax, dword [0x41b290]
mov dword [esp], eax
call sym._CoTaskMemFree_4
push esi
jmp 0x4092bf
mov dword [esp + 0xc], str.Could_not_get_public_desktop_folder_n
mov dword [esp + 8], str.initialize_launchers
mov dword [esp + 4], global___dbch
mov dword [esp], 1
call sym._wine_dbg_log.constprop.0_1
jmp 0x409cac