Function at 0x40a550
Capabilities:
Check if process is running under wine
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, 0x57c
mov eax, dword [ebp + 8]
mov esi, dword [ebp + 8]
movzx edi, word [eax]
test edi, edi
mov eax, edi
jne 0x40a574
jmp 0x40ba1a
test eax, eax
je 0x40a5a0
cmp eax, 0x20
mov ebx, esi
sete cl
cmp eax, 9
movzx eax, word [esi + 2]
sete dl
add esi, 2
or cl, dl
je 0x40a570
mov word [ebx], 0
test eax, eax
jne 0x40a85f
mov eax, dword [ebp + 8]
movzx edi, word [eax]
xor esi, esi
cmp edi, 0x3d
je 0x40a5ac
cmp edi, 0x2c
jne 0x40a5c0
mov eax, dword [ebp + 8]
movzx eax, word [eax + 2]
test eax, eax
je 0x40a5c0
cmp eax, 0x2c
jne 0x40b546
mov eax, 0x208
mov dword [ebp - 0x46c], eax
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 0x40a616
mov dword [esp + 0x10], 0
mov dword [esp + 0xc], 0x104
mov dword [esp + 8], 0x41d000
mov dword [esp + 4], 2
mov dword [esp], eax
call sym._GetUserObjectInformationW_20
sub esp, 0x14
test eax, eax
jne 0x40b40a
mov dword [esp], 0x80000001
lea eax, [ebp - 0x360]
mov dword [ebp - 0x51c], eax
mov dword [esp + 8], eax
mov eax, str.SoftwareWineExplorer
mov dword [esp + 4], eax
call sym._RegOpenKeyW_12
sub esp, 0xc
test eax, eax
lea eax, [ebp - 0x46c]
mov dword [ebp - 0x524], eax
jne 0x40a69a
mov dword [esp + 0x14], eax
mov eax, dword [ebp - 0x360]
mov dword [esp + 0x10], 0x41d000
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 0x40b3f1
mov dword [esp], eax
call sym._RegCloseKey_4
push edi
lea eax, [ebp - 0x50c]
mov dword [esp], eax
mov dword [ebp - 0x52c], eax
call sym._UuidCreate_4
test byte [0x413020], 8
mov dword [ebp - 0x538], 0
mov dword [ebp - 0x528], 0
push eax
je 0x40a874
xor ebx, ebx
mov dword [ebp - 0x530], 0
mov eax, dword [ebp - 0x52c]
call sym._wine_dbgstr_guid
mov dword [esp + 0xc], str.display_guid__s_n
mov dword [esp + 8], str.manage_desktop
mov dword [esp + 4], 0x413020
mov dword [esp], 3
mov dword [esp + 0x10], eax
call sym._wine_dbg_log.constprop.0_1
mov eax, dword [ebp - 0x51c]
lea ecx, [ebp - 0x15a]
test ebx, ebx
je 0x40a87e
lea esi, [esi]
lea edi, [edi]
movzx edx, word [ebx]
test edx, edx
je 0x40a744
mov word [eax], dx
add eax, 2
add ebx, 2
cmp eax, ecx
jne 0x40a730
mov word [eax], 0
lea eax, [ebp - 0x510]
mov dword [ebp - 0x53c], eax
mov eax, dword [sym.imp.ucrtbase.dll_wcschr]
lea edi, [ebp - 0x4fc]
mov dword [ebp - 0x534], esi
mov ebx, dword [ebp - 0x51c]
mov dword [ebp - 0x520], eax
jmp 0x40a79d
mov dword [esp + 8], eax
mov eax, str.Unknown_error___lu_.
mov dword [esp + 4], eax
lea eax, [ebp - 0x4bc]
mov dword [esp], eax
call sym._sprintf.constprop.0
test esi, esi
je 0x40a967
mov ebx, esi
mov dword [esp], ebx
mov edx, 0x2c
mov eax, dword [ebp - 0x520]
mov dword [esp + 4], edx
call eax
test eax, eax
je 0x40a960
mov word [eax], 0
lea esi, [eax + 2]
mov dword [esp], ebx
mov eax, str.null
mov dword [esp + 4], eax
call dword [sym.imp.ucrtbase.dll_wcscmp]
test eax, eax
je 0x40b2e8
mov dword [esp + 0xc], ebx
mov eax, str.wine_s.drv
mov dword [esp + 8], eax
mov eax, 0x20
mov dword [esp + 4], eax
mov dword [esp], edi
call sym._swprintf
mov dword [esp], edi
call dword [sym.imp.kernel32.dll_LoadLibraryW]
sub esp, 4
test eax, eax
jne 0x40b36a
mov eax, dword fs:[0x18]
mov eax, dword [eax + 0x34]
cmp eax, 0x7e
je 0x40a930
cmp eax, 0x45a
jne 0x40a778
xor eax, eax
mov edx, dword [eax + str.Make_sure_that_your_X_server_is_running_and_that__DISPLAY_is_set_correctly.]
mov dword [ebp + eax - 0x4bc], edx
add eax, 4
cmp eax, 0x4c
jb 0x40a82c
jmp 0x40a793
movzx eax, word [esi + 2]
add esi, 2
test eax, eax
je 0x40a59a
cmp eax, 0x20
je 0x40a850
cmp eax, 9
je 0x40a850
mov eax, dword [ebp + 8]
movzx edi, word [eax]
jmp 0x40a5a2
mov dword [ebp - 0x530], 0
mov ecx, dword [ebp - 0x51c]
xor eax, eax
lea esi, [esi]
lea edi, [edi]
movzx edx, word [eax + 0x416650]
mov word [ecx + eax], dx
add eax, 2
test edx, edx
jne 0x40a890
mov dword [esp + 4], str.SoftwareWineDrivers
lea eax, [ebp - 0x510]
mov dword [esp + 8], eax
mov dword [esp], 0x80000001
mov dword [ebp - 0x53c], eax
call sym._RegOpenKeyW_12
sub esp, 0xc
test eax, eax
jne 0x40a755
mov dword [esp + 0xc], 0
mov eax, dword [ebp - 0x524]
mov dword [esp + 8], 0
mov dword [esp + 4], str.Graphics
mov dword [ebp - 0x46c], 0x208
mov dword [esp + 0x14], eax
mov eax, dword [ebp - 0x51c]
mov dword [esp + 0x10], eax
mov eax, dword [ebp - 0x510]
mov dword [esp], eax
call sym._RegQueryValueExW_24
mov eax, dword [ebp - 0x510]
sub esp, 0x18
mov dword [esp], eax
call sym._RegCloseKey_4
push ecx
jmp 0x40a755
xor eax, eax
mov edx, dword [eax + str.The_graphics_driver_is_missing._Check_your_build_]
mov dword [ebp + eax - 0x4bc], edx
add eax, 4
cmp eax, 0x30
jb 0x40a932
mov edx, dword [eax + str.The_graphics_driver_is_missing._Check_your_build_]
mov word [ebp + eax - 0x4bc], dx
jmp 0x40a793
xor esi, esi
jmp 0x40a7c1
mov dword [ebp - 0x520], 0
mov esi, dword [ebp - 0x534]
mov dword [ebp - 0x534], 0
test byte [0x413020], 8
jne 0x40b325
movzx eax, byte [ebp - 0x4fd]
mov ebx, dword [ebp - 0x524]
mov dword [esp + 0x34], eax
movzx eax, byte [ebp - 0x4fe]
mov dword [esp], ebx
mov dword [esp + 0x30], eax
movzx eax, byte [ebp - 0x4ff]
mov dword [esp + 0x2c], eax
movzx eax, byte [ebp - 0x500]
mov dword [esp + 0x28], eax
movzx eax, byte [ebp - 0x501]
mov dword [esp + 0x24], eax
movzx eax, byte [ebp - 0x502]
mov dword [esp + 0x20], eax
movzx eax, byte [ebp - 0x503]
mov dword [esp + 0x1c], eax
movzx eax, byte [ebp - 0x504]
mov dword [esp + 0x18], eax
movzx eax, word [ebp - 0x506]
mov dword [esp + 0x14], eax
movzx eax, word [ebp - 0x508]
mov dword [esp + 0x10], eax
mov eax, dword [ebp - 0x50c]
mov dword [esp + 0xc], eax
mov eax, str.SystemCurrentControlSetControlVideo_08x__04x__04x__02x_02x__02x_02x_02x_02x_02x_02x0000
mov dword [esp + 8], eax
mov eax, 0x86
mov dword [esp + 4], eax
call sym._swprintf
xor eax, eax
xor ecx, ecx
mov dword [esp + 0x20], eax
mov eax, dword [ebp - 0x53c]
mov edx, 1
mov dword [esp + 0x10], edx
mov dword [esp + 0xc], ecx
mov dword [esp + 4], ebx
mov dword [esp + 0x1c], eax
xor eax, eax
mov dword [esp + 0x18], eax
mov eax, 2
mov dword [esp + 0x14], eax
xor eax, eax
mov dword [esp + 8], eax
mov dword [esp], 0x80000002
call sym._RegCreateKeyExW_36
sub esp, 0x24
test eax, eax
jne 0x40aae8
cmp dword [ebp - 0x534], 0
mov ebx, dword [ebp - 0x510]
jne 0x40aa93
movzx eax, byte [ebp - 0x520]
and al, 1
je 0x40b5e0
cmp word [ebp - 0x4fc], 0
mov eax, edi
je 0x40aaa9
nop
add eax, 2
cmp word [eax], 0
jne 0x40aaa0
mov dword [esp + 0x10], edi
sub eax, edi
mov dword [esp + 0xc], 1
add eax, 2
mov dword [esp + 0x14], eax
mov dword [esp + 8], 0
mov dword [esp + 4], str.GraphicsDriver
mov dword [esp], ebx
call sym._RegSetValueExW_24
sub esp, 0x18
mov eax, dword [ebp - 0x510]
mov dword [esp], eax
call sym._RegCloseKey_4
push edi
mov eax, dword [ebp - 0x52c]
xor ebx, ebx
xor ecx, ecx
mov dword [esp + 0x28], ebx
xor edi, edi
mov edx, 0x86000000
mov dword [esp + 0x24], edi
mov ebx, 0x8001
mov dword [esp + 0xc], edx
mov dword [esp + 0x2c], eax
xor eax, eax
mov dword [esp + 0x20], eax
xor eax, eax
mov dword [esp + 0x1c], eax
xor eax, eax
mov dword [esp + 0x18], eax
xor eax, eax
mov dword [esp + 0x14], eax
xor eax, eax
mov dword [esp + 0x10], eax
mov dword [esp + 8], ecx
mov dword [esp + 4], ebx
mov dword [esp], 0
call sym._CreateWindowExW_48
mov dword [ebp - 0x520], eax
sub esp, 0x30
test eax, eax
je 0x40af10
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], str.Message
mov dword [esp], 0
call sym._CreateWindowExW_48
mov eax, dword [ebp - 0x520]
sub esp, 0x30
mov dword [esp + 8], sym._desktop_wnd_proc_16
mov dword [esp + 4], 0xfffffffc
mov dword [esp], eax
call sym._SetWindowLongW_12
mov dword [0x41d208], eax
sub esp, 0xc
cmp dword [ebp - 0x530], 0
je 0x40ac27
mov eax, dword [ebp - 0x534]
test eax, eax
je 0x40ac27
mov dword [esp + 4], str.wine_create_desktop
mov ebx, dword [ebp - 0x514]
mov dword [esp], eax
mov edi, dword [ebp - 0x518]
call dword [sym.imp.kernel32.dll_GetProcAddress]
push ecx
test eax, eax
push ecx
je 0x40ac27
mov dword [esp + 4], ebx
mov dword [esp], edi
call eax
test eax, eax
sete al
movzx eax, al
jmp 0x40ac2c
mov eax, 1
mov dword [esp + 4], 0x7f05
mov dword [esp], 0
mov dword [0x41d294], eax
call sym._LoadIconW_8
push edx
push edx
mov dword [esp + 0xc], eax
mov eax, dword [ebp - 0x520]
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 - 0x528]
mov eax, edi
sub esp, 0x10
test edi, edi
je 0x40ad8a
cmp word [edi], 0
je 0x40b62a
lea esi, [esi]
lea edi, [edi]
add eax, 2
cmp word [eax], 0
jne 0x40ac90
sub eax, dword [ebp - 0x528]
mov dword [esp + 4], 0
mov edx, dword fs:[0x18]
add eax, 0x22
mov dword [esp + 8], eax
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 - 0x528]
mov ebx, eax
sub esp, 0xc
xor eax, eax
test ebx, ebx
je 0x40b62a
lea esi, [esi]
movzx edx, word [ecx + eax]
mov word [ebx + eax], dx
add eax, 2
test edx, edx
jne 0x40ace0
cmp word [ebx], 0
mov edx, ebx
je 0x40ad09
mov esi, esi
lea edi, [edi]
add edx, 2
cmp word [edx], 0
jne 0x40ad00
xor eax, eax
nop
lea esi, [esi]
movzx ecx, word [eax + 0x416174]
mov word [edx + eax], cx
add eax, 2
test ecx, ecx
jne 0x40ad10
cmp word [ebx], 0
mov edx, ebx
je 0x40ad39
lea esi, [esi]
add edx, 2
cmp word [edx], 0
jne 0x40ad30
xor eax, eax
nop
lea esi, [esi]
movzx ecx, word [eax + str.Wine_desktop]
mov word [edx + eax], cx
add eax, 2
test ecx, ecx
jne 0x40ad40
mov dword [esp + 4], ebx
mov eax, dword [ebp - 0x520]
mov dword [esp], eax
call sym._SetWindowTextW_8
mov eax, dword fs:[0x18]
push edi
push edi
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 edx
mov dword [esp], 0x4d
mov dword [ebp - 0x528], eax
call sym._GetSystemMetrics_4
push ecx
mov ebx, eax
mov dword [esp], 0x4c
call sym._GetSystemMetrics_4
push edx
mov edx, dword [ebp - 0x528]
mov dword [esp + 8], eax
mov eax, dword [ebp - 0x520]
mov dword [esp + 0x14], edi
mov dword [esp + 0x10], edx
mov dword [esp + 0x18], 0x40
mov dword [esp + 0xc], ebx
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
mov edi, dword [ebp - 0x524]
xor eax, eax
mov dword [ebp - 0x548], esi
mov esi, dword [ebp - 0x524]
mov dword [ebp - 0x360], 0x348
push ecx
mov ecx, 0x37
rep stosd dword es:[edi], eax
lea edi, [ebp - 0x35c]
mov word [ebp - 0x428], 0xdc
mov esi, esi
lea edi, [edi]
mov ecx, dword [ebp - 0x51c]
lea ebx, [eax + 1]
xor edx, edx
mov dword [esp + 0xc], edx
mov dword [esp + 4], eax
mov dword [esp], 0
mov dword [esp + 8], ecx
call sym._EnumDisplayDevicesW_16
sub esp, 0x10
test eax, eax
je 0x40b223
mov dword [esp + 8], esi
xor edx, edx
mov ecx, 0xffffffff
mov dword [esp + 0xc], edx
mov dword [esp + 4], ecx
mov dword [esp], edi
call sym._EnumDisplaySettingsExW_16
sub esp, 0x10
test eax, eax
je 0x40b120
test byte [0x413020], 8
jne 0x40b168
mov dword [esp + 4], esi
mov eax, 0x10000009
xor ecx, ecx
mov dword [esp + 0xc], eax
xor eax, eax
mov dword [esp + 0x10], ecx
mov dword [esp + 8], eax
mov dword [esp], edi
call sym._ChangeDisplaySettingsExW_20
sub esp, 0x14
test eax, eax
je 0x40af06
test byte [0x413020], 2
jne 0x40b0e4
mov eax, ebx
jmp 0x40ae70
xor ebx, ebx
test esi, esi
je 0x40afa2
xor eax, eax
mov ecx, 0x10
test byte [0x413020], 8
lea edx, [ebp - 0x35c]
mov edi, edx
rep stosd dword es:[edi], eax
mov dword [ebp - 0x360], 0x44
jne 0x40b987
mov dword [esp + 0x1c], 0
mov eax, dword [ebp - 0x524]
mov dword [esp + 0x18], 0
mov dword [esp + 0x14], 0
mov dword [esp + 0x10], 0
mov dword [esp + 0x24], eax
mov eax, dword [ebp - 0x51c]
mov dword [esp + 0xc], 0
mov dword [esp + 8], 0
mov dword [esp + 4], esi
mov dword [esp + 0x20], eax
mov dword [esp], 0
call dword [sym.imp.kernel32.dll_CreateProcessW]
sub esp, 0x28
test eax, eax
jne 0x40b964
mov eax, 0x4164a8
mov edi, 0x4164c0
mov dword [0x41d210], eax
mov eax, 0x416460
mov dword [0x41d214], eax
mov eax, dword [ebp - 0x51c]
mov dword [0x41d20c], edi
mov dword [esp], eax
call sym._SHGetDesktopFolder_4
sub esp, 4
test eax, eax
js 0x40afff
mov eax, dword [ebp - 0x360]
mov ecx, 0x4184b4
mov edi, 0x41d218
xor esi, esi
mov edx, dword [eax]
mov dword [esp + 0xc], edi
mov dword [esp + 8], ecx
mov dword [esp + 4], esi
mov dword [esp], eax
call dword [edx + 0x20]
sub esp, 0x10
mov dword [esp], 0
mov esi, 0x413018
call sym._CoInitialize_4
mov eax, 0x416600
mov dword [0x41d220], eax
sub esp, 4
mov dword [esp], 0x41d224
call dword [sym.imp.kernel32.dll_InitializeCriticalSection]
mov eax, dword [0x41d224]
mov edx, 1
mov ecx, 4
mov dword [eax + 0x18], str..._wine_programs_explorer_desktop.c:_shellwindows.cs
mov eax, 0x41301c
sub esp, 4
mov dword [esp + 0x10], eax
mov dword [esp + 0xc], edx
mov dword [esp + 8], ecx
mov dword [esp + 4], esi
mov dword [esp], 0x417c94
call sym._CoRegisterClassObject_20
sub esp, 0x14
test eax, eax
js 0x40b2ae
mov eax, dword [ebp - 0x520]
test eax, eax
je 0x40b0c9
test byte [0x413020], 8
jne 0x40b385
mov esi, dword [ebp - 0x51c]
jmp 0x40b09b
mov dword [esp], esi
call sym._DispatchMessageW_4
sub esp, 4
mov dword [esp], esi
xor eax, eax
xor edi, edi
mov dword [esp + 8], eax
xor eax, eax
mov dword [esp + 0xc], edi
mov dword [esp + 4], eax
call sym._GetMessageW_16
sub esp, 0x10
test eax, eax
jne 0x40b090
test byte [0x413020], 8
jne 0x40b3be
test ebx, ebx
je 0x40b0d7
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 + 8], str.initialize_display_settings
mov dword [esp + 4], 0x413020
mov dword [esp], 1
mov dword [esp + 0x10], eax
call sym._wine_dbg_log.constprop.0_1
mov eax, ebx
jmp 0x40ae70
test byte [0x413020], 2
je 0x40af06
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 + 8], str.initialize_display_settings
mov dword [esp + 4], 0x413020
mov dword [esp], 1
mov dword [esp + 0x10], eax
call sym._wine_dbg_log.constprop.0_1
mov eax, ebx
jmp 0x40ae70
mov eax, dword [ebp - 0x3b4]
mov edx, dword [ebp - 0x420]
mov ecx, dword [ebp - 0x41c]
mov dword [ebp - 0x528], eax
mov eax, dword [ebp - 0x3bc]
mov dword [ebp - 0x540], edx
mov edx, dword [ebp - 0x3c4]
mov dword [ebp - 0x544], ecx
mov dword [ebp - 0x530], eax
mov eax, dword [ebp - 0x3c0]
mov dword [ebp - 0x52c], edx
mov dword [ebp - 0x53c], eax
mov eax, edi
call sym._wine_dbgstr_wn.constprop.0
mov ecx, dword [ebp - 0x544]
mov dword [esp], 3
mov edx, dword [ebp - 0x540]
mov dword [esp + 0x28], ecx
mov ecx, dword [ebp - 0x528]
mov dword [esp + 0x24], edx
mov edx, dword [ebp - 0x52c]
mov dword [esp + 0x10], eax
mov eax, str.Device__s_current_display_mode__lux_lu__luBits__luHz_at__ld__ld._n
mov dword [esp + 0xc], eax
mov eax, str.initialize_display_settings
mov dword [esp + 0x20], ecx
mov ecx, dword [ebp - 0x530]
mov dword [esp + 8], eax
mov eax, 0x413020
mov dword [esp + 0x1c], edx
mov dword [esp + 4], eax
mov dword [esp + 0x18], ecx
mov ecx, dword [ebp - 0x53c]
mov dword [esp + 0x14], ecx
call sym._wine_dbg_log.constprop.0_1
jmp 0x40aed1
mov dword [ebp - 0x528], eax
mov esi, dword [ebp - 0x548]
call sym._initialize_appbar
mov edx, dword [0x41d294]
mov eax, dword [ebp - 0x528]
mov dword [esp + 4], edx
test edx, edx
cmove eax, dword [ebp - 0x538]
mov dword [esp + 8], eax
mov eax, dword [ebp - 0x534]
mov dword [esp], eax
call sym._initialize_systray
cmp dword [0x41d294], 0
je 0x40b70f
mov dword [esp], str.shell32.dll
call dword [sym.imp.kernel32.dll_LoadLibraryW]
push ecx
test eax, eax
je 0x40af10
mov dword [esp + 4], 0xbc
mov dword [esp], eax
call dword [sym.imp.kernel32.dll_GetProcAddress]
test eax, eax
mov ebx, eax
push edx
push edx
je 0x40af12
mov dword [esp], 1
call eax
push eax
jmp 0x40af12
test byte [0x413020], 4
je 0x40b06f
mov dword [esp + 0x10], eax
mov dword [esp + 0xc], str.Failed_to_register_ShellWindows_object:__08lx_n
mov dword [esp + 8], str.shellwindows_init
mov dword [esp + 4], 0x413020
mov dword [esp], 2
call sym._wine_dbg_log.constprop.0_1
jmp 0x40b06f
test byte [0x413020], 8
mov esi, dword [ebp - 0x534]
jne 0x40b9bb
mov dword [esp + 4], str.null
mov dword [esp], edi
call dword [sym.imp.ucrtbase.dll_wcscpy]
mov dword [ebp - 0x534], 0
mov dword [ebp - 0x520], 1
jmp 0x40a981
mov eax, edi
call sym._wine_dbgstr_wn.constprop.0
mov ebx, eax
mov eax, dword [ebp - 0x52c]
call sym._wine_dbgstr_guid
mov dword [esp + 0x14], ebx
mov dword [esp + 0xc], str.display__s_driver__s_n
mov dword [esp + 8], str.load_graphics_driver
mov dword [esp + 4], 0x413020
mov dword [esp], 3
mov dword [esp + 0x10], eax
call sym._wine_dbg_log.constprop.0_1
jmp 0x40a98e
mov dword [ebp - 0x520], 0
mov esi, dword [ebp - 0x534]
mov dword [ebp - 0x534], eax
jmp 0x40a981
mov dword [esp + 0xc], str.desktop_message_loop_starting_on_hwnd__p_n
mov eax, dword [ebp - 0x520]
mov dword [esp + 8], str.manage_desktop
mov dword [esp + 4], 0x413020
mov dword [esp], 3
mov dword [esp + 0x10], eax
call sym._wine_dbg_log.constprop.0_1
mov esi, dword [ebp - 0x51c]
jmp 0x40b09b
mov dword [esp + 0xc], str.desktop_message_loop_exiting_for_hwnd__p_n
mov eax, dword [ebp - 0x520]
mov dword [esp + 8], str.manage_desktop
mov dword [esp + 4], 0x413020
mov dword [esp], 3
mov dword [esp + 0x10], eax
call sym._wine_dbg_log.constprop.0_1
jmp 0x40b0c9
cmp word [section..bss], 0
mov dword [esp], eax
je 0x40b61f
call sym._RegCloseKey_4
push ecx
jmp 0x40b427
mov dword [esp + 4], str.Default
mov dword [esp], section..bss
call dword [sym.imp.ucrtbase.dll__wcsicmp]
test eax, eax
je 0x40a616
lea ecx, [ebp - 0x514]
mov eax, section..bss
lea edx, [ebp - 0x518]
call sym._get_default_desktop_size
test eax, eax
je 0x40b6ea
mov dword [ebp - 0x528], section..bss
xor ebx, ebx
mov dword [esp + 4], 0x416340
lea eax, [ebp - 0x4bc]
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 0x40b6be
mov dword [esp + 0x10], 0
lea eax, [ebp - 0x360]
mov dword [esp + 0x18], eax
lea eax, [ebp - 0x46c]
mov dword [esp + 0x14], eax
mov eax, dword [ebp - 0x528]
mov dword [esp + 0xc], 0x10
mov dword [esp + 8], str.EnableShell
mov dword [esp + 4], eax
mov eax, dword [ebp - 0x4bc]
mov dword [esp], eax
call sym._RegGetValueW_28
sub esp, 0x1c
test eax, eax
jne 0x40b6af
mov eax, dword [ebp - 0x4bc]
mov dword [esp], eax
call sym._RegCloseKey_4
push edx
mov eax, dword [ebp - 0x46c]
mov dword [ebp - 0x538], eax
mov eax, dword [ebp - 0x518]
test eax, eax
mov eax, 0
mov dword [ebp - 0x530], eax
jne 0x40b647
lea eax, [ebp - 0x50c]
mov dword [esp], eax
mov dword [ebp - 0x52c], eax
call sym._UuidCreate_4
lea eax, [ebp - 0x360]
test byte [0x413020], 8
mov dword [ebp - 0x51c], eax
lea eax, [ebp - 0x46c]
mov dword [ebp - 0x524], eax
push edi
je 0x40a70f
jmp 0x40a6dc
mov dword [esp + 4], 0x2c
mov eax, dword [ebp + 8]
add eax, 2
mov dword [ebp - 0x528], eax
mov dword [esp], eax
mov eax, dword [sym.imp.ucrtbase.dll_wcschr]
mov dword [ebp - 0x520], eax
call eax
test eax, eax
mov ebx, eax
je 0x40b9f3
mov word [eax], 0
lea edi, [eax + 2]
mov eax, dword [ebp - 0x520]
mov dword [esp + 4], 0x2c
mov dword [esp], edi
call eax
test eax, eax
mov ebx, eax
je 0x40b59d
mov word [eax], 0
add ebx, 2
lea ecx, [ebp - 0x514]
mov eax, edi
mov dword [ebp - 0x520], ecx
lea edx, [ebp - 0x518]
mov dword [ebp - 0x51c], edx
call sym._parse_size
mov edx, dword [ebp - 0x51c]
mov ecx, dword [ebp - 0x520]
test eax, eax
jne 0x40b451
mov eax, dword [ebp - 0x528]
call sym._get_default_desktop_size
jmp 0x40b451
lea edx, [ebp - 0x4bc]
or ecx, 0xffffffff
mov edi, edx
repne scasb al, byte es:[edi]
mov dword [esp + 0x10], edx
mov dword [esp + 0xc], 1
mov dword [esp + 8], 0
mov dword [esp + 4], str.DriverError
mov dword [esp], ebx
not ecx
mov dword [esp + 0x14], ecx
call sym._RegSetValueExA_24
sub esp, 0x18
jmp 0x40aad9
call sym._RegCloseKey_4
push ebx
jmp 0x40a69a
mov dword [esp + 4], str.Wine_desktop
mov eax, dword [ebp - 0x520]
mov dword [esp], eax
call sym._SetWindowTextW_8
push eax
push eax
jmp 0x40ad8a
cmp dword [ebp - 0x514], 0
je 0x40b507
mov dword [esp + 0x14], 0
mov eax, dword [ebp - 0x528]
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 - 0x530], eax
sub esp, 0x18
test eax, eax
je 0x40ba04
mov eax, dword [ebp - 0x530]
mov dword [esp], eax
call sym._SetThreadDesktop_4
push eax
jmp 0x40b507
mov eax, dword [ebp - 0x4bc]
mov dword [esp], eax
call sym._RegCloseKey_4
push ecx
mov eax, dword [ebp - 0x528]
mov dword [esp + 4], str.shell
mov dword [esp], eax
call dword [sym.imp.kernel32.dll_lstrcmpiW]
push edx
test eax, eax
push edx
sete al
movzx eax, al
mov dword [ebp - 0x46c], eax
jmp 0x40b4e2
mov dword [ebp - 0x514], 0
xor ebx, ebx
mov dword [ebp - 0x518], 0
mov dword [ebp - 0x528], 0x41d000
jmp 0x40b451
mov eax, dword [ebp - 0x520]
mov dword [esp], eax
call sym._GetDC_4
push edi
mov edi, dword [ebp - 0x51c]
mov ebx, eax
mov dword [esp + 0xc], 0
mov dword [esp + 4], 0x5c
mov dword [esp + 8], edi
mov dword [esp], 0x1f
call sym._SystemParametersInfoW_16
sub esp, 0x10
mov dword [esp], edi
call sym._CreateFontIndirectW_4
push edx
mov dword [esp], ebx
mov dword [esp + 4], eax
call sym._SelectObject_8
push ecx
mov edi, eax
push ecx
mov ecx, dword [ebp - 0x524]
mov dword [esp], ebx
mov dword [esp + 4], ecx
call sym._GetTextMetricsW_8
push edx
push edx
mov dword [esp], ebx
mov dword [esp + 4], edi
mov dword [ebp - 0x528], eax
call sym._SelectObject_8
mov eax, dword [ebp - 0x520]
push ecx
push ecx
mov dword [esp + 4], ebx
mov dword [esp], eax
call sym._ReleaseDC_8
mov edx, dword [ebp - 0x528]
test edx, edx
push ebx
push ebx
je 0x40b26c
mov dword [esp], 0xb
call sym._GetSystemMetrics_4
push edx
mov dword [esp], 0xc
mov dword [0x41d288], eax
call sym._GetSystemMetrics_4
mov ebx, dword [0x41d288]
mov dword [0x41d270], 4
mov edi, ebx
push ecx
cmp eax, ebx
cmovge edi, eax
mov ecx, eax
mov dword [0x41d284], eax
mov eax, dword [ebp - 0x46c]
imul edx, dword [ebp - 0x458], 0xe
mov dword [esp], 0
add eax, eax
mov dword [0x41d274], eax
lea eax, [edi + eax + 4]
cmp eax, edx
cmovl eax, edx
mov dword [0x41d278], eax
add eax, 8
mov dword [0x41d268], eax
sub eax, ebx
mov ebx, 2
cdq
idiv ebx
mov dword [0x41d280], eax
mov eax, edi
sub eax, ecx
cdq
idiv ebx
add eax, 4
mov dword [0x41d27c], eax
lea eax, [edi + 8]
mov dword [0x41d26c], eax
call sym._GetSystemMetrics_4
push ebx
cdq
idiv dword [0x41d268]
mov edx, 1
mov dword [esp + 0xc], 0x41d290
mov dword [esp + 8], 0
mov dword [esp + 4], 0x8000
mov dword [esp], 0x417484
test eax, eax
cmove eax, edx
mov dword [0x41d264], eax
call sym._SHGetKnownFolderPath_16
sub esp, 0x10
test eax, eax
js 0x40ba21
mov dword [esp + 0xc], 0x41d28c
mov dword [esp + 8], 0
mov dword [esp + 4], 0x8000
mov dword [esp], 0x417164
call sym._SHGetKnownFolderPath_16
sub esp, 0x10
test eax, eax
js 0x40ba9c
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 [0x41d260], eax
sub esp, 0xc
test eax, eax
je 0x40b26c
mov dword [esp], 0
mov dword [0x41d258], 2
call sym._CoInitialize_4
push ebx
mov ebx, eax
mov eax, dword [0x41d290]
call sym._add_folder
mov eax, dword [0x41d28c]
call sym._add_folder
test ebx, ebx
js 0x40b925
call sym._CoUninitialize_0
mov dword [esp + 0x14], 0
mov eax, dword [ebp - 0x520]
mov dword [esp + 0x10], 0
mov dword [esp + 8], sym._watch_desktop_folders_4
mov dword [esp + 4], 0
mov dword [esp + 0xc], eax
mov dword [esp], 0
call dword [sym.imp.kernel32.dll_CreateThread]
sub esp, 0x18
jmp 0x40b26c
mov eax, dword [ebp - 0x468]
mov esi, dword [sym.imp.kernel32.dll_CloseHandle]
mov dword [esp], eax
call esi
push eax
mov eax, dword [ebp - 0x46c]
mov dword [esp], eax
call esi
push eax
jmp 0x40afa2
mov eax, esi
call sym._wine_dbgstr_wn.constprop.0
mov dword [esp + 0xc], str.starting__s_n
mov dword [esp + 8], str.manage_desktop
mov dword [esp + 4], 0x413020
mov dword [esp], 3
mov dword [esp + 0x10], eax
call sym._wine_dbg_log.constprop.0_1
jmp 0x40af42
mov eax, dword [ebp - 0x52c]
call sym._wine_dbgstr_guid
mov dword [esp + 0xc], str.display__s_using_null_driver_n
mov dword [esp + 8], str.load_graphics_driver
mov dword [esp + 4], 0x413020
mov dword [esp], 3
mov dword [esp + 0x10], eax
call sym._wine_dbg_log.constprop.0_1
jmp 0x40b2fb
lea ecx, [ebp - 0x514]
lea edx, [ebp - 0x518]
jmp 0x40b5d0
test byte [0x413020], 2
jne 0x40ba57
mov dword [esp], 1
call dword [sym.imp.kernel32.dll_ExitProcess]
xor esi, esi
jmp 0x40a5c0
test byte [0x413020], 2
je 0x40b26c
mov dword [esp + 0xc], str.Could_not_get_user_desktop_folder_n
mov dword [esp + 8], str.initialize_launchers
mov dword [esp + 4], 0x413020
mov dword [esp], 1
call sym._wine_dbg_log.constprop.0_1
jmp 0x40b26c
mov eax, dword fs:[0x18]
mov ebx, dword [eax + 0x34]
mov eax, dword [ebp - 0x528]
call sym._wine_dbgstr_wn.constprop.0
mov dword [esp + 0x14], ebx
mov dword [esp + 0xc], str.failed_to_create_desktop__s_error__ld_n
mov dword [esp + 8], str.manage_desktop
mov dword [esp + 4], 0x413020
mov dword [esp], 1
mov dword [esp + 0x10], eax
call sym._wine_dbg_log.constprop.0_1
jmp 0x40ba0d
test byte [0x413020], 2
jne 0x40bab8
mov eax, dword [0x41d290]
mov dword [esp], eax
call sym._CoTaskMemFree_4
push edi
jmp 0x40b26c
mov dword [esp + 0xc], str.Could_not_get_public_desktop_folder_n
mov dword [esp + 8], str.initialize_launchers
mov dword [esp + 4], 0x413020
mov dword [esp], 1
call sym._wine_dbg_log.constprop.0_1
jmp 0x40baa5