Function at 0x40b660
Capabilities:
Check if file exists
Check if process is running under wine
Delete file
Delete registry key
Delete registry value
Get common file path
Get file attributes
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, 0xd0
mov ebx, dword [ebp + 0x10]
mov dword [esp + 0x10], 0x41e000
mov dword [esp + 0xc], 0
mov dword [esp + 8], 0
mov dword [esp + 4], 0
mov dword [esp], 0
call dword [sym.imp.shell32.dll_SHGetFolderPathW]
sub esp, 0x14
test eax, eax
js 0x40b96b
mov eax, dword [sym.imp.ucrtbase.dll__wgetenv]
mov dword [esp], str.XDG_CONFIG_HOME
mov dword [ebp - 0x5c], eax
call eax
test eax, eax
je 0x40bb68
mov dword [esp + 4], eax
mov dword [esp], str.__unix_s_menus_applications_merged
call fcn.00401930
movzx ecx, word [eax]
mov dword [0x41e20c], eax
mov edx, eax
test cx, cx
je 0x40b6fa
nop
cmp cx, 0x2f
jne 0x40b6ee
mov ecx, 0x5c
mov word [edx], cx
movzx ecx, word [edx + 2]
add edx, 2
test cx, cx
jne 0x40b6e0
mov esi, 0x5c
mov word [eax + 2], si
call fcn.00401080
mov dword [esp], str.XDG_DATA_HOME
mov eax, dword [ebp - 0x5c]
call eax
test eax, eax
je 0x40bd53
mov dword [esp + 4], eax
mov dword [esp], str.__unix_s
call fcn.00401930
movzx ecx, word [eax]
mov dword [0x41e208], eax
mov edx, eax
test cx, cx
je 0x40b75a
lea esi, [esi]
nop
cmp cx, 0x2f
jne 0x40b74e
mov esi, 0x5c
mov word [edx], si
movzx ecx, word [edx + 2]
add edx, 2
test cx, cx
jne 0x40b740
mov edi, 0x5c
mov word [eax + 2], di
mov dword [esp + 4], eax
mov dword [esp], str._sdesktop_directories
call fcn.00401930
mov esi, eax
call fcn.00401080
mov dword [esp], esi
mov edi, dword [sym.imp.ucrtbase.dll_free]
call edi
mov dword [esp], 0
call dword [sym.imp.ole32.dll_CoInitialize]
sub esp, 4
test eax, eax
js 0x40b95e
mov dword [ebp - 0x48], ebx
mov dword [ebp - 0x58], 0
mov dword [ebp - 0x6c], 0
mov dword [ebp - 0x60], 0
test ebx, ebx
jne 0x40b7ff
jmp 0x40b94b
mov dword [esp + 4], 0x412864
mov dword [esp], ebx
call esi
mov dword [ebp - 0x4c], eax
test eax, eax
je 0x40b980
mov dword [esp + 4], 0x4128a8
mov dword [esp], ebx
call esi
test eax, eax
jne 0x40bb00
mov dword [ebp - 0x60], 1
mov ebx, dword [ebp - 0x48]
test ebx, ebx
je 0x40b94b
cmp word [ebx], 0
je 0x40b94b
lea eax, [ebp - 0x48]
call fcn.00401120
mov ebx, eax
test eax, eax
je 0x40b94b
mov dword [esp + 4], 0x41223a
mov esi, dword [sym.imp.ucrtbase.dll_wcscmp]
mov dword [esp], eax
call esi
test eax, eax
jne 0x40b7c0
lea eax, [ebp - 0x2c]
mov dword [esp + 4], 0x412240
mov dword [esp + 8], eax
mov eax, dword [sym.imp.advapi32.dll_RegCreateKeyW]
mov dword [esp], 0x80000001
mov dword [ebp - 0x54], eax
call eax
sub esp, 0xc
test eax, eax
jne 0x40b8bb
mov ebx, dword [ebp - 0x2c]
test ebx, ebx
je 0x40b8bb
lea eax, [ebp - 0x34]
mov dword [ebp - 0x34], 0x20
mov dword [esp + 0x14], eax
lea eax, [ebp - 0x2c]
mov dword [esp + 0x10], eax
mov dword [esp + 0xc], 0
mov dword [esp + 8], 0
mov dword [esp + 4], str.Enable
mov dword [esp], ebx
call dword [sym.imp.advapi32.dll_RegQueryValueExA]
sub esp, 0x18
test eax, eax
jne 0x40b8af
movzx eax, byte [ebp - 0x2c]
mov edx, eax
and edx, 0xffffffdf
cmp dl, 0x59
jne 0x40bd33
mov dword [esp], ebx
call dword [sym.imp.advapi32.dll_RegCloseKey]
sub esp, 4
mov dword [ebp - 0x44], 0
mov dword [esp + 0xc], str.winemenubuilder_semaphore
mov dword [esp + 8], 1
mov dword [esp + 4], 1
mov dword [esp], 0
call dword [sym.imp.kernel32.dll_CreateSemaphoreA]
sub esp, 0x10
mov dword [ebp - 0x44], eax
lea eax, [ebp - 0x44]
mov dword [esp + 0x10], 0x1cff
mov dword [esp + 0xc], 0xffffffff
mov dword [esp + 8], 0
mov dword [esp + 4], eax
mov dword [esp], 1
call dword [sym.imp.user32.dll_MsgWaitForMultipleObjects]
sub esp, 0x14
test eax, eax
je 0x40bb89
test byte [section..data], 2
jne 0x40bf02
mov eax, dword [ebp - 0x44]
mov dword [esp], eax
call dword [sym.imp.kernel32.dll_CloseHandle]
mov ebx, dword [ebp - 0x48]
sub esp, 4
test ebx, ebx
jne 0x40b7ff
call dword [sym.imp.ole32.dll_CoUninitialize]
mov eax, dword [ebp - 0x58]
lea esp, [ebp - 0xc]
pop ebx
pop esi
pop edi
pop ebp
ret 0x10
test byte [section..data], 2
jne 0x40bf2b
mov dword [ebp - 0x58], 1
mov eax, dword [ebp - 0x58]
lea esp, [ebp - 0xc]
pop ebx
pop esi
pop edi
pop ebp
ret 0x10
lea eax, [ebp - 0x2c]
mov dword [esp + 4], str.SoftwareWineMenuFiles
mov dword [esp + 8], eax
mov dword [esp], 0x80000001
call dword [sym.imp.advapi32.dll_RegCreateKeyW]
sub esp, 0xc
test eax, eax
jne 0x40bb59
mov eax, dword [ebp - 0x2c]
mov dword [ebp - 0x50], eax
test eax, eax
je 0x40b7f4
mov dword [ebp - 0x54], edi
mov dword [ebp - 0x3c], 0x1000
mov ebx, 0x1000
mov dword [ebp - 0x38], 0x1000
jmp 0x40b9e9
mov eax, dword [ebp - 0x3c]
mov dword [esp], edi
shl dword [ebp - 0x38], 1
mov edi, dword [ebp - 0x54]
lea ebx, [eax + eax]
mov dword [ebp - 0x3c], ebx
call edi
mov dword [esp], esi
call edi
lea eax, [ebx + ebx]
mov dword [esp], eax
call dword [sym.imp.ucrtbase.dll_malloc]
mov edi, eax
test eax, eax
je 0x40cb21
mov eax, dword [ebp - 0x38]
add eax, eax
mov dword [esp], eax
call dword [sym.imp.ucrtbase.dll_malloc]
mov esi, eax
test eax, eax
je 0x40cb21
lea eax, [ebp - 0x38]
mov dword [esp + 0x18], esi
mov dword [esp + 0x1c], eax
lea eax, [ebp - 0x3c]
mov dword [esp + 0xc], eax
mov eax, dword [ebp - 0x4c]
mov dword [esp + 0x14], 0
mov dword [esp + 4], eax
mov eax, dword [ebp - 0x50]
mov dword [esp + 0x10], 0
mov dword [esp + 8], edi
mov dword [esp], eax
call dword [sym.imp.advapi32.dll_RegEnumValueW]
sub esp, 0x20
cmp eax, 0xea
je 0x40b9d0
mov ebx, esi
mov esi, edi
test eax, eax
je 0x40baa0
mov edi, dword [ebp - 0x54]
cmp eax, 0x103
je 0x40ba79
test byte [section..data], 2
jne 0x40bad0
mov dword [esp], esi
call edi
mov dword [esp], ebx
call edi
mov eax, dword [ebp - 0x50]
mov dword [esp], eax
call dword [sym.imp.advapi32.dll_RegCloseKey]
sub esp, 4
jmp 0x40b7f4
mov dword [esp], ebx
call dword [sym.imp.kernel32.dll_GetFileAttributesW]
sub esp, 4
cmp eax, 0xffffffff
je 0x40bb28
add dword [ebp - 0x4c], 1
mov dword [esp], esi
mov esi, dword [ebp - 0x54]
call esi
mov dword [esp], ebx
call esi
jmp 0x40b9b8
mov dword [esp + 0x10], eax
mov dword [esp + 0xc], str.error__ld_reading_registry_n
mov dword [esp + 8], str.cleanup_menus
mov dword [esp + 4], 0x40f000
mov dword [esp], 1
call fcn.00401580
jmp 0x40ba79
mov dword [esp + 4], 0x4128ae
mov dword [esp], ebx
call esi
test eax, eax
jne 0x40bd74
mov dword [ebp - 0x6c], 1
jmp 0x40b7f4
test byte [section..data], 8
jne 0x40bea4
mov dword [esp], esi
call dword [sym.imp.kernel32.dll_DeleteFileW]
mov eax, dword [ebp - 0x50]
sub esp, 4
mov dword [esp + 4], esi
mov dword [esp], eax
call dword [sym.imp.advapi32.dll_RegDeleteValueW]
sub esp, 8
jmp 0x40bab5
mov edx, dword fs:[0x18]
mov dword [edx + 0x34], eax
jmp 0x40b7f4
mov dword [esp], str.WINEHOMEDIR
mov eax, dword [ebp - 0x5c]
call eax
mov dword [esp], str._s_.config_menus_applications_merged
mov dword [esp + 4], eax
call fcn.00401930
jmp 0x40b6d0
mov eax, dword [0x41e208]
mov dword [esp], str._smime
mov dword [esp + 4], eax
call fcn.00401930
mov dword [esp], str._spackages
mov dword [esp + 4], eax
mov dword [ebp - 0x90], eax
call fcn.00401930
mov dword [ebp - 0x94], eax
call fcn.00401080
mov eax, dword [0x41e208]
mov dword [esp], str._s_applications
mov dword [esp + 4], eax
call fcn.00401930
mov dword [ebp - 0x7c], eax
call fcn.00401080
lea eax, [ebp - 0x2c]
mov ebx, dword [ebp - 0x5c]
mov dword [ebp - 0x30], 0
mov dword [ebp - 0x34], 0x401000
mov dword [ebp - 0x2c], eax
mov dword [ebp - 0x28], eax
mov dword [esp], str.XDG_DATA_DIRS
call ebx
test eax, eax
je 0x40c876
mov dword [esp], str.XDG_DATA_DIRS
call ebx
mov dword [ebp - 0x50], eax
test eax, eax
je 0x40bc1f
call fcn.00401be0
mov dword [ebp - 0x50], eax
mov eax, dword [0x41e208]
lea edx, [ebp - 0x2c]
call fcn.00402390
test eax, eax
jne 0x40bfc7
mov eax, dword [ebp - 0x50]
mov dword [esp], eax
call edi
lea eax, [ebp - 0x2c]
call fcn.00401020
mov dword [ebp - 0x74], 0
test byte [section..data], 2
jne 0x40cbb7
lea eax, [ebp - 0x2c]
mov dword [esp + 4], 0x412240
mov dword [esp + 8], eax
mov eax, dword [ebp - 0x54]
mov dword [esp], 0x80000001
call eax
sub esp, 0xc
mov ebx, eax
test eax, eax
jne 0x40c8b0
mov esi, dword [ebp - 0x2c]
mov dword [ebp - 0x54], esi
test esi, esi
je 0x40c8b0
mov dword [ebp - 0x50], 0
mov dword [ebp - 0x4c], edi
jmp 0x40bcb3
mov dword [esp], eax
add ebx, 1
mov eax, dword [ebp - 0x4c]
call eax
mov dword [esp], edi
mov eax, dword [ebp - 0x4c]
call eax
mov edx, ebx
mov eax, esi
call fcn.00401ae0
mov edi, eax
test eax, eax
je 0x40be30
mov edx, eax
mov ecx, str.open
mov eax, 1
call fcn.00401e60
test eax, eax
jne 0x40bca0
mov ecx, str.DesktopFile
mov edx, edi
mov eax, esi
call fcn.00401f60
mov dword [ebp - 0x50], eax
test eax, eax
je 0x40bd0c
test byte [section..data], 8
jne 0x40c818
mov eax, dword [ebp - 0x50]
mov dword [esp], eax
call dword [sym.imp.kernel32.dll_DeleteFileW]
sub esp, 4
mov dword [esp + 4], edi
mov dword [esp], esi
call dword [sym.imp.advapi32.dll_RegDeleteKeyW]
mov eax, dword [ebp - 0x50]
sub esp, 8
mov dword [esp], eax
mov eax, dword [ebp - 0x4c]
call eax
mov dword [ebp - 0x50], 1
jmp 0x40bcab
cmp al, 0x74
je 0x40b8af
cmp al, 0x54
je 0x40b8af
mov dword [esp], ebx
cmp al, 0x31
jne 0x40ba89
jmp 0x40b8b2
mov dword [esp], str.WINEHOMEDIR
mov eax, dword [ebp - 0x5c]
call eax
mov dword [esp], str._s_.local_share
mov dword [esp + 4], eax
call fcn.00401930
jmp 0x40b72c
mov dword [esp + 4], 0x4128b4
mov dword [esp], ebx
call esi
test eax, eax
je 0x40c880
cmp word [ebx], 0x2d
je 0x40c8fe
mov ecx, dword [ebp - 0x6c]
mov edx, dword [ebp - 0x60]
mov eax, ebx
test ecx, ecx
jne 0x40bf58
call fcn.004096a0
test eax, eax
jne 0x40b7f4
mov dword [ebp - 0x58], 1
test byte [section..data], 2
je 0x40b7f4
mov eax, ebx
shr eax, 0x10
je 0x40d414
mov dword [esp + 4], 0xffffffff
mov dword [esp], ebx
call dword [sym.imp.kernel32.dll_IsBadStringPtrW]
mov edx, eax
sub esp, 8
mov eax, str._invalid_
test edx, edx
jne 0x40bdf5
mov eax, ebx
call fcn.00401290
mov dword [esp + 0x10], eax
mov dword [esp + 0xc], str.failed_to_build_menu_item_for__s_n
mov dword [esp + 8], str.wWinMain
mov dword [esp + 4], 0x40f000
mov dword [esp], 1
call fcn.00401580
mov dword [ebp - 0x58], 1
jmp 0x40b7f4
mov eax, dword [ebp - 0x54]
mov edi, dword [ebp - 0x4c]
mov dword [esp], eax
call dword [sym.imp.advapi32.dll_RegCloseKey]
mov ecx, dword [ebp - 0x50]
or dword [ebp - 0x74], ecx
sub esp, 4
mov ebx, dword [ebp - 0x74]
test ebx, ebx
jne 0x40bf62
mov eax, dword [ebp - 0x44]
mov dword [esp + 8], 0
mov dword [esp + 4], 1
mov dword [esp], eax
call dword [sym.imp.kernel32.dll_ReleaseSemaphore]
mov eax, dword [ebp - 0x44]
sub esp, 0xc
mov dword [esp], eax
call dword [sym.imp.kernel32.dll_CloseHandle]
mov eax, dword [ebp - 0x90]
sub esp, 4
mov dword [esp], eax
call edi
mov eax, dword [ebp - 0x94]
mov dword [esp], eax
call edi
mov eax, dword [ebp - 0x7c]
mov dword [esp], eax
call edi
jmp 0x40b7f4
mov eax, edi
shr eax, 0x10
je 0x40c8e6
mov dword [esp + 4], 0xffffffff
mov dword [esp], edi
call dword [sym.imp.kernel32.dll_IsBadStringPtrW]
mov ecx, eax
sub esp, 8
mov eax, str._invalid_
test ecx, ecx
jne 0x40bed5
mov eax, edi
call fcn.00401290
mov dword [esp + 0x10], eax
mov dword [esp + 0xc], str.removing_menu_related_file__s_n
mov dword [esp + 8], str.cleanup_menus
mov dword [esp + 4], 0x40f000
mov dword [esp], 3
call fcn.00401580
jmp 0x40bb35
mov dword [esp + 0xc], str.failed_wait_for_semaphore_n
mov dword [esp + 8], str.RefreshFileTypeAssociations
mov dword [esp + 4], 0x40f000
mov dword [esp], 1
call fcn.00401580
jmp 0x40b931
mov dword [esp + 0x10], eax
mov dword [esp + 0xc], str.could_not_initialize_COM__error_0x_08lX_n
mov dword [esp + 8], str.wWinMain
mov dword [esp + 4], 0x40f000
mov dword [esp], 1
call fcn.00401580
jmp 0x40b96b
call fcn.0040b200
jmp 0x40bda8
mov eax, dword [ebp - 0x90]
mov dword [ebp - 0x2c], str.update_mime_database
mov dword [esp], eax
call sub.kernel32.dll_wine_get_unix_file_name
mov ebx, dword [sym.imp.ntdll.dll___wine_unix_spawnvp]
mov dword [ebp - 0x24], 0
mov dword [ebp - 0x28], eax
lea eax, [ebp - 0x2c]
mov dword [esp + 4], 0
mov dword [esp], eax
call ebx
mov eax, dword [ebp - 0x7c]
mov dword [ebp - 0x2c], str.update_desktop_database
sub esp, 8
mov dword [esp], eax
call sub.kernel32.dll_wine_get_unix_file_name
mov dword [esp + 4], 0
mov dword [ebp - 0x28], eax
lea eax, [ebp - 0x2c]
mov dword [esp], eax
call ebx
sub esp, 8
jmp 0x40be53
lea eax, [ebp - 0x38]
mov dword [esp + 4], 0x412330
mov dword [esp + 8], eax
mov eax, dword [ebp - 0x50]
mov dword [esp], eax
mov eax, dword [sym.imp.ucrtbase.dll_wcstok]
mov dword [ebp - 0x4c], eax
call eax
test eax, eax
je 0x40c08f
mov dword [ebp - 0x64], esi
lea esi, [esi]
mov dword [esp + 4], eax
mov dword [esp], 0x412334
call fcn.00401930
movzx edx, word [eax]
mov ebx, eax
test dx, dx
je 0x40c032
lea esi, [esi]
cmp dx, 0x2f
jne 0x40c026
mov ecx, 0x5c
mov word [eax], cx
movzx edx, word [eax + 2]
add eax, 2
test dx, dx
jne 0x40c018
lea edx, [ebx + 0x12]
cmp eax, edx
jbe 0x40c050
cmp word [eax - 2], 0x5c
jne 0x40c050
xor edx, edx
mov word [eax - 2], dx
lea esi, [esi]
lea esi, [esi]
lea edx, [ebp - 0x2c]
mov eax, ebx
call fcn.00402390
mov dword [esp], ebx
mov esi, eax
call edi
test esi, esi
je 0x40bc34
lea eax, [ebp - 0x38]
mov dword [esp + 4], 0x412330
mov dword [esp + 8], eax
mov eax, dword [ebp - 0x4c]
mov dword [esp], 0
call eax
test eax, eax
jne 0x40bff8
mov esi, dword [ebp - 0x64]
mov eax, dword [ebp - 0x50]
mov dword [esp], eax
call edi
mov dword [ebp - 0x74], 0
mov dword [ebp - 0x4c], 0
mov dword [ebp - 0x50], edi
mov dword [ebp - 0xa4], esi
jmp 0x40c10c
mov dword [esp + 0x18], 0
mov dword [esp + 0x14], 0
mov dword [esp + 0x10], 0
mov dword [esp + 0xc], 0xffff
mov dword [esp + 8], str.URL_Protocol
mov dword [esp + 4], eax
mov dword [esp], 0x80000000
call dword [sym.imp.advapi32.dll_RegGetValueW]
sub esp, 0x1c
test eax, eax
je 0x40c303
cmp word [ebx], 0x2e
je 0x40c129
lea esi, [esi]
mov dword [esp], ebx
mov eax, dword [ebp - 0x50]
call eax
add dword [ebp - 0x4c], 1
mov edx, dword [ebp - 0x4c]
mov eax, 0x80000000
call fcn.00401ae0
mov ebx, eax
test eax, eax
je 0x40c30f
cmp word [eax], 0x2e
jne 0x40c0b0
mov dword [ebp - 0x68], 0
mov dword [esp + 4], str..bat
mov edi, dword [sym.imp.ucrtbase.dll__wcsicmp]
mov dword [esp], ebx
call edi
test eax, eax
je 0x40c100
mov dword [esp + 4], str..com
mov dword [esp], ebx
call edi
test eax, eax
je 0x40c100
mov dword [esp + 4], str..exe
mov dword [esp], ebx
call edi
test eax, eax
je 0x40c100
mov dword [esp + 4], str..msi
mov dword [esp], ebx
call edi
test eax, eax
je 0x40c100
mov dword [esp + 4], str..url
mov dword [esp], ebx
call edi
test eax, eax
je 0x40c100
mov dword [esp + 4], str.file
mov dword [esp], ebx
call edi
test eax, eax
je 0x40c100
mov ecx, str.open
mov edx, ebx
mov eax, 1
call fcn.00401e60
mov dword [ebp - 0x80], eax
test eax, eax
je 0x40c28b
lea eax, [ebp - 0x38]
mov dword [esp + 4], 0x412240
mov dword [esp + 8], eax
mov eax, dword [ebp - 0x54]
mov dword [esp], 0x80000001
call eax
sub esp, 0xc
test eax, eax
jne 0x40c23c
mov esi, dword [ebp - 0x38]
test esi, esi
je 0x40c23c
lea eax, [ebp - 0x40]
mov dword [esp + 0x14], 0
mov dword [esp + 0x18], eax
mov eax, dword [sym.imp.advapi32.dll_RegGetValueW]
mov dword [esp + 0x10], 0
mov dword [esp + 0xc], 0x20
mov dword [esp + 8], str.Exclude
mov dword [esp + 4], 0
mov dword [esp], esi
mov dword [ebp - 0x70], eax
call eax
sub esp, 0x1c
test eax, eax
je 0x40cb3b
mov dword [esp], esi
call dword [sym.imp.advapi32.dll_RegCloseKey]
sub esp, 4
mov dword [ebp - 0x64], 0
mov esi, str.ieframe.dll
mov dword [ebp - 0x70], edi
mov edi, esi
mov esi, dword [ebp - 0x80]
jmp 0x40c26f
mov dword [esp], edi
call dword [sym.imp.ucrtbase.dll_wcslen]
lea edi, [edi + eax*2 + 2]
cmp word [edi], 0
je 0x40c389
mov dword [esp + 4], edi
mov dword [esp], esi
call dword [sym.imp.ucrtbase.dll_wcsstr]
test eax, eax
je 0x40c258
mov eax, dword [ebp - 0x64]
mov dword [esp], eax
mov eax, dword [ebp - 0x50]
call eax
mov dword [ebp - 0x70], 0
xor esi, esi
xor edi, edi
mov dword [ebp - 0x64], 0
mov dword [ebp - 0x8c], 0
mov dword [ebp - 0x84], 0
mov dword [ebp - 0x78], 0
mov eax, dword [ebp - 0x80]
mov dword [esp], eax
mov eax, dword [ebp - 0x50]
call eax
mov dword [esp], edi
mov edi, dword [ebp - 0x50]
call edi
mov dword [esp], esi
call edi
mov eax, dword [ebp - 0x78]
mov dword [esp], eax
call edi
mov eax, dword [ebp - 0x84]
mov dword [esp], eax
call edi
mov eax, dword [ebp - 0x8c]
mov dword [esp], eax
call edi
mov eax, dword [ebp - 0x64]
mov dword [esp], eax
call edi
mov eax, dword [ebp - 0x70]
mov dword [esp], eax
call edi
jmp 0x40c100
mov dword [ebp - 0x68], 1
jmp 0x40c130
mov eax, dword [ebp - 0x30]
mov edi, dword [ebp - 0x50]
test eax, eax
je 0x40c37c
lea esi, [esi]
mov esi, eax
mov eax, dword [eax + 4]
test eax, eax
jne 0x40c320
mov eax, dword [esi + 8]
test eax, eax
jne 0x40c320
mov ebx, dword [esi]
test ebx, ebx
je 0x40c36c
mov eax, dword [ebx + 8]
cmp esi, eax
je 0x40c358
test eax, eax
je 0x40c358
lea esi, [esi]
mov ebx, eax
mov eax, dword [eax + 4]
test eax, eax
jne 0x40c348
mov eax, dword [ebx + 8]
test eax, eax
jne 0x40c348
mov eax, dword [esi - 4]
sub esi, 4
mov dword [esp], eax
call edi
mov dword [esp], esi
mov esi, ebx
call edi
jmp 0x40c330
mov eax, dword [esi - 4]
sub esi, 4
mov dword [esp], eax
call edi
mov dword [esp], esi
call edi
lea eax, [ebp - 0x2c]
call fcn.00401020
jmp 0x40bc58
mov edi, dword [ebp - 0x70]
mov eax, dword [ebp - 0x64]
mov dword [esp], eax
mov eax, dword [ebp - 0x50]
call eax
xor ecx, ecx
mov edx, ebx
mov eax, 0xf
call fcn.00401e60
mov ecx, dword [ebp - 0x68]
mov dword [ebp - 0x84], eax
test ecx, ecx
je 0x40c969
mov dword [esp + 4], ebx
mov dword [esp], str.x_scheme_handler__s
call fcn.00401930
mov dword [ebp - 0x70], 0
mov dword [ebp - 0x64], eax
mov dword [ebp - 0x8c], 0
mov dword [ebp - 0x78], 0
mov ecx, str.open
mov edx, ebx
mov eax, 2
call fcn.00401e60
mov edi, eax
test eax, eax
je 0x40cdc7
mov edx, eax
xor eax, eax
call fcn.004019f0
test eax, eax
mov esi, eax
setne byte [ebp - 0x9c]
mov ecx, str.open
mov edx, ebx
mov eax, 4
call fcn.00401e60
mov dword [esp + 4], 0x412240
test eax, eax
mov ecx, eax
mov eax, str.A_Wine_application
mov dword [esp], 0x80000001
cmovne eax, ecx
mov dword [ebp - 0x88], eax
lea eax, [ebp - 0x38]
mov dword [esp + 8], eax
mov eax, dword [ebp - 0x54]
call eax
sub esp, 0xc
test eax, eax
jne 0x40cdd5
mov eax, dword [ebp - 0x38]
mov dword [ebp - 0x98], eax
test eax, eax
je 0x40cdd5
mov edx, ebx
mov ecx, str.MimeType
call fcn.00401f60
mov dword [ebp - 0xa0], 1
mov edx, eax
test eax, eax
je 0x40c4b2
mov eax, dword [ebp - 0x64]
mov dword [esp], edx
mov dword [ebp - 0xa8], edx
mov dword [esp + 4], eax
mov eax, dword [ebp - 0xa4]
call eax
mov edx, dword [ebp - 0xa8]
test eax, eax
setne al
movzx eax, al
mov dword [ebp - 0xa0], eax
mov eax, dword [ebp - 0x50]
mov dword [esp], edx
call eax
mov eax, dword [ebp - 0x70]
test eax, eax
je 0x40c50d
mov eax, dword [ebp - 0x98]
mov edx, ebx
mov ecx, str.ProgID
call fcn.00401f60
mov edx, eax
test eax, eax
je 0x40c4fb
mov eax, dword [ebp - 0x70]
mov dword [esp], edx
mov dword [ebp - 0xa8], edx
mov dword [esp + 4], eax
mov eax, dword [ebp - 0xa4]
call eax
mov edx, dword [ebp - 0xa8]
test eax, eax
je 0x40c505
mov dword [ebp - 0xa0], 1
mov dword [esp], edx
mov eax, dword [ebp - 0x50]
call eax
mov eax, dword [ebp - 0x98]
mov edx, ebx
mov ecx, str.AppName
call fcn.00401f60
mov edx, eax
test eax, eax
je 0x40c54a
mov eax, dword [ebp - 0x88]
mov dword [esp], edx
mov dword [ebp - 0xa8], edx
mov dword [esp + 4], eax
mov eax, dword [ebp - 0xa4]
call eax
mov edx, dword [ebp - 0xa8]
test eax, eax
je 0x40c554
mov dword [ebp - 0xa0], 1
mov dword [esp], edx
mov eax, dword [ebp - 0x50]
call eax
mov eax, dword [ebp - 0x98]
mov edx, ebx
mov ecx, str.OpenWithIcon
call fcn.00401f60
test eax, eax
mov edx, eax
setne al
cmp al, byte [ebp - 0x9c]
je 0x40cf36
mov dword [esp], edx
mov eax, dword [ebp - 0x50]
call eax
mov eax, dword [ebp - 0x98]
mov dword [esp], eax
mov eax, dword [sym.imp.advapi32.dll_RegCloseKey]
mov dword [ebp - 0x98], eax
call eax
sub esp, 4
mov eax, dword [ebp - 0x68]
test eax, eax
je 0x40d186
mov eax, dword [ebp - 0x7c]
mov dword [esp + 8], ebx
mov dword [esp], str._swine_protocol__s.desktop
mov dword [esp + 4], eax
call fcn.00401930
mov dword [ebp - 0x68], eax
mov dword [esp], str.WINECONFIGDIR
mov eax, dword [ebp - 0x5c]
call eax
mov dword [ebp - 0xb8], eax
test byte [section..data], 8
jne 0x40cf72
mov eax, dword [ebp - 0x68]
mov dword [esp + 4], 0x411260
mov dword [esp], eax
call dword [sym.imp.ucrtbase.dll__wfopen]
test eax, eax
je 0x40d146
mov dword [esp + 4], str._Desktop_Entry__n
mov dword [esp], eax
mov dword [ebp - 0x74], eax
call fcn.004011f0
mov eax, dword [ebp - 0x74]
mov dword [esp + 4], str.TypeApplication_n
mov dword [esp], eax
call fcn.004011f0
mov eax, dword [ebp - 0x88]
call fcn.00401d70
mov dword [esp + 4], str.Name_s_n
mov dword [esp + 8], eax
mov eax, dword [ebp - 0x74]
mov dword [esp], eax
call fcn.004011f0
mov eax, dword [ebp - 0x64]
call fcn.00401d70
mov dword [esp + 4], str.MimeType_s__n
mov dword [esp + 8], eax
mov eax, dword [ebp - 0x74]
mov dword [esp], eax
call fcn.004011f0
mov ecx, dword [ebp - 0xb8]
test ecx, ecx
je 0x40d4af
mov dword [esp], ecx
call sub.kernel32.dll_wine_get_unix_file_name
mov dword [esp + 4], str.Execenv_WINEPREFIX__s__wine_start
mov dword [esp + 8], eax
mov dword [ebp - 0xa0], eax
mov eax, dword [ebp - 0x74]
mov dword [esp], eax
call fcn.004011f0
mov edx, dword [ebp - 0xa0]
mov dword [esp + 4], 0
mov eax, dword fs:[0x18]
mov dword [esp + 8], edx
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 eax, dword [ebp - 0x70]
test eax, eax
je 0x40d4c7
call fcn.004021e0
mov dword [esp + 4], str._ProgIDOpen__s___f_n
mov dword [esp + 8], eax
mov eax, dword [ebp - 0x74]
mov dword [esp], eax
call fcn.004011f0
mov eax, dword [ebp - 0x74]
mov dword [esp + 4], str.NoDisplaytrue_n
mov dword [esp], eax
call fcn.004011f0
mov eax, dword [ebp - 0x74]
mov dword [esp + 4], str.StartupNotifytrue_n
mov dword [esp], eax
call fcn.004011f0
test esi, esi
je 0x40c735
mov eax, esi
call fcn.00401d70
mov dword [esp + 4], str.Icon_s_n
mov dword [esp + 8], eax
mov eax, dword [ebp - 0x74]
mov dword [esp], eax
call fcn.004011f0
mov eax, dword [ebp - 0x74]
mov dword [esp], eax
call dword [sym.imp.ucrtbase.dll_fclose]
lea eax, [ebp - 0x38]
mov dword [ebp - 0x3c], 0
mov dword [esp + 8], eax
mov eax, dword [ebp - 0x54]
mov dword [esp + 4], 0x412240
mov dword [esp], 0x80000001
call eax
sub esp, 0xc
test eax, eax
jne 0x40d68c
mov eax, dword [ebp - 0x38]
mov dword [ebp - 0xa0], eax
test eax, eax
je 0x40d68c
lea eax, [ebp - 0x3c]
mov dword [esp + 4], ebx
mov dword [esp + 8], eax
mov eax, dword [ebp - 0xa0]
mov dword [esp], eax
mov eax, dword [ebp - 0x54]
call eax
sub esp, 0xc
test eax, eax
jne 0x40d65a
mov ecx, dword [ebp - 0x64]
cmp word [ecx], 0
mov eax, ecx
je 0x40c7b7
add eax, 2
cmp word [eax], 0
jne 0x40c7ae
mov ecx, dword [ebp - 0x64]
mov dword [esp + 0xc], 1
mov dword [esp + 8], 0
sub eax, ecx
mov dword [esp + 0x10], ecx
add eax, 2
mov dword [esp + 4], str.MimeType
mov dword [esp + 0x14], eax
mov eax, dword [ebp - 0x3c]
mov dword [esp], eax
mov eax, dword [sym.imp.advapi32.dll_RegSetValueExW]
mov dword [ebp - 0x74], eax
call eax
mov eax, dword [ebp - 0x70]
sub esp, 0x18
test eax, eax
je 0x40d518
cmp word [eax], 0
je 0x40d4df
add eax, 2
cmp word [eax], 0
jne 0x40c807
jmp 0x40d4e2
mov eax, edi
shr eax, 0x10
je 0x40cbe0
mov dword [esp + 4], 0xffffffff
mov dword [esp], edi
call dword [sym.imp.kernel32.dll_IsBadStringPtrW]
mov ecx, eax
sub esp, 8
mov eax, str._invalid_
test ecx, ecx
jne 0x40c849
mov eax, edi
call fcn.00401290
mov dword [esp + 0x10], eax
mov dword [esp + 0xc], str.removing_file_type_association_for__s_n
mov dword [esp + 8], str.cleanup_associations
mov dword [esp + 4], 0x40f000
mov dword [esp], 3
call fcn.00401580
jmp 0x40bcfd
mov eax, str._usr_local_share_:_usr_share_
jmp 0x40bc17
lea eax, [ebp - 0x48]
call fcn.00401120
mov ebx, eax
test eax, eax
je 0x40b7f4
lea eax, [ebp - 0x48]
call fcn.00401120
mov edx, eax
test eax, eax
je 0x40b7f4
mov eax, ebx
call fcn.00409d20
jmp 0x40b7f4
test byte [section..data], 2
je 0x40be48
mov dword [esp + 0xc], str.could_not_open_file_associations_key_n
mov dword [esp + 8], str.cleanup_associations
mov dword [esp + 4], 0x40f000
mov dword [esp], 1
call fcn.00401580
jmp 0x40be48
movzx eax, di
mov dword [esp], str._04x
mov dword [esp + 4], eax
call fcn.00401470
jmp 0x40bed5
test byte [section..data], 2
je 0x40b7f4
mov eax, ebx
shr eax, 0x10
je 0x40d42c
mov dword [esp + 4], 0xffffffff
mov dword [esp], ebx
call dword [sym.imp.kernel32.dll_IsBadStringPtrW]
mov edx, eax
sub esp, 8
mov eax, str._invalid_
test edx, edx
jne 0x40c93c
mov eax, ebx
call fcn.00401290
mov dword [esp + 0x10], eax
mov dword [esp + 0xc], str.unknown_option__s_n
mov dword [esp + 8], str.wWinMain
mov dword [esp + 4], 0x40f000
mov dword [esp], 1
call fcn.00401580
jmp 0x40b7f4
mov dword [esp], ebx
mov esi, dword [sym.imp.ucrtbase.dll__wcslwr]
call esi
xor ecx, ecx
mov edx, ebx
mov eax, 3
call fcn.00401e60
xor ecx, ecx
mov edx, ebx
mov dword [ebp - 0x78], eax
mov eax, 0xe
call fcn.00401e60
mov dword [ebp - 0x8c], eax
test eax, eax
je 0x40cbf8
mov dword [esp], eax
call esi
mov eax, dword [ebp - 0x2c]
lea ecx, [ebp - 0x2c]
lea esi, [eax - 8]
cmp ecx, eax
je 0x40ce25
mov dword [ebp - 0x64], 0
xor eax, eax
mov dword [ebp - 0x70], edi
mov edi, esi
mov esi, eax
mov eax, dword [edi + 4]
mov dword [esp], ebx
mov dword [esp + 4], eax
call dword [sym.imp.shlwapi.dll_PathMatchSpecW]
sub esp, 8
test eax, eax
je 0x40ca0e
test esi, esi
je 0x40caeb
mov ecx, dword [edi + 4]
cmp word [ecx], 0
je 0x40d16d
mov eax, ecx
lea esi, [esi]
add eax, 2
cmp word [eax], 0
jne 0x40c9f8
sub eax, ecx
sar eax, 1
cmp eax, dword [ebp - 0x64]
jg 0x40cbb0
mov eax, dword [edi + 8]
lea ecx, [ebp - 0x2c]
lea edi, [eax - 8]
cmp ecx, eax
jne 0x40c9c7
mov edi, dword [ebp - 0x70]
test esi, esi
je 0x40ce17
mov eax, esi
call fcn.00401be0
mov dword [ebp - 0x64], eax
test eax, eax
je 0x40ce17
xor ecx, ecx
mov edx, ebx
mov eax, 0x80000000
call fcn.00401f60
mov dword [ebp - 0x70], eax
test eax, eax
je 0x40ce70
mov dword [esp + 8], eax
mov eax, dword [ebp - 0x64]
mov dword [esp], str._s__s
mov dword [esp + 4], eax
call fcn.00401930
mov edi, dword [ebp - 0x30]
mov dword [ebp - 0x98], eax
mov dword [ebp - 0x9c], edi
test edi, edi
je 0x40d982
mov ecx, dword [ebp - 0x34]
mov esi, eax
mov dword [ebp - 0x88], ecx
mov ecx, ebx
mov ebx, edi
mov edi, ecx
jmp 0x40caa3
mov eax, dword [ebx + 4]
cmovns eax, dword [ebx + 8]
mov ebx, eax
test eax, eax
je 0x40ce95
mov dword [esp + 4], ebx
mov eax, dword [ebp - 0x88]
mov dword [esp], esi
call eax
test eax, eax
jne 0x40ca92
mov ecx, dword [ebp - 0x98]
mov dword [esp + 4], 0
mov ebx, edi
xor esi, esi
mov eax, dword fs:[0x18]
mov dword [esp + 8], ecx
mov eax, dword [eax + 0x30]
xor edi, edi
mov eax, dword [eax + 0x18]
mov dword [esp], eax
call dword [sym.imp.kernel32.dll_HeapFree]
sub esp, 0xc
jmp 0x40c2b8
mov ecx, dword [edi + 4]
mov esi, dword [edi]
cmp word [ecx], 0
je 0x40cb15
mov eax, ecx
lea esi, [esi]
nop
add eax, 2
cmp word [eax], 0
jne 0x40cb00
sub eax, ecx
sar eax, 1
mov dword [ebp - 0x64], eax
jmp 0x40ca0e
mov dword [ebp - 0x64], 0
jmp 0x40ca0e
test byte [section..data], 2
jne 0x40d11d
mov dword [esp], 1
call dword [sym.imp.kernel32.dll_ExitProcess]
mov eax, dword [ebp - 0x40]
mov dword [esp], eax
call dword [sym.imp.ucrtbase.dll_malloc]
mov dword [ebp - 0x64], eax
test eax, eax
je 0x40cb21
lea eax, [ebp - 0x40]
mov dword [esp + 0x10], 0
mov dword [esp + 0x18], eax
mov eax, dword [ebp - 0x64]
mov dword [esp + 0xc], 0x20
mov dword [esp + 0x14], eax
mov eax, dword [ebp - 0x70]
mov dword [esp + 8], str.Exclude
mov dword [esp + 4], 0
mov dword [esp], esi
call eax
sub esp, 0x1c
test eax, eax
jne 0x40ce79
mov dword [esp], esi
call dword [sym.imp.advapi32.dll_RegCloseKey]
mov eax, dword [ebp - 0x64]
sub esp, 4
cmp word [eax], 0
je 0x40c38c
mov esi, eax
jmp 0x40c248
mov esi, dword [edi]
jmp 0x40caf6
mov dword [esp + 0xc], str.could_not_build_native_MIME_types_n
mov dword [esp + 8], str.generate_associations
mov dword [esp + 4], 0x40f000
mov dword [esp], 1
call fcn.00401580
jmp 0x40bc58
movzx eax, di
mov dword [esp], str._04x
mov dword [esp + 4], eax
call fcn.00401470
jmp 0x40c849
mov eax, dword [ebp - 0x2c]
lea ecx, [ebp - 0x2c]
lea esi, [eax - 8]
cmp ecx, eax
jne 0x40c9b7
mov dword [esp + 4], str..lnk
mov dword [esp], ebx
call edi
test eax, eax
jne 0x40d86b
mov eax, str.application_x_ms_shortcut
call fcn.00401be0
mov dword [ebp - 0x64], eax
test eax, eax
je 0x40d86b
mov esi, dword [ebp - 0x84]
test esi, esi
je 0x40cccc
mov eax, dword [ebp - 0x64]
call fcn.00401be0
mov esi, eax
movzx eax, word [eax]
mov edx, esi
test ax, ax
je 0x40cc6f
cmp ax, 0x2f
jne 0x40cc63
mov edi, 0x2d
mov word [edx], di
movzx eax, word [edx + 2]
add edx, 2
test ax, ax
jne 0x40cc55
mov eax, dword [ebp - 0x84]
mov dword [esp + 4], 0x2c
mov dword [esp], eax
call dword [sym.imp.ucrtbase.dll_wcsrchr]
xor edx, edx
test eax, eax
je 0x40ccb0
xor ecx, ecx
add eax, 2
mov word [eax - 2], cx
mov dword [esp + 8], 0xa
mov dword [esp + 4], 0
mov dword [esp], eax
call dword [sym.imp.ucrtbase.dll_wcstol]
mov edx, eax
mov dword [esp], 0
mov eax, dword [ebp - 0x84]
mov ecx, esi
call fcn.00406e50
mov dword [esp], esi
mov eax, dword [ebp - 0x50]
call eax
test byte [section..data], 8
jne 0x40d333
lea eax, [ebx + 2]
mov dword [esp], str._sx_wine_extension__s.xml
mov dword [esp + 8], eax
mov eax, dword [ebp - 0x94]
mov dword [esp + 4], eax
call fcn.00401930
mov dword [esp + 4], 0x411260
mov dword [esp], eax
mov edi, eax
call dword [sym.imp.ucrtbase.dll__wfopen]
mov esi, eax
test eax, eax
je 0x40d2c4
mov dword [esp + 4], str.__xml_version_1.0__encoding_UTF_8____n
mov dword [esp], eax
call fcn.004011f0
mov dword [esp + 4], str._mime_info_xmlns_http:__www.freedesktop.org_standards_shared_mime_info___n
mov dword [esp], esi
call fcn.004011f0
mov eax, dword [ebp - 0x64]
call fcn.00402070
mov dword [esp + 4], str.___mime_type_type__s___n
mov dword [esp + 8], eax
mov dword [esp], esi
call fcn.004011f0
mov eax, ebx
call fcn.00402070
mov dword [esp + 4], str._____glob_pattern__s____n
mov dword [esp + 8], eax
mov dword [esp], esi
call fcn.004011f0
mov eax, dword [ebp - 0x78]
test eax, eax
je 0x40cd8a
call fcn.00402070
mov dword [esp + 4], str._____comment__s__comment__n
mov dword [esp + 8], eax
mov dword [esp], esi
call fcn.004011f0
mov dword [esp + 4], str.____mime_type__n
mov dword [esp], esi
call fcn.004011f0
mov dword [esp + 4], str.__mime_info__n
mov dword [esp], esi
call fcn.004011f0
mov dword [esp], esi
call dword [sym.imp.ucrtbase.dll_fclose]
mov dword [esp], edi
mov eax, dword [ebp - 0x50]
call eax
mov dword [ebp - 0x74], 1
jmp 0x40ca38
mov byte [ebp - 0x9c], 0
xor esi, esi
jmp 0x40c410
movzx ecx, byte [ebp - 0x74]
and byte [ebp - 0x9c], cl
test byte [section..data], 2
jne 0x40d210
cmp byte [ebp - 0x9c], 0
je 0x40c2b8
mov dword [esp], 0
mov ecx, esi
xor edx, edx
mov eax, edi
call fcn.00406e50
mov dword [ebp - 0x74], 1
jmp 0x40c2b8
mov eax, dword [ebp - 0x8c]
test eax, eax
je 0x40cc09
mov esi, dword [ebp - 0x8c]
mov dword [esp + 4], 0x2f
mov dword [esp], esi
call dword [sym.imp.ucrtbase.dll_wcschr]
test eax, eax
je 0x40cc09
mov eax, esi
call fcn.00401be0
mov dword [ebp - 0x64], eax
mov eax, dword [ebp - 0x84]
test eax, eax
je 0x40cccc
mov eax, dword [ebp - 0x64]
test eax, eax
jne 0x40cc41
jmp 0x40e55c
xor esi, esi
xor edi, edi
jmp 0x40c2b8
mov eax, dword [ebp - 0x64]
mov dword [esp], eax
mov eax, dword [ebp - 0x50]
call eax
mov dword [esp], esi
call dword [sym.imp.advapi32.dll_RegCloseKey]
sub esp, 4
jmp 0x40c23c
mov eax, edi
mov dword [esp], 0x14
mov edi, ebx
mov ebx, eax
call dword [sym.imp.ucrtbase.dll_malloc]
mov esi, eax
test eax, eax
je 0x40cb21
mov eax, dword [ebp - 0x98]
mov dword [ebp - 0xa0], ebx
mov ebx, dword [ebp - 0x9c]
mov dword [esi], eax
jmp 0x40cedf
lea ecx, [ebx + 4]
lea edx, [ebx + 8]
mov eax, ecx
cmovns eax, edx
mov edx, dword [eax]
test edx, edx
je 0x40d239
mov ebx, edx
mov eax, dword [ebp - 0x98]
mov dword [esp + 4], ebx
mov dword [esp], eax
mov eax, dword [ebp - 0x88]
call eax
test eax, eax
jne 0x40cec8
mov ebx, dword [ebp - 0xa0]
xor esi, esi
test byte [section..data], 2
je 0x40c2b8
mov dword [esp + 0xc], str.error_updating_rb_tree_n
mov dword [esp + 8], str.generate_associations
mov dword [esp + 4], 0x40f000
mov dword [esp], 1
call fcn.00401580
jmp 0x40c2b8
test esi, esi
jne 0x40d1a8
mov dword [esp], edx
mov eax, dword [ebp - 0x50]
call eax
mov eax, dword [ebp - 0x98]
mov dword [esp], eax
mov eax, dword [sym.imp.advapi32.dll_RegCloseKey]
mov dword [ebp - 0x98], eax
call eax
mov edx, dword [ebp - 0xa0]
sub esp, 4
test edx, edx
jne 0x40c5a2
jmp 0x40c2b8
mov eax, dword [ebp - 0x68]
test eax, eax
je 0x40d85c
shr eax, 0x10
je 0x40d886
mov eax, dword [ebp - 0x68]
mov dword [esp + 4], 0xffffffff
mov dword [esp], eax
call dword [sym.imp.kernel32.dll_IsBadStringPtrW]
mov dword [ebp - 0xac], str._invalid_
sub esp, 8
test eax, eax
jne 0x40cfb9
mov eax, dword [ebp - 0x68]
call fcn.00401290
mov dword [ebp - 0xac], eax
test esi, esi
je 0x40d84d
mov eax, esi
shr eax, 0x10
je 0x40d775
mov dword [esp + 4], 0xffffffff
mov dword [esp], esi
call dword [sym.imp.kernel32.dll_IsBadStringPtrW]
mov dword [ebp - 0xa8], str._invalid_
sub esp, 8
test eax, eax
jne 0x40cffb
mov eax, esi
call fcn.00401290
mov dword [ebp - 0xa8], eax
mov eax, dword [ebp - 0x70]
test eax, eax
je 0x40d766
shr eax, 0x10
je 0x40d747
mov eax, dword [ebp - 0x70]
mov dword [esp + 4], 0xffffffff
mov dword [esp], eax
call dword [sym.imp.kernel32.dll_IsBadStringPtrW]
mov dword [ebp - 0xa0], str._invalid_
sub esp, 8
test eax, eax
jne 0x40d042
mov eax, dword [ebp - 0x70]
call fcn.00401290
mov dword [ebp - 0xa0], eax
mov eax, dword [ebp - 0x64]
test eax, eax
je 0x40d738
shr eax, 0x10
je 0x40d6e8
mov eax, dword [ebp - 0x64]
mov dword [esp + 4], 0xffffffff
mov dword [esp], eax
call dword [sym.imp.kernel32.dll_IsBadStringPtrW]
mov dword [ebp - 0xb0], str._invalid_
sub esp, 8
test eax, eax
jne 0x40d089
mov eax, dword [ebp - 0x64]
call fcn.00401290
mov dword [ebp - 0xb0], eax
mov eax, dword [ebp - 0x88]
shr eax, 0x10
je 0x40d6cc
mov eax, dword [ebp - 0x88]
mov dword [esp + 4], 0xffffffff
mov dword [esp], eax
call dword [sym.imp.kernel32.dll_IsBadStringPtrW]
mov edx, eax
sub esp, 8
mov eax, str._invalid_
test edx, edx
jne 0x40d0c8
mov eax, dword [ebp - 0x88]
call fcn.00401290
mov ecx, dword [ebp - 0xac]
mov dword [esp + 0x10], eax
mov dword [esp + 0xc], str.friendlyAppName_s__MIME_type__s__progID_s__icon_s_to_file__s_n
mov dword [esp + 0x20], ecx
mov ecx, dword [ebp - 0xa8]
mov dword [esp + 8], str.write_freedesktop_association_entry
mov dword [esp + 0x1c], ecx
mov ecx, dword [ebp - 0xa0]
mov dword [esp + 4], 0x40f000
mov dword [esp + 0x18], ecx
mov ecx, dword [ebp - 0xb0]
mov dword [esp], 3
mov dword [esp + 0x14], ecx
call fcn.00401580
jmp 0x40c5e6
mov dword [esp + 0xc], str.out_of_memory_n
mov dword [esp + 8], str.xmalloc
mov dword [esp + 4], 0x40f000
mov dword [esp], 1
call fcn.00401580
jmp 0x40cb2e
movzx ecx, byte [ebp - 0x74]
and byte [ebp - 0x9c], cl
test byte [section..data], 2
jne 0x40d444
mov eax, dword [ebp - 0x68]
mov dword [esp], eax
mov eax, dword [ebp - 0x50]
call eax
jmp 0x40cdec
mov eax, dword [ebp - 0x64]
test eax, eax
jns 0x40ca0e
mov dword [ebp - 0x64], 0
mov esi, dword [edi]
jmp 0x40ca0e
lea eax, [ebx + 2]
mov dword [esp], str._swine_extension__s.desktop
mov dword [esp + 8], eax
mov eax, dword [ebp - 0x7c]
mov dword [esp + 4], eax
call fcn.00401930
mov dword [ebp - 0x68], eax
jmp 0x40c5c7
mov dword [esp], edx
mov eax, dword [ebp - 0xa4]
mov dword [ebp - 0xa8], edx
mov dword [esp + 4], esi
call eax
mov edx, dword [ebp - 0xa8]
test eax, eax
mov eax, dword [ebp - 0x50]
mov dword [esp], edx
jne 0x40c587
call eax
mov eax, dword [ebp - 0x98]
mov dword [esp], eax
mov eax, dword [sym.imp.advapi32.dll_RegCloseKey]
mov dword [ebp - 0x98], eax
call eax
cmp dword [ebp - 0xa0], 0
push eax
jne 0x40c5a2
movzx ecx, byte [ebp - 0x74]
and byte [ebp - 0x9c], cl
jmp 0x40cdec
mov dword [esp + 0xc], str.error_opening_associations_registry_key_n
mov dword [esp + 8], str.has_association_changed
mov dword [esp + 4], 0x40f000
mov dword [esp], 1
call fcn.00401580
jmp 0x40cdec
mov dword [ebp - 0x9c], ebx
mov ebx, dword [ebp - 0xa0]
lea edi, [esi + 4]
mov ecx, dword [ebp - 0x9c]
mov dword [esi + 0x10], 1
mov dword [esi + 8], 0
mov dword [esi + 4], ecx
mov dword [esi + 0xc], 0
xor esi, esi
mov dword [eax], edi
mov eax, dword [edi]
test eax, eax
je 0x40d2b8
test byte [eax + 0xc], 1
je 0x40d2ae
mov edx, dword [eax]
mov ecx, dword [edx + 4]
cmp ecx, eax
je 0x40d828
test ecx, ecx
je 0x40d7b6
test byte [ecx + 0xc], 1
je 0x40d7b6
xor dword [edx + 0xc], 1
xor dword [ecx + 0xc], 1
mov eax, dword [edx + 8]
xor dword [eax + 0xc], 1
mov eax, dword [edi]
mov edi, dword [eax]
mov eax, dword [edi]
test eax, eax
jne 0x40d270
mov eax, esi
test al, al
jne 0x40d720
mov eax, dword [ebp - 0x30]
and dword [eax + 0xc], 0xfffffffe
jmp 0x40c3e1
test byte [section..data], 2
je 0x40cdb3
test edi, edi
je 0x40d978
mov eax, edi
shr eax, 0x10
je 0x40d960
mov dword [esp + 4], 0xffffffff
mov dword [esp], edi
call dword [sym.imp.kernel32.dll_IsBadStringPtrW]
push edx
push edx
test eax, eax
jne 0x40d956
mov eax, edi
call fcn.00401290
mov dword [esp + 0x10], eax
mov dword [esp + 0xc], str.error_writing_file__s_n
mov dword [esp + 8], str.write_freedesktop_mime_type_entry
mov dword [esp + 4], 0x40f000
mov dword [esp], 1
call fcn.00401580
jmp 0x40cdb3
mov eax, dword [ebp - 0x78]
test eax, eax
je 0x40d94c
shr eax, 0x10
je 0x40d931
mov edi, dword [ebp - 0x78]
mov dword [esp + 4], 0xffffffff
mov esi, str._invalid_
mov dword [esp], edi
call dword [sym.imp.kernel32.dll_IsBadStringPtrW]
sub esp, 8
test eax, eax
jne 0x40d370
mov eax, edi
call fcn.00401290
mov esi, eax
mov eax, ebx
shr eax, 0x10
je 0x40d917
mov dword [esp + 4], 0xffffffff
mov edi, str._invalid_
mov dword [esp], ebx
call dword [sym.imp.kernel32.dll_IsBadStringPtrW]
sub esp, 8
test eax, eax
jne 0x40d3a1
mov eax, ebx
call fcn.00401290
mov edi, eax
mov eax, dword [ebp - 0x64]
test eax, eax
je 0x40d7ac
shr eax, 0x10
je 0x40d793
mov eax, dword [ebp - 0x64]
mov dword [esp + 4], 0xffffffff
mov dword [esp], eax
call dword [sym.imp.kernel32.dll_IsBadStringPtrW]
mov edx, eax
sub esp, 8
mov eax, str._invalid_
test edx, edx
jne 0x40d3df
mov eax, dword [ebp - 0x64]
call fcn.00401290
mov dword [esp + 0x18], esi
mov dword [esp + 0x14], edi
mov dword [esp + 0x10], eax
mov dword [esp + 0xc], str.writing_MIME_type__s__extension_s__comment_s_n
mov dword [esp + 8], str.write_freedesktop_mime_type_entry
mov dword [esp + 4], 0x40f000
mov dword [esp], 3
call fcn.00401580
jmp 0x40ccd9
movzx ebx, bx
mov dword [esp], str._04x
mov dword [esp + 4], ebx
call fcn.00401470
jmp 0x40bdf5
movzx ebx, bx
mov dword [esp], str._04x
mov dword [esp + 4], ebx
call fcn.00401470
jmp 0x40c93c
mov eax, dword [ebp - 0x68]
test eax, eax
je 0x40d72e
shr eax, 0x10
je 0x40d707
mov eax, dword [ebp - 0x68]
mov dword [esp + 4], 0xffffffff
mov dword [esp], eax
call dword [sym.imp.kernel32.dll_IsBadStringPtrW]
mov edx, eax
sub esp, 8
mov eax, str._invalid_
test edx, edx
jne 0x40d482
mov eax, dword [ebp - 0x68]
call fcn.00401290
mov dword [esp + 0x10], eax
mov dword [esp + 0xc], str.error_writing_association_file__s_n
mov dword [esp + 8], str.write_freedesktop_association_entry
mov dword [esp + 4], 0x40f000
mov dword [esp], 1
call fcn.00401580
jmp 0x40d15d
mov eax, dword [ebp - 0x74]
mov dword [esp + 4], str.Execwine_start
mov dword [esp], eax
call fcn.004011f0
jmp 0x40c6c6
mov eax, dword [ebp - 0x74]
mov dword [esp + 4], str.__u_n
mov dword [esp], eax
call fcn.004011f0
jmp 0x40c6ed
mov eax, dword [ebp - 0x70]
mov ecx, dword [ebp - 0x70]
mov dword [esp + 0xc], 1
mov dword [esp + 8], 0
sub eax, ecx
mov dword [esp + 0x10], ecx
add eax, 2
mov dword [esp + 4], str.ProgID
mov dword [esp + 0x14], eax
mov eax, dword [ebp - 0x3c]
mov dword [esp], eax
mov eax, dword [ebp - 0x74]
call eax
sub esp, 0x18
mov eax, dword [ebp - 0x88]
cmp word [eax], 0
je 0x40d64f
add eax, 2
cmp word [eax], 0
jne 0x40d528
mov ecx, dword [ebp - 0x88]
mov dword [esp + 0xc], 1
mov dword [esp + 8], 0
sub eax, ecx
mov dword [esp + 0x10], ecx
add eax, 2
mov dword [esp + 4], str.AppName
mov dword [esp + 0x14], eax
mov eax, dword [ebp - 0x3c]
mov dword [esp], eax
mov eax, dword [ebp - 0x74]
call eax
mov eax, dword [ebp - 0x68]
sub esp, 0x18
cmp word [eax], 0
je 0x40d647
add eax, 2
cmp word [eax], 0
jne 0x40d577
mov ecx, dword [ebp - 0x68]
mov dword [esp + 0xc], 1
mov dword [esp + 8], 0
sub eax, ecx
mov dword [esp + 0x10], ecx
add eax, 2
mov dword [esp + 4], str.DesktopFile
mov dword [esp + 0x14], eax
mov eax, dword [ebp - 0x3c]
mov dword [esp], eax
mov eax, dword [ebp - 0x74]
call eax
sub esp, 0x18
test esi, esi
je 0x40d62f
cmp word [esi], 0
mov eax, esi
je 0x40d5cb
add eax, 2
cmp word [eax], 0
jne 0x40d5c2
sub eax, esi
mov dword [esp + 0x10], esi
add eax, 2
mov dword [esp + 0xc], 1
mov dword [esp + 0x14], eax
mov eax, dword [ebp - 0x3c]
mov dword [esp + 8], 0
mov dword [esp], eax
mov eax, dword [ebp - 0x74]
mov dword [esp + 4], str.OpenWithIcon
call eax
sub esp, 0x18
mov eax, dword [ebp - 0xa0]
mov dword [esp], eax
mov eax, dword [ebp - 0x98]
call eax
mov eax, dword [ebp - 0x3c]
sub esp, 4
mov dword [esp], eax
mov eax, dword [ebp - 0x98]
call eax
mov dword [ebp - 0x74], 1
sub esp, 4
jmp 0x40d15d
mov eax, dword [ebp - 0x3c]
mov dword [esp + 4], str.OpenWithIcon
mov dword [esp], eax
call dword [sym.imp.advapi32.dll_RegDeleteValueW]
push eax
push eax
jmp 0x40d5fe
mov eax, dword [ebp - 0x68]
jmp 0x40d580
mov eax, dword [ebp - 0x88]
jmp 0x40d531
test byte [section..data], 2
je 0x40d5fe
mov dword [esp + 0xc], str.could_not_create_extension_subkey_n
mov dword [esp + 8], str.update_association
mov dword [esp + 4], 0x40f000
mov dword [esp], 1
call fcn.00401580
jmp 0x40d5fe
mov dword [ebp - 0xa0], 0
test byte [section..data], 2
je 0x40d5fe
mov dword [esp + 0xc], str.could_not_open_file_associations_key_n
mov dword [esp + 8], str.update_association
mov dword [esp + 4], 0x40f000
mov dword [esp], 1
call fcn.00401580
jmp 0x40d5fe
movzx eax, word [ebp - 0x88]
mov dword [esp], str._04x
mov dword [esp + 4], eax
call fcn.00401470
jmp 0x40d0c8
movzx eax, word [ebp - 0x64]
mov dword [esp], str._04x
mov dword [esp + 4], eax
call fcn.00401470
mov dword [ebp - 0xb0], eax
jmp 0x40d089
movzx eax, word [ebp - 0x68]
mov dword [esp], str._04x
mov dword [esp + 4], eax
call fcn.00401470
jmp 0x40d482
mov eax, dword [ebp - 0xb4]
mov dword [ebp - 0x30], eax
jmp 0x40d2b8
mov eax, str._null_
jmp 0x40d482
mov dword [ebp - 0xb0], str._null_
jmp 0x40d089
movzx eax, word [ebp - 0x70]
mov dword [esp], str._04x
mov dword [esp + 4], eax
call fcn.00401470
mov dword [ebp - 0xa0], eax
jmp 0x40d042
mov dword [ebp - 0xa0], str._null_
jmp 0x40d042
movzx eax, si
mov dword [esp], str._04x
mov dword [esp + 4], eax
call fcn.00401470
mov dword [ebp - 0xa8], eax
jmp 0x40cffb
movzx eax, word [ebp - 0x64]
mov dword [esp], str._04x
mov dword [esp + 4], eax
call fcn.00401470
jmp 0x40d3df
mov eax, str._null_
jmp 0x40d3df
mov ecx, dword [eax + 4]
cmp edi, ecx
je 0x40d80c
mov eax, dword [edi]
and dword [eax + 0xc], 0xfffffffe
mov eax, dword [edi]
mov eax, dword [eax]
or dword [eax + 0xc], 1
mov eax, dword [edi]
mov eax, dword [eax]
mov ecx, dword [eax]
mov edx, dword [eax + 8]
test ecx, ecx
je 0x40d7ff
cmp eax, dword [ecx + 4]
je 0x40d7fa
mov dword [ecx + 8], edx
mov ecx, dword [edx + 4]
mov dword [eax + 8], ecx
test ecx, ecx
je 0x40d7ec
mov dword [ecx], eax
mov dword [edx + 4], eax
mov ecx, dword [eax]
mov dword [edx], ecx
mov dword [eax], edx
jmp 0x40d2a8
mov dword [ecx + 4], edx
jmp 0x40d7e0
mov dword [ebp - 0xb4], edx
mov esi, 1
jmp 0x40d7e0
mov dword [edx + 8], ecx
mov edx, dword [ecx + 8]
mov dword [eax + 4], edx
test edx, edx
je 0x40d81b
mov dword [edx], eax
mov dword [ecx + 8], eax
mov edx, dword [eax]
mov edi, eax
mov dword [ecx], edx
mov dword [eax], ecx
jmp 0x40d7bd
mov ecx, dword [edx + 8]
test ecx, ecx
je 0x40d8a5
test byte [ecx + 0xc], 1
je 0x40d8a5
xor dword [edx + 0xc], 1
xor dword [eax + 0xc], 1
mov eax, dword [edx + 8]
xor dword [eax + 0xc], 1
mov eax, dword [edi]
mov edi, dword [eax]
jmp 0x40d2a8
mov dword [ebp - 0xa8], str._null_
jmp 0x40cffb
mov dword [ebp - 0xac], str._null_
jmp 0x40cfb9
lea eax, [ebx + 2]
mov dword [esp], str.application_x_wine_extension__s
mov dword [esp + 4], eax
call fcn.00401930
mov dword [ebp - 0x64], eax
jmp 0x40ce4e
movzx eax, word [ebp - 0x68]
mov dword [esp], str._04x
mov dword [esp + 4], eax
call fcn.00401470
mov dword [ebp - 0xac], eax
jmp 0x40cfb9
mov ecx, dword [eax + 8]
cmp edi, ecx
je 0x40d8fb
mov eax, dword [edi]
and dword [eax + 0xc], 0xfffffffe
mov eax, dword [edi]
mov eax, dword [eax]
or dword [eax + 0xc], 1
mov eax, dword [edi]
mov eax, dword [eax]
mov ecx, dword [eax]
mov edx, dword [eax + 4]
test ecx, ecx
je 0x40d8ee
cmp eax, dword [ecx + 4]
je 0x40d8e9
mov dword [ecx + 8], edx
mov ecx, dword [edx + 8]
mov dword [eax + 4], ecx
test ecx, ecx
je 0x40d8db
mov dword [ecx], eax
mov dword [edx + 8], eax
mov ecx, dword [eax]
mov dword [edx], ecx
mov dword [eax], edx
jmp 0x40d2a8
mov dword [ecx + 4], edx
jmp 0x40d8cf
mov dword [ebp - 0xb4], edx
mov esi, 1
jmp 0x40d8cf
mov dword [edx + 4], ecx
mov edx, dword [ecx + 4]
mov dword [eax + 8], edx
test edx, edx
je 0x40d90a
mov dword [edx], eax
mov dword [ecx + 4], eax
mov edx, dword [eax]
mov edi, eax
mov dword [ecx], edx
mov dword [eax], ecx
jmp 0x40d8ac
movzx eax, bx
mov dword [esp], str._04x
mov dword [esp + 4], eax
call fcn.00401470
mov edi, eax
jmp 0x40d3a1
movzx eax, word [ebp - 0x78]
mov dword [esp], str._04x
mov dword [esp + 4], eax
call fcn.00401470
mov esi, eax
jmp 0x40d370
mov esi, str._null_
jmp 0x40d370
mov eax, str._invalid_
jmp 0x40d306
movzx eax, di
mov dword [esp], str._04x
mov dword [esp + 4], eax
call fcn.00401470
jmp 0x40d306
mov eax, str._null_
jmp 0x40d306
mov dword [esp], 0x14
call dword [sym.imp.ucrtbase.dll_malloc]
mov esi, eax
test eax, eax
je 0x40cb21
mov eax, dword [ebp - 0x98]
lea edi, [esi + 4]
mov dword [esi], eax
lea eax, [ebp - 0x30]
jmp 0x40d248
movzx eax, word [pe_dos_header]
ud2