Function at 0x40a5c0
Capabilities:
Check if file exists
Check if process is running under wine
Delete file
Delete registry key
Delete registry value
Get common file path
Get file attributes
Get process heap flags
Query or enumerate registry value
Set registry value

Disassembly:
push ebp
mov ebp, esp
push edi
push esi
push ebx
sub esp, 0xcc
mov ebx, dword [ebp + 0x10]
mov dword [esp + 0x10], 0x41b000
mov dword [esp + 0xc], 0
mov dword [esp + 8], 0
mov dword [esp + 4], 0
mov dword [esp], 0
call dword [sym.imp.shell32.dll_SHGetFolderPathW]
sub esp, 0x14
test eax, eax
js 0x40a7e1
mov eax, dword [sym.imp.ucrtbase.dll__wgetenv]
mov dword [esp], str.XDG_CONFIG_HOME
mov dword [ebp - 0x60], eax
call eax
test eax, eax
je 0x40aa85
mov dword [esp + 4], eax
mov dword [esp], str.__unix_s_menus_applications_merged
call dbg.heap_wprintf
mov dword [0x41b20c], eax
movzx ecx, word [eax]
mov edx, eax
test cx, cx
je 0x40a659
nop
cmp cx, 0x2f
jne 0x40a64e
mov ecx, 0x5c
mov word [edx], cx
add edx, 2
movzx ecx, word [edx]
test cx, cx
jne 0x40a640
mov esi, 0x5c
mov word [eax + 2], si
call sym._create_directories
mov dword [esp], str.XDG_DATA_HOME
mov eax, dword [ebp - 0x60]
call eax
test eax, eax
je 0x40ac82
mov dword [esp + 4], eax
mov dword [esp], str.__unix_s
call dbg.heap_wprintf
mov dword [0x41b208], eax
movzx ecx, word [eax]
mov edx, eax
test cx, cx
je 0x40a6b9
lea esi, [esi]
cmp cx, 0x2f
jne 0x40a6ae
mov esi, 0x5c
mov word [edx], si
add edx, 2
movzx ecx, word [edx]
test cx, cx
jne 0x40a6a0
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 sym._create_directories
mov eax, dword [sym.imp.ucrtbase.dll_free]
mov dword [esp], esi
mov edi, eax
call eax
mov dword [esp], 0
call dword [sym.imp.ole32.dll_CoInitialize]
sub esp, 4
test eax, eax
js 0x40a7b0
mov dword [ebp - 0x44], ebx
mov dword [ebp - 0x5c], 0
mov dword [ebp - 0x68], 0
mov dword [ebp - 0x64], 0
test ebx, ebx
je 0x40a794
lea esi, [esi]
cmp word [ebx], 0
je 0x40a794
lea eax, [ebp - 0x44]
call dbg.next_token
mov esi, eax
test eax, eax
je 0x40a794
mov dword [esp], eax
mov eax, dword [sym.imp.ucrtbase.dll_wcscmp]
mov dword [esp + 4], 0x4103a2
mov dword [ebp - 0x48], eax
call eax
mov ebx, eax
test eax, eax
je 0x40a7f5
mov dword [esp + 4], 0x4109cc
mov eax, dword [ebp - 0x48]
mov dword [esp], esi
call eax
mov dword [ebp - 0x50], eax
test eax, eax
je 0x40a900
mov dword [esp + 4], 0x410a10
mov eax, dword [ebp - 0x48]
mov dword [esp], esi
call eax
test eax, eax
jne 0x40aa30
mov dword [ebp - 0x64], 1
mov ebx, dword [ebp - 0x44]
test ebx, ebx
jne 0x40a720
call dword [sym.imp.ole32.dll_CoUninitialize]
mov eax, dword [ebp - 0x5c]
lea esp, [ebp - 0xc]
pop ebx
pop esi
pop edi
pop ebp
ret 0x10
test byte [0x40d000], 2
je 0x40a7e1
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.18
mov dword [ebp - 0x5c], 1
mov eax, dword [ebp - 0x5c]
lea esp, [ebp - 0xc]
pop ebx
pop esi
pop edi
pop ebp
ret 0x10
mov ecx, dword [sym.imp.advapi32.dll_RegCreateKeyW]
lea eax, [ebp - 0x2c]
mov dword [esp + 4], 0x4103a8
mov dword [ebp - 0x4c], eax
mov dword [esp + 8], eax
mov dword [esp], 0x80000001
mov dword [ebp - 0x54], ecx
call ecx
sub esp, 0xc
test eax, eax
jne 0x40a874
mov esi, dword [ebp - 0x2c]
test esi, esi
je 0x40a874
mov eax, dword [ebp - 0x4c]
lea ecx, [ebp - 0x34]
mov dword [ebp - 0x34], 0x20
mov dword [esp + 0x14], ecx
mov dword [esp + 0x10], eax
mov dword [esp + 0xc], 0
mov dword [esp + 8], 0
mov dword [esp + 4], str.Enable
mov dword [esp], esi
call dword [sym.imp.advapi32.dll_RegQueryValueExA]
sub esp, 0x18
test eax, eax
je 0x40ac50
mov dword [esp], esi
call dword [sym.imp.advapi32.dll_RegCloseKey]
sub esp, 4
mov dword [ebp - 0x40], 0
mov dword [esp + 0xc], str.winemenubuilder_semaphore
mov dword [esp + 8], 1
mov dword [esp + 4], 1
mov dword [esp], 0
call dword [sym.imp.kernel32.dll_CreateSemaphoreA]
sub esp, 0x10
mov dword [ebp - 0x40], eax
lea eax, [ebp - 0x40]
mov dword [esp + 0x10], 0x1cff
mov dword [esp + 0xc], 0xffffffff
mov dword [esp + 8], 0
mov dword [esp + 4], eax
mov dword [esp], 1
call dword [sym.imp.user32.dll_MsgWaitForMultipleObjects]
sub esp, 0x14
test eax, eax
je 0x40aab0
test byte [0x40d000], 2
jne 0x40ae00
mov eax, dword [ebp - 0x40]
mov dword [esp], eax
call dword [sym.imp.kernel32.dll_CloseHandle]
sub esp, 4
jmp 0x40a78d
call dbg.open_menus_reg_key
mov dword [ebp - 0x54], eax
test eax, eax
je 0x40a78d
lea eax, [ebp - 0x2c]
mov dword [ebp - 0x4c], eax
lea eax, [ebp - 0x34]
mov dword [ebp - 0x58], eax
mov dword [ebp - 0x34], 0x1000
mov eax, 0x1000
mov dword [ebp - 0x2c], 0x1000
jmp 0x40a94c
mov eax, dword [ebp - 0x34]
shl dword [ebp - 0x2c], 1
mov dword [esp], esi
add eax, eax
mov dword [ebp - 0x34], eax
mov dword [ebp - 0x48], eax
call edi
mov dword [esp], ebx
call edi
mov eax, dword [ebp - 0x48]
add eax, eax
call dbg.xmalloc
mov esi, eax
mov eax, dword [ebp - 0x2c]
add eax, eax
call dbg.xmalloc
mov dword [esp + 0x14], 0
mov ebx, eax
mov eax, dword [ebp - 0x4c]
mov dword [esp + 0x10], 0
mov dword [esp + 0x18], ebx
mov dword [esp + 0x1c], eax
mov eax, dword [ebp - 0x58]
mov dword [esp + 8], esi
mov dword [esp + 0xc], eax
mov eax, dword [ebp - 0x50]
mov dword [esp + 4], eax
mov eax, dword [ebp - 0x54]
mov dword [esp], eax
call dword [sym.imp.advapi32.dll_RegEnumValueW]
sub esp, 0x20
cmp eax, 0xea
je 0x40a931
test eax, eax
je 0x40a9e0
cmp eax, 0x103
je 0x40a9b8
test byte [0x40d000], 2
jne 0x40aa04
mov dword [esp], esi
call edi
mov dword [esp], ebx
call edi
mov eax, dword [ebp - 0x54]
mov dword [esp], eax
call dword [sym.imp.advapi32.dll_RegCloseKey]
sub esp, 4
jmp 0x40a78d
mov dword [esp], ebx
call dword [sym.imp.kernel32.dll_GetFileAttributesW]
sub esp, 4
cmp eax, 0xffffffff
je 0x40aa54
add dword [ebp - 0x50], 1
mov dword [esp], esi
call edi
mov dword [esp], ebx
call edi
jmp 0x40a91c
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.18
jmp 0x40a9b8
mov dword [esp + 4], 0x410a16
mov eax, dword [ebp - 0x48]
mov dword [esp], esi
call eax
test eax, eax
jne 0x40acb0
mov dword [ebp - 0x68], 1
jmp 0x40a78d
test byte [0x40d000], 8
jne 0x40ad40
mov dword [esp], esi
call dword [sym.imp.kernel32.dll_DeleteFileW]
mov eax, dword [ebp - 0x54]
sub esp, 4
mov dword [esp + 4], esi
mov dword [esp], eax
call dword [sym.imp.advapi32.dll_RegDeleteValueW]
sub esp, 8
jmp 0x40a9f5
mov dword [esp], str.WINEHOMEDIR
mov eax, dword [ebp - 0x60]
call eax
mov dword [esp], str._s_.config_menus_applications_merged
mov dword [esp + 4], eax
call dbg.heap_wprintf
mov dword [0x41b20c], eax
jmp 0x40a635
mov eax, dword [0x41b208]
mov dword [esp], str._smime
mov dword [esp + 4], eax
call dbg.heap_wprintf
mov dword [esp], str._spackages
mov dword [esp + 4], eax
mov dword [ebp - 0x7c], eax
call dbg.heap_wprintf
mov dword [ebp - 0x90], eax
call sym._create_directories
mov eax, dword [0x41b208]
mov dword [esp], str._s_applications
mov dword [esp + 4], eax
call dbg.heap_wprintf
mov dword [ebp - 0x74], eax
call sym._create_directories
mov eax, dword [ebp - 0x4c]
mov esi, dword [ebp - 0x60]
mov dword [ebp - 0x30], 0
mov dword [ebp - 0x34], dbg.winemenubuilder_rb_string_compare
mov dword [ebp - 0x2c], eax
mov dword [ebp - 0x28], eax
mov dword [esp], str.XDG_DATA_DIRS
call esi
test eax, eax
je 0x40b8b3
mov dword [esp], str.XDG_DATA_DIRS
call esi
mov dword [ebp - 0x50], eax
test eax, eax
je 0x40ab43
call sym._xwcsdup.part.9
mov dword [ebp - 0x50], eax
mov edx, dword [ebp - 0x4c]
mov eax, dword [0x41b208]
call dbg.add_mimes
test eax, eax
jne 0x40ae30
mov eax, dword [ebp - 0x50]
mov dword [esp], eax
call edi
mov eax, dword [ebp - 0x4c]
call dbg.free_native_mime_types
test byte [0x40d000], 2
jne 0x40bb70
mov eax, dword [ebp - 0x4c]
mov dword [esp + 4], 0x4103a8
mov dword [esp], 0x80000001
mov dword [esp + 8], eax
mov eax, dword [ebp - 0x54]
call eax
sub esp, 0xc
mov esi, eax
test eax, eax
jne 0x40ad74
mov eax, dword [ebp - 0x2c]
mov dword [ebp - 0x48], eax
test eax, eax
je 0x40ad74
mov dword [ebp - 0x50], 0
mov dword [ebp - 0x54], ebx
jmp 0x40abcd
add esi, 1
mov dword [esp], eax
call edi
mov dword [esp], ebx
call edi
mov eax, dword [ebp - 0x48]
mov edx, esi
call dbg.reg_enum_keyW
mov ebx, eax
test eax, eax
je 0x40ade0
mov edx, eax
mov ecx, str.open
mov eax, 1
call dbg.assoc_query
test eax, eax
jne 0x40abc0
mov eax, dword [ebp - 0x48]
mov ecx, str.DesktopFile
mov edx, ebx
call dbg.reg_get_valW
mov dword [ebp - 0x50], eax
test eax, eax
je 0x40ac28
test byte [0x40d000], 8
jne 0x40b8c0
mov eax, dword [ebp - 0x50]
mov dword [esp], eax
call dword [sym.imp.kernel32.dll_DeleteFileW]
sub esp, 4
mov eax, dword [ebp - 0x48]
mov dword [esp + 4], ebx
mov dword [esp], eax
call dword [sym.imp.advapi32.dll_RegDeleteKeyW]
mov eax, dword [ebp - 0x50]
sub esp, 8
mov dword [esp], eax
call edi
mov dword [ebp - 0x50], 1
jmp 0x40abc8
movzx eax, byte [ebp - 0x2c]
mov edx, eax
and edx, 0xffffffdf
cmp dl, 0x59
je 0x40a868
cmp al, 0x74
je 0x40a868
cmp al, 0x54
je 0x40a868
mov dword [esp], esi
cmp al, 0x31
jne 0x40a9c8
jmp 0x40a86b
mov dword [esp], str.WINEHOMEDIR
mov eax, dword [ebp - 0x60]
call eax
mov dword [esp], str._s_.local_share
mov dword [esp + 4], eax
call dbg.heap_wprintf
mov dword [0x41b208], eax
jmp 0x40a690
mov dword [esp + 4], 0x410a1c
mov eax, dword [ebp - 0x48]
mov dword [esp], esi
call eax
test eax, eax
je 0x40b883
cmp word [esi], 0x2d
je 0x40b8f4
mov ecx, dword [ebp - 0x68]
mov edx, dword [ebp - 0x64]
mov eax, esi
test ecx, ecx
jne 0x40b263
call dbg.Process_Link
test eax, eax
jne 0x40a78d
mov dword [ebp - 0x5c], 1
test byte [0x40d000], 2
je 0x40a78d
mov eax, esi
call sym._wine_dbgstr_wn.constprop.15
mov dword [esp + 0xc], str.failed_to_build_menu_item_for__s_n
mov dword [esp + 0x10], eax
mov dword [esp + 8], str.wWinMain
mov dword [esp + 4], global___dbch
mov dword [esp], 1
call sym._wine_dbg_log.constprop.18
jmp 0x40a78d
mov eax, esi
call sym._wine_dbgstr_wn.constprop.15
mov dword [esp + 0xc], str.removing_menu_related_file__s_n
mov dword [esp + 0x10], eax
mov dword [esp + 8], str.cleanup_menus
mov dword [esp + 4], global___dbch
mov dword [esp], 3
call sym._wine_dbg_log.constprop.18
jmp 0x40aa61
test byte [0x40d000], 2
jne 0x40b935
test ebx, ebx
jne 0x40b204
mov eax, dword [ebp - 0x40]
mov dword [esp + 8], 0
mov dword [esp + 4], 1
mov dword [esp], eax
call dword [sym.imp.kernel32.dll_ReleaseSemaphore]
mov eax, dword [ebp - 0x40]
sub esp, 0xc
mov dword [esp], eax
call dword [sym.imp.kernel32.dll_CloseHandle]
mov eax, dword [ebp - 0x7c]
sub esp, 4
mov dword [esp], eax
call edi
mov eax, dword [ebp - 0x90]
mov dword [esp], eax
call edi
mov eax, dword [ebp - 0x74]
mov dword [esp], eax
call edi
jmp 0x40a78d
mov eax, dword [ebp - 0x48]
mov ebx, dword [ebp - 0x54]
mov dword [esp], eax
call dword [sym.imp.advapi32.dll_RegCloseKey]
or ebx, dword [ebp - 0x50]
sub esp, 4
jmp 0x40ad81
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.18
jmp 0x40a8ea
lea eax, [ebp - 0x38]
mov dword [esp + 4], 0x410498
mov dword [esp + 8], eax
mov eax, dword [ebp - 0x50]
mov dword [esp], eax
mov eax, dword [sym.imp.ucrtbase.dll_wcstok]
mov dword [ebp - 0x58], eax
call eax
test eax, eax
je 0x40aeec
mov dword [ebp - 0x6c], ebx
lea esi, [esi]
mov dword [esp + 4], eax
mov dword [esp], 0x41049c
call dbg.heap_wprintf
movzx edx, word [eax]
mov esi, eax
test dx, dx
je 0x40ae99
lea esi, [esi]
cmp dx, 0x2f
jne 0x40ae8e
mov ecx, 0x5c
mov word [eax], cx
add eax, 2
movzx edx, word [eax]
test dx, dx
jne 0x40ae80
lea edx, [esi + 0x12]
cmp eax, edx
jbe 0x40aeb0
cmp word [eax - 2], 0x5c
jne 0x40aeb0
xor edx, edx
mov word [eax - 2], dx
lea esi, [esi]
mov edx, dword [ebp - 0x4c]
mov eax, esi
call dbg.add_mimes
mov dword [esp], esi
mov ebx, eax
call edi
test ebx, ebx
je 0x40bb21
lea eax, [ebp - 0x38]
mov dword [esp + 4], 0x410498
mov dword [esp + 8], eax
mov eax, dword [ebp - 0x58]
mov dword [esp], 0
call eax
test eax, eax
jne 0x40ae60
mov eax, dword [ebp - 0x50]
mov esi, edi
mov dword [esp], eax
call edi
mov dword [ebp - 0x50], 0
mov dword [ebp - 0x94], 0
jmp 0x40af69
mov dword [esp + 0x18], 0
mov dword [esp + 0x14], 0
mov dword [esp + 0x10], 0
mov dword [esp + 0xc], 0xffff
mov dword [esp + 8], str.URL_Protocol
mov dword [esp + 4], eax
mov dword [esp], 0x80000000
call dword [sym.imp.advapi32.dll_RegGetValueW]
sub esp, 0x1c
test eax, eax
je 0x40b165
cmp word [edi], 0x2e
je 0x40af86
lea esi, [esi]
mov dword [esp], edi
call esi
add dword [ebp - 0x50], 1
mov edx, dword [ebp - 0x50]
mov eax, 0x80000000
call dbg.reg_enum_keyW
mov edi, eax
test eax, eax
je 0x40b171
cmp word [eax], 0x2e
jne 0x40af10
mov dword [ebp - 0x58], 0
mov ebx, dword [sym.imp.ucrtbase.dll__wcsicmp]
mov dword [esp + 4], str..bat
mov dword [esp], edi
mov dword [ebp - 0x6c], ebx
call ebx
test eax, eax
je 0x40af60
mov dword [esp + 4], str..com
mov dword [esp], edi
call ebx
test eax, eax
je 0x40af60
mov dword [esp + 4], str..exe
mov dword [esp], edi
call ebx
test eax, eax
je 0x40af60
mov dword [esp + 4], str..msi
mov dword [esp], edi
call ebx
test eax, eax
je 0x40af60
mov dword [esp + 4], str..url
mov dword [esp], edi
call ebx
test eax, eax
je 0x40af60
mov dword [esp + 4], str.file
mov dword [esp], edi
call ebx
test eax, eax
je 0x40af60
mov ecx, str.open
mov edx, edi
mov eax, 1
call dbg.assoc_query
mov dword [ebp - 0x70], eax
test eax, eax
je 0x40b0e5
lea eax, [ebp - 0x38]
mov dword [esp + 4], 0x4103a8
mov dword [esp + 8], eax
mov eax, dword [ebp - 0x54]
mov dword [esp], 0x80000001
call eax
sub esp, 0xc
test eax, eax
jne 0x40b09c
mov ebx, dword [ebp - 0x38]
test ebx, ebx
je 0x40b09c
lea eax, [ebp - 0x38]
mov dword [esp + 0x14], 0
mov dword [esp + 0x18], eax
mov eax, dword [sym.imp.advapi32.dll_RegGetValueW]
mov dword [esp + 0x10], 0
mov dword [esp + 0xc], 0x20
mov dword [esp + 8], str.Exclude
mov dword [esp + 4], 0
mov dword [esp], ebx
mov dword [ebp - 0x80], eax
call eax
sub esp, 0x1c
test eax, eax
je 0x40bd76
mov dword [esp], ebx
call dword [sym.imp.advapi32.dll_RegCloseKey]
sub esp, 4
mov dword [ebp - 0x78], 0
mov ebx, str.ieframe.dll
mov dword [ebp - 0x80], esi
mov esi, ebx
mov ebx, dword [ebp - 0x70]
jmp 0x40b0c9
mov dword [esp], esi
call dword [sym.imp.ucrtbase.dll_wcslen]
lea esi, [esi + eax*2 + 2]
cmp word [esi], 0
je 0x40b270
mov dword [esp + 4], esi
mov dword [esp], ebx
call dword [sym.imp.ucrtbase.dll_wcsstr]
test eax, eax
je 0x40b0b2
mov eax, dword [ebp - 0x78]
mov esi, dword [ebp - 0x80]
mov dword [esp], eax
call esi
mov dword [ebp - 0x6c], 0
xor ebx, ebx
mov dword [ebp - 0x78], 0
mov dword [ebp - 0x8c], 0
mov dword [ebp - 0x84], 0
mov dword [ebp - 0x88], 0
mov dword [ebp - 0x80], 0
mov eax, dword [ebp - 0x70]
mov dword [esp], eax
call esi
mov eax, dword [ebp - 0x80]
mov dword [esp], eax
call esi
mov dword [esp], ebx
call esi
mov eax, dword [ebp - 0x88]
mov dword [esp], eax
call esi
mov eax, dword [ebp - 0x84]
mov dword [esp], eax
call esi
mov eax, dword [ebp - 0x8c]
mov dword [esp], eax
call esi
mov eax, dword [ebp - 0x78]
mov dword [esp], eax
call esi
mov eax, dword [ebp - 0x6c]
mov dword [esp], eax
call esi
jmp 0x40af60
mov dword [ebp - 0x58], 1
jmp 0x40af8d
mov eax, dword [ebp - 0x30]
mov edi, esi
test eax, eax
je 0x40b1e8
lea esi, [esi]
mov esi, eax
mov eax, dword [eax + 4]
test eax, eax
jne 0x40b180
mov eax, dword [esi + 8]
test eax, eax
jne 0x40b180
mov edx, dword [esi]
test edx, edx
je 0x40be25
lea esi, [esi]
mov eax, dword [edx + 8]
cmp eax, esi
je 0x40b200
test eax, eax
je 0x40b200
lea esi, [esi]
nop
mov ebx, eax
mov eax, dword [eax + 4]
test eax, eax
jne 0x40b1b0
mov eax, dword [ebx + 8]
test eax, eax
jne 0x40b1b0
mov eax, dword [esi - 4]
sub esi, 4
mov dword [esp], eax
call edi
mov dword [esp], esi
mov esi, ebx
call edi
mov edx, dword [ebx]
test edx, edx
jne 0x40b1a0
mov eax, dword [ebx - 4]
sub ebx, 4
mov dword [esp], eax
call edi
mov dword [esp], ebx
call edi
mov eax, dword [ebp - 0x4c]
call dbg.free_native_mime_types
mov ebx, dword [ebp - 0x94]
jmp 0x40ab75
mov ebx, edx
jmp 0x40b1c0
mov eax, dword [ebp - 0x7c]
mov dword [ebp - 0x2c], str.update_mime_database
mov dword [esp], eax
call sym._wine_get_unix_file_name
mov esi, dword [ebp - 0x4c]
mov ebx, dword [sym.imp.ntdll.dll___wine_unix_spawnvp]
mov dword [ebp - 0x24], 0
mov dword [ebp - 0x28], eax
mov dword [esp + 4], 0
mov dword [esp], esi
call ebx
mov eax, dword [ebp - 0x74]
mov dword [ebp - 0x2c], str.update_desktop_database
sub esp, 8
mov dword [esp], eax
call sym._wine_get_unix_file_name
mov dword [esp + 4], 0
mov dword [ebp - 0x28], eax
mov dword [esp], esi
call ebx
sub esp, 8
jmp 0x40ad89
call dbg.Process_URL
jmp 0x40ace7
mov esi, dword [ebp - 0x80]
mov eax, dword [ebp - 0x78]
mov dword [esp], eax
call esi
xor ecx, ecx
mov edx, edi
mov eax, 0xf
call dbg.assoc_query
mov ecx, dword [ebp - 0x58]
mov dword [ebp - 0x84], eax
test ecx, ecx
je 0x40b95e
mov dword [esp + 4], edi
mov dword [esp], str.x_scheme_handler__s
call dbg.heap_wprintf
mov dword [ebp - 0x6c], 0
mov dword [ebp - 0x78], eax
mov dword [ebp - 0x8c], 0
mov dword [ebp - 0x88], 0
mov edx, edi
mov ecx, str.open
mov eax, 2
call dbg.assoc_query
mov dword [ebp - 0x80], eax
mov edx, eax
test eax, eax
je 0x40bb99
xor eax, eax
call sym._compute_native_identifier.part.10
test eax, eax
mov ebx, eax
setne byte [ebp - 0x98]
mov ecx, str.open
mov edx, edi
mov eax, 4
call dbg.assoc_query
mov dword [esp + 4], 0x4103a8
test eax, eax
mov ecx, eax
mov eax, str.A_Wine_application
mov dword [esp], 0x80000001
cmovne eax, ecx
mov dword [ebp - 0xa0], eax
lea eax, [ebp - 0x38]
mov dword [esp + 8], eax
mov eax, dword [ebp - 0x54]
call eax
sub esp, 0xc
test eax, eax
jne 0x40bb29
mov eax, dword [ebp - 0x38]
mov dword [ebp - 0x9c], eax
test eax, eax
je 0x40bb29
mov edx, edi
mov ecx, str.MimeType
call dbg.reg_get_valW
mov dword [ebp - 0xa4], 1
mov edx, eax
test eax, eax
je 0x40b397
mov eax, dword [ebp - 0x78]
mov dword [esp], edx
mov dword [ebp - 0xa8], edx
mov dword [esp + 4], eax
mov eax, dword [ebp - 0x48]
call eax
mov edx, dword [ebp - 0xa8]
test eax, eax
setne al
movzx eax, al
mov dword [ebp - 0xa4], eax
mov dword [esp], edx
call esi
mov eax, dword [ebp - 0x6c]
test eax, eax
je 0x40b3e9
mov eax, dword [ebp - 0x9c]
mov edx, edi
mov ecx, str.ProgID
call dbg.reg_get_valW
mov edx, eax
test eax, eax
je 0x40b3da
mov eax, dword [ebp - 0x6c]
mov dword [esp], edx
mov dword [ebp - 0xa8], edx
mov dword [esp + 4], eax
mov eax, dword [ebp - 0x48]
call eax
mov edx, dword [ebp - 0xa8]
test eax, eax
je 0x40b3e4
mov dword [ebp - 0xa4], 1
mov dword [esp], edx
call esi
mov eax, dword [ebp - 0x9c]
mov edx, edi
mov ecx, str.AppName
call dbg.reg_get_valW
mov edx, eax
test eax, eax
je 0x40b423
mov eax, dword [ebp - 0xa0]
mov dword [esp], edx
mov dword [ebp - 0xa8], edx
mov dword [esp + 4], eax
mov eax, dword [ebp - 0x48]
call eax
mov edx, dword [ebp - 0xa8]
test eax, eax
je 0x40b42d
mov dword [ebp - 0xa4], 1
mov dword [esp], edx
call esi
mov eax, dword [ebp - 0x9c]
mov edx, edi
mov ecx, str.OpenWithIcon
call dbg.reg_get_valW
test eax, eax
mov edx, eax
setne al
cmp al, byte [ebp - 0x98]
je 0x40c09f
mov dword [esp], edx
call esi
mov eax, dword [ebp - 0x9c]
mov dword [esp], eax
mov eax, dword [sym.imp.advapi32.dll_RegCloseKey]
mov dword [ebp - 0xa8], eax
call eax
sub esp, 4
mov eax, dword [ebp - 0x58]
test eax, eax
je 0x40be00
mov eax, dword [ebp - 0x74]
mov dword [esp + 8], edi
mov dword [esp], str._swine_protocol__s.desktop
mov dword [esp + 4], eax
call dbg.heap_wprintf
mov dword [ebp - 0x9c], eax
mov dword [esp], 0x40f5d0
mov eax, dword [ebp - 0x60]
call eax
mov dword [ebp - 0xa4], eax
test byte [0x40d000], 8
jne 0x40bfb0
mov eax, dword [ebp - 0x9c]
mov dword [esp + 4], 0x40f626
mov dword [esp], eax
call dword [sym.imp.ucrtbase.dll__wfopen]
test eax, eax
je 0x40be2c
mov dword [esp + 4], str._Desktop_Entry__n
mov dword [esp], eax
mov dword [ebp - 0x58], eax
call dbg.fprintf
mov eax, dword [ebp - 0x58]
mov dword [esp + 4], str.TypeApplication_n
mov dword [esp], eax
call dbg.fprintf
mov eax, dword [ebp - 0xa0]
call dbg.wchars_to_utf8_chars
mov dword [esp + 4], str.Name_s_n
mov dword [esp + 8], eax
mov eax, dword [ebp - 0x58]
mov dword [esp], eax
call dbg.fprintf
mov eax, dword [ebp - 0x78]
call dbg.wchars_to_utf8_chars
mov dword [esp + 4], str.MimeType_s__n
mov dword [esp + 8], eax
mov eax, dword [ebp - 0x58]
mov dword [esp], eax
call dbg.fprintf
mov ecx, dword [ebp - 0xa4]
test ecx, ecx
je 0x40c1eb
mov dword [esp], ecx
call sym._wine_get_unix_file_name
mov dword [esp + 4], str.Execenv_WINEPREFIX__s__wine_start
mov dword [esp + 8], eax
mov dword [ebp - 0x94], eax
mov eax, dword [ebp - 0x58]
mov dword [esp], eax
call dbg.fprintf
mov edx, dword [ebp - 0x94]
mov dword [esp + 4], 0
mov eax, dword fs:[0x18]
mov dword [esp + 8], edx
mov eax, dword [eax + 0x30]
mov eax, dword [eax + 0x18]
mov dword [esp], eax
call dword [sym.imp.kernel32.dll_HeapFree]
sub esp, 0xc
mov eax, dword [ebp - 0x6c]
test eax, eax
je 0x40c1d3
call dbg.escape
mov dword [esp + 4], str._ProgIDOpen__s___f_n
mov dword [esp + 8], eax
mov eax, dword [ebp - 0x58]
mov dword [esp], eax
call dbg.fprintf
mov eax, dword [ebp - 0x58]
mov dword [esp + 4], str.NoDisplaytrue_n
mov dword [esp], eax
call dbg.fprintf
mov eax, dword [ebp - 0x58]
mov dword [esp + 4], str.StartupNotifytrue_n
mov dword [esp], eax
call dbg.fprintf
test ebx, ebx
je 0x40b60e
mov eax, ebx
call dbg.wchars_to_utf8_chars
mov dword [esp + 4], str.Icon_s_n
mov dword [esp + 8], eax
mov eax, dword [ebp - 0x58]
mov dword [esp], eax
call dbg.fprintf
mov eax, dword [ebp - 0x58]
mov dword [esp], eax
call dword [sym.imp.ucrtbase.dll_fclose]
lea eax, [ebp - 0x38]
mov dword [ebp - 0x3c], 0
mov dword [esp + 8], eax
mov eax, dword [ebp - 0x54]
mov dword [esp + 4], 0x4103a8
mov dword [esp], 0x80000001
call eax
sub esp, 0xc
test eax, eax
jne 0x40c0d8
mov eax, dword [ebp - 0x38]
mov dword [ebp - 0x94], eax
test eax, eax
je 0x40c0d8
lea eax, [ebp - 0x3c]
mov dword [esp + 4], edi
mov dword [esp + 8], eax
mov eax, dword [ebp - 0x94]
mov dword [esp], eax
mov eax, dword [ebp - 0x54]
call eax
sub esp, 0xc
test eax, eax
jne 0x40c2c5
mov ecx, dword [ebp - 0x78]
cmp word [ecx], 0
mov eax, ecx
je 0x40b690
add eax, 2
cmp word [eax], 0
jne 0x40b687
mov ecx, dword [ebp - 0x78]
mov dword [esp + 0xc], 1
mov dword [esp + 8], 0
sub eax, ecx
mov dword [esp + 0x10], ecx
sar eax, 1
mov dword [esp + 4], str.MimeType
lea eax, [eax + eax + 2]
mov dword [esp + 0x14], eax
mov eax, dword [ebp - 0x3c]
mov dword [esp], eax
mov eax, dword [sym.imp.advapi32.dll_RegSetValueExW]
mov dword [ebp - 0x58], eax
call eax
mov eax, dword [ebp - 0x6c]
sub esp, 0x18
test eax, eax
je 0x40b721
cmp word [eax], 0
je 0x40c3bb
add eax, 2
cmp word [eax], 0
jne 0x40b6df
mov ecx, dword [ebp - 0x6c]
mov dword [esp + 0xc], 1
mov dword [esp + 8], 0
sub eax, ecx
mov dword [esp + 0x10], ecx
and eax, 0xfffffffe
mov dword [esp + 4], str.ProgID
add eax, 2
mov dword [esp + 0x14], eax
mov eax, dword [ebp - 0x3c]
mov dword [esp], eax
mov eax, dword [ebp - 0x58]
call eax
sub esp, 0x18
mov eax, dword [ebp - 0xa0]
cmp word [eax], 0
je 0x40c3b0
add eax, 2
cmp word [eax], 0
jne 0x40b731
mov ecx, dword [ebp - 0xa0]
mov dword [esp + 0xc], 1
mov dword [esp + 8], 0
sub eax, ecx
mov dword [esp + 0x10], ecx
sar eax, 1
mov dword [esp + 4], str.AppName
lea eax, [eax + eax + 2]
mov dword [esp + 0x14], eax
mov eax, dword [ebp - 0x3c]
mov dword [esp], eax
mov eax, dword [ebp - 0x58]
call eax
mov eax, dword [ebp - 0x9c]
sub esp, 0x18
cmp word [eax], 0
je 0x40c3a5
add eax, 2
cmp word [eax], 0
jne 0x40b786
mov ecx, dword [ebp - 0x9c]
mov dword [esp + 0xc], 1
mov dword [esp + 8], 0
sub eax, ecx
mov dword [esp + 0x10], ecx
sar eax, 1
mov dword [esp + 4], str.DesktopFile
lea eax, [eax + eax + 2]
mov dword [esp + 0x14], eax
mov eax, dword [ebp - 0x3c]
mov dword [esp], eax
mov eax, dword [ebp - 0x58]
call eax
sub esp, 0x18
test ebx, ebx
je 0x40c38a
cmp word [ebx], 0
mov eax, ebx
je 0x40b7e4
add eax, 2
cmp word [eax], 0
jne 0x40b7db
sub eax, ebx
mov dword [esp + 0x10], ebx
sar eax, 1
mov dword [esp + 0xc], 1
lea eax, [eax + eax + 2]
mov dword [esp + 8], 0
mov dword [esp + 0x14], eax
mov eax, dword [ebp - 0x3c]
mov dword [esp + 4], str.OpenWithIcon
mov dword [esp], eax
mov eax, dword [ebp - 0x58]
call eax
sub esp, 0x18
mov eax, dword [ebp - 0x94]
mov dword [esp], eax
mov eax, dword [ebp - 0xa8]
call eax
mov eax, dword [ebp - 0x3c]
sub esp, 4
mov dword [esp], eax
mov eax, dword [ebp - 0xa8]
call eax
mov dword [ebp - 0x94], 1
sub esp, 4
mov eax, dword [ebp - 0x9c]
mov dword [esp], eax
call esi
cmp byte [ebp - 0x98], 0
je 0x40b11a
mov dword [esp], 0
mov eax, dword [ebp - 0x80]
mov ecx, ebx
xor edx, edx
call dbg.extract_icon
mov dword [ebp - 0x94], 1
jmp 0x40b11a
lea eax, [ebp - 0x44]
call dbg.next_token
mov ebx, eax
test eax, eax
je 0x40a78d
lea eax, [ebp - 0x44]
call dbg.next_token
test eax, eax
je 0x40a78d
mov edx, eax
mov eax, ebx
call dbg.thumbnail_lnk
jmp 0x40a78d
mov eax, str._usr_local_share_:_usr_share_
jmp 0x40ab3b
mov eax, ebx
call sym._wine_dbgstr_wn.constprop.15
mov dword [esp + 0xc], str.removing_file_type_association_for__s_n
mov dword [esp + 0x10], eax
mov dword [esp + 8], str.cleanup_associations
mov dword [esp + 4], global___dbch
mov dword [esp], 3
call sym._wine_dbg_log.constprop.18
jmp 0x40ac19
test byte [0x40d000], 2
je 0x40a78d
mov eax, esi
call sym._wine_dbgstr_wn.constprop.15
mov dword [esp + 0xc], str.unknown_option__s_n
mov dword [esp + 0x10], eax
mov dword [esp + 8], str.wWinMain
mov dword [esp + 4], global___dbch
mov dword [esp], 1
call sym._wine_dbg_log.constprop.18
jmp 0x40a78d
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.18
jmp 0x40ad81
mov dword [esp], edi
mov ebx, dword [sym.imp.ucrtbase.dll__wcslwr]
call ebx
xor ecx, ecx
mov edx, edi
mov eax, 3
call dbg.assoc_query
xor ecx, ecx
mov edx, edi
mov dword [ebp - 0x88], eax
mov eax, 0xe
call dbg.assoc_query
mov dword [ebp - 0x8c], eax
test eax, eax
je 0x40bba7
mov dword [esp], eax
call ebx
mov eax, dword [ebp - 0x2c]
lea edx, [eax - 8]
cmp dword [ebp - 0x4c], eax
je 0x40bf63
mov dword [ebp - 0x78], 0
xor ebx, ebx
mov dword [ebp - 0x80], esi
mov esi, edx
lea esi, [esi]
nop
mov eax, dword [esi + 4]
mov dword [esp], edi
mov dword [esp + 4], eax
call dword [sym.imp.shlwapi.dll_PathMatchSpecW]
sub esp, 8
test eax, eax
je 0x40ba06
mov ecx, dword [esi + 4]
movzx eax, word [ecx]
test ebx, ebx
je 0x40baf1
test ax, ax
je 0x40bde7
mov eax, ecx
add eax, 2
cmp word [eax], 0
jne 0x40b9f0
sub eax, ecx
sar eax, 1
cmp dword [ebp - 0x78], eax
jl 0x40bb6c
mov eax, dword [esi + 8]
lea esi, [eax - 8]
cmp dword [ebp - 0x4c], eax
jne 0x40b9c0
mov esi, dword [ebp - 0x80]
test ebx, ebx
je 0x40bf55
mov eax, ebx
call sym._xwcsdup.part.9
mov dword [ebp - 0x78], eax
test eax, eax
je 0x40bf55
xor ecx, ecx
mov edx, edi
mov eax, 0x80000000
xor ebx, ebx
call dbg.reg_get_valW
mov dword [ebp - 0x80], 0
mov dword [ebp - 0x6c], eax
test eax, eax
je 0x40b11a
mov dword [esp + 8], eax
mov eax, dword [ebp - 0x78]
mov dword [esp], str._s__s
mov dword [esp + 4], eax
call dbg.heap_wprintf
mov ecx, dword [ebp - 0x30]
mov dword [ebp - 0x80], eax
mov dword [ebp - 0xa0], ecx
test ecx, ecx
je 0x40be8a
mov edx, dword [ebp - 0x34]
mov dword [ebp - 0x98], edi
mov edi, eax
mov dword [ebp - 0x9c], esi
mov esi, ecx
mov ebx, edx
jmp 0x40baa3
mov eax, dword [esi + 4]
cmovns eax, dword [esi + 8]
mov esi, eax
test eax, eax
je 0x40be7e
mov dword [esp + 4], esi
mov dword [esp], edi
call ebx
test eax, eax
jne 0x40ba92
mov ecx, dword [ebp - 0x80]
mov dword [esp + 4], 0
xor ebx, ebx
mov eax, dword fs:[0x18]
mov edi, dword [ebp - 0x98]
mov esi, dword [ebp - 0x9c]
mov dword [esp + 8], ecx
mov eax, dword [eax + 0x30]
mov eax, dword [eax + 0x18]
mov dword [esp], eax
call dword [sym.imp.kernel32.dll_HeapFree]
mov dword [ebp - 0x80], 0
sub esp, 0xc
jmp 0x40b11a
mov ebx, dword [esi]
test ax, ax
je 0x40bb15
mov eax, ecx
lea esi, [esi]
add eax, 2
cmp word [eax], 0
jne 0x40bb00
sub eax, ecx
sar eax, 1
mov dword [ebp - 0x78], eax
jmp 0x40ba06
mov dword [ebp - 0x78], 0
jmp 0x40ba06
mov ebx, dword [ebp - 0x6c]
jmp 0x40ab58
movzx ecx, byte [ebp - 0x94]
and byte [ebp - 0x98], cl
test byte [0x40d000], 2
je 0x40b854
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.18
jmp 0x40b854
mov ebx, dword [esi]
jmp 0x40baf8
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.18
jmp 0x40ab75
xor ebx, ebx
mov byte [ebp - 0x98], 0
jmp 0x40b2f8
mov eax, dword [ebp - 0x2c]
lea edx, [eax - 8]
cmp dword [ebp - 0x4c], eax
jne 0x40b9ad
mov dword [esp + 4], str..lnk
mov eax, dword [ebp - 0x6c]
mov dword [esp], edi
call eax
test eax, eax
jne 0x40c25e
mov eax, str.application_x_ms_shortcut
call sym._xwcsdup.part.9
mov dword [ebp - 0x78], eax
test eax, eax
je 0x40c25e
mov ebx, dword [ebp - 0x84]
test ebx, ebx
je 0x40bc74
mov eax, dword [ebp - 0x78]
call sym._xwcsdup.part.9
movzx edx, word [eax]
mov ebx, eax
test dx, dx
je 0x40bc1c
cmp dx, 0x2f
jne 0x40bc11
mov ecx, 0x2d
mov word [eax], cx
add eax, 2
movzx edx, word [eax]
test dx, dx
jne 0x40bc03
mov eax, dword [ebp - 0x84]
mov dword [esp + 4], 0x2c
mov dword [esp], eax
call dword [sym.imp.ucrtbase.dll_wcsrchr]
test eax, eax
je 0x40bc59
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 dword [esp], 0
mov edx, eax
mov eax, dword [ebp - 0x84]
mov ecx, ebx
call dbg.extract_icon
mov dword [esp], ebx
call esi
test byte [0x40d000], 8
jne 0x40c137
lea eax, [edi + 2]
mov dword [esp], str._sx_wine_extension__s.xml
mov dword [esp + 8], eax
mov eax, dword [ebp - 0x90]
mov dword [esp + 4], eax
call dbg.heap_wprintf
mov dword [esp + 4], 0x40f626
mov dword [ebp - 0x6c], eax
mov dword [esp], eax
call dword [sym.imp.ucrtbase.dll__wfopen]
mov ebx, eax
test eax, eax
je 0x40c044
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], ebx
call dbg.fprintf
mov eax, dword [ebp - 0x78]
call dbg.wchars_to_xml_text
mov dword [esp + 4], str.___mime_type_type__s___n
mov dword [esp + 8], eax
mov dword [esp], ebx
call dbg.fprintf
mov eax, edi
call dbg.wchars_to_xml_text
mov dword [esp + 4], str._____glob_pattern__s____n
mov dword [esp + 8], eax
mov dword [esp], ebx
call dbg.fprintf
mov eax, dword [ebp - 0x88]
test eax, eax
je 0x40bd36
call dbg.wchars_to_xml_text
mov dword [esp + 4], str._____comment__s__comment__n
mov dword [esp + 8], eax
mov dword [esp], ebx
call dbg.fprintf
mov dword [esp + 4], str.____mime_type__n
mov dword [esp], ebx
call dbg.fprintf
mov dword [esp + 4], str.__mime_info__n
mov dword [esp], ebx
call dbg.fprintf
mov dword [esp], ebx
call dword [sym.imp.ucrtbase.dll_fclose]
mov eax, dword [ebp - 0x6c]
mov dword [esp], eax
call esi
mov dword [ebp - 0x94], 1
jmp 0x40ba2e
mov eax, dword [ebp - 0x38]
call dbg.xmalloc
lea ecx, [ebp - 0x38]
mov dword [esp], ebx
mov dword [ebp - 0x78], eax
mov dword [esp + 0x14], eax
mov eax, dword [ebp - 0x80]
mov dword [esp + 0x18], ecx
mov dword [esp + 0x10], 0
mov dword [esp + 0xc], 0x20
mov dword [esp + 8], str.Exclude
mov dword [esp + 4], 0
call eax
sub esp, 0x1c
test eax, eax
jne 0x40c086
mov dword [esp], ebx
call dword [sym.imp.advapi32.dll_RegCloseKey]
mov eax, dword [ebp - 0x78]
sub esp, 4
test eax, eax
je 0x40b09c
cmp word [eax], 0
je 0x40b273
mov ebx, eax
jmp 0x40b0a8
mov eax, dword [ebp - 0x78]
test eax, eax
jns 0x40ba06
mov ebx, dword [esi]
mov dword [ebp - 0x78], 0
jmp 0x40ba06
lea eax, [edi + 2]
mov dword [esp], str._swine_extension__s.desktop
mov dword [esp + 8], eax
mov eax, dword [ebp - 0x74]
mov dword [esp + 4], eax
call dbg.heap_wprintf
mov dword [ebp - 0x9c], eax
jmp 0x40b49d
mov ebx, esi
jmp 0x40b1d8
movzx ecx, byte [ebp - 0x94]
and byte [ebp - 0x98], cl
test byte [0x40d000], 2
je 0x40b849
mov eax, dword [ebp - 0x9c]
call sym._wine_dbgstr_wn.constprop.15
mov dword [esp + 0xc], str.error_writing_association_file__s_n
mov dword [esp + 0x10], eax
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.18
jmp 0x40b849
mov edi, dword [ebp - 0x98]
mov esi, dword [ebp - 0x9c]
mov eax, 0x14
call dbg.xmalloc
mov ecx, dword [ebp - 0x80]
lea edx, [ebp - 0x30]
mov dword [ebp - 0x80], edi
mov dword [ebp - 0x98], eax
mov dword [eax], ecx
mov eax, dword [ebp - 0xa0]
mov edi, ecx
mov ebx, eax
jmp 0x40bed0
mov dword [esp + 4], ebx
mov dword [esp], edi
call dword [ebp - 0x34]
test eax, eax
je 0x40c18e
lea ecx, [ebx + 4]
lea edx, [ebx + 8]
mov eax, ebx
cmovs edx, ecx
mov ebx, dword [edx]
test ebx, ebx
jne 0x40beb1
mov ecx, dword [ebp - 0x98]
mov edi, dword [ebp - 0x80]
mov byte [ebp - 0x98], 0
lea ebx, [ecx + 4]
mov dword [ecx + 4], eax
mov dword [ecx + 0x10], 1
mov dword [ecx + 8], 0
mov dword [ecx + 0xc], 0
mov dword [edx], ebx
mov eax, dword [ebp - 0x30]
mov dword [ebp - 0x9c], edi
mov dword [ebp - 0x80], eax
mov eax, dword [ebx]
test eax, eax
je 0x40c118
test byte [eax + 0xc], 1
je 0x40c118
mov edx, dword [eax]
mov ecx, dword [edx + 4]
cmp ecx, eax
je 0x40c326
test ecx, ecx
je 0x40c279
test byte [ecx + 0xc], 1
je 0x40c279
xor dword [edx + 0xc], 1
xor dword [ecx + 0xc], 1
mov eax, dword [edx + 8]
xor dword [eax + 0xc], 1
mov eax, dword [ebx]
mov ebx, dword [eax]
jmp 0x40bf0d
mov eax, dword [ebp - 0x8c]
test eax, eax
je 0x40bbb6
mov ebx, dword [ebp - 0x8c]
mov dword [esp + 4], 0x2f
mov dword [esp], ebx
call dword [sym.imp.ucrtbase.dll_wcschr]
test eax, eax
je 0x40bbb6
mov eax, ebx
call sym._xwcsdup.part.9
mov dword [ebp - 0x78], eax
mov eax, dword [ebp - 0x84]
test eax, eax
je 0x40bc74
mov ebx, dword [ebp - 0x78]
test ebx, ebx
jne 0x40bbf1
jmp sym._wWinMain_16.cold.20
mov eax, dword [ebp - 0x9c]
call sym._wine_dbgstr_wn.constprop.15
mov dword [ebp - 0xb4], eax
mov eax, ebx
call sym._wine_dbgstr_wn.constprop.15
mov dword [ebp - 0x58], eax
mov eax, dword [ebp - 0x6c]
call sym._wine_dbgstr_wn.constprop.15
mov dword [ebp - 0xb0], eax
mov eax, dword [ebp - 0x78]
call sym._wine_dbgstr_wn.constprop.15
mov dword [ebp - 0xac], eax
mov eax, dword [ebp - 0xa0]
call sym._wine_dbgstr_wn.constprop.15
mov ecx, dword [ebp - 0x58]
mov edx, dword [ebp - 0xb4]
mov dword [esp + 0xc], str.friendlyAppName_s__MIME_type__s__progID_s__icon_s_to_file__s_n
mov dword [esp + 0x10], eax
mov dword [esp + 0x1c], ecx
mov ecx, dword [ebp - 0xb0]
mov dword [esp + 0x20], edx
mov dword [esp + 0x18], ecx
mov ecx, dword [ebp - 0xac]
mov dword [esp + 8], str.write_freedesktop_association_entry
mov dword [esp + 0x14], ecx
mov dword [esp + 4], global___dbch
mov dword [esp], 3
call sym._wine_dbg_log.constprop.18
jmp 0x40b4bc
test byte [0x40d000], 2
je 0x40bd5f
mov eax, dword [ebp - 0x6c]
call sym._wine_dbgstr_wn.constprop.15
mov dword [esp + 0xc], str.error_writing_file__s_n
mov dword [esp + 0x10], eax
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.18
jmp 0x40bd5f
mov eax, dword [ebp - 0x78]
mov dword [esp], eax
call esi
mov dword [esp], ebx
call dword [sym.imp.advapi32.dll_RegCloseKey]
sub esp, 4
jmp 0x40b09c
test ebx, ebx
jne 0x40c203
mov dword [esp], edx
call esi
mov eax, dword [ebp - 0x9c]
mov dword [esp], eax
mov eax, dword [sym.imp.advapi32.dll_RegCloseKey]
mov dword [ebp - 0xa8], eax
call eax
mov edx, dword [ebp - 0xa4]
sub esp, 4
test edx, edx
jne 0x40b475
jmp 0x40b11a
mov dword [ebp - 0x94], 0
test byte [0x40d000], 2
je 0x40b81a
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.18
jmp 0x40b81a
cmp byte [ebp - 0x98], 0
mov edi, dword [ebp - 0x9c]
jne 0x40c37f
mov eax, dword [ebp - 0x30]
and dword [eax + 0xc], 0xfffffffe
jmp 0x40b2c8
mov eax, dword [ebp - 0x88]
call sym._wine_dbgstr_wn.constprop.15
mov dword [ebp - 0x6c], eax
mov eax, edi
call sym._wine_dbgstr_wn.constprop.15
mov ebx, eax
mov eax, dword [ebp - 0x78]
call sym._wine_dbgstr_wn.constprop.15
mov edx, dword [ebp - 0x6c]
mov dword [esp + 0x14], ebx
mov dword [esp + 0x10], eax
mov dword [esp + 0x18], edx
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.18
jmp 0x40bc81
mov edi, dword [ebp - 0x80]
xor ebx, ebx
mov dword [ebp - 0x80], 0
test byte [0x40d000], 2
je 0x40b11a
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.18
mov dword [ebp - 0x80], ebx
jmp 0x40b11a
mov eax, dword [ebp - 0x58]
mov dword [esp + 4], str.__u_n
mov dword [esp], eax
call dbg.fprintf
jmp 0x40b5c6
mov eax, dword [ebp - 0x58]
mov dword [esp + 4], str.Execwine_start
mov dword [esp], eax
call dbg.fprintf
jmp 0x40b59f
mov dword [esp], edx
mov eax, dword [ebp - 0x48]
mov dword [ebp - 0xa8], edx
mov dword [esp + 4], ebx
call eax
mov edx, dword [ebp - 0xa8]
test eax, eax
mov dword [esp], edx
jne 0x40b45a
call esi
mov eax, dword [ebp - 0x9c]
mov dword [esp], eax
mov eax, dword [sym.imp.advapi32.dll_RegCloseKey]
mov dword [ebp - 0xa8], eax
call eax
cmp dword [ebp - 0xa4], 0
push eax
jne 0x40b475
movzx ecx, byte [ebp - 0x94]
and byte [ebp - 0x98], cl
jmp 0x40b854
lea eax, [edi + 2]
mov dword [esp], str.application_x_wine_extension__s
mov dword [esp + 4], eax
call dbg.heap_wprintf
mov dword [ebp - 0x78], eax
jmp 0x40bf8c
mov ecx, dword [eax + 4]
cmp ebx, ecx
je 0x40c307
mov eax, dword [ebx]
and dword [eax + 0xc], 0xfffffffe
mov eax, dword [ebx]
mov eax, dword [eax]
or dword [eax + 0xc], 1
mov eax, dword [ebx]
mov eax, dword [eax]
mov ecx, dword [eax]
mov edx, dword [eax + 8]
test ecx, ecx
je 0x40c2fb
cmp eax, dword [ecx + 4]
je 0x40c3f3
mov dword [ecx + 8], edx
mov ecx, dword [edx + 4]
mov dword [eax + 8], ecx
test ecx, ecx
je 0x40c2b7
mov dword [ecx], eax
mov dword [edx + 4], eax
mov ecx, dword [eax]
mov dword [edx], ecx
mov dword [eax], edx
jmp 0x40bf0d
test byte [0x40d000], 2
je 0x40b81a
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.18
jmp 0x40b81a
mov dword [ebp - 0x80], edx
mov byte [ebp - 0x98], 1
jmp 0x40c2ab
mov dword [edx + 8], ecx
mov edx, dword [ecx + 8]
mov dword [eax + 4], edx
test edx, edx
je 0x40c316
mov dword [edx], eax
mov dword [ecx + 8], eax
mov edx, dword [eax]
mov ebx, eax
mov dword [ecx], edx
mov dword [eax], ecx
jmp 0x40c284
mov edi, dword [edx + 8]
test edi, edi
je 0x40c337
test byte [edi + 0xc], 1
jne 0x40bf40
mov ecx, dword [eax + 8]
cmp ebx, ecx
je 0x40c3d4
mov eax, dword [ebx]
and dword [eax + 0xc], 0xfffffffe
mov eax, dword [ebx]
mov eax, dword [eax]
or dword [eax + 0xc], 1
mov eax, dword [ebx]
mov eax, dword [eax]
mov ecx, dword [eax]
mov edx, dword [eax + 4]
test ecx, ecx
je 0x40c3c8
cmp eax, dword [ecx + 4]
je 0x40c3c3
mov dword [ecx + 8], edx
mov ecx, dword [edx + 8]
mov dword [eax + 4], ecx
test ecx, ecx
je 0x40c371
mov dword [ecx], eax
mov dword [edx + 8], eax
mov ecx, dword [eax]
mov dword [edx], ecx
mov dword [eax], edx
jmp 0x40bf0d
mov eax, dword [ebp - 0x80]
mov dword [ebp - 0x30], eax
jmp 0x40c12b
mov eax, dword [ebp - 0x3c]
mov dword [esp + 4], str.OpenWithIcon
mov dword [esp], eax
call dword [sym.imp.advapi32.dll_RegDeleteValueW]
push eax
push eax
jmp 0x40b81a
mov eax, dword [ebp - 0x9c]
jmp 0x40b78f
mov eax, dword [ebp - 0xa0]
jmp 0x40b73a
mov eax, dword [ebp - 0x6c]
jmp 0x40b6e8
mov dword [ecx + 4], edx
jmp 0x40c365
mov dword [ebp - 0x80], edx
mov byte [ebp - 0x98], 1
jmp 0x40c365
mov dword [edx + 4], ecx
mov edx, dword [ecx + 4]
mov dword [eax + 8], edx
test edx, edx
je 0x40c3e3
mov dword [edx], eax
mov dword [ecx + 4], eax
mov edx, dword [eax]
mov ebx, eax
mov dword [ecx], edx
mov dword [eax], ecx
jmp 0x40c342
mov dword [ecx + 4], edx
jmp 0x40c2ab