Function at 0x4099e0
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 edi, dword [section..data]
mov ebx, dword [ecx + 8]
test edi, edi
je 0x409db8
mov eax, dword [sym.imp.ucrtbase.dll__wgetenv]
mov dword [esp], str.WINECONFIGDIR
mov dword [ebp - 0x7c], eax
call eax
test eax, eax
je 0x409a27
cmp word [eax], 0x5c
je 0x40a33e
mov dword [esp + 4], eax
mov dword [esp], str._swindatacxmenu
call dbg.heap_wprintf
mov dword [0x417228], eax
mov dword [esp], 0
call sym._CoInitialize_4
sub esp, 4
test eax, eax
js 0x40a020
mov dword [ebp - 0x50], ebx
mov dword [ebp - 0x74], 0
mov dword [ebp - 0x80], 0
mov dword [ebp - 0x78], 0
test ebx, ebx
jne 0x409a91
jmp 0x409c60
mov ebx, dword [section..data]
test ebx, ebx
je 0x409ca8
mov ebx, dword [ebp - 0x50]
test ebx, ebx
je 0x409c60
cmp word [ebx], 0
je 0x409c60
lea eax, [ebp - 0x50]
call dbg.next_token
mov ebx, eax
test eax, eax
je 0x409c60
mov dword [esp + 4], 0x40f5b2
mov dword [esp], eax
call dword [sym.imp.ucrtbase.dll_wcscmp]
test eax, eax
je 0x409a78
mov dword [esp + 4], 0x40fadc
mov dword [esp], ebx
call dword [sym.imp.ucrtbase.dll_wcscmp]
test eax, eax
jne 0x409c80
mov eax, dword [section..data]
mov dword [ebp - 0x64], eax
test eax, eax
jne 0x409a86
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 0x40a32f
mov ecx, dword [sym.imp.kernel32.dll_HeapFree]
mov eax, dword [ebp - 0x38]
mov edi, dword fs:[0x18]
mov dword [ebp - 0x5c], ecx
lea ecx, [mimeProgidTree.compare]
mov dword [ebp - 0x68], eax
mov dword [ebp - 0x6c], ecx
test eax, eax
je 0x409a86
lea esi, [esi]
mov dword [mimeProgidTree.compare], 0x1000
mov eax, 0x1000
mov dword [ebp - 0x38], 0x1000
jmp 0x409b90
shl dword [mimeProgidTree.compare], 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 [mimeProgidTree.compare]
sub esp, 0xc
add eax, eax
call sym._xmalloc
mov esi, eax
mov eax, dword [ebp - 0x38]
add eax, eax
call sym._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 0x409b50
test eax, eax
je 0x409d50
cmp eax, 0x103
je 0x409c07
test byte [0x40d014], 2
jne 0x409f20
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
mov ebx, dword [ebp - 0x50]
sub esp, 4
test ebx, ebx
jne 0x409a91
nop
call sym._CoUninitialize_0
mov eax, dword [ebp - 0x74]
lea esp, [ebp - 0x10]
pop ecx
pop ebx
pop esi
pop edi
pop ebp
lea esp, [ecx - 4]
ret 0x10
mov dword [esp + 4], 0x40fb20
mov dword [esp], ebx
call dword [sym.imp.ucrtbase.dll_wcscmp]
test eax, eax
jne 0x409ef8
mov dword [ebp - 0x78], 1
jmp 0x409a86
lea edi, [ebp - 0x38]
mov dword [ebp - 0x60], edi
mov dword [esp + 8], edi
mov dword [esp + 4], 0x40f5b8
mov dword [esp], 0x80000001
call sym._RegCreateKeyW_12
sub esp, 0xc
test eax, eax
jne 0x409f6b
mov ebx, dword [ebp - 0x38]
test ebx, ebx
je 0x409f6b
lea eax, [mimeProgidTree.compare]
mov dword [mimeProgidTree.compare], 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 0x409f60
movzx eax, byte [ebp - 0x38]
cmp al, 0x59
je 0x409f60
jbe 0x409f4d
cmp al, 0x74
je 0x409f60
cmp al, 0x79
je 0x409f60
mov dword [esp], ebx
call sym._RegCloseKey_4
sub esp, 4
jmp 0x409a86
mov dword [esp], ebx
call dword [sym.imp.kernel32.dll_GetFileAttributesW]
sub esp, 4
cmp eax, 0xffffffff
je 0x409ff0
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 0x409b38
mov dword [esp + 0x10], 0x417020
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 0x40a02d
mov eax, dword [sym.imp.ucrtbase.dll__wgetenv]
mov dword [esp], str.XDG_CONFIG_HOME
mov dword [ebp - 0x7c], eax
call eax
test eax, eax
je 0x40a3f6
mov dword [esp + 4], eax
mov dword [esp], str.__unix_s_menus_applications_merged
call dbg.heap_wprintf
movzx ecx, word [eax]
mov dword [0x41722c], eax
mov edx, eax
test cx, cx
je 0x409e4a
lea esi, [esi]
nop
cmp cx, 0x2f
jne 0x409e3e
mov ecx, 0x5c
mov word [edx], cx
movzx ecx, word [edx + 2]
add edx, 2
test cx, cx
jne 0x409e30
mov esi, 0x5c
mov word [eax + 2], si
call dbg.create_directories
mov dword [esp], str.XDG_DATA_HOME
mov eax, dword [ebp - 0x7c]
call eax
test eax, eax
je 0x40a3d5
mov dword [esp + 4], eax
mov dword [esp], str.__unix_s
call dbg.heap_wprintf
movzx ecx, word [eax]
mov dword [0x417228], eax
mov edx, eax
test cx, cx
je 0x409eaa
lea esi, [esi]
nop
cmp cx, 0x2f
jne 0x409e9e
mov esi, 0x5c
mov word [edx], si
movzx ecx, word [edx + 2]
add edx, 2
test cx, cx
jne 0x409e90
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
call dword [sym.imp.kernel32.dll_HeapFree]
sub esp, 0xc
jmp 0x409a3c
mov dword [esp + 4], 0x40fb26
mov dword [esp], ebx
call dword [sym.imp.ucrtbase.dll_wcscmp]
test eax, eax
jne 0x40a390
mov dword [ebp - 0x80], 1
jmp 0x409a86
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_1
jmp 0x409c07
cmp al, 0x31
je 0x409f60
cmp al, 0x54
jne 0x409d3b
lea esi, [esi]
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], 0x4ff
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 0x40a039
test byte [0x40d014], 2
jne 0x40a555
mov eax, dword [ebp - 0x4c]
mov dword [esp], eax
call dword [sym.imp.kernel32.dll_CloseHandle]
sub esp, 4
jmp 0x409a86
test byte [0x40d014], 8
jne 0x40a29c
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 0x409d69
test byte [0x40d014], 2
jne 0x40a302
mov dword [ebp - 0x74], 1
jmp 0x409c65
mov eax, dword [0x417228]
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 [0x417228]
mov dword [esp], str._s_applications
mov dword [esp + 4], eax
call dbg.heap_wprintf
mov dword [ebp - 0x8c], eax
call dbg.create_directories
mov eax, dword [ebp - 0x60]
mov dword [mimeProgidTree.root], 0
mov dword [mimeProgidTree.compare], 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 - 0x7c]
call edi
test eax, eax
je 0x40ac7b
mov dword [esp], str.XDG_DATA_DIRS
call edi
mov ebx, eax
test eax, eax
je 0x40b03f
cmp word [eax], 0
je 0x40b035
lea esi, [esi]
nop
add eax, 2
cmp word [eax], 0
jne 0x40a0e0
sub eax, ebx
add eax, 2
call sym._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 0x40a100
mov edx, dword [ebp - 0x60]
mov eax, dword [0x417228]
call dbg.add_mimes
test eax, eax
jne 0x40a641
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 eax, dword [ebp - 0x60]
call dbg.free_native_mime_types
test byte [0x40d014], 2
jne 0x40afc9
mov dword [ebp - 0x84], 0
mov eax, dword [ebp - 0x60]
mov dword [esp + 4], 0x40f5b8
mov dword [esp], 0x80000001
mov dword [esp + 8], eax
call sym._RegCreateKeyW_12
sub esp, 0xc
mov edi, eax
test eax, eax
jne 0x40ac45
mov esi, dword [ebp - 0x38]
test esi, esi
je 0x40ac45
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 0x40a200
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 0x40a493
mov edx, eax
mov ecx, str.open
mov eax, 1
call dbg.assoc_query
test eax, eax
jne 0x40a1c0
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 0x40a25b
test byte [0x40d014], 8
jne 0x40a5e3
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 0x40a1e0
test esi, esi
je 0x40b02b
mov eax, esi
shr eax, 0x10
je 0x40a47e
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 0x40a2d5
mov eax, esi
call sym._wine_dbgstr_wn.part.0.constprop.0_1
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_1
jmp 0x409ffd
mov dword [esp + 0x10], eax
mov dword [esp + 0xc], str.could_not_initialize_COM__error_0x_08lX_n
mov dword [esp + 8], global___FUNCTION__.2
mov dword [esp + 4], global___dbch
mov dword [esp], 1
call sym._wine_dbg_log.constprop.0_1
jmp 0x40a02d
mov edx, dword fs:[0x18]
mov dword [edx + 0x34], eax
jmp 0x409a86
cmp word [eax + 2], 0x3f
jne 0x409a27
cmp word [eax + 4], 0x3f
jne 0x409a27
cmp word [eax + 6], 0x5c
jne 0x409a27
cmp word [eax + 8], 0
je 0x409a27
cmp word [eax + 0xa], 0x3a
jne 0x409a27
cmp word [eax + 0xc], 0x5c
jne 0x409a27
add eax, 8
jmp 0x409a27
mov dword [esp + 4], 0x40fb2c
mov dword [esp], ebx
call dword [sym.imp.ucrtbase.dll_wcscmp]
test eax, eax
jne 0x40a417
lea eax, [ebp - 0x50]
call dbg.next_token
mov ebx, eax
test eax, eax
je 0x409a86
lea eax, [ebp - 0x50]
call dbg.next_token
mov edx, eax
test eax, eax
je 0x409a86
mov eax, ebx
call dbg.thumbnail_lnk
jmp 0x409a86
mov dword [esp], str.WINEHOMEDIR
mov eax, dword [ebp - 0x7c]
call eax
mov dword [esp], str._s_.local_share
mov dword [esp + 4], eax
call dbg.heap_wprintf
jmp 0x409e7c
mov dword [esp], str.WINEHOMEDIR
mov eax, dword [ebp - 0x7c]
call eax
mov dword [esp], str._s_.config_menus_applications_merged
mov dword [esp + 4], eax
call dbg.heap_wprintf
jmp 0x409e18
mov dword [esp + 4], str.__cx_all_menus
mov esi, dword [sym.imp.kernel32.dll_lstrcmpW]
mov dword [esp], ebx
call esi
sub esp, 8
test eax, eax
jne 0x40a457
call dbg.cx_process_all_menus
test eax, eax
jne 0x409a86
test byte [0x40d014], 2
jne 0x40b165
mov dword [ebp - 0x74], 1
jmp 0x409a86
mov dword [esp + 4], str.__cx_dump_menus
mov dword [esp], ebx
call esi
sub esp, 8
test eax, eax
jne 0x40af16
mov dword [section..bss], 1
jmp 0x409a86
mov dword [esp + 4], esi
mov dword [esp], str._04x
call sym._wine_dbg_sprintf.constprop.0_1
jmp 0x40a2d5
mov esi, dword [ebp - 0x64]
mov dword [esp], esi
call sym._RegCloseKey_4
mov ecx, dword [ebp - 0x68]
or dword [ebp - 0x84], ecx
sub esp, 4
mov ecx, dword [ebp - 0x84]
test ecx, ecx
jne 0x40a57e
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 - 0x8c]
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 0x409a86
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_1
jmp 0x409fdc
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 - 0x8c]
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 0x40a4b8
mov eax, ebx
shr eax, 0x10
je 0x40afb4
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 0x40a614
mov eax, ebx
call sym._wine_dbgstr_wn.part.0.constprop.0_1
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_1
jmp 0x40a24c
lea eax, [ebp - 0x44]
mov dword [esp + 4], 0x40f66c
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 0x40b939
mov ecx, dword [sym.imp.kernel32.dll_HeapFree]
mov dword [ebp - 0x68], esi
mov edi, dword fs:[0x18]
mov dword [ebp - 0x5c], ecx
lea esi, [esi]
nop
mov dword [esp + 4], eax
mov dword [esp], 0x40f670
call dbg.heap_wprintf
movzx edx, word [eax]
mov esi, eax
test dx, dx
je 0x40a6ba
lea esi, [esi]
cmp dx, 0x2f
jne 0x40a6ae
mov ecx, 0x5c
mov word [eax], cx
movzx edx, word [eax + 2]
add eax, 2
test dx, dx
jne 0x40a6a0
lea edx, [esi + 0x12]
cmp edx, eax
jae 0x40a6d0
cmp word [eax - 2], 0x5c
jne 0x40a6d0
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 0x40beaa
lea eax, [ebp - 0x44]
mov dword [esp + 4], 0x40f66c
mov dword [esp + 8], eax
mov dword [esp], 0
mov eax, dword [ebp - 0x64]
call eax
test eax, eax
jne 0x40a680
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]
mov dword [esp], eax
mov eax, dword [ebp - 0x5c]
call eax
sub esp, 0xc
mov eax, dword fs:[0x18]
mov dword [ebp - 0x84], 0
xor esi, esi
mov dword [ebp - 0x68], eax
jmp 0x40a786
mov eax, dword [ebp - 0x64]
mov dword [esp + 4], 0
add esi, 1
mov dword [esp + 8], eax
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, esi
mov eax, 0x80000000
call dbg.reg_enum_keyW
mov dword [ebp - 0x64], eax
test eax, eax
je 0x40ab33
cmp word [eax], 0x2e
jne 0x40a760
mov dword [esp + 4], str..com
mov ebx, eax
mov dword [esp], eax
call dword [sym.imp.ucrtbase.dll__wcsicmp]
test eax, eax
je 0x40a760
mov dword [esp + 4], str..exe
mov dword [esp], ebx
call dword [sym.imp.ucrtbase.dll__wcsicmp]
test eax, eax
je 0x40a760
mov dword [esp + 4], str..msi
mov dword [esp], ebx
call dword [sym.imp.ucrtbase.dll__wcsicmp]
test eax, eax
je 0x40a760
mov dword [esp], ebx
mov edi, dword [sym.imp.ucrtbase.dll__wcslwr]
call edi
xor ecx, ecx
mov edx, ebx
mov eax, 3
call dbg.assoc_query
xor ecx, ecx
mov edx, ebx
mov dword [ebp - 0xa8], 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 - 0x9c], eax
test eax, eax
je 0x40acc1
mov eax, dword [ebp - 0x9c]
mov dword [esp], eax
call edi
mov eax, dword [ebp - 0x38]
lea edi, [eax - 8]
cmp dword [ebp - 0x60], eax
je 0x40b054
mov dword [ebp - 0x6c], 0
xor ecx, ecx
mov ebx, dword [ebp - 0x64]
mov dword [ebp - 0x70], esi
mov esi, edi
mov edi, ecx
lea esi, [esi]
mov eax, dword [esi + 4]
mov dword [esp], ebx
mov dword [esp + 4], eax
call sym._PathMatchSpecW_8
sub esp, 8
test eax, eax
je 0x40a8ae
test edi, edi
je 0x40ac1f
mov ecx, dword [esi + 4]
cmp word [ecx], 0
je 0x40b012
mov eax, ecx
lea esi, [esi]
add eax, 2
cmp word [eax], 0
jne 0x40a898
sub eax, ecx
sar eax, 1
cmp dword [ebp - 0x6c], eax
jl 0x40acb8
mov eax, dword [esi + 8]
lea esi, [eax - 8]
cmp dword [ebp - 0x60], eax
jne 0x40a868
mov esi, dword [ebp - 0x70]
mov ecx, edi
test edi, edi
je 0x40b046
cmp word [edi], 0
je 0x40b99e
mov eax, edi
add eax, 2
cmp word [eax], 0
jne 0x40a8d2
sub eax, ecx
add eax, 2
mov dword [ebp - 0x70], ecx
call sym._xmalloc
mov ecx, dword [ebp - 0x70]
mov dword [ebp - 0x6c], eax
mov ebx, eax
xor eax, eax
lea esi, [esi]
movzx edx, word [ecx + eax]
mov word [ebx + eax], dx
add eax, 2
test dx, dx
jne 0x40a8f8
mov edi, dword [ebp - 0x64]
mov ecx, str.open
mov eax, 1
mov edx, edi
call dbg.assoc_query
mov dword [ebp - 0xc0], eax
test eax, eax
je 0x40aff2
mov ecx, str.open
mov edx, edi
mov eax, 2
call dbg.assoc_query
mov dword [ebp - 0x70], 0
mov dword [ebp - 0xb8], eax
test eax, eax
je 0x40a958
mov edx, eax
xor eax, eax
call sym._compute_native_identifier.part.0
mov dword [ebp - 0x70], eax
mov edi, dword [ebp - 0x64]
mov ecx, str.open
mov eax, 4
mov edx, edi
call dbg.assoc_query
mov edx, edi
test eax, eax
mov ecx, eax
mov eax, str.A_Wine_application
cmovne eax, ecx
xor ecx, ecx
mov dword [ebp - 0x98], eax
mov eax, 0x80000000
call dbg.reg_get_valW
mov dword [ebp - 0x88], eax
test eax, eax
je 0x40aa2a
mov dword [esp + 8], eax
mov eax, dword [ebp - 0x6c]
mov dword [esp], str._s__s
mov dword [esp + 4], eax
call dbg.heap_wprintf
mov edi, dword [mimeProgidTree.root]
mov dword [ebp - 0xa4], eax
mov dword [ebp - 0xac], edi
test edi, edi
je 0x40bdc0
mov ecx, dword [mimeProgidTree.compare]
mov dword [ebp - 0xb4], esi
mov ebx, eax
mov dword [ebp - 0xb0], ecx
mov esi, ecx
jmp 0x40a9ee
mov eax, dword [edi + 4]
cmovns eax, dword [edi + 8]
mov edi, eax
test eax, eax
je 0x40b0d5
mov dword [esp + 4], edi
mov dword [esp], ebx
call esi
test eax, eax
jne 0x40a9dd
mov ecx, dword [ebp - 0xa4]
mov esi, dword [ebp - 0xb4]
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
sub esp, 0xc
mov eax, dword [ebp - 0xc0]
mov dword [esp + 4], 0
mov edi, dword fs:[0x18]
mov dword [esp + 8], eax
mov eax, dword [edi + 0x30]
mov eax, dword [eax + 0x18]
mov dword [esp], eax
mov ebx, dword [ebp - 0x5c]
call ebx
mov eax, dword [ebp - 0xb8]
sub esp, 0xc
mov dword [esp + 8], eax
mov dword [esp + 4], 0
mov eax, dword [edi + 0x30]
mov eax, dword [eax + 0x18]
mov dword [esp], eax
call ebx
mov eax, dword [ebp - 0x70]
sub esp, 0xc
mov dword [esp + 8], eax
mov dword [esp + 4], 0
mov eax, dword [edi + 0x30]
mov eax, dword [eax + 0x18]
mov dword [esp], eax
call ebx
mov eax, dword [ebp - 0xa8]
sub esp, 0xc
mov dword [esp + 8], eax
mov dword [esp + 4], 0
mov eax, dword [edi + 0x30]
mov eax, dword [eax + 0x18]
mov dword [esp], eax
call ebx
mov eax, dword [ebp - 0xa0]
sub esp, 0xc
mov dword [esp + 8], eax
mov dword [esp + 4], 0
mov eax, dword [edi + 0x30]
mov eax, dword [eax + 0x18]
mov dword [esp], eax
call ebx
mov eax, dword [ebp - 0x9c]
sub esp, 0xc
mov dword [esp + 8], eax
mov dword [esp + 4], 0
mov eax, dword [edi + 0x30]
mov eax, dword [eax + 0x18]
mov dword [esp], eax
call ebx
mov eax, dword [ebp - 0x6c]
sub esp, 0xc
mov dword [esp + 8], eax
mov dword [esp + 4], 0
mov eax, dword [edi + 0x30]
mov eax, dword [eax + 0x18]
mov dword [esp], eax
call ebx
mov eax, dword [ebp - 0x88]
sub esp, 0xc
mov dword [esp + 8], eax
mov dword [esp + 4], 0
mov eax, dword [edi + 0x30]
mov eax, dword [eax + 0x18]
mov dword [esp], eax
call ebx
sub esp, 0xc
jmp 0x40a760
mov eax, dword [mimeProgidTree.root]
test eax, eax
je 0x40ac12
nop
mov esi, eax
mov eax, dword [eax + 4]
test eax, eax
jne 0x40ab40
mov eax, dword [esi + 8]
test eax, eax
jne 0x40ab40
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 0x40abcc
mov eax, dword [ebx + 8]
cmp edi, eax
je 0x40ab88
test eax, eax
je 0x40ab88
lea esi, [esi]
mov ebx, eax
mov eax, dword [eax + 4]
test eax, eax
jne 0x40ab78
mov eax, dword [ebx + 8]
test eax, eax
jne 0x40ab78
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 0x40ab60
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 0x40a16c
mov ecx, dword [esi + 4]
mov edi, dword [esi]
cmp word [ecx], 0
je 0x40b2f1
mov eax, ecx
add ecx, 2
cmp word [ecx], 0
jne 0x40ac30
sub ecx, eax
sar ecx, 1
mov dword [ebp - 0x6c], ecx
jmp 0x40a8ae
test byte [0x40d014], 2
je 0x40a4aa
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_1
jmp 0x40a4aa
mov eax, str._usr_local_share_:_usr_share_
add eax, 2
cmp word [eax], 0
jne 0x40ac80
sub eax, 0x40f37a
call sym._xmalloc
mov esi, eax
xor eax, eax
lea esi, [esi]
nop
movzx edx, word [eax + str._usr_local_share_:_usr_share_]
mov word [esi + eax], dx
add eax, 2
test dx, dx
jne 0x40aca0
jmp 0x40a110
mov edi, dword [esi]
mov eax, ecx
jmp 0x40ac30
mov eax, dword [ebp - 0x38]
lea edi, [eax - 8]
cmp dword [ebp - 0x60], eax
jne 0x40a851
mov dword [esp + 4], str..lnk
mov eax, dword [ebp - 0x64]
mov dword [esp], eax
call dword [sym.imp.ucrtbase.dll__wcsicmp]
test eax, eax
je 0x40b966
mov eax, dword [ebp - 0x64]
add eax, 2
mov dword [ebp - 0x84], eax
mov dword [esp + 4], eax
mov dword [esp], str.application_x_wine_extension__s
call dbg.heap_wprintf
mov ebx, dword [ebp - 0xa0]
mov dword [ebp - 0x6c], eax
test ebx, ebx
je 0x40adf6
test eax, eax
je 0x40c0a6
mov eax, dword [ebp - 0x6c]
cmp word [eax], 0
je 0x40bf5d
add eax, 2
cmp word [eax], 0
jne 0x40ad2e
mov ebx, dword [ebp - 0x6c]
sub eax, ebx
add eax, 2
call sym._xmalloc
mov ecx, ebx
mov edi, eax
xor eax, eax
movzx edx, word [ecx + eax]
mov word [edi + eax], dx
add eax, 2
test dx, dx
jne 0x40ad4a
movzx eax, word [edi]
mov edx, edi
test ax, ax
je 0x40ad7e
cmp ax, 0x2f
jne 0x40ad72
mov ecx, 0x2d
mov word [edx], cx
movzx eax, word [edx + 2]
add edx, 2
test ax, ax
jne 0x40ad64
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 0x40adbf
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, edi
call dbg.extract_icon
mov dword [esp + 8], edi
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 [0x40d014], 8
jne 0x40b201
mov eax, dword [ebp - 0x84]
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 [esp + 4], 0x40ec02
mov dword [esp], eax
mov ebx, eax
call dword [sym.imp.ucrtbase.dll__wfopen]
mov edi, eax
test eax, eax
je 0x40b18e
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], edi
call dbg.fprintf
mov eax, dword [ebp - 0x6c]
call dbg.wchars_to_xml_text
mov dword [esp + 4], str.___mime_type_type__s___n
mov dword [esp + 8], eax
mov dword [esp], edi
call dbg.fprintf
mov eax, dword [ebp - 0x64]
call dbg.wchars_to_xml_text
mov dword [esp + 4], str._____glob_pattern__s____n
mov dword [esp + 8], eax
mov dword [esp], edi
call dbg.fprintf
mov eax, dword [ebp - 0xa8]
test eax, eax
je 0x40aebb
call dbg.wchars_to_xml_text
mov dword [esp + 4], str._____comment__s__comment__n
mov dword [esp + 8], eax
mov dword [esp], edi
call dbg.fprintf
mov dword [esp + 4], str.____mime_type__n
mov dword [esp], edi
call dbg.fprintf
mov dword [esp + 4], str.__mime_info__n
mov dword [esp], edi
call dbg.fprintf
mov dword [esp], edi
call dword [sym.imp.ucrtbase.dll_fclose]
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
mov eax, dword [ebp - 0x5c]
call eax
mov dword [ebp - 0x84], 1
sub esp, 0xc
jmp 0x40a908
cmp word [ebx], 0x2d
je 0x40b2fd
mov edx, dword [ebp - 0x80]
mov eax, dword [ebp - 0x78]
mov dword [esp], ebx
test edx, edx
mov dword [esp + 4], eax
je 0x40b15b
call dbg.Process_URL
test eax, eax
jne 0x409a86
mov dword [ebp - 0x74], 1
test byte [0x40d014], 2
je 0x409a86
mov eax, ebx
shr eax, 0x10
je 0x40be7d
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 0x40af87
mov eax, ebx
call sym._wine_dbgstr_wn.part.0.constprop.0_1
mov dword [esp + 0x10], eax
mov dword [esp + 0xc], str.failed_to_build_menu_item_for__s_n
mov dword [esp + 8], global___FUNCTION__.2
mov dword [esp + 4], global___dbch
mov dword [esp], 1
call sym._wine_dbg_log.constprop.0_1
jmp 0x40a44b
mov dword [esp + 4], ebx
mov dword [esp], str._04x
call sym._wine_dbg_sprintf.constprop.0_1
jmp 0x40a614
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_1
jmp 0x40a162
mov dword [ebp - 0x88], 0
mov dword [ebp - 0x70], 0
mov dword [ebp - 0xb8], 0
jmp 0x40aa2a
mov ecx, dword [ebp - 0x6c]
test ecx, ecx
jns 0x40a8ae
mov dword [ebp - 0x6c], 0
mov edi, dword [esi]
jmp 0x40a8ae
mov eax, str._null_
jmp 0x40a2d5
mov eax, 2
jmp 0x40a0ee
xor esi, esi
jmp 0x40a110
mov edi, dword [ebp - 0x9c]
test edi, edi
je 0x40acd0
mov dword [esp + 4], 0x2f
mov edi, dword [ebp - 0x9c]
mov dword [esp], edi
call dword [sym.imp.ucrtbase.dll_wcschr]
test eax, eax
je 0x40acd0
cmp word [edi], 0
mov eax, edi
je 0x40c079
add eax, 2
cmp word [eax], 0
jne 0x40b07f
mov ecx, dword [ebp - 0x9c]
sub eax, ecx
add eax, 2
call sym._xmalloc
mov dword [ebp - 0x6c], eax
xor eax, eax
mov ecx, dword [ebp - 0x9c]
movzx edx, word [ecx + eax]
mov ecx, dword [ebp - 0x6c]
mov word [ecx + eax], dx
add eax, 2
test dx, dx
jne 0x40b09d
mov eax, dword [ebp - 0x64]
mov edx, dword [ebp - 0xa0]
add eax, 2
mov dword [ebp - 0x84], eax
test edx, edx
jne 0x40ad21
jmp 0x40adf6
mov eax, 0x14
mov esi, dword [ebp - 0xb4]
call sym._xmalloc
mov edi, dword [ebp - 0xac]
mov ebx, eax
mov eax, dword [ebp - 0xa4]
mov dword [ebx], eax
jmp 0x40b10c
lea ecx, [edi + 4]
lea edx, [edi + 8]
cmovs edx, ecx
mov eax, dword [edx]
test eax, eax
je 0x40b368
mov edi, eax
mov dword [esp + 4], edi
mov eax, dword [ebp - 0xa4]
mov dword [esp], eax
mov eax, dword [ebp - 0xb0]
call eax
test eax, eax
jne 0x40b0f7
test byte [0x40d014], 2
je 0x40aa2a
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_1
jmp 0x40aa2a
call dbg.Process_Link
jmp 0x40af3a
mov dword [esp + 0xc], str.failed_to_build_some_menu_items_n
mov dword [esp + 8], global___FUNCTION__.2
mov dword [esp + 4], global___dbch
mov dword [esp], 1
call sym._wine_dbg_log.constprop.0_1
jmp 0x40a44b
test byte [0x40d014], 2
je 0x40aee4
mov eax, ebx
test ebx, ebx
je 0x40c00c
shr eax, 0x10
je 0x40bff7
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 0x40b1d4
mov eax, ebx
call sym._wine_dbgstr_wn.part.0.constprop.0_1
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_1
jmp 0x40aee4
mov eax, dword [ebp - 0xa8]
test eax, eax
je 0x40bfed
shr eax, 0x10
je 0x40bfd0
mov dword [esp + 4], 0xffffffff
mov ebx, dword [ebp - 0xa8]
mov edi, str._invalid_
mov dword [esp], ebx
call dword [sym.imp.kernel32.dll_IsBadStringPtrW]
sub esp, 8
test eax, eax
jne 0x40b244
mov eax, ebx
call sym._wine_dbgstr_wn.part.0.constprop.0_1
mov edi, eax
mov eax, dword [ebp - 0x64]
shr eax, 0x10
je 0x40c020
mov dword [esp + 4], 0xffffffff
mov ebx, dword [ebp - 0x64]
mov dword [esp], ebx
call dword [sym.imp.kernel32.dll_IsBadStringPtrW]
mov dword [ebp - 0x70], str._invalid_
sub esp, 8
test eax, eax
jne 0x40b27c
mov eax, ebx
call sym._wine_dbgstr_wn.part.0.constprop.0_1
mov dword [ebp - 0x70], eax
mov eax, dword [ebp - 0x6c]
test eax, eax
je 0x40c016
shr eax, 0x10
je 0x40be92
mov dword [esp + 4], 0xffffffff
mov ebx, dword [ebp - 0x6c]
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 0x40b2b9
mov eax, ebx
call sym._wine_dbgstr_wn.part.0.constprop.0_1
mov dword [esp + 0x18], edi
mov ecx, dword [ebp - 0x70]
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_1
jmp 0x40ae03
mov dword [ebp - 0x6c], 0
jmp 0x40a8ae
test byte [0x40d014], 2
je 0x409a86
mov eax, ebx
shr eax, 0x10
je 0x40c03b
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 0x40b33b
mov eax, ebx
call sym._wine_dbgstr_wn.part.0.constprop.0_1
mov dword [esp + 0x10], eax
mov dword [esp + 0xc], str.unknown_option__s_n
mov dword [esp + 8], global___FUNCTION__.2
mov dword [esp + 4], global___dbch
mov dword [esp], 1
call sym._wine_dbg_log.constprop.0_1
jmp 0x409a86
mov dword [ebp - 0xac], edi
lea edi, [ebx + 4]
mov eax, dword [ebp - 0xac]
mov dword [ebx + 0x10], 1
mov dword [ebx + 8], 0
mov dword [ebx + 4], eax
mov dword [ebx + 0xc], 0
mov dword [edx], edi
mov eax, dword [edi]
test eax, eax
je 0x40b3d1
test byte [eax + 0xc], 1
je 0x40b3d1
mov edx, dword [eax]
mov ecx, dword [edx + 4]
cmp eax, ecx
je 0x40bf38
test ecx, ecx
je 0x40bed0
test byte [ecx + 0xc], 1
je 0x40bed0
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]
jmp 0x40b391
mov eax, dword [mimeProgidTree.root]
and dword [eax + 0xc], 0xfffffffe
lea eax, [ebp - 0x44]
mov dword [esp + 8], eax
mov dword [esp + 4], 0x40f5b8
mov dword [esp], 0x80000001
call sym._RegCreateKeyW_12
sub esp, 0xc
test eax, eax
jne 0x40b8e0
mov edi, dword [ebp - 0x44]
test edi, edi
je 0x40b8e0
mov edx, dword [ebp - 0x64]
mov ecx, str.MimeType
mov eax, edi
mov ebx, 1
call dbg.reg_get_valW
mov edx, eax
test eax, eax
je 0x40b449
mov eax, dword [ebp - 0x6c]
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 ebx, 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, dword [ebp - 0x64]
mov ecx, str.ProgID
mov eax, edi
sub esp, 0xc
call dbg.reg_get_valW
mov edx, eax
test eax, eax
je 0x40b4a4
mov eax, dword [ebp - 0x88]
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 0x40b4a9
mov ebx, 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, dword [ebp - 0x64]
mov ecx, str.AppName
mov eax, edi
sub esp, 0xc
call dbg.reg_get_valW
mov edx, eax
test eax, eax
je 0x40b504
mov eax, dword [ebp - 0x98]
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 0x40b509
mov ebx, 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 edx, dword [ebp - 0x64]
mov ecx, str.OpenWithIcon
mov eax, edi
sub esp, 0xc
call dbg.reg_get_valW
mov edx, eax
mov eax, dword [ebp - 0x70]
test eax, eax
setne byte [ebp - 0xa4]
test edx, edx
movzx ecx, byte [ebp - 0xa4]
setne al
cmp cl, al
je 0x40bb83
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], edi
call sym._RegCloseKey_4
sub esp, 4
mov eax, dword [ebp - 0x64]
add eax, 2
mov dword [esp + 8], eax
mov eax, dword [ebp - 0x8c]
mov dword [esp], str._swine_extension__s.desktop
mov dword [esp + 4], eax
call dbg.heap_wprintf
mov dword [esp], str.WINECONFIGDIR
mov edi, eax
mov eax, dword [ebp - 0x7c]
call eax
mov dword [ebp - 0xc4], eax
test byte [0x40d014], 8
jne 0x40ba01
mov dword [esp + 4], 0x40ec02
mov dword [esp], edi
call dword [sym.imp.ucrtbase.dll__wfopen]
mov ebx, eax
test eax, eax
je 0x40b9cc
mov dword [esp + 4], str._Desktop_Entry__n
mov dword [esp], eax
call dbg.fprintf
mov dword [esp + 4], str.TypeApplication_n
mov dword [esp], ebx
call dbg.fprintf
mov eax, dword [ebp - 0x98]
mov dword [esp], eax
call dbg.wchars_to_utf8_chars
mov dword [esp + 4], str.Name_s_n
mov dword [esp + 8], eax
mov dword [esp], ebx
call dbg.fprintf
mov eax, dword [ebp - 0x6c]
mov dword [esp], eax
call dbg.wchars_to_utf8_chars
mov dword [esp + 4], str.MimeType_s__n
mov dword [esp + 8], eax
mov dword [esp], ebx
call dbg.fprintf
mov eax, dword [ebp - 0xc4]
test eax, eax
je 0x40b9a8
mov dword [esp], eax
call sym._wine_get_unix_file_name
mov dword [ebp - 0x84], eax
mov eax, dword [ebp - 0x88]
call dbg.escape
mov dword [esp + 0xc], eax
mov eax, dword [ebp - 0x84]
mov dword [esp + 4], str.Execenv_WINEPREFIX__s__wine_start__ProgIDOpen__s___f_n
mov dword [esp + 8], eax
mov dword [esp], ebx
call dbg.fprintf
mov ecx, dword [ebp - 0x84]
xor edx, edx
mov dword [esp + 4], edx
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 dword [esp + 4], str.NoDisplaytrue_n
mov dword [esp], ebx
call dbg.fprintf
mov dword [esp + 4], str.StartupNotifytrue_n
mov dword [esp], ebx
call dbg.fprintf
mov eax, dword [ebp - 0x70]
test eax, eax
je 0x40b6fd
mov dword [esp], eax
call dbg.wchars_to_utf8_chars
mov dword [esp + 4], str.Icon_s_n
mov dword [esp + 8], eax
mov dword [esp], ebx
call dbg.fprintf
mov dword [esp], ebx
call dword [sym.imp.ucrtbase.dll_fclose]
xor eax, eax
mov dword [ebp - 0x48], eax
lea eax, [ebp - 0x44]
mov dword [esp + 8], eax
mov dword [esp + 4], 0x40f5b8
mov dword [esp], 0x80000001
call sym._RegCreateKeyW_12
sub esp, 0xc
test eax, eax
jne 0x40be0c
mov eax, dword [ebp - 0x44]
mov ebx, eax
test eax, eax
je 0x40be0c
lea eax, [ebp - 0x48]
mov dword [esp + 8], eax
mov eax, dword [ebp - 0x64]
mov dword [esp], ebx
mov dword [esp + 4], eax
call sym._RegCreateKeyW_12
sub esp, 0xc
test eax, eax
jne 0x40bddf
mov ecx, dword [ebp - 0x6c]
cmp word [ecx], 0
mov eax, ecx
je 0x40b773
add eax, 2
cmp word [eax], 0
jne 0x40b76a
mov ecx, dword [ebp - 0x6c]
mov dword [esp + 0xc], 1
mov dword [esp + 4], str.MimeType
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 - 0x88]
sub esp, 0x18
cmp word [eax], 0
je 0x40be67
add eax, 2
cmp word [eax], 0
jne 0x40b7b7
mov ecx, dword [ebp - 0x88]
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.ProgID
mov dword [esp + 0x14], eax
mov eax, dword [ebp - 0x48]
mov dword [esp], eax
call sym._RegSetValueExW_24
mov eax, dword [ebp - 0x98]
sub esp, 0x18
cmp word [eax], 0
je 0x40be72
add eax, 2
cmp word [eax], 0
jne 0x40b807
mov ecx, dword [ebp - 0x98]
mov dword [esp + 0xc], 1
mov dword [esp + 4], str.AppName
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, edi
sub esp, 0x18
cmp word [edi], 0
je 0x40b858
add eax, 2
cmp word [eax], 0
jne 0x40b84f
sub eax, edi
mov dword [esp + 0x10], edi
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 - 0x70]
sub esp, 0x18
test eax, eax
je 0x40c08c
cmp word [eax], 0
je 0x40c084
add eax, 2
cmp word [eax], 0
jne 0x40b89e
mov ecx, dword [ebp - 0x70]
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 0x40bde8
test byte [0x40d014], 2
jne 0x40c050
mov ebx, dword [ebp - 0x70]
test ebx, ebx
setne byte [ebp - 0xa4]
test byte [ebp - 0x84], 1
je 0x40aa2a
cmp byte [ebp - 0xa4], 0
je 0x40aa2a
mov dword [esp], 0
mov ecx, dword [ebp - 0x70]
xor edx, edx
mov eax, dword [ebp - 0xb8]
call dbg.extract_icon
mov dword [ebp - 0x84], 1
jmp 0x40aa2a
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
jmp 0x40a744
mov eax, str.application_x_ms_shortcut
add eax, 2
cmp word [eax], 0
jne 0x40b96b
sub eax, 0x40f3b6
call sym._xmalloc
mov dword [ebp - 0x6c], eax
xor eax, eax
movzx edx, word [eax + str.application_x_ms_shortcut]
mov ecx, dword [ebp - 0x6c]
mov word [ecx + eax], dx
add eax, 2
test dx, dx
jne 0x40b983
jmp 0x40b0b6
mov eax, 2
jmp 0x40a8e0
mov eax, dword [ebp - 0x88]
call dbg.escape
mov dword [esp + 4], str.Execwine_start__ProgIDOpen__s___f_n
mov dword [esp + 8], eax
mov dword [esp], ebx
call dbg.fprintf
jmp 0x40b6ba
test byte [0x40d014], 2
jne 0x40bbc4
mov dword [esp + 8], edi
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 0x40b8f9
test edi, edi
je 0x40bda8
mov eax, edi
shr eax, 0x10
je 0x40bd8d
mov dword [esp + 4], 0xffffffff
mov dword [esp], edi
call dword [sym.imp.kernel32.dll_IsBadStringPtrW]
push ecx
push ecx
test eax, eax
jne 0x40bd7e
mov eax, edi
call sym._wine_dbgstr_wn.part.0.constprop.0_1
mov dword [ebp - 0xb4], eax
mov eax, dword [ebp - 0x70]
test eax, eax
je 0x40bd6f
shr eax, 0x10
je 0x40bd51
mov dword [esp + 4], 0xffffffff
mov ebx, dword [ebp - 0x70]
mov dword [esp], ebx
call dword [sym.imp.kernel32.dll_IsBadStringPtrW]
push edx
push edx
test eax, eax
jne 0x40bd42
mov eax, ebx
call sym._wine_dbgstr_wn.part.0.constprop.0_1
mov dword [ebp - 0xb0], eax
mov eax, dword [ebp - 0x88]
shr eax, 0x10
je 0x40bd21
mov dword [esp + 4], 0xffffffff
mov ebx, dword [ebp - 0x88]
mov dword [esp], ebx
call dword [sym.imp.kernel32.dll_IsBadStringPtrW]
push ecx
push ecx
test eax, eax
jne 0x40bd12
mov eax, ebx
call sym._wine_dbgstr_wn.part.0.constprop.0_1
mov dword [ebp - 0xbc], eax
mov eax, dword [ebp - 0x6c]
test eax, eax
je 0x40bd03
shr eax, 0x10
je 0x40bce5
mov dword [esp + 4], 0xffffffff
mov ebx, dword [ebp - 0x6c]
mov dword [esp], ebx
call dword [sym.imp.kernel32.dll_IsBadStringPtrW]
push edx
push edx
test eax, eax
jne 0x40bcd6
mov eax, ebx
call sym._wine_dbgstr_wn.part.0.constprop.0_1
mov dword [ebp - 0xac], eax
mov eax, dword [ebp - 0x98]
shr eax, 0x10
je 0x40bcbb
mov dword [esp + 4], 0xffffffff
mov ebx, dword [ebp - 0x98]
mov dword [esp], ebx
call dword [sym.imp.kernel32.dll_IsBadStringPtrW]
push ecx
push ecx
test eax, eax
jne 0x40bc26
mov eax, ebx
call sym._wine_dbgstr_wn.part.0.constprop.0_1
mov ecx, dword [ebp - 0xb4]
mov dword [esp + 0x20], ecx
mov ecx, dword [ebp - 0xb0]
mov dword [esp + 0x1c], ecx
mov ecx, dword [ebp - 0xbc]
mov dword [esp + 0x18], ecx
mov ecx, dword [ebp - 0xac]
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_1
jmp 0x40b5d2
cmp dword [ebp - 0x70], 0
jne 0x40bc30
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], edi
call sym._RegCloseKey_4
push eax
test ebx, ebx
je 0x40aa2a
jmp 0x40b591
test edi, edi
je 0x40bcb1
mov eax, edi
shr eax, 0x10
je 0x40bc9c
mov dword [esp + 4], 0xffffffff
mov dword [esp], edi
call dword [sym.imp.kernel32.dll_IsBadStringPtrW]
push ebx
push ebx
test eax, eax
jne 0x40bc92
mov eax, edi
call sym._wine_dbgstr_wn.part.0.constprop.0_1
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_1
jmp 0x40b9d9
mov eax, str._invalid_
jmp 0x40bb2e
mov eax, dword [ebp - 0x70]
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 0x40b563
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], edi
call sym._RegCloseKey_4
push eax
test ebx, ebx
jne 0x40b591
mov byte [ebp - 0xa4], 1
jmp 0x40b8f9
mov eax, str._invalid_
jmp 0x40bbf9
mov dword [esp + 4], edi
mov dword [esp], str._04x
call sym._wine_dbg_sprintf.constprop.0_1
jmp 0x40bbf9
mov eax, str._null_
jmp 0x40bbf9
mov eax, dword [ebp - 0x98]
mov dword [esp], str._04x
mov dword [esp + 4], eax
call sym._wine_dbg_sprintf.constprop.0_1
jmp 0x40bb2e
mov dword [ebp - 0xac], str._invalid_
jmp 0x40baf7
mov eax, dword [ebp - 0x6c]
mov dword [esp], str._04x
mov dword [esp + 4], eax
call sym._wine_dbg_sprintf.constprop.0_1
mov dword [ebp - 0xac], eax
jmp 0x40baf7
mov dword [ebp - 0xac], str._null_
jmp 0x40baf7
mov dword [ebp - 0xbc], str._invalid_
jmp 0x40bab8
mov eax, dword [ebp - 0x88]
mov dword [esp], str._04x
mov dword [esp + 4], eax
call sym._wine_dbg_sprintf.constprop.0_1
mov dword [ebp - 0xbc], eax
jmp 0x40bab8
mov dword [ebp - 0xb0], str._invalid_
jmp 0x40ba7b
mov eax, dword [ebp - 0x70]
mov dword [esp], str._04x
mov dword [esp + 4], eax
call sym._wine_dbg_sprintf.constprop.0_1
mov dword [ebp - 0xb0], eax
jmp 0x40ba7b
mov dword [ebp - 0xb0], str._null_
jmp 0x40ba7b
mov dword [ebp - 0xb4], str._invalid_
jmp 0x40ba3c
mov dword [esp + 4], edi
mov dword [esp], str._04x
call sym._wine_dbg_sprintf.constprop.0_1
mov dword [ebp - 0xb4], eax
jmp 0x40ba3c
mov dword [ebp - 0xb4], str._null_
jmp 0x40ba3c
mov eax, 0x14
call sym._xmalloc
lea edx, [mimeProgidTree.root]
mov ebx, eax
mov eax, dword [ebp - 0xa4]
lea edi, [ebx + 4]
mov dword [ebx], eax
jmp 0x40b371
test byte [0x40d014], 2
jne 0x40be19
mov dword [esp], ebx
call sym._RegCloseKey_4
push ebx
mov eax, dword [ebp - 0x48]
mov dword [esp], eax
call sym._RegCloseKey_4
push eax
mov dword [ebp - 0x84], 1
jmp 0x40b9d9
test byte [0x40d014], 2
jne 0x40be3f
xor ebx, ebx
jmp 0x40bde8
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_1
jmp 0x40bde8
mov dword [esp + 0xc], str.could_not_open_file_associations_key_n
xor ebx, ebx
mov dword [esp + 8], str.update_association
mov dword [esp + 4], global___dbch
mov dword [esp], 1
call sym._wine_dbg_log.constprop.0_1
jmp 0x40bde8
mov eax, dword [ebp - 0x88]
jmp 0x40b7c0
mov eax, dword [ebp - 0x98]
jmp 0x40b810
mov dword [esp + 4], ebx
mov dword [esp], str._04x
call sym._wine_dbg_sprintf.constprop.0_1
jmp 0x40af87
mov eax, dword [ebp - 0x6c]
mov dword [esp], str._04x
mov dword [esp + 4], eax
call sym._wine_dbg_sprintf.constprop.0_1
jmp 0x40b2b9
mov esi, dword [ebp - 0x68]
xor eax, eax
mov dword [esp + 4], eax
mov dword [esp + 8], esi
mov eax, dword [edi + 0x30]
mov eax, dword [eax + 0x18]
mov dword [esp], eax
mov eax, dword [ebp - 0x5c]
call eax
sub esp, 0xc
jmp 0x40a14d
cmp dword [eax + 4], edi
je 0x40bf1c
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 0x40bf17
cmp eax, dword [ecx + 4]
je 0x40bf12
mov dword [ecx + 8], edx
mov ecx, dword [edx + 4]
mov dword [eax + 8], ecx
test ecx, ecx
je 0x40bf04
mov dword [ecx], eax
mov dword [edx + 4], eax
mov ecx, dword [eax]
mov dword [edx], ecx
mov dword [eax], edx
jmp 0x40b391
mov dword [ecx + 4], edx
jmp 0x40bef8
mov dword [mimeProgidTree.root], edx
jmp 0x40bef8
mov dword [edx + 8], edi
mov edx, dword [edi + 8]
mov dword [eax + 4], edx
test edx, edx
je 0x40bf2b
mov dword [edx], eax
mov dword [edi + 8], eax
mov edx, dword [eax]
mov dword [edi], edx
mov dword [eax], edi
mov edi, eax
jmp 0x40bed5
mov ebx, dword [edx + 8]
test ebx, ebx
je 0x40bf65
test byte [ebx + 0xc], 1
je 0x40bf65
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 0x40b391
mov eax, dword [ebp - 0x6c]
jmp 0x40ad37
cmp dword [eax + 8], edi
je 0x40bfb1
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 0x40bfac
cmp eax, dword [ecx + 4]
je 0x40bfa7
mov dword [ecx + 8], edx
mov ecx, dword [edx + 8]
mov dword [eax + 4], ecx
test ecx, ecx
je 0x40bf99
mov dword [ecx], eax
mov dword [edx + 8], eax
mov ecx, dword [eax]
mov dword [edx], ecx
mov dword [eax], edx
jmp 0x40b391
mov dword [ecx + 4], edx
jmp 0x40bf8d
mov dword [mimeProgidTree.root], edx
jmp 0x40bf8d
mov dword [edx + 4], edi
mov edx, dword [edi + 4]
mov dword [eax + 8], edx
test edx, edx
je 0x40bfc0
mov dword [edx], eax
mov dword [edi + 4], eax
mov edx, dword [eax]
mov dword [edi], edx
mov dword [eax], edi
mov edi, ecx
jmp 0x40bf6a
mov eax, dword [ebp - 0xa8]
mov dword [esp], str._04x
mov dword [esp + 4], eax
call sym._wine_dbg_sprintf.constprop.0_1
mov edi, eax
jmp 0x40b244
mov edi, str._null_
jmp 0x40b244
mov dword [esp + 4], ebx
mov dword [esp], str._04x
call sym._wine_dbg_sprintf.constprop.0_1
jmp 0x40b1d4
mov eax, str._null_
jmp 0x40b1d4
mov eax, str._null_
jmp 0x40b2b9
mov eax, dword [ebp - 0x64]
mov dword [esp], str._04x
mov dword [esp + 4], eax
call sym._wine_dbg_sprintf.constprop.0_1
mov dword [ebp - 0x70], eax
jmp 0x40b27c
mov dword [esp + 4], ebx
mov dword [esp], str._04x
call sym._wine_dbg_sprintf.constprop.0_1
jmp 0x40b33b
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_1
jmp 0x40b8ed
mov eax, dword [ebp - 0x9c]
jmp 0x40b088
mov eax, dword [ebp - 0x70]
jmp 0x40b8a7
mov dword [esp + 4], str.OpenWithIcon
mov eax, dword [ebp - 0x48]
mov dword [esp], eax
call sym._RegDeleteValueW_8
push eax
push eax
jmp 0x40bde8
movzx eax, word [pe_dos_header]
ud2