Function at 0x408490
Capabilities:
Access peb ldr_data
Check for peb beingdebugged flag
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

Disassembly:
lea ecx, [esp + 4]
and esp, 0xfffffff0
push dword [ecx - 4]
push ebp
mov ebp, esp
push edi
push esi
push ebx
push ecx
sub esp, 0xe8
mov ebx, dword [ecx + 8]
mov dword [esp + 0x10], 0x417000
mov dword [esp + 0xc], 0
mov dword [esp + 8], 0
mov dword [esp + 4], 0
mov dword [esp], 0
call sym._SHGetFolderPathW_20
sub esp, 0x14
test eax, eax
js 0x408e08
mov eax, dword [sym.imp.ucrtbase.dll__wgetenv]
mov dword [esp], str.XDG_CONFIG_HOME
mov dword [ebp - 0x74], eax
call eax
test eax, eax
je 0x408a37
mov dword [esp + 4], eax
mov dword [esp], str.__unix_s_menus_applications_merged
call dbg.heap_wprintf
movzx ecx, word [eax]
mov dword [0x41720c], eax
mov edx, eax
test cx, cx
je 0x40853a
lea esi, [esi]
cmp cx, 0x2f
jne 0x40852e
mov ecx, 0x5c
mov word [edx], cx
movzx ecx, word [edx + 2]
add edx, 2
test cx, cx
jne 0x408520
mov esi, 0x5c
mov word [eax + 2], si
call dbg.create_directories
mov dword [esp], str.XDG_DATA_HOME
mov eax, dword [ebp - 0x74]
call eax
test eax, eax
je 0x408cac
mov dword [esp + 4], eax
mov dword [esp], str.__unix_s
call dbg.heap_wprintf
movzx ecx, word [eax]
mov dword [0x417208], eax
mov edx, eax
test cx, cx
je 0x40859a
lea esi, [esi]
nop
cmp cx, 0x2f
jne 0x40858e
mov esi, 0x5c
mov word [edx], si
movzx ecx, word [edx + 2]
add edx, 2
test cx, cx
jne 0x408580
mov edi, 0x5c
mov word [eax + 2], di
mov dword [esp + 4], eax
mov dword [esp], str._sdesktop_directories
call dbg.heap_wprintf
mov esi, eax
call dbg.create_directories
mov dword [esp + 8], esi
mov dword [esp + 4], 0
mov eax, dword fs:[0x18]
mov eax, dword [eax + 0x30]
mov eax, dword [eax + 0x18]
mov dword [esp], eax
mov eax, dword [sym.imp.kernel32.dll_HeapFree]
mov dword [ebp - 0x5c], eax
call eax
sub esp, 0xc
mov dword [esp], 0
call sym._CoInitialize_4
sub esp, 4
test eax, eax
js 0x408df6
mov dword [ebp - 0x50], ebx
mov dword [ebp - 0x78], 0
mov dword [ebp - 0x80], 0
mov dword [ebp - 0x7c], 0
test ebx, ebx
jne 0x408667
jmp 0x4087b7
mov dword [esp + 4], 0x40e7d8
mov dword [esp], ebx
call dword [sym.imp.ucrtbase.dll_wcscmp]
mov dword [ebp - 0x64], eax
test eax, eax
je 0x4087d0
mov dword [esp + 4], 0x40e81c
mov dword [esp], ebx
call dword [sym.imp.ucrtbase.dll_wcscmp]
test eax, eax
jne 0x4089d0
mov dword [ebp - 0x7c], 1
mov ebx, dword [ebp - 0x50]
test ebx, ebx
je 0x4087b7
cmp word [ebx], 0
je 0x4087b7
lea eax, [ebp - 0x50]
call dbg.next_token
mov ebx, eax
test eax, eax
je 0x4087b7
mov dword [esp + 4], 0x40e2ae
mov dword [esp], eax
call dword [sym.imp.ucrtbase.dll_wcscmp]
test eax, eax
jne 0x408620
lea edi, [ebp - 0x38]
mov dword [ebp - 0x60], edi
mov dword [esp + 8], edi
mov dword [esp + 4], 0x40e2b4
mov dword [esp], 0x80000001
call sym._RegCreateKeyW_12
sub esp, 0xc
test eax, eax
jne 0x408728
mov ebx, dword [ebp - 0x38]
test ebx, ebx
je 0x408728
lea eax, [ebp - 0x40]
mov dword [ebp - 0x40], 0x20
mov dword [esp + 0x14], eax
mov dword [esp + 0x10], edi
mov dword [esp + 0xc], 0
mov dword [esp + 8], 0
mov dword [esp + 4], str.Enable
mov dword [esp], ebx
call sym._RegQueryValueExA_24
sub esp, 0x18
test eax, eax
jne 0x40871d
movzx edx, byte [ebp - 0x38]
mov eax, edx
and eax, 0xffffffdf
cmp al, 0x54
sete cl
cmp al, 0x59
sete al
or al, cl
jne 0x40871d
cmp dl, 0x31
jne 0x409338
mov dword [esp], ebx
call sym._RegCloseKey_4
sub esp, 4
mov dword [ebp - 0x4c], 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]
mov dword [ebp - 0x4c], eax
sub esp, 0x10
lea eax, [ebp - 0x4c]
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 sym._MsgWaitForMultipleObjects_20
sub esp, 0x14
test eax, eax
je 0x408a58
test byte [0x40c000], 2
jne 0x408e14
mov eax, dword [ebp - 0x4c]
mov dword [esp], eax
call dword [sym.imp.kernel32.dll_CloseHandle]
mov ebx, dword [ebp - 0x50]
sub esp, 4
test ebx, ebx
jne 0x408667
call sym._CoUninitialize_0
mov eax, dword [ebp - 0x78]
lea esp, [ebp - 0x10]
pop ecx
pop ebx
pop esi
pop edi
pop ebp
lea esp, [ecx - 4]
ret 0x10
lea eax, [ebp - 0x38]
mov dword [ebp - 0x60], eax
mov dword [esp + 8], eax
mov dword [esp + 4], str.SoftwareWineMenuFiles
mov dword [esp], 0x80000001
call sym._RegCreateKeyW_12
sub esp, 0xc
test eax, eax
jne 0x408a28
mov eax, dword [ebp - 0x38]
lea ecx, [ebp - 0x40]
mov dword [ebp - 0x6c], ecx
mov dword [ebp - 0x68], eax
mov edi, dword fs:[0x18]
test eax, eax
je 0x40865c
lea esi, [esi]
mov dword [ebp - 0x40], 0x1000
mov eax, 0x1000
mov dword [ebp - 0x38], 0x1000
jmp 0x408870
shl dword [ebp - 0x40], 1
shl dword [ebp - 0x38], 1
mov dword [esp + 8], esi
mov dword [esp + 4], 0
mov eax, dword [edi + 0x30]
mov eax, dword [eax + 0x18]
mov dword [esp], eax
mov esi, dword [ebp - 0x5c]
call esi
sub esp, 0xc
mov dword [esp + 8], ebx
mov dword [esp + 4], 0
mov eax, dword [edi + 0x30]
mov eax, dword [eax + 0x18]
mov dword [esp], eax
call esi
mov eax, dword [ebp - 0x40]
sub esp, 0xc
add eax, eax
call dbg.xmalloc
mov esi, eax
mov eax, dword [ebp - 0x38]
add eax, eax
call dbg.xmalloc
mov ebx, eax
mov eax, dword [ebp - 0x60]
mov dword [esp + 0x14], 0
mov dword [esp + 0x18], ebx
mov dword [esp + 0x1c], eax
mov dword [esp + 0x10], 0
mov eax, dword [ebp - 0x6c]
mov dword [esp + 8], esi
mov dword [esp + 0xc], eax
mov eax, dword [ebp - 0x64]
mov dword [esp + 4], eax
mov eax, dword [ebp - 0x68]
mov dword [esp], eax
call sym._RegEnumValueW_32
sub esp, 0x20
cmp eax, 0xea
je 0x408830
test eax, eax
je 0x408938
cmp eax, 0x103
je 0x4088e3
test byte [0x40c000], 2
jne 0x4089a0
mov dword [esp + 8], esi
mov dword [esp + 4], 0
mov edi, dword fs:[0x18]
mov eax, dword [edi + 0x30]
mov eax, dword [eax + 0x18]
mov dword [esp], eax
mov esi, dword [ebp - 0x5c]
call esi
sub esp, 0xc
mov dword [esp + 8], ebx
mov dword [esp + 4], 0
mov eax, dword [edi + 0x30]
mov eax, dword [eax + 0x18]
mov dword [esp], eax
call esi
mov eax, dword [ebp - 0x68]
sub esp, 0xc
mov dword [esp], eax
call sym._RegCloseKey_4
sub esp, 4
jmp 0x40865c
mov dword [esp], ebx
call dword [sym.imp.kernel32.dll_GetFileAttributesW]
sub esp, 4
cmp eax, 0xffffffff
je 0x4089f8
add dword [ebp - 0x64], 1
mov dword [esp + 8], esi
mov dword [esp + 4], 0
mov edx, dword fs:[0x18]
mov eax, dword [edx + 0x30]
mov dword [ebp - 0x70], edx
mov eax, dword [eax + 0x18]
mov dword [esp], eax
mov esi, dword [ebp - 0x5c]
call esi
sub esp, 0xc
mov dword [esp + 8], ebx
mov dword [esp + 4], 0
mov edx, dword [ebp - 0x70]
mov eax, dword [edx + 0x30]
mov eax, dword [eax + 0x18]
mov dword [esp], eax
call esi
sub esp, 0xc
jmp 0x408818
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], global___dbch
mov dword [esp], 1
call sym._wine_dbg_log.constprop.0
jmp 0x4088e3
mov dword [esp + 4], 0x40e822
mov dword [esp], ebx
call dword [sym.imp.ucrtbase.dll_wcscmp]
test eax, eax
jne 0x408ccd
mov dword [ebp - 0x80], 1
jmp 0x40865c
test byte [0x40c000], 8
jne 0x408d90
mov dword [esp], esi
call dword [sym.imp.kernel32.dll_DeleteFileW]
sub esp, 4
mov dword [esp + 4], esi
mov eax, dword [ebp - 0x68]
mov dword [esp], eax
call sym._RegDeleteValueW_8
sub esp, 8
jmp 0x408951
mov edx, dword fs:[0x18]
mov dword [edx + 0x34], eax
jmp 0x40865c
mov dword [esp], str.WINEHOMEDIR
mov eax, dword [ebp - 0x74]
call eax
mov dword [esp], str._s_.config_menus_applications_merged
mov dword [esp + 4], eax
call dbg.heap_wprintf
jmp 0x40850a
mov eax, dword [0x417208]
mov dword [esp], str._smime
mov dword [esp + 4], eax
call dbg.heap_wprintf
mov dword [ebp - 0x90], eax
mov dword [esp + 4], eax
mov dword [esp], str._spackages
call dbg.heap_wprintf
mov dword [ebp - 0x94], eax
call dbg.create_directories
mov eax, dword [0x417208]
mov dword [esp], str._s_applications
mov dword [esp + 4], eax
call dbg.heap_wprintf
mov dword [ebp - 0x88], eax
call dbg.create_directories
mov eax, dword [ebp - 0x60]
mov dword [ebp - 0x3c], 0
mov dword [ebp - 0x40], dbg.winemenubuilder_rb_string_compare
mov dword [ebp - 0x38], eax
mov dword [ebp - 0x34], eax
mov dword [esp], str.XDG_DATA_DIRS
mov edi, dword [ebp - 0x74]
call edi
test eax, eax
je 0x40964e
mov dword [esp], str.XDG_DATA_DIRS
call edi
mov ebx, eax
test eax, eax
je 0x409a9f
cmp word [eax], 0
je 0x409aa6
lea esi, [esi]
lea esi, [esi]
add eax, 2
cmp word [eax], 0
jne 0x408b00
sub eax, ebx
add eax, 2
call dbg.xmalloc
mov esi, eax
xor eax, eax
lea esi, [esi]
nop
movzx edx, word [ebx + eax]
mov word [esi + eax], dx
add eax, 2
test dx, dx
jne 0x408b20
mov edx, dword [ebp - 0x60]
mov eax, dword [0x417208]
call dbg.add_mimes
test eax, eax
jne 0x408e3d
mov dword [esp + 8], esi
mov dword [esp + 4], 0
mov eax, dword fs:[0x18]
mov eax, dword [eax + 0x30]
mov eax, dword [eax + 0x18]
mov dword [esp], eax
mov eax, dword [ebp - 0x5c]
call eax
mov eax, dword [ebp - 0x60]
sub esp, 0xc
call dbg.free_native_mime_types
test byte [0x40c000], 2
jne 0x409352
mov dword [ebp - 0x70], 0
mov eax, dword [ebp - 0x60]
mov dword [esp + 4], 0x40e2b4
mov dword [esp], 0x80000001
mov dword [esp + 8], eax
call sym._RegCreateKeyW_12
sub esp, 0xc
mov edi, eax
test eax, eax
jne 0x409618
mov esi, dword [ebp - 0x38]
test esi, esi
je 0x409618
mov dword [ebp - 0x64], esi
mov esi, dword [ebp - 0x5c]
mov eax, dword fs:[0x18]
mov dword [ebp - 0x68], 0
mov dword [ebp - 0x6c], eax
jmp 0x408c10
mov dword [esp + 8], eax
add edi, 1
mov dword [esp + 4], 0
mov eax, dword [ebp - 0x6c]
mov eax, dword [eax + 0x30]
mov eax, dword [eax + 0x18]
mov dword [esp], eax
call esi
sub esp, 0xc
mov dword [esp + 8], ebx
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 esi
sub esp, 0xc
mov eax, dword [ebp - 0x64]
mov edx, edi
call dbg.reg_enum_keyW
mov ebx, eax
test eax, eax
je 0x40937b
mov edx, eax
mov ecx, str.open
mov eax, 1
call dbg.assoc_query
test eax, eax
jne 0x408bd0
mov eax, dword [ebp - 0x64]
mov ecx, str.DesktopFile
mov edx, ebx
call dbg.reg_get_valW
mov dword [ebp - 0x68], eax
test eax, eax
je 0x408c6b
test byte [0x40c000], 8
jne 0x4095ba
mov eax, dword [ebp - 0x68]
mov dword [esp], eax
call dword [sym.imp.kernel32.dll_DeleteFileW]
sub esp, 4
mov dword [esp + 4], ebx
mov eax, dword [ebp - 0x64]
mov dword [esp], eax
call sym._RegDeleteKeyW_8
mov ecx, dword [ebp - 0x68]
sub esp, 8
mov dword [esp + 8], ecx
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 esi
mov dword [ebp - 0x68], 1
sub esp, 0xc
jmp 0x408bf0
mov dword [esp], str.WINEHOMEDIR
mov eax, dword [ebp - 0x74]
call eax
mov dword [esp], str._s_.local_share
mov dword [esp + 4], eax
call dbg.heap_wprintf
jmp 0x40856c
mov dword [esp + 4], 0x40e828
mov dword [esp], ebx
call dword [sym.imp.ucrtbase.dll_wcscmp]
test eax, eax
je 0x409688
cmp word [ebx], 0x2d
je 0x409706
mov ecx, dword [ebp - 0x80]
mov edx, dword [ebp - 0x7c]
mov eax, ebx
test ecx, ecx
jne 0x409348
call dbg.Process_Link
test eax, eax
jne 0x40865c
mov dword [ebp - 0x78], 1
test byte [0x40c000], 2
je 0x40865c
mov eax, ebx
shr eax, 0x10
je 0x40a31d
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 0x408d52
mov eax, ebx
call sym._wine_dbgstr_wn.part.0.constprop.0
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], global___dbch
mov dword [esp], 1
call sym._wine_dbg_log.constprop.0
mov dword [ebp - 0x78], 1
jmp 0x40865c
test esi, esi
je 0x409771
mov eax, esi
shr eax, 0x10
je 0x4096e5
mov dword [esp + 4], 0xffffffff
mov dword [esp], esi
call dword [sym.imp.kernel32.dll_IsBadStringPtrW]
mov edx, eax
sub esp, 8
mov eax, str._invalid_
test edx, edx
jne 0x408dc9
mov eax, esi
call sym._wine_dbgstr_wn.part.0.constprop.0
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], global___dbch
mov dword [esp], 3
call sym._wine_dbg_log.constprop.0
jmp 0x408a05
test byte [0x40c000], 2
jne 0x4096b8
lea esi, [esi]
nop
mov dword [ebp - 0x78], 1
jmp 0x4087bc
mov dword [esp + 0xc], str.failed_wait_for_semaphore_n
mov dword [esp + 8], str.RefreshFileTypeAssociations
mov dword [esp + 4], global___dbch
mov dword [esp], 1
call sym._wine_dbg_log.constprop.0
jmp 0x40879d
lea eax, [ebp - 0x44]
mov dword [esp + 4], 0x40e368
mov dword [esp + 8], eax
mov eax, dword [sym.imp.ucrtbase.dll_wcstok]
mov dword [esp], esi
mov dword [ebp - 0x64], eax
call eax
test eax, eax
je 0x40a303
mov dword [ebp - 0x68], esi
mov edi, dword fs:[0x18]
lea esi, [esi]
nop
mov dword [esp + 4], eax
mov dword [esp], 0x40e36c
call dbg.heap_wprintf
movzx edx, word [eax]
mov esi, eax
test dx, dx
je 0x408eaa
lea esi, [esi]
cmp dx, 0x2f
jne 0x408e9e
mov ecx, 0x5c
mov word [eax], cx
movzx edx, word [eax + 2]
add eax, 2
test dx, dx
jne 0x408e90
lea edx, [esi + 0x12]
cmp edx, eax
jae 0x408ec0
cmp word [eax - 2], 0x5c
jne 0x408ec0
xor edx, edx
mov word [eax - 2], dx
nop
mov edx, dword [ebp - 0x60]
mov eax, esi
call dbg.add_mimes
mov dword [esp + 8], esi
mov dword [esp + 4], 0
mov ebx, eax
mov eax, dword [edi + 0x30]
mov eax, dword [eax + 0x18]
mov dword [esp], eax
mov eax, dword [ebp - 0x5c]
call eax
sub esp, 0xc
test ebx, ebx
je 0x40a3dc
lea eax, [ebp - 0x44]
mov dword [esp + 4], 0x40e368
mov dword [esp + 8], eax
mov dword [esp], 0
mov eax, dword [ebp - 0x64]
call eax
test eax, eax
jne 0x408e70
mov esi, dword [ebp - 0x68]
mov dword [esp + 4], 0
mov dword [esp + 8], esi
mov eax, dword [edi + 0x30]
mov eax, dword [eax + 0x18]
xor edi, edi
mov dword [esp], eax
mov eax, dword [ebp - 0x5c]
call eax
mov dword [ebp - 0x70], 0
mov eax, dword fs:[0x18]
sub esp, 0xc
mov dword [ebp - 0x68], eax
jmp 0x408f73
mov dword [esp + 8], ebx
add edi, 1
mov dword [esp + 4], 0
mov eax, dword [ebp - 0x68]
mov eax, dword [eax + 0x30]
mov eax, dword [eax + 0x18]
mov dword [esp], eax
mov eax, dword [ebp - 0x5c]
call eax
sub esp, 0xc
mov edx, edi
mov eax, 0x80000000
call dbg.reg_enum_keyW
mov ebx, eax
test eax, eax
je 0x409437
cmp word [eax], 0x2e
jne 0x408f50
mov dword [esp + 4], str..com
mov dword [esp], eax
call dword [sym.imp.ucrtbase.dll__wcsicmp]
test eax, eax
je 0x408f50
mov dword [esp + 4], str..exe
mov dword [esp], ebx
call dword [sym.imp.ucrtbase.dll__wcsicmp]
test eax, eax
je 0x408f50
mov dword [esp + 4], str..msi
mov dword [esp], ebx
call dword [sym.imp.ucrtbase.dll__wcsicmp]
test eax, eax
je 0x408f50
mov dword [esp], ebx
mov esi, dword [sym.imp.ucrtbase.dll__wcslwr]
call esi
xor ecx, ecx
mov edx, ebx
mov eax, 3
call dbg.assoc_query
xor ecx, ecx
mov edx, ebx
mov dword [ebp - 0x9c], eax
mov eax, 0xf
call dbg.assoc_query
xor ecx, ecx
mov edx, ebx
mov dword [ebp - 0xa0], eax
mov eax, 0xe
call dbg.assoc_query
mov dword [ebp - 0x98], eax
test eax, eax
je 0x40977b
mov eax, dword [ebp - 0x98]
mov dword [esp], eax
call esi
mov eax, dword [ebp - 0x38]
lea esi, [eax - 8]
cmp dword [ebp - 0x60], eax
je 0x409a24
mov dword [ebp - 0x64], 0
xor ecx, ecx
mov dword [ebp - 0x6c], edi
mov edi, esi
mov esi, ecx
lea esi, [esi]
nop
mov eax, dword [edi + 4]
mov dword [esp], ebx
mov dword [esp + 4], eax
call sym._PathMatchSpecW_8
sub esp, 8
test eax, eax
je 0x409098
test esi, esi
je 0x409527
mov ecx, dword [edi + 4]
cmp word [ecx], 0
je 0x4099fd
mov eax, ecx
lea esi, [esi]
add eax, 2
cmp word [eax], 0
jne 0x409080
sub eax, ecx
mov edx, dword [ebp - 0x64]
sar eax, 1
cmp eax, edx
jg 0x4096fd
mov eax, dword [edi + 8]
lea edi, [eax - 8]
cmp dword [ebp - 0x60], eax
jne 0x409050
mov edi, dword [ebp - 0x6c]
mov ecx, esi
test esi, esi
je 0x409a16
cmp word [esi], 0
je 0x40a335
mov eax, esi
add eax, 2
cmp word [eax], 0
jne 0x4090bc
sub eax, ecx
add eax, 2
mov dword [ebp - 0x6c], ecx
call dbg.xmalloc
mov ecx, dword [ebp - 0x6c]
mov dword [ebp - 0x64], eax
mov esi, eax
xor eax, eax
lea esi, [esi]
movzx edx, word [ecx + eax]
mov word [esi + eax], dx
add eax, 2
test dx, dx
jne 0x4090e0
mov ecx, str.open
mov edx, ebx
mov eax, 1
call dbg.assoc_query
mov dword [ebp - 0xbc], eax
test eax, eax
je 0x4099dd
mov ecx, str.open
mov edx, ebx
mov eax, 2
call dbg.assoc_query
mov dword [ebp - 0x6c], 0
mov dword [ebp - 0xb4], eax
test eax, eax
je 0x40913d
mov edx, eax
xor eax, eax
call sym._compute_native_identifier.part.0
mov dword [ebp - 0x6c], eax
mov ecx, str.open
mov edx, ebx
mov eax, 4
call dbg.assoc_query
mov edx, ebx
test eax, eax
mov ecx, eax
mov eax, str.A_Wine_application
cmovne eax, ecx
xor ecx, ecx
mov dword [ebp - 0x8c], eax
mov eax, 0x80000000
call dbg.reg_get_valW
mov dword [ebp - 0x84], eax
test eax, eax
je 0x40921a
mov dword [esp + 8], eax
mov eax, dword [ebp - 0x64]
mov dword [esp], str._s__s
mov dword [esp + 4], eax
call dbg.heap_wprintf
mov ecx, dword [ebp - 0x3c]
mov dword [ebp - 0xa4], eax
mov dword [ebp - 0xa8], ecx
test ecx, ecx
je 0x40a3f8
mov edx, dword [ebp - 0x40]
mov dword [ebp - 0xb0], edi
mov esi, eax
mov edi, ecx
mov dword [ebp - 0xb8], ebx
mov dword [ebp - 0xac], edx
mov ebx, edx
jmp 0x4091d8
mov eax, dword [edi + 4]
cmovns eax, dword [edi + 8]
mov edi, eax
test eax, eax
je 0x409ab0
mov dword [esp + 4], edi
mov dword [esp], esi
call ebx
test eax, eax
jne 0x4091c7
mov ecx, dword [ebp - 0xa4]
mov edi, dword [ebp - 0xb0]
mov ebx, dword [ebp - 0xb8]
mov dword [esp + 4], 0
mov dword [esp + 8], ecx
mov eax, dword fs:[0x18]
mov eax, dword [eax + 0x30]
mov eax, dword [eax + 0x18]
mov dword [esp], eax
mov eax, dword [ebp - 0x5c]
call eax
sub esp, 0xc
mov eax, dword [ebp - 0xbc]
mov dword [esp + 4], 0
mov esi, dword fs:[0x18]
mov dword [esp + 8], eax
mov eax, dword [esi + 0x30]
mov eax, dword [eax + 0x18]
mov dword [esp], eax
mov eax, dword [ebp - 0x5c]
call eax
mov ecx, dword [ebp - 0xb4]
sub esp, 0xc
mov dword [esp + 8], ecx
mov dword [esp + 4], 0
mov eax, dword [esi + 0x30]
mov eax, dword [eax + 0x18]
mov dword [esp], eax
mov eax, dword [ebp - 0x5c]
call eax
mov ecx, dword [ebp - 0x6c]
sub esp, 0xc
mov dword [esp + 8], ecx
mov dword [esp + 4], 0
mov eax, dword [esi + 0x30]
mov eax, dword [eax + 0x18]
mov dword [esp], eax
mov eax, dword [ebp - 0x5c]
call eax
mov ecx, dword [ebp - 0x9c]
sub esp, 0xc
mov dword [esp + 8], ecx
mov dword [esp + 4], 0
mov eax, dword [esi + 0x30]
mov eax, dword [eax + 0x18]
mov dword [esp], eax
mov eax, dword [ebp - 0x5c]
call eax
mov ecx, dword [ebp - 0xa0]
sub esp, 0xc
mov dword [esp + 8], ecx
mov dword [esp + 4], 0
mov eax, dword [esi + 0x30]
mov eax, dword [eax + 0x18]
mov dword [esp], eax
mov eax, dword [ebp - 0x5c]
call eax
mov ecx, dword [ebp - 0x98]
sub esp, 0xc
mov dword [esp + 8], ecx
mov dword [esp + 4], 0
mov eax, dword [esi + 0x30]
mov eax, dword [eax + 0x18]
mov dword [esp], eax
mov eax, dword [ebp - 0x5c]
call eax
mov ecx, dword [ebp - 0x64]
sub esp, 0xc
mov dword [esp + 8], ecx
mov dword [esp + 4], 0
mov eax, dword [esi + 0x30]
mov eax, dword [eax + 0x18]
mov dword [esp], eax
mov eax, dword [ebp - 0x5c]
call eax
mov ecx, dword [ebp - 0x84]
sub esp, 0xc
mov dword [esp + 8], ecx
mov dword [esp + 4], 0
mov eax, dword [esi + 0x30]
mov eax, dword [eax + 0x18]
mov dword [esp], eax
mov eax, dword [ebp - 0x5c]
call eax
sub esp, 0xc
jmp 0x408f50
mov dword [esp], ebx
call sym._RegCloseKey_4
sub esp, 4
jmp 0x40865c
call dbg.Process_URL
jmp 0x408d05
mov dword [esp + 0xc], str.could_not_build_native_MIME_types_n
mov dword [esp + 8], str.generate_associations
mov dword [esp + 4], global___dbch
mov dword [esp], 1
call sym._wine_dbg_log.constprop.0
jmp 0x408b7d
mov esi, dword [ebp - 0x64]
mov dword [esp], esi
call sym._RegCloseKey_4
mov ecx, dword [ebp - 0x68]
or dword [ebp - 0x70], ecx
sub esp, 4
mov ebx, dword [ebp - 0x70]
test ebx, ebx
jne 0x409555
mov dword [esp + 8], 0
mov dword [esp + 4], 1
mov eax, dword [ebp - 0x4c]
mov ebx, dword fs:[0x18]
mov dword [esp], eax
call dword [sym.imp.kernel32.dll_ReleaseSemaphore]
mov eax, dword [ebp - 0x4c]
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 + 8], eax
mov dword [esp + 4], 0
mov eax, dword [ebx + 0x30]
mov eax, dword [eax + 0x18]
mov dword [esp], eax
mov edi, dword [ebp - 0x5c]
call edi
mov eax, dword [ebp - 0x94]
sub esp, 0xc
mov dword [esp + 8], eax
mov dword [esp + 4], 0
mov eax, dword [ebx + 0x30]
mov eax, dword [eax + 0x18]
mov dword [esp], eax
call edi
mov eax, dword [ebp - 0x88]
sub esp, 0xc
mov dword [esp + 8], eax
mov dword [esp + 4], 0
mov eax, dword [ebx + 0x30]
mov eax, dword [eax + 0x18]
mov dword [esp], eax
call edi
sub esp, 0xc
jmp 0x40865c
mov eax, dword [ebp - 0x3c]
test eax, eax
je 0x40951a
lea esi, [esi]
mov esi, eax
mov eax, dword [eax + 4]
test eax, eax
jne 0x409448
mov eax, dword [esi + 8]
test eax, eax
jne 0x409448
mov edi, dword fs:[0x18]
mov eax, edi
mov edi, esi
mov esi, eax
lea esi, [esi]
mov ebx, dword [edi]
test ebx, ebx
je 0x4094d4
mov eax, dword [ebx + 8]
cmp eax, edi
je 0x409490
test eax, eax
je 0x409490
lea esi, [esi]
mov ebx, eax
mov eax, dword [eax + 4]
test eax, eax
jne 0x409480
mov eax, dword [ebx + 8]
test eax, eax
jne 0x409480
mov eax, dword [edi - 4]
mov dword [esp + 4], 0
sub edi, 4
mov dword [esp + 8], eax
mov eax, dword [esi + 0x30]
mov eax, dword [eax + 0x18]
mov dword [esp], eax
mov eax, dword [ebp - 0x5c]
call eax
sub esp, 0xc
mov dword [esp + 8], edi
mov edi, ebx
mov dword [esp + 4], 0
mov eax, dword [esi + 0x30]
mov eax, dword [eax + 0x18]
mov dword [esp], eax
mov eax, dword [ebp - 0x5c]
call eax
sub esp, 0xc
jmp 0x409468
mov eax, dword [edi - 4]
mov dword [esp + 4], 0
mov esi, edi
mov ebx, dword fs:[0x18]
mov dword [esp + 8], eax
mov eax, dword [ebx + 0x30]
sub esi, 4
mov eax, dword [eax + 0x18]
mov dword [esp], eax
mov edi, dword [ebp - 0x5c]
call edi
sub esp, 0xc
mov dword [esp + 8], esi
mov dword [esp + 4], 0
mov eax, dword [ebx + 0x30]
mov eax, dword [eax + 0x18]
mov dword [esp], eax
call edi
sub esp, 0xc
mov eax, dword [ebp - 0x60]
call dbg.free_native_mime_types
jmp 0x408b84
mov ecx, dword [edi + 4]
mov esi, dword [edi]
cmp word [ecx], 0
je 0x409b3e
mov eax, ecx
lea esi, [esi]
nop
add ecx, 2
cmp word [ecx], 0
jne 0x409540
sub ecx, eax
sar ecx, 1
mov dword [ebp - 0x64], ecx
jmp 0x409098
mov eax, dword [ebp - 0x90]
mov dword [ebp - 0x38], str.update_mime_database
mov dword [esp], eax
call sym._wine_get_unix_file_name
mov dword [ebp - 0x30], 0
mov dword [ebp - 0x34], eax
mov dword [esp + 4], 0
mov edi, dword [ebp - 0x60]
mov dword [esp], edi
call sym.___wine_unix_spawnvp_8
mov eax, dword [ebp - 0x88]
mov dword [ebp - 0x38], str.update_desktop_database
sub esp, 8
mov dword [esp], eax
call sym._wine_get_unix_file_name
mov dword [ebp - 0x34], eax
mov dword [esp + 4], 0
mov dword [esp], edi
call sym.___wine_unix_spawnvp_8
sub esp, 8
jmp 0x40939a
mov eax, ebx
shr eax, 0x10
je 0x4099c5
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 0x4095eb
mov eax, ebx
call sym._wine_dbgstr_wn.part.0.constprop.0
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], global___dbch
mov dword [esp], 3
call sym._wine_dbg_log.constprop.0
jmp 0x408c5c
test byte [0x40c000], 2
je 0x40938f
mov dword [esp + 0xc], str.could_not_open_file_associations_key_n
mov dword [esp + 8], str.cleanup_associations
mov dword [esp + 4], global___dbch
mov dword [esp], 1
call sym._wine_dbg_log.constprop.0
jmp 0x40938f
mov eax, str._usr_local_share_:_usr_share_
lea esi, [esi]
nop
add eax, 2
cmp word [eax], 0
jne 0x409658
sub eax, 0x40e09a
call dbg.xmalloc
mov esi, eax
xor eax, eax
nop
movzx edx, word [eax + str._usr_local_share_:_usr_share_]
mov word [esi + eax], dx
add eax, 2
test dx, dx
jne 0x409670
jmp 0x408b30
lea eax, [ebp - 0x50]
call dbg.next_token
mov ebx, eax
test eax, eax
je 0x40865c
lea eax, [ebp - 0x50]
call dbg.next_token
mov edx, eax
test eax, eax
je 0x40865c
mov eax, ebx
call dbg.thumbnail_lnk
jmp 0x40865c
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], global___dbch
mov dword [esp], 1
call sym._wine_dbg_log.constprop.0
jmp 0x408e08
movzx eax, si
mov dword [esp], str._04x
mov dword [esp + 4], eax
call sym._wine_dbg_sprintf.constprop.0
jmp 0x408dc9
mov esi, dword [edi]
mov eax, ecx
jmp 0x409540
test byte [0x40c000], 2
je 0x40865c
mov eax, ebx
shr eax, 0x10
je 0x40a2eb
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 0x409744
mov eax, ebx
call sym._wine_dbgstr_wn.part.0.constprop.0
mov dword [esp + 0x10], eax
mov dword [esp + 0xc], str.unknown_option__s_n
mov dword [esp + 8], str.wWinMain
mov dword [esp + 4], global___dbch
mov dword [esp], 1
call sym._wine_dbg_log.constprop.0
jmp 0x40865c
mov eax, str._null_
jmp 0x408dc9
mov eax, dword [ebp - 0x38]
lea esi, [eax - 8]
cmp dword [ebp - 0x60], eax
jne 0x409037
mov dword [esp + 4], str..lnk
mov dword [esp], ebx
call dword [sym.imp.ucrtbase.dll__wcsicmp]
test eax, eax
je 0x40a2b3
lea eax, [ebx + 2]
mov dword [ebp - 0x70], eax
mov dword [esp + 4], eax
mov dword [esp], str.application_x_wine_extension__s
call dbg.heap_wprintf
mov esi, dword [ebp - 0xa0]
mov dword [ebp - 0x64], eax
test esi, esi
je 0x4098a8
test eax, eax
je sym._wWinMain_16.cold
mov eax, dword [ebp - 0x64]
cmp word [eax], 0
je 0x40a3d4
add eax, 2
cmp word [eax], 0
jne 0x4097df
mov ecx, dword [ebp - 0x64]
sub eax, ecx
add eax, 2
call dbg.xmalloc
mov ecx, dword [ebp - 0x64]
mov esi, eax
xor eax, eax
movzx edx, word [ecx + eax]
mov word [esi + eax], dx
add eax, 2
test dx, dx
jne 0x4097fc
movzx eax, word [esi]
mov edx, esi
test ax, ax
je 0x409830
cmp ax, 0x2f
jne 0x409824
mov ecx, 0x2d
mov word [edx], cx
movzx eax, word [edx + 2]
add edx, 2
test ax, ax
jne 0x409816
mov dword [esp + 4], 0x2c
mov eax, dword [ebp - 0xa0]
mov dword [esp], eax
call dword [sym.imp.ucrtbase.dll_wcsrchr]
xor edx, edx
test eax, eax
je 0x409871
xor edx, edx
add eax, 2
mov word [eax - 2], dx
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 - 0xa0]
mov ecx, esi
call dbg.extract_icon
mov dword [esp + 8], esi
mov dword [esp + 4], 0
mov eax, dword fs:[0x18]
mov eax, dword [eax + 0x30]
mov eax, dword [eax + 0x18]
mov dword [esp], eax
mov eax, dword [ebp - 0x5c]
call eax
sub esp, 0xc
test byte [0x40c000], 8
jne 0x409c38
mov eax, dword [ebp - 0x70]
mov dword [esp + 8], eax
mov eax, dword [ebp - 0x94]
mov dword [esp], str._sx_wine_extension__s.xml
mov dword [esp + 4], eax
call dbg.heap_wprintf
mov dword [ebp - 0x6c], eax
mov dword [esp + 4], 0x40d33c
mov dword [esp], eax
call dword [sym.imp.ucrtbase.dll__wfopen]
mov esi, eax
test eax, eax
je 0x409bc1
mov dword [esp + 4], str.__xml_version_1.0__encoding_UTF_8____n
mov dword [esp], eax
call dbg.fprintf
mov dword [esp + 4], str._mime_info_xmlns_http:__www.freedesktop.org_standards_shared_mime_info___n
mov dword [esp], esi
call dbg.fprintf
mov eax, dword [ebp - 0x64]
call dbg.wchars_to_xml_text
mov dword [esp + 4], str.___mime_type_type__s___n
mov dword [esp + 8], eax
mov dword [esp], esi
call dbg.fprintf
mov eax, ebx
call dbg.wchars_to_xml_text
mov dword [esp + 4], str._____glob_pattern__s____n
mov dword [esp + 8], eax
mov dword [esp], esi
call dbg.fprintf
mov eax, dword [ebp - 0x9c]
test eax, eax
je 0x40996a
call dbg.wchars_to_xml_text
mov dword [esp + 4], str._____comment__s__comment__n
mov dword [esp + 8], eax
mov dword [esp], esi
call dbg.fprintf
mov dword [esp + 4], str.____mime_type__n
mov dword [esp], esi
call dbg.fprintf
mov dword [esp + 4], str.__mime_info__n
mov dword [esp], esi
call dbg.fprintf
mov dword [esp], esi
call dword [sym.imp.ucrtbase.dll_fclose]
mov ecx, dword [ebp - 0x6c]
mov dword [esp + 4], 0
mov eax, dword fs:[0x18]
mov dword [esp + 8], ecx
mov eax, dword [eax + 0x30]
mov eax, dword [eax + 0x18]
mov dword [esp], eax
mov eax, dword [ebp - 0x5c]
call eax
mov dword [ebp - 0x70], 1
sub esp, 0xc
jmp 0x4090f0
movzx eax, bx
mov dword [esp], str._04x
mov dword [esp + 4], eax
call sym._wine_dbg_sprintf.constprop.0
jmp 0x4095eb
mov dword [ebp - 0x84], 0
mov dword [ebp - 0x6c], 0
mov dword [ebp - 0xb4], 0
jmp 0x40921a
mov ecx, dword [ebp - 0x64]
test ecx, ecx
jns 0x409098
mov dword [ebp - 0x64], 0
mov esi, dword [edi]
jmp 0x409098
mov eax, dword [ebp - 0x98]
test eax, eax
je 0x40978a
mov dword [esp + 4], 0x2f
mov esi, dword [ebp - 0x98]
mov dword [esp], esi
call dword [sym.imp.ucrtbase.dll_wcschr]
test eax, eax
je 0x40978a
cmp word [esi], 0
mov eax, esi
je 0x40a417
add eax, 2
cmp word [eax], 0
jne 0x409a4f
mov ecx, dword [ebp - 0x98]
sub eax, ecx
add eax, 2
call dbg.xmalloc
mov dword [ebp - 0x64], eax
xor eax, eax
mov ecx, dword [ebp - 0x98]
movzx edx, word [ecx + eax]
mov ecx, dword [ebp - 0x64]
mov word [ecx + eax], dx
add eax, 2
test dx, dx
jne 0x409a6d
mov edx, dword [ebp - 0xa0]
lea eax, [ebx + 2]
mov dword [ebp - 0x70], eax
test edx, edx
jne 0x4097d2
jmp 0x4098a8
xor esi, esi
jmp 0x408b30
mov eax, 2
jmp 0x408b0e
mov eax, 0x14
mov edi, dword [ebp - 0xb0]
mov ebx, dword [ebp - 0xb8]
call dbg.xmalloc
mov esi, dword [ebp - 0xa8]
mov ecx, eax
mov eax, dword [ebp - 0xa4]
mov dword [ebp - 0xb0], ecx
mov dword [ecx], eax
jmp 0x409aef
lea ecx, [esi + 4]
lea edx, [esi + 8]
cmovs edx, ecx
mov eax, dword [edx]
test eax, eax
je 0x409b4a
mov esi, eax
mov dword [esp + 4], esi
mov eax, dword [ebp - 0xa4]
mov dword [esp], eax
mov eax, dword [ebp - 0xac]
call eax
test eax, eax
jne 0x409ade
test byte [0x40c000], 2
je 0x40921a
mov dword [esp + 0xc], str.error_updating_rb_tree_n
mov dword [esp + 8], str.generate_associations
mov dword [esp + 4], global___dbch
mov dword [esp], 1
call sym._wine_dbg_log.constprop.0
jmp 0x40921a
mov dword [ebp - 0x64], 0
jmp 0x409098
mov ecx, dword [ebp - 0xb0]
mov dword [ebp - 0xa8], esi
lea esi, [ecx + 4]
mov eax, dword [ebp - 0xa8]
mov dword [ecx + 0x10], 1
mov dword [ecx + 8], 0
mov dword [ecx + 4], eax
mov dword [ecx + 0xc], 0
mov dword [edx], esi
mov eax, dword [esi]
test eax, eax
je 0x409d29
test byte [eax + 0xc], 1
je 0x409d29
mov edx, dword [eax]
mov ecx, dword [edx + 4]
cmp ecx, eax
je 0x40a8d8
test ecx, ecx
je 0x40a349
test byte [ecx + 0xc], 1
je 0x40a349
xor dword [edx + 0xc], 1
xor dword [ecx + 0xc], 1
mov eax, dword [edx + 8]
xor dword [eax + 0xc], 1
mov eax, dword [esi]
mov esi, dword [eax]
jmp 0x409b79
test byte [0x40c000], 2
je 0x409993
mov eax, dword [ebp - 0x6c]
test eax, eax
je 0x40a3ca
shr eax, 0x10
je 0x40a3b1
mov dword [esp + 4], 0xffffffff
mov esi, dword [ebp - 0x6c]
mov dword [esp], esi
call dword [sym.imp.kernel32.dll_IsBadStringPtrW]
mov edx, eax
sub esp, 8
mov eax, str._invalid_
test edx, edx
jne 0x409c0b
mov eax, esi
call sym._wine_dbgstr_wn.part.0.constprop.0
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], global___dbch
mov dword [esp], 1
call sym._wine_dbg_log.constprop.0
jmp 0x409993
mov eax, dword [ebp - 0x9c]
test eax, eax
je 0x40a33f
shr eax, 0x10
je 0x40a489
mov dword [esp + 4], 0xffffffff
mov eax, dword [ebp - 0x9c]
mov esi, str._invalid_
mov dword [esp], eax
call dword [sym.imp.kernel32.dll_IsBadStringPtrW]
sub esp, 8
test eax, eax
jne 0x409c7f
mov eax, dword [ebp - 0x9c]
call sym._wine_dbgstr_wn.part.0.constprop.0
mov esi, eax
mov eax, ebx
shr eax, 0x10
je 0x40a46e
mov dword [esp + 4], 0xffffffff
mov dword [esp], ebx
call dword [sym.imp.kernel32.dll_IsBadStringPtrW]
mov dword [ebp - 0x6c], str._invalid_
sub esp, 8
test eax, eax
jne 0x409cb3
mov eax, ebx
call sym._wine_dbgstr_wn.part.0.constprop.0
mov dword [ebp - 0x6c], eax
mov eax, dword [ebp - 0x64]
test eax, eax
je 0x40a464
shr eax, 0x10
je 0x40a44b
mov dword [esp + 4], 0xffffffff
mov eax, dword [ebp - 0x64]
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 0x409cf1
mov eax, dword [ebp - 0x64]
call sym._wine_dbgstr_wn.part.0.constprop.0
mov dword [esp + 0x18], esi
mov ecx, dword [ebp - 0x6c]
mov dword [esp + 0x10], eax
mov dword [esp + 0x14], ecx
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], global___dbch
mov dword [esp], 3
call sym._wine_dbg_log.constprop.0
jmp 0x4098b5
mov eax, dword [ebp - 0x3c]
and dword [eax + 0xc], 0xfffffffe
lea eax, [ebp - 0x44]
mov dword [esp + 8], eax
mov dword [esp + 4], 0x40e2b4
mov dword [esp], 0x80000001
call sym._RegCreateKeyW_12
sub esp, 0xc
test eax, eax
jne 0x40a260
mov esi, dword [ebp - 0x44]
test esi, esi
je 0x40a260
mov edx, ebx
mov ecx, str.MimeType
mov eax, esi
call dbg.reg_get_valW
mov dword [ebp - 0xa8], 1
mov edx, eax
test eax, eax
je 0x409da9
mov eax, dword [ebp - 0x64]
mov dword [esp], edx
mov dword [esp + 4], eax
mov dword [ebp - 0xa4], edx
call dword [sym.imp.ucrtbase.dll_wcscmp]
mov edx, dword [ebp - 0xa4]
test eax, eax
setne al
movzx eax, al
mov dword [ebp - 0xa8], eax
mov dword [esp + 8], edx
mov dword [esp + 4], 0
mov eax, dword fs:[0x18]
mov eax, dword [eax + 0x30]
mov eax, dword [eax + 0x18]
mov dword [esp], eax
mov eax, dword [ebp - 0x5c]
call eax
mov edx, ebx
mov ecx, str.ProgID
mov eax, esi
sub esp, 0xc
call dbg.reg_get_valW
mov edx, eax
test eax, eax
je 0x409e03
mov eax, dword [ebp - 0x84]
mov dword [esp], edx
mov dword [esp + 4], eax
mov dword [ebp - 0xa4], edx
call dword [sym.imp.ucrtbase.dll_wcscmp]
mov edx, dword [ebp - 0xa4]
test eax, eax
je 0x409e0d
mov dword [ebp - 0xa8], 1
mov dword [esp + 8], edx
mov dword [esp + 4], 0
mov eax, dword fs:[0x18]
mov eax, dword [eax + 0x30]
mov eax, dword [eax + 0x18]
mov dword [esp], eax
mov eax, dword [ebp - 0x5c]
call eax
mov edx, ebx
mov ecx, str.AppName
mov eax, esi
sub esp, 0xc
call dbg.reg_get_valW
mov edx, eax
test eax, eax
je 0x409e67
mov eax, dword [ebp - 0x8c]
mov dword [esp], edx
mov dword [esp + 4], eax
mov dword [ebp - 0xa4], edx
call dword [sym.imp.ucrtbase.dll_wcscmp]
mov edx, dword [ebp - 0xa4]
test eax, eax
je 0x409e71
mov dword [ebp - 0xa8], 1
mov eax, dword fs:[0x18]
mov dword [ebp - 0xac], eax
mov dword [esp + 8], edx
mov dword [esp + 4], 0
mov eax, dword [eax + 0x30]
mov eax, dword [eax + 0x18]
mov dword [esp], eax
mov eax, dword [ebp - 0x5c]
call eax
mov ecx, str.OpenWithIcon
mov edx, ebx
mov eax, esi
sub esp, 0xc
call dbg.reg_get_valW
mov edx, eax
mov eax, dword [ebp - 0x6c]
test eax, eax
setne byte [ebp - 0xa4]
test edx, edx
movzx ecx, byte [ebp - 0xa4]
setne al
cmp cl, al
je 0x40a68f
mov dword [esp + 8], edx
mov dword [esp + 4], 0
mov eax, dword fs:[0x18]
mov eax, dword [eax + 0x30]
mov eax, dword [eax + 0x18]
mov dword [esp], eax
mov eax, dword [ebp - 0x5c]
call eax
sub esp, 0xc
mov dword [esp], esi
call sym._RegCloseKey_4
sub esp, 4
lea eax, [ebx + 2]
mov dword [esp + 8], eax
mov eax, dword [ebp - 0x88]
mov dword [esp], str._swine_extension__s.desktop
mov dword [esp + 4], eax
call dbg.heap_wprintf
mov dword [esp], str.WINECONFIGDIR
mov esi, eax
mov eax, dword [ebp - 0x74]
call eax
mov dword [ebp - 0xc0], eax
test byte [0x40c000], 8
jne 0x40a503
mov dword [esp + 4], 0x40d33c
mov dword [esp], esi
call dword [sym.imp.ucrtbase.dll__wfopen]
test eax, eax
je 0x40a4ce
mov dword [esp + 4], str._Desktop_Entry__n
mov dword [ebp - 0x70], eax
mov dword [esp], eax
call dbg.fprintf
mov dword [esp + 4], str.TypeApplication_n
mov eax, dword [ebp - 0x70]
mov dword [esp], eax
call dbg.fprintf
mov eax, dword [ebp - 0x8c]
call dbg.wchars_to_utf8_chars
mov dword [esp + 4], str.Name_s_n
mov dword [esp + 8], eax
mov eax, dword [ebp - 0x70]
mov dword [esp], eax
call dbg.fprintf
mov eax, dword [ebp - 0x64]
call dbg.wchars_to_utf8_chars
mov dword [esp + 4], str.MimeType_s__n
mov dword [esp + 8], eax
mov eax, dword [ebp - 0x70]
mov dword [esp], eax
call dbg.fprintf
mov ecx, dword [ebp - 0xc0]
test ecx, ecx
je 0x40a4a7
mov dword [esp], ecx
call sym._wine_get_unix_file_name
mov dword [ebp - 0xa8], eax
mov eax, dword [ebp - 0x84]
call dbg.escape
mov dword [esp + 0xc], eax
mov ecx, dword [ebp - 0xa8]
mov dword [esp + 4], str.Execenv_WINEPREFIX__s__wine_start__ProgIDOpen__s___f_n
mov dword [esp + 8], ecx
mov eax, dword [ebp - 0x70]
mov dword [esp], eax
call dbg.fprintf
mov ecx, dword [ebp - 0xa8]
mov eax, dword fs:[0x18]
mov dword [esp + 8], ecx
xor ecx, ecx
mov dword [esp + 4], ecx
mov eax, dword [eax + 0x30]
mov eax, dword [eax + 0x18]
mov dword [esp], eax
mov eax, dword [ebp - 0x5c]
call eax
sub esp, 0xc
mov dword [esp + 4], str.NoDisplaytrue_n
mov eax, dword [ebp - 0x70]
mov dword [esp], eax
call dbg.fprintf
mov dword [esp + 4], str.StartupNotifytrue_n
mov eax, dword [ebp - 0x70]
mov dword [esp], eax
call dbg.fprintf
mov ecx, dword [ebp - 0x6c]
test ecx, ecx
je 0x40a070
mov eax, ecx
call dbg.wchars_to_utf8_chars
mov dword [esp + 4], str.Icon_s_n
mov dword [esp + 8], eax
mov eax, dword [ebp - 0x70]
mov dword [esp], eax
call dbg.fprintf
mov eax, dword [ebp - 0x70]
mov dword [esp], eax
call dword [sym.imp.ucrtbase.dll_fclose]
lea eax, [ebp - 0x44]
mov dword [ebp - 0x48], 0
mov dword [esp + 8], eax
mov dword [esp + 4], 0x40e2b4
mov dword [esp], 0x80000001
call sym._RegCreateKeyW_12
sub esp, 0xc
test eax, eax
jne 0x40a932
mov eax, dword [ebp - 0x44]
mov dword [ebp - 0x70], eax
test eax, eax
je 0x40a932
lea eax, [ebp - 0x48]
mov dword [esp + 4], ebx
mov dword [esp + 8], eax
mov eax, dword [ebp - 0x70]
mov dword [esp], eax
call sym._RegCreateKeyW_12
sub esp, 0xc
test eax, eax
jne 0x40a905
mov ecx, dword [ebp - 0x64]
cmp word [ecx], 0
mov eax, ecx
je 0x40a0ec
add eax, 2
cmp word [eax], 0
jne 0x40a0e3
mov ecx, dword [ebp - 0x64]
mov dword [esp + 0xc], 1
mov dword [esp + 4], str.MimeType
sub eax, ecx
mov dword [esp + 0x10], ecx
add eax, 2
mov dword [esp + 0x14], eax
xor eax, eax
mov dword [esp + 8], eax
mov eax, dword [ebp - 0x48]
mov dword [esp], eax
call sym._RegSetValueExW_24
mov eax, dword [ebp - 0x84]
sub esp, 0x18
cmp word [eax], 0
je 0x40a9f6
add eax, 2
cmp word [eax], 0
jne 0x40a130
mov ecx, dword [ebp - 0x84]
mov dword [esp + 0xc], 1
mov dword [esp + 4], str.ProgID
sub eax, ecx
mov dword [esp + 0x10], ecx
xor ecx, ecx
add eax, 2
mov dword [esp + 8], ecx
mov dword [esp + 0x14], eax
mov eax, dword [ebp - 0x48]
mov dword [esp], eax
call sym._RegSetValueExW_24
mov eax, dword [ebp - 0x8c]
sub esp, 0x18
cmp word [eax], 0
je 0x40aa01
add eax, 2
cmp word [eax], 0
jne 0x40a180
mov ecx, dword [ebp - 0x8c]
xor edx, edx
mov dword [esp + 0xc], 1
mov dword [esp + 8], edx
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 - 0x48]
mov dword [esp], eax
call sym._RegSetValueExW_24
mov eax, esi
sub esp, 0x18
cmp word [esi], 0
je 0x40a1d1
add eax, 2
cmp word [eax], 0
jne 0x40a1c8
sub eax, esi
mov dword [esp + 0x10], esi
add eax, 2
mov dword [esp + 0xc], 1
mov dword [esp + 0x14], eax
xor eax, eax
mov dword [esp + 8], eax
mov dword [esp + 4], str.DesktopFile
mov eax, dword [ebp - 0x48]
mov dword [esp], eax
call sym._RegSetValueExW_24
mov eax, dword [ebp - 0x6c]
sub esp, 0x18
test eax, eax
je 0x40aa0c
cmp word [eax], 0
je 0x40aa26
add eax, 2
cmp word [eax], 0
jne 0x40a217
mov ecx, dword [ebp - 0x6c]
mov dword [esp + 0xc], 1
mov dword [esp + 4], str.OpenWithIcon
sub eax, ecx
mov dword [esp + 0x10], ecx
add eax, 2
mov dword [esp + 0x14], eax
xor eax, eax
mov dword [esp + 8], eax
mov eax, dword [ebp - 0x48]
mov dword [esp], eax
call sym._RegSetValueExW_24
sub esp, 0x18
jmp 0x40a90e
test byte [0x40c000], 2
jne 0x40a422
mov ecx, dword [ebp - 0x6c]
test ecx, ecx
setne byte [ebp - 0xa4]
test byte [ebp - 0x70], 1
je 0x40921a
cmp byte [ebp - 0xa4], 0
je 0x40921a
mov dword [esp], 0
mov ecx, dword [ebp - 0x6c]
xor edx, edx
mov eax, dword [ebp - 0xb4]
call dbg.extract_icon
mov dword [ebp - 0x70], 1
jmp 0x40921a
mov eax, str.application_x_ms_shortcut
add eax, 2
cmp word [eax], 0
jne 0x40a2b8
sub eax, 0x40e0d6
call dbg.xmalloc
mov dword [ebp - 0x64], eax
xor eax, eax
movzx edx, word [eax + str.application_x_ms_shortcut]
mov ecx, dword [ebp - 0x64]
mov word [ecx + eax], dx
add eax, 2
test dx, dx
jne 0x40a2d0
jmp 0x409a86
movzx ebx, bx
mov dword [esp], str._04x
mov dword [esp + 4], ebx
call sym._wine_dbg_sprintf.constprop.0
jmp 0x409744
mov dword [esp + 8], esi
mov dword [esp + 4], 0
mov eax, dword fs:[0x18]
mov eax, dword [eax + 0x30]
jmp 0x408f26
movzx ebx, bx
mov dword [esp], str._04x
mov dword [esp + 4], ebx
call sym._wine_dbg_sprintf.constprop.0
jmp 0x408d52
mov eax, 2
jmp 0x4090ca
mov esi, str._null_
jmp 0x409c7f
cmp dword [eax + 4], esi
je 0x40a395
mov eax, dword [esi]
and dword [eax + 0xc], 0xfffffffe
mov eax, dword [esi]
mov eax, dword [eax]
or dword [eax + 0xc], 1
mov eax, dword [esi]
mov eax, dword [eax]
mov ecx, dword [eax]
mov edx, dword [eax + 8]
test ecx, ecx
je 0x40a390
cmp eax, dword [ecx + 4]
je 0x40a38b
mov dword [ecx + 8], edx
mov ecx, dword [edx + 4]
mov dword [eax + 8], ecx
test ecx, ecx
je 0x40a37d
mov dword [ecx], eax
mov dword [edx + 4], eax
mov ecx, dword [eax]
mov dword [edx], ecx
mov dword [eax], edx
jmp 0x409b79
mov dword [ecx + 4], edx
jmp 0x40a371
mov dword [ebp - 0x3c], edx
jmp 0x40a371
mov dword [edx + 8], esi
mov edx, dword [esi + 8]
mov dword [eax + 4], edx
test edx, edx
je 0x40a3a4
mov dword [edx], eax
mov dword [esi + 8], eax
mov edx, dword [eax]
mov dword [esi], edx
mov dword [eax], esi
mov esi, eax
jmp 0x40a34e
movzx eax, word [ebp - 0x6c]
mov dword [esp], str._04x
mov dword [esp + 4], eax
call sym._wine_dbg_sprintf.constprop.0
jmp 0x409c0b
mov eax, str._null_
jmp 0x409c0b
mov eax, dword [ebp - 0x64]
jmp 0x4097e8
mov esi, dword [ebp - 0x68]
xor eax, eax
mov dword [esp + 4], eax
mov dword [esp + 8], esi
mov eax, dword [edi + 0x30]
jmp 0x408b5a
mov eax, 0x14
call dbg.xmalloc
lea edx, [ebp - 0x3c]
mov ecx, eax
mov eax, dword [ebp - 0xa4]
lea esi, [ecx + 4]
mov dword [ecx], eax
jmp 0x409b59
mov eax, dword [ebp - 0x98]
jmp 0x409a58
mov dword [esp + 0xc], str.error_opening_associations_registry_key_n
mov dword [esp + 8], str.has_association_changed
mov dword [esp + 4], global___dbch
mov dword [esp], 1
call sym._wine_dbg_log.constprop.0
jmp 0x40a26d
movzx eax, word [ebp - 0x64]
mov dword [esp], str._04x
mov dword [esp + 4], eax
call sym._wine_dbg_sprintf.constprop.0
jmp 0x409cf1
mov eax, str._null_
jmp 0x409cf1
movzx eax, bx
mov dword [esp], str._04x
mov dword [esp + 4], eax
call sym._wine_dbg_sprintf.constprop.0
mov dword [ebp - 0x6c], eax
jmp 0x409cb3
movzx eax, word [ebp - 0x9c]
mov dword [esp], str._04x
mov dword [esp + 4], eax
call sym._wine_dbg_sprintf.constprop.0
mov esi, eax
jmp 0x409c7f
mov eax, dword [ebp - 0x84]
call dbg.escape
mov dword [esp + 4], str.Execwine_start__ProgIDOpen__s___f_n
mov dword [esp + 8], eax
mov eax, dword [ebp - 0x70]
mov dword [esp], eax
call dbg.fprintf
jmp 0x40a025
test byte [0x40c000], 2
jne 0x40a6d6
mov dword [esp + 8], esi
mov dword [esp + 4], 0
mov eax, dword fs:[0x18]
mov eax, dword [eax + 0x30]
mov eax, dword [eax + 0x18]
mov dword [esp], eax
mov eax, dword [ebp - 0x5c]
call eax
sub esp, 0xc
jmp 0x40a279
test esi, esi
je 0x40a8c9
mov eax, esi
shr eax, 0x10
je 0x40a8ab
mov dword [esp + 4], 0xffffffff
mov dword [esp], esi
call dword [sym.imp.kernel32.dll_IsBadStringPtrW]
push edx
push edx
test eax, eax
jne 0x40a89c
mov eax, esi
call sym._wine_dbgstr_wn.part.0.constprop.0
mov dword [ebp - 0xac], eax
mov eax, dword [ebp - 0x6c]
test eax, eax
je 0x40a88d
shr eax, 0x10
je 0x40a86e
mov dword [esp + 4], 0xffffffff
mov eax, dword [ebp - 0x6c]
mov dword [esp], eax
call dword [sym.imp.kernel32.dll_IsBadStringPtrW]
push ecx
push ecx
test eax, eax
jne 0x40a85f
mov eax, dword [ebp - 0x6c]
call sym._wine_dbgstr_wn.part.0.constprop.0
mov dword [ebp - 0xa8], eax
mov eax, dword [ebp - 0x84]
shr eax, 0x10
je 0x40a83d
mov dword [esp + 4], 0xffffffff
mov eax, dword [ebp - 0x84]
mov dword [esp], eax
call dword [sym.imp.kernel32.dll_IsBadStringPtrW]
push edx
push edx
test eax, eax
jne 0x40a82e
mov eax, dword [ebp - 0x84]
call sym._wine_dbgstr_wn.part.0.constprop.0
mov dword [ebp - 0xb8], eax
mov eax, dword [ebp - 0x64]
test eax, eax
je 0x40a81f
shr eax, 0x10
je 0x40a800
mov dword [esp + 4], 0xffffffff
mov eax, dword [ebp - 0x64]
mov dword [esp], eax
call dword [sym.imp.kernel32.dll_IsBadStringPtrW]
push ecx
push ecx
test eax, eax
jne 0x40a7f1
mov eax, dword [ebp - 0x64]
call sym._wine_dbgstr_wn.part.0.constprop.0
mov dword [ebp - 0xb0], eax
mov eax, dword [ebp - 0x8c]
shr eax, 0x10
je 0x40a7d5
mov dword [esp + 4], 0xffffffff
mov eax, dword [ebp - 0x8c]
mov dword [esp], eax
call dword [sym.imp.kernel32.dll_IsBadStringPtrW]
push edx
push edx
test eax, eax
jne 0x40a738
mov eax, dword [ebp - 0x8c]
call sym._wine_dbgstr_wn.part.0.constprop.0
mov ecx, dword [ebp - 0xac]
mov dword [esp + 0x20], ecx
mov ecx, dword [ebp - 0xa8]
mov dword [esp + 0x1c], ecx
mov ecx, dword [ebp - 0xb8]
mov dword [esp + 0x18], ecx
mov ecx, dword [ebp - 0xb0]
mov dword [esp + 0x10], eax
mov dword [esp + 0x14], ecx
mov dword [esp + 0xc], str.friendlyAppName_s__MIME_type__s__progID_s__icon_s_to_file__s_n
mov dword [esp + 8], str.write_freedesktop_association_entry
mov dword [esp + 4], global___dbch
mov dword [esp], 3
call sym._wine_dbg_log.constprop.0
jmp 0x409f36
mov eax, dword [ebp - 0x6c]
test eax, eax
jne 0x40a742
xor eax, eax
mov dword [esp + 8], edx
mov dword [esp + 4], eax
mov eax, dword [ebp - 0xac]
mov eax, dword [eax + 0x30]
mov eax, dword [eax + 0x18]
mov dword [esp], eax
mov eax, dword [ebp - 0x5c]
call eax
sub esp, 0xc
mov dword [esp], esi
call sym._RegCloseKey_4
push eax
cmp dword [ebp - 0xa8], 0
je 0x40921a
jmp 0x409ef8
test esi, esi
je 0x40a7cb
mov eax, esi
shr eax, 0x10
je 0x40a7b3
mov dword [esp + 4], 0xffffffff
mov dword [esp], esi
call dword [sym.imp.kernel32.dll_IsBadStringPtrW]
push edx
push edx
test eax, eax
jne 0x40a7a9
mov eax, esi
call sym._wine_dbgstr_wn.part.0.constprop.0
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], global___dbch
mov dword [esp], 1
call sym._wine_dbg_log.constprop.0
jmp 0x40a4db
mov eax, str._invalid_
jmp 0x40a63a
mov eax, dword [ebp - 0x6c]
mov dword [esp], edx
mov dword [esp + 4], eax
mov dword [ebp - 0xb0], edx
call dword [sym.imp.ucrtbase.dll_wcscmp]
mov edx, dword [ebp - 0xb0]
test eax, eax
jne 0x409eca
xor eax, eax
mov dword [esp + 8], edx
mov dword [esp + 4], eax
mov eax, dword [ebp - 0xac]
mov eax, dword [eax + 0x30]
mov eax, dword [eax + 0x18]
mov dword [esp], eax
mov eax, dword [ebp - 0x5c]
call eax
sub esp, 0xc
mov dword [esp], esi
call sym._RegCloseKey_4
push eax
cmp dword [ebp - 0xa8], 0
jne 0x409ef8
mov byte [ebp - 0xa4], 1
jmp 0x40a279
mov eax, str._invalid_
jmp 0x40a70b
movzx eax, si
mov dword [esp], str._04x
mov dword [esp + 4], eax
call sym._wine_dbg_sprintf.constprop.0
jmp 0x40a70b
mov eax, str._null_
jmp 0x40a70b
movzx eax, word [ebp - 0x8c]
mov dword [esp], str._04x
mov dword [esp + 4], eax
call sym._wine_dbg_sprintf.constprop.0
jmp 0x40a63a
mov dword [ebp - 0xb0], str._invalid_
jmp 0x40a5ff
movzx eax, word [ebp - 0x64]
mov dword [esp], str._04x
mov dword [esp + 4], eax
call sym._wine_dbg_sprintf.constprop.0
mov dword [ebp - 0xb0], eax
jmp 0x40a5ff
mov dword [ebp - 0xb0], str._null_
jmp 0x40a5ff
mov dword [ebp - 0xb8], str._invalid_
jmp 0x40a5bf
movzx eax, word [ebp - 0x84]
mov dword [esp], str._04x
mov dword [esp + 4], eax
call sym._wine_dbg_sprintf.constprop.0
mov dword [ebp - 0xb8], eax
jmp 0x40a5bf
mov dword [ebp - 0xa8], str._invalid_
jmp 0x40a57e
movzx eax, word [ebp - 0x6c]
mov dword [esp], str._04x
mov dword [esp + 4], eax
call sym._wine_dbg_sprintf.constprop.0
mov dword [ebp - 0xa8], eax
jmp 0x40a57e
mov dword [ebp - 0xa8], str._null_
jmp 0x40a57e
mov dword [ebp - 0xac], str._invalid_
jmp 0x40a53e
movzx eax, si
mov dword [esp], str._04x
mov dword [esp + 4], eax
call sym._wine_dbg_sprintf.constprop.0
mov dword [ebp - 0xac], eax
jmp 0x40a53e
mov dword [ebp - 0xac], str._null_
jmp 0x40a53e
mov ecx, dword [edx + 8]
test ecx, ecx
je 0x40a98e
test byte [ecx + 0xc], 1
je 0x40a98e
xor dword [edx + 0xc], 1
xor dword [eax + 0xc], 1
mov eax, dword [edx + 8]
xor dword [eax + 0xc], 1
mov eax, dword [esi]
mov esi, dword [eax]
jmp 0x409b79
test byte [0x40c000], 2
jne 0x40a942
mov eax, dword [ebp - 0x70]
mov dword [esp], eax
call sym._RegCloseKey_4
push eax
mov eax, dword [ebp - 0x48]
mov dword [esp], eax
call sym._RegCloseKey_4
push eax
mov dword [ebp - 0x70], 1
jmp 0x40a4db
test byte [0x40c000], 2
jne 0x40a968
xor eax, eax
mov dword [ebp - 0x70], eax
jmp 0x40a90e
mov dword [esp + 0xc], str.could_not_create_extension_subkey_n
mov dword [esp + 8], str.update_association
mov dword [esp + 4], global___dbch
mov dword [esp], 1
call sym._wine_dbg_log.constprop.0
jmp 0x40a90e
mov dword [esp + 0xc], str.could_not_open_file_associations_key_n
mov dword [esp + 8], str.update_association
mov dword [esp + 4], global___dbch
mov dword [esp], 1
call sym._wine_dbg_log.constprop.0
jmp 0x40a93b
cmp dword [eax + 8], esi
je 0x40a9da
mov eax, dword [esi]
and dword [eax + 0xc], 0xfffffffe
mov eax, dword [esi]
mov eax, dword [eax]
or dword [eax + 0xc], 1
mov eax, dword [esi]
mov eax, dword [eax]
mov ecx, dword [eax]
mov edx, dword [eax + 4]
test ecx, ecx
je 0x40a9d5
cmp eax, dword [ecx + 4]
je 0x40a9d0
mov dword [ecx + 8], edx
mov ecx, dword [edx + 8]
mov dword [eax + 4], ecx
test ecx, ecx
je 0x40a9c2
mov dword [ecx], eax
mov dword [edx + 8], eax
mov ecx, dword [eax]
mov dword [edx], ecx
mov dword [eax], edx
jmp 0x409b79
mov dword [ecx + 4], edx
jmp 0x40a9b6
mov dword [ebp - 0x3c], edx
jmp 0x40a9b6
mov dword [edx + 4], esi
mov edx, dword [esi + 4]
mov dword [eax + 8], edx
test edx, edx
je 0x40a9e9
mov dword [edx], eax
mov dword [esi + 4], eax
mov edx, dword [eax]
mov dword [esi], edx
mov dword [eax], esi
mov esi, eax
jmp 0x40a993
mov eax, dword [ebp - 0x84]
jmp 0x40a139
mov eax, dword [ebp - 0x8c]
jmp 0x40a189
mov dword [esp + 4], str.OpenWithIcon
mov eax, dword [ebp - 0x48]
mov dword [esp], eax
call sym._RegDeleteValueW_8
push eax
push eax
jmp 0x40a90e
mov eax, dword [ebp - 0x6c]
jmp 0x40a220