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

Disassembly:
lea ecx, [esp + 4]
and esp, 0xfffffff8
push dword [ecx - 4]
push ebp
mov ebp, esp
push edi
push esi
push ebx
push ecx
sub esp, 0xdc
mov ebx, dword [ecx + 8]
mov dword [esp + 0x10], 0x41a000
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 0x408600
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 0x4088a9
mov dword [esp + 4], eax
mov dword [esp], str.__unix_s_menus_applications_merged
call fcn.00401950
movzx ecx, word [eax]
mov dword [0x41a20c], eax
mov edx, eax
test cx, cx
je 0x4083da
lea esi, cs:[esi]
lea esi, cs:[esi]
lea esi, [esi]
cmp cx, 0x2f
jne 0x4083ce
mov ecx, 0x5c
mov word [edx], cx
movzx ecx, word [edx + 2]
add edx, 2
test cx, cx
jne 0x4083c0
mov esi, 0x5c
mov word [eax + 2], si
call fcn.00401090
mov dword [esp], str.XDG_DATA_HOME
mov eax, dword [ebp - 0x60]
call eax
test eax, eax
je 0x408a6f
mov dword [esp + 4], eax
mov dword [esp], str.__unix_s
call fcn.00401950
movzx ecx, word [eax]
mov dword [0x41a208], eax
mov edx, eax
test cx, cx
je 0x40843a
lea esi, cs:[esi]
cmp cx, 0x2f
jne 0x40842e
mov esi, 0x5c
mov word [edx], si
movzx ecx, word [edx + 2]
add edx, 2
test cx, cx
jne 0x408420
mov edi, 0x5c
mov word [eax + 2], di
mov dword [esp + 4], eax
mov dword [esp], str._sdesktop_directories
call fcn.00401950
mov esi, eax
call fcn.00401090
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 0x4085ec
mov dword [ebp - 0x4c], ebx
test ebx, ebx
je 0x409c8c
lea eax, [ebp - 0x38]
mov dword [ebp - 0x5c], 0
movd xmm0, eax
mov dword [ebp - 0x74], 0
punpckldq xmm0, xmm0
mov dword [ebp - 0x68], 0
movq qword [ebp - 0x88], xmm0
jmp 0x4084fd
mov dword [esp + 4], 0x40f88c
mov dword [esp], ebx
mov eax, dword [ebp - 0x54]
call eax
mov dword [ebp - 0x50], eax
test eax, eax
je 0x408620
mov dword [esp + 4], 0x40f8d0
mov dword [esp], ebx
mov eax, dword [ebp - 0x54]
call eax
test eax, eax
jne 0x4087a0
mov dword [ebp - 0x68], 1
mov ebx, dword [ebp - 0x4c]
test ebx, ebx
je 0x4085e4
cmp word [ebx], 0
je 0x4085e4
lea esi, [ebp - 0x4c]
mov eax, esi
call fcn.00401160
mov ebx, eax
test eax, eax
je 0x4085e4
mov dword [esp], eax
mov eax, dword [sym.imp.ucrtbase.dll_wcscmp]
mov dword [esp + 4], 0x40f256
mov dword [ebp - 0x54], eax
call eax
test eax, eax
jne 0x4084b8
lea eax, [ebp - 0x30]
mov dword [esp + 4], 0x40f25c
mov dword [esp + 8], eax
mov eax, dword [sym.imp.advapi32.dll_RegCreateKeyW]
mov dword [esp], 0x80000001
mov dword [ebp - 0x64], eax
call eax
sub esp, 0xc
test eax, eax
jne 0x408814
mov ebx, dword [ebp - 0x30]
test ebx, ebx
je 0x408814
lea eax, [ebp - 0x3c]
mov dword [ebp - 0x3c], 0x20
mov dword [esp + 0x14], eax
lea eax, [ebp - 0x30]
mov dword [esp + 0x10], eax
mov dword [esp + 0xc], 0
mov dword [esp + 8], 0
mov dword [esp + 4], str.Enable
mov dword [esp], ebx
call dword [sym.imp.advapi32.dll_RegQueryValueExA]
sub esp, 0x18
test eax, eax
jne 0x408808
movzx eax, byte [ebp - 0x30]
cmp al, 0x59
je 0x408808
jbe 0x4087f9
cmp al, 0x74
je 0x408808
cmp al, 0x79
je 0x408808
mov dword [esp], ebx
call dword [sym.imp.advapi32.dll_RegCloseKey]
mov ebx, dword [ebp - 0x4c]
sub esp, 4
test ebx, ebx
jne 0x4084fd
call dword [sym.imp.ole32.dll_CoUninitialize]
jmp 0x408607
test byte [section..data], 2
jne 0x40906b
lea esi, [esi]
mov dword [ebp - 0x5c], 1
mov eax, dword [ebp - 0x5c]
lea esp, [ebp - 0x10]
pop ecx
pop ebx
pop esi
pop edi
pop ebp
lea esp, [ecx - 4]
ret 0x10
lea eax, [ebp - 0x30]
mov dword [esp + 4], str.SoftwareWineMenuFiles
mov dword [esp + 8], eax
mov dword [esp], 0x80000001
call dword [sym.imp.advapi32.dll_RegCreateKeyW]
sub esp, 0xc
test eax, eax
jne 0x40889a
mov eax, dword [ebp - 0x30]
mov dword [ebp - 0x58], eax
test eax, eax
je 0x4084f2
mov dword [ebp - 0x54], edi
lea esi, cs:[esi]
mov dword [ebp - 0x40], 0x1000
mov edi, 0x1000
mov dword [ebp - 0x3c], 0x1000
jmp 0x408691
mov eax, dword [ebp - 0x40]
shl dword [ebp - 0x3c], 1
lea edi, [eax + eax]
mov dword [ebp - 0x40], edi
mov dword [esp], esi
mov esi, dword [ebp - 0x54]
call esi
mov dword [esp], ebx
call esi
lea eax, [edi + edi]
mov dword [esp], eax
call dword [sym.imp.ucrtbase.dll_malloc]
mov esi, eax
test eax, eax
je 0x4097f6
mov eax, dword [ebp - 0x3c]
add eax, eax
mov dword [esp], eax
call dword [sym.imp.ucrtbase.dll_malloc]
mov ebx, eax
test eax, eax
je 0x4097f6
lea eax, [ebp - 0x3c]
mov dword [esp + 0x18], ebx
mov dword [esp + 0x1c], eax
lea eax, [ebp - 0x40]
mov dword [esp + 0x14], 0
mov dword [esp + 0x10], 0
mov dword [esp + 0xc], eax
mov dword [esp + 8], esi
mov eax, dword [ebp - 0x50]
mov dword [esp + 4], eax
mov eax, dword [ebp - 0x58]
mov dword [esp], eax
call dword [sym.imp.advapi32.dll_RegEnumValueW]
sub esp, 0x20
cmp eax, 0xea
je 0x408678
test eax, eax
je 0x408740
mov edi, dword [ebp - 0x54]
cmp eax, 0x103
je 0x40871d
test byte [section..data], 2
jne 0x408770
mov dword [esp], esi
call edi
mov dword [esp], ebx
call edi
mov eax, dword [ebp - 0x58]
mov dword [esp], eax
call dword [sym.imp.advapi32.dll_RegCloseKey]
sub esp, 4
jmp 0x4084f2
mov dword [esp], ebx
call dword [sym.imp.kernel32.dll_GetFileAttributesW]
sub esp, 4
cmp eax, 0xffffffff
je 0x4087c8
add dword [ebp - 0x50], 1
mov dword [esp], esi
mov edi, dword [ebp - 0x54]
call edi
mov dword [esp], ebx
call edi
jmp 0x408660
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], 0x40c000
mov dword [esp], 1
call fcn.00401550
jmp 0x40871d
mov dword [esp + 4], 0x40f8d6
mov dword [esp], ebx
mov eax, dword [ebp - 0x54]
call eax
test eax, eax
jne 0x408a90
mov dword [ebp - 0x74], 1
jmp 0x4084f2
test byte [section..data], 8
jne 0x408bc4
mov dword [esp], esi
call dword [sym.imp.kernel32.dll_DeleteFileW]
sub esp, 4
mov dword [esp + 4], esi
mov eax, dword [ebp - 0x58]
mov dword [esp], eax
call dword [sym.imp.advapi32.dll_RegDeleteValueW]
sub esp, 8
jmp 0x408755
cmp al, 0x31
je 0x408808
cmp al, 0x54
jne 0x4085cd
lea esi, [esi]
mov dword [esp], ebx
call dword [sym.imp.advapi32.dll_RegCloseKey]
sub esp, 4
mov dword [ebp - 0x48], 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 - 0x48], eax
lea eax, [ebp - 0x48]
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 0x4088ca
test byte [section..data], 2
jne 0x408c24
mov eax, dword [ebp - 0x48]
mov dword [esp], eax
call dword [sym.imp.kernel32.dll_CloseHandle]
sub esp, 4
jmp 0x4084f2
mov edx, dword fs:[0x18]
mov dword [edx + 0x34], eax
jmp 0x4084f2
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 fcn.00401950
jmp 0x40839b
mov eax, dword [0x41a208]
mov dword [esp], str._smime
mov dword [esp + 4], eax
call fcn.00401950
mov dword [ebp - 0x9c], eax
mov dword [esp + 4], eax
mov dword [esp], str._spackages
call fcn.00401950
mov dword [ebp - 0xa0], eax
call fcn.00401090
mov eax, dword [0x41a208]
mov dword [esp], str._s_applications
mov dword [esp + 4], eax
call fcn.00401950
mov dword [ebp - 0x8c], eax
call fcn.00401090
movq xmm2, qword [ebp - 0x88]
mov dword [ebp - 0x2c], 0
mov dword [ebp - 0x30], 0x401000
movq qword [ebp - 0x38], xmm2
mov dword [esp], str.XDG_DATA_DIRS
mov ebx, dword [ebp - 0x60]
call ebx
test eax, eax
je 0x409763
mov dword [esp], str.XDG_DATA_DIRS
call ebx
mov ebx, eax
test eax, eax
je 0x408965
call fcn.00401be0
mov ebx, eax
mov eax, dword [0x41a208]
lea edx, [ebp - 0x38]
call fcn.004026a0
mov dword [ebp - 0x80], eax
test eax, eax
jne 0x408c4d
mov dword [esp], ebx
call edi
lea eax, [ebp - 0x38]
call fcn.00401020
test byte [section..data], 2
jne 0x409a37
mov dword [ebp - 0x78], 0
lea eax, [ebp - 0x30]
mov dword [esp + 4], 0x40f25c
mov dword [esp + 8], eax
mov dword [esp], 0x80000001
mov eax, dword [ebp - 0x64]
call eax
sub esp, 0xc
mov esi, eax
test eax, eax
jne 0x4096ff
mov ecx, dword [ebp - 0x30]
test ecx, ecx
je 0x4096ff
mov dword [ebp - 0x54], 0
mov dword [ebp - 0x50], ecx
jmp 0x4089ed
add esi, 1
mov dword [esp], eax
call edi
mov dword [esp], ebx
call edi
mov eax, dword [ebp - 0x50]
mov edx, esi
call fcn.00401af0
mov ebx, eax
test eax, eax
je 0x408b50
mov edx, eax
mov ecx, str.open
mov eax, 1
call fcn.00401e30
test eax, eax
jne 0x4089e0
mov eax, dword [ebp - 0x50]
mov ecx, str.DesktopFile
mov edx, ebx
call fcn.00402290
mov dword [ebp - 0x54], eax
test eax, eax
je 0x408a48
test byte [section..data], 8
jne 0x40900b
mov eax, dword [ebp - 0x54]
mov dword [esp], eax
call dword [sym.imp.kernel32.dll_DeleteFileW]
sub esp, 4
mov dword [esp + 4], ebx
mov eax, dword [ebp - 0x50]
mov dword [esp], eax
call dword [sym.imp.advapi32.dll_RegDeleteKeyW]
mov eax, dword [ebp - 0x54]
sub esp, 8
mov dword [esp], eax
call edi
mov dword [ebp - 0x54], 1
jmp 0x4089e8
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 fcn.00401950
jmp 0x40840c
mov dword [esp + 4], 0x40f8dc
mov dword [esp], ebx
mov eax, dword [ebp - 0x54]
call eax
test eax, eax
je 0x409735
cmp word [ebx], 0x2d
je 0x409789
mov ecx, dword [ebp - 0x74]
mov eax, ebx
mov edx, dword [ebp - 0x68]
test ecx, ecx
jne 0x409098
call fcn.00407550
test eax, eax
jne 0x4084f2
mov dword [ebp - 0x5c], 1
test byte [section..data], 2
je 0x4084f2
mov eax, ebx
shr eax, 0x10
test eax, eax
je 0x40a2fa
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 0x408b16
mov eax, ebx
call fcn.00401280
mov dword [esp + 0x10], eax
mov dword [esp + 0xc], str.failed_to_build_menu_item_for__s_n
mov dword [esp + 8], str.wWinMain
mov dword [esp + 4], 0x40c000
mov dword [esp], 1
call fcn.00401550
mov dword [ebp - 0x5c], 1
jmp 0x4084f2
mov ecx, dword [ebp - 0x50]
mov dword [esp], ecx
call dword [sym.imp.advapi32.dll_RegCloseKey]
mov ecx, dword [ebp - 0x54]
sub esp, 4
or dword [ebp - 0x78], ecx
mov ebx, dword [ebp - 0x78]
test ebx, ebx
jne 0x408fa3
mov dword [esp + 8], 0
mov dword [esp + 4], 1
mov eax, dword [ebp - 0x48]
mov dword [esp], eax
call dword [sym.imp.kernel32.dll_ReleaseSemaphore]
mov eax, dword [ebp - 0x48]
sub esp, 0xc
mov dword [esp], eax
call dword [sym.imp.kernel32.dll_CloseHandle]
mov eax, dword [ebp - 0x9c]
sub esp, 4
mov dword [esp], eax
call edi
mov eax, dword [ebp - 0xa0]
mov dword [esp], eax
call edi
mov eax, dword [ebp - 0x8c]
mov dword [esp], eax
call edi
jmp 0x4084f2
mov eax, esi
shr eax, 0x10
test eax, eax
je 0x409774
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 0x408bf7
mov eax, esi
call fcn.00401280
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], 0x40c000
mov dword [esp], 3
call fcn.00401550
jmp 0x4087d5
mov dword [esp + 0xc], str.failed_wait_for_semaphore_n
mov dword [esp + 8], str.RefreshFileTypeAssociations
mov dword [esp + 4], 0x40c000
mov dword [esp], 1
call fcn.00401550
jmp 0x408886
lea eax, [ebp - 0x3c]
mov dword [esp + 4], 0x40f34c
mov dword [esp + 8], eax
mov eax, dword [sym.imp.ucrtbase.dll_wcstok]
mov dword [esp], ebx
mov dword [ebp - 0x50], eax
call eax
test eax, eax
je 0x40a2db
mov dword [ebp - 0x58], ebx
lea esi, [esi]
mov dword [esp + 4], eax
mov dword [esp], 0x40f350
call fcn.00401950
movzx edx, word [eax]
mov esi, eax
test dx, dx
je 0x408cba
lea esi, cs:[esi]
lea esi, [esi]
cmp dx, 0x2f
jne 0x408cae
mov ecx, 0x5c
mov word [eax], cx
movzx edx, word [eax + 2]
add eax, 2
test dx, dx
jne 0x408ca0
lea edx, [esi + 0x12]
cmp edx, eax
jae 0x408cd0
cmp word [eax - 2], 0x5c
jne 0x408cd0
xor edx, edx
mov word [eax - 2], dx
nop
lea edx, [ebp - 0x38]
mov eax, esi
call fcn.004026a0
mov dword [esp], esi
mov ebx, eax
call edi
test ebx, ebx
je 0x409d8f
lea eax, [ebp - 0x3c]
mov dword [esp + 4], 0x40f34c
mov dword [esp + 8], eax
mov dword [esp], 0
mov eax, dword [ebp - 0x50]
call eax
test eax, eax
jne 0x408c78
mov ebx, dword [ebp - 0x58]
mov dword [esp], ebx
call edi
mov dword [ebp - 0x78], 0
mov dword [ebp - 0x58], 0
jmp 0x408d84
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 ebx, dword [ebp - 0x50]
mov dword [esp], 0x80000000
mov dword [esp + 4], ebx
call dword [sym.imp.advapi32.dll_RegGetValueW]
sub esp, 0x1c
test eax, eax
je 0x4090b8
cmp word [ebx], 0x2e
je 0x408da2
lea esi, [esi]
mov eax, dword [ebp - 0x50]
mov dword [esp], eax
call edi
add dword [ebp - 0x58], 1
mov edx, dword [ebp - 0x58]
mov eax, 0x80000000
call fcn.00401af0
mov dword [ebp - 0x50], eax
test eax, eax
je 0x4090c3
cmp word [eax], 0x2e
jne 0x408d28
mov dword [ebp - 0x70], 0
mov dword [esp + 4], str..bat
mov ebx, dword [sym.imp.ucrtbase.dll__wcsicmp]
mov esi, dword [ebp - 0x50]
mov dword [esp], esi
mov dword [ebp - 0x6c], ebx
call ebx
test eax, eax
je 0x408d78
mov dword [esp + 4], str..com
mov dword [esp], esi
call ebx
test eax, eax
je 0x408d78
mov dword [esp + 4], str..exe
mov dword [esp], esi
call ebx
test eax, eax
je 0x408d78
mov dword [esp + 4], str..msi
mov dword [esp], esi
call ebx
test eax, eax
je 0x408d78
mov dword [esp + 4], str..url
mov dword [esp], esi
call ebx
test eax, eax
je 0x408d78
mov dword [esp + 4], str.file
mov dword [esp], esi
call ebx
test eax, eax
je 0x408d78
mov ecx, str.open
mov edx, esi
mov eax, 1
call fcn.00401e30
mov dword [ebp - 0x90], eax
test eax, eax
je 0x408f1a
lea eax, [ebp - 0x3c]
mov dword [esp + 4], 0x40f25c
mov dword [esp + 8], eax
mov dword [esp], 0x80000001
mov eax, dword [ebp - 0x64]
call eax
sub esp, 0xc
test eax, eax
jne 0x408ec2
mov ebx, dword [ebp - 0x3c]
test ebx, ebx
je 0x408ec2
lea eax, [ebp - 0x44]
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 - 0x7c], eax
call eax
sub esp, 0x1c
test eax, eax
je 0x4099b4
mov dword [esp], ebx
call dword [sym.imp.advapi32.dll_RegCloseKey]
sub esp, 4
mov dword [ebp - 0x94], 0
mov esi, str.ieframe.dll
mov dword [ebp - 0x7c], edi
mov ebx, dword [sym.imp.ucrtbase.dll_wcsstr]
mov edi, esi
mov esi, dword [ebp - 0x90]
jmp 0x408eff
mov dword [esp], edi
call dword [sym.imp.ucrtbase.dll_wcslen]
lea edi, [edi + eax*2 + 2]
cmp word [edi], 0
je 0x409152
mov dword [esp + 4], edi
mov dword [esp], esi
call ebx
test eax, eax
je 0x408ee8
mov eax, dword [ebp - 0x94]
mov edi, dword [ebp - 0x7c]
mov dword [esp], eax
call edi
mov dword [ebp - 0x7c], 0
xor esi, esi
mov dword [ebp - 0x6c], 0
mov dword [ebp - 0x98], 0
mov dword [ebp - 0xa4], 0
mov dword [ebp - 0x94], 0
mov dword [ebp - 0xa8], 0
mov eax, dword [ebp - 0x90]
mov dword [esp], eax
call edi
mov eax, dword [ebp - 0xa8]
mov dword [esp], eax
call edi
mov dword [esp], esi
call edi
mov eax, dword [ebp - 0x94]
mov dword [esp], eax
call edi
mov eax, dword [ebp - 0xa4]
mov dword [esp], eax
call edi
mov eax, dword [ebp - 0x98]
mov dword [esp], eax
call edi
mov eax, dword [ebp - 0x6c]
mov dword [esp], eax
call edi
mov eax, dword [ebp - 0x7c]
mov dword [esp], eax
call edi
jmp 0x408d78
mov eax, dword [ebp - 0x9c]
mov dword [ebp - 0x30], str.update_mime_database
mov dword [esp], eax
call sub.kernel32.dll_wine_get_unix_file_name
mov dword [ebp - 0x28], 0
mov ebx, dword [sym.imp.ntdll.dll___wine_unix_spawnvp]
mov dword [ebp - 0x2c], eax
lea eax, [ebp - 0x30]
mov dword [esp + 4], 0
mov dword [esp], eax
call ebx
mov eax, dword [ebp - 0x8c]
sub esp, 8
mov dword [ebp - 0x30], str.update_desktop_database
mov dword [esp], eax
call sub.kernel32.dll_wine_get_unix_file_name
mov dword [ebp - 0x2c], eax
lea eax, [ebp - 0x30]
mov dword [esp + 4], 0
mov dword [esp], eax
call ebx
sub esp, 8
jmp 0x408b70
mov eax, ebx
shr eax, 0x10
test eax, eax
je 0x4090a2
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 0x40903e
mov eax, ebx
call fcn.00401280
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], 0x40c000
mov dword [esp], 3
call fcn.00401550
jmp 0x408a39
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], 0x40c000
mov dword [esp], 1
call fcn.00401550
jmp 0x408600
call fcn.00408060
jmp 0x408ac7
mov dword [esp + 4], ebx
mov dword [esp], str._04x
call fcn.00401440
jmp 0x40903e
mov eax, dword [ebp - 0x80]
mov dword [ebp - 0x70], eax
jmp 0x408da9
mov eax, dword [ebp - 0x2c]
test eax, eax
je 0x409145
lea esi, [esi]
mov esi, eax
mov eax, dword [eax + 4]
test eax, eax
jne 0x4090d0
mov eax, dword [esi + 8]
test eax, eax
jne 0x4090d0
mov edx, dword [esi]
test edx, edx
je 0x409133
mov eax, dword [edx + 8]
cmp esi, eax
je 0x40912f
lea esi, [esi]
test eax, eax
je 0x40912f
lea esi, cs:[esi]
lea esi, [esi]
mov ebx, eax
mov eax, dword [eax + 4]
test eax, eax
jne 0x409100
mov eax, dword [ebx + 8]
test eax, eax
jne 0x409100
mov eax, dword [esi - 4]
sub esi, 4
mov dword [esp], eax
call edi
mov dword [esp], esi
call edi
mov edx, dword [ebx]
test edx, edx
je 0x409135
mov eax, dword [edx + 8]
mov esi, ebx
cmp esi, eax
jne 0x4090f0
mov ebx, edx
jmp 0x409110
mov ebx, esi
mov eax, dword [ebx - 4]
sub ebx, 4
mov dword [esp], eax
call edi
mov dword [esp], ebx
call edi
lea eax, [ebp - 0x38]
call fcn.00401020
jmp 0x40899e
mov eax, dword [ebp - 0x94]
mov edi, dword [ebp - 0x7c]
mov dword [esp], eax
call edi
mov ebx, dword [ebp - 0x50]
xor ecx, ecx
mov eax, 0xf
mov edx, ebx
call fcn.00401e30
mov dword [ebp - 0xa4], eax
mov eax, dword [ebp - 0x70]
test eax, eax
je 0x409810
mov dword [esp + 4], ebx
mov dword [esp], str.x_scheme_handler__s
call fcn.00401950
mov dword [ebp - 0x7c], 0
mov dword [ebp - 0x6c], eax
mov dword [ebp - 0x98], 0
mov dword [ebp - 0x94], 0
mov edx, dword [ebp - 0x50]
mov ecx, str.open
mov eax, 2
call fcn.00401e30
mov edx, eax
mov dword [ebp - 0xa8], eax
test eax, eax
je 0x409c7e
xor eax, eax
call fcn.00401a10
mov byte [ebp - 0xb1], 1
mov esi, eax
mov ebx, dword [ebp - 0x50]
mov ecx, str.open
mov eax, 4
mov edx, ebx
call fcn.00401e30
test eax, eax
mov ecx, eax
mov eax, str.A_Wine_application
cmovne eax, ecx
mov dword [ebp - 0xac], eax
lea eax, [ebp - 0x3c]
mov dword [esp + 8], eax
mov dword [esp + 4], 0x40f25c
mov dword [esp], 0x80000001
mov eax, dword [ebp - 0x64]
call eax
sub esp, 0xc
test eax, eax
jne 0x409c39
mov eax, dword [ebp - 0x3c]
mov dword [ebp - 0xb0], eax
test eax, eax
je 0x409c39
mov edx, ebx
mov ecx, str.MimeType
call fcn.00402290
mov edx, eax
mov eax, dword [ebp - 0x80]
mov dword [ebp - 0xb8], eax
test edx, edx
je 0x409283
mov eax, dword [ebp - 0x6c]
mov dword [esp], edx
mov dword [esp + 4], eax
mov eax, dword [ebp - 0x54]
mov dword [ebp - 0xbc], edx
call eax
mov edx, dword [ebp - 0xbc]
test eax, eax
setne al
movzx eax, al
mov dword [ebp - 0xb8], eax
mov dword [esp], edx
call edi
mov ebx, dword [ebp - 0x7c]
test ebx, ebx
je 0x4092d7
mov edx, dword [ebp - 0x50]
mov ecx, str.ProgID
mov eax, dword [ebp - 0xb0]
call fcn.00402290
mov edx, eax
test eax, eax
je 0x409fb6
mov dword [esp + 4], ebx
mov dword [esp], eax
mov dword [ebp - 0xbc], eax
mov eax, dword [ebp - 0x54]
call eax
mov edx, dword [ebp - 0xbc]
test eax, eax
setne al
movzx eax, al
or dword [ebp - 0xb8], eax
mov dword [esp], edx
call edi
mov edx, dword [ebp - 0x50]
mov ecx, str.AppName
mov eax, dword [ebp - 0xb0]
call fcn.00402290
mov edx, eax
mov eax, dword [ebp - 0x80]
mov dword [ebp - 0xc0], eax
test edx, edx
je 0x40932d
mov eax, dword [ebp - 0xac]
mov dword [esp], edx
mov dword [esp + 4], eax
mov eax, dword [ebp - 0x54]
mov dword [ebp - 0xbc], edx
call eax
mov ecx, dword [ebp - 0xb8]
test eax, eax
mov edx, dword [ebp - 0xbc]
setne al
movzx eax, al
or ecx, eax
mov dword [ebp - 0xc0], ecx
mov dword [esp], edx
call edi
mov ebx, dword [ebp - 0xb0]
mov ecx, str.OpenWithIcon
mov edx, dword [ebp - 0x50]
mov eax, ebx
call fcn.00402290
test eax, eax
mov edx, eax
setne al
cmp al, byte [ebp - 0xb1]
je 0x409e09
mov dword [esp], edx
call edi
mov eax, dword [sym.imp.advapi32.dll_RegCloseKey]
mov dword [esp], ebx
mov dword [ebp - 0xbc], eax
call eax
sub esp, 4
mov edx, dword [ebp - 0x70]
mov eax, dword [ebp - 0x50]
test edx, edx
je 0x409de4
mov dword [esp + 8], eax
mov eax, dword [ebp - 0x8c]
mov dword [esp], str._swine_protocol__s.desktop
mov dword [esp + 4], eax
call fcn.00401950
mov dword [ebp - 0x70], eax
mov dword [esp], 0x40e20c
mov eax, dword [ebp - 0x60]
call eax
mov dword [ebp - 0xc8], eax
test byte [section..data], 8
jne 0x409fc4
mov dword [esp + 4], 0x40e262
mov eax, dword [ebp - 0x70]
mov dword [esp], eax
call dword [sym.imp.ucrtbase.dll__wfopen]
mov ebx, eax
test eax, eax
je 0x409dc0
mov dword [esp + 4], str._Desktop_Entry__n
mov dword [esp], eax
call fcn.004011e0
mov dword [esp + 4], str.TypeApplication_n
mov dword [esp], ebx
call fcn.004011e0
mov eax, dword [ebp - 0xac]
call fcn.00401d40
mov dword [esp + 4], str.Name_s_n
mov dword [esp + 8], eax
mov dword [esp], ebx
call fcn.004011e0
mov eax, dword [ebp - 0x6c]
call fcn.00401d40
mov dword [esp + 4], str.MimeType_s__n
mov dword [esp + 8], eax
mov dword [esp], ebx
call fcn.004011e0
mov eax, dword [ebp - 0xc8]
test eax, eax
je 0x409fa1
mov dword [esp], eax
call sub.kernel32.dll_wine_get_unix_file_name
mov dword [esp + 8], eax
mov dword [ebp - 0x78], eax
mov dword [esp + 4], str.Execenv_WINEPREFIX__s__wine_start
mov dword [esp], ebx
call fcn.004011e0
mov edx, dword [ebp - 0x78]
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 - 0x7c]
test eax, eax
je 0x40a2c6
call fcn.00402500
mov dword [esp + 4], str._ProgIDOpen__s___f_n
mov dword [esp + 8], eax
mov dword [esp], ebx
call fcn.004011e0
mov dword [esp + 4], str.NoDisplaytrue_n
mov dword [esp], ebx
call fcn.004011e0
mov dword [esp + 4], str.StartupNotifytrue_n
mov dword [esp], ebx
call fcn.004011e0
test esi, esi
je 0x4094ec
mov eax, esi
call fcn.00401d40
mov dword [esp + 4], str.Icon_s_n
mov dword [esp + 8], eax
mov dword [esp], ebx
call fcn.004011e0
mov dword [esp], ebx
call dword [sym.imp.ucrtbase.dll_fclose]
lea eax, [ebp - 0x3c]
mov dword [ebp - 0x40], 0
mov dword [esp + 8], eax
mov dword [esp + 4], 0x40f25c
mov dword [esp], 0x80000001
mov eax, dword [ebp - 0x64]
call eax
sub esp, 0xc
test eax, eax
jne 0x40a352
mov eax, dword [ebp - 0x3c]
mov dword [ebp - 0x78], eax
test eax, eax
je 0x40a352
lea eax, [ebp - 0x40]
mov dword [esp + 8], eax
mov eax, dword [ebp - 0x50]
mov dword [esp + 4], eax
mov eax, dword [ebp - 0x78]
mov dword [esp], eax
mov eax, dword [ebp - 0x64]
call eax
sub esp, 0xc
test eax, eax
jne 0x40a38b
mov ecx, dword [ebp - 0x6c]
cmp word [ecx], 0
mov eax, ecx
je 0x409568
add eax, 2
cmp word [eax], 0
jne 0x40955f
mov ecx, dword [ebp - 0x6c]
mov dword [esp + 0xc], 1
mov dword [esp + 8], 0
mov dword [esp + 4], str.MimeType
sub eax, ecx
mov dword [esp + 0x10], ecx
add eax, 2
mov dword [esp + 0x14], eax
mov eax, dword [ebp - 0x40]
mov dword [esp], eax
mov eax, dword [sym.imp.advapi32.dll_RegSetValueExW]
mov ebx, eax
call eax
mov eax, dword [ebp - 0x7c]
sub esp, 0x18
test eax, eax
je 0x4095f1
cmp word [eax], 0
je 0x40a3c1
add eax, 2
cmp word [eax], 0
jne 0x4095b3
mov ecx, dword [ebp - 0x7c]
mov dword [esp + 0xc], 1
mov dword [esp + 8], 0
mov dword [esp + 4], str.ProgID
sub eax, ecx
mov dword [esp + 0x10], ecx
add eax, 2
mov dword [esp + 0x14], eax
mov eax, dword [ebp - 0x40]
mov dword [esp], eax
mov eax, ebx
call eax
sub esp, 0x18
mov eax, dword [ebp - 0xac]
cmp word [eax], 0
je 0x40a32f
add eax, 2
cmp word [eax], 0
jne 0x409601
mov ecx, dword [ebp - 0xac]
mov dword [esp + 0xc], 1
mov dword [esp + 8], 0
mov dword [esp + 4], str.AppName
sub eax, ecx
mov dword [esp + 0x10], ecx
add eax, 2
mov dword [esp + 0x14], eax
mov eax, dword [ebp - 0x40]
mov dword [esp], eax
mov eax, ebx
call eax
mov eax, dword [ebp - 0x70]
sub esp, 0x18
cmp word [eax], 0
je 0x40a327
add eax, 2
cmp word [eax], 0
jne 0x40964f
mov ecx, dword [ebp - 0x70]
mov dword [esp + 0xc], 1
mov dword [esp + 8], 0
mov dword [esp + 4], str.DesktopFile
sub eax, ecx
mov dword [esp + 0x10], ecx
add eax, 2
mov dword [esp + 0x14], eax
mov eax, dword [ebp - 0x40]
mov dword [esp], eax
mov eax, ebx
call eax
mov edx, dword [ebp - 0x40]
sub esp, 0x18
test esi, esi
je 0x40a30f
cmp word [esi], 0
mov eax, esi
je 0x4096a9
add eax, 2
cmp word [eax], 0
jne 0x4096a0
sub eax, esi
mov dword [esp + 0x10], esi
add eax, 2
mov dword [esp + 0xc], 1
mov dword [esp + 0x14], eax
mov eax, ebx
mov dword [esp + 8], 0
mov dword [esp + 4], str.OpenWithIcon
mov dword [esp], edx
call eax
sub esp, 0x18
mov eax, dword [ebp - 0x78]
mov dword [esp], eax
mov ebx, dword [ebp - 0xbc]
call ebx
mov eax, dword [ebp - 0x40]
sub esp, 4
mov dword [esp], eax
call ebx
mov eax, dword [ebp - 0x80]
sub esp, 4
mov dword [ebp - 0x78], eax
jmp 0x409dd7
test byte [section..data], 2
je 0x408b65
mov dword [esp + 0xc], str.could_not_open_file_associations_key_n
mov dword [esp + 8], str.cleanup_associations
mov dword [esp + 4], 0x40c000
mov dword [esp], 1
call fcn.00401550
jmp 0x408b65
mov eax, esi
call fcn.00401160
mov ebx, eax
test eax, eax
je 0x4084f2
mov eax, esi
call fcn.00401160
mov edx, eax
test eax, eax
je 0x4084f2
mov eax, ebx
call fcn.00405d20
jmp 0x4084f2
mov eax, str._usr_local_share_:_usr_share_
call fcn.00401be0
mov ebx, eax
jmp 0x408965
mov dword [esp + 4], esi
mov dword [esp], str._04x
call fcn.00401440
jmp 0x408bf7
test byte [section..data], 2
je 0x4084f2
mov eax, ebx
shr eax, 0x10
test eax, eax
je 0x40a2e5
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 0x4097c9
mov eax, ebx
call fcn.00401280
mov dword [esp + 0x10], eax
mov dword [esp + 0xc], str.unknown_option__s_n
mov dword [esp + 8], str.wWinMain
mov dword [esp + 4], 0x40c000
mov dword [esp], 1
call fcn.00401550
jmp 0x4084f2
test byte [section..data], 2
jne 0x409d97
mov dword [esp], 1
call dword [sym.imp.kernel32.dll_ExitProcess]
mov ebx, dword [ebp - 0x50]
mov esi, dword [sym.imp.ucrtbase.dll__wcslwr]
mov dword [esp], ebx
call esi
xor ecx, ecx
mov edx, ebx
mov eax, 3
call fcn.00401e30
xor ecx, ecx
mov edx, ebx
mov dword [ebp - 0x94], eax
mov eax, 0xe
call fcn.00401e30
mov dword [ebp - 0x98], eax
test eax, eax
je 0x409a60
mov eax, dword [ebp - 0x98]
mov dword [esp], eax
call esi
mov eax, dword [ebp - 0x38]
lea ecx, [ebp - 0x38]
lea esi, [eax - 8]
cmp ecx, eax
je 0x409cb7
xor ecx, ecx
mov dword [ebp - 0x7c], edi
xor ebx, ebx
mov edi, esi
mov esi, ecx
mov eax, dword [edi + 4]
mov dword [esp + 4], eax
mov eax, dword [ebp - 0x50]
mov dword [esp], eax
call dword [sym.imp.shlwapi.dll_PathMatchSpecW]
sub esp, 8
test eax, eax
je 0x4098c5
test esi, esi
je 0x40998d
mov ecx, dword [edi + 4]
cmp word [ecx], 0
je 0x409c98
mov eax, ecx
lea esi, cs:[esi]
nop
add eax, 2
cmp word [eax], 0
jne 0x4098b0
sub eax, ecx
sar eax, 1
cmp eax, ebx
jg 0x409a2e
mov eax, dword [edi + 8]
lea ecx, [ebp - 0x38]
lea edi, [eax - 8]
cmp ecx, eax
jne 0x409875
mov edi, dword [ebp - 0x7c]
test esi, esi
je 0x409ca9
mov eax, esi
call fcn.00401be0
mov dword [ebp - 0x6c], eax
mov edx, dword [ebp - 0x50]
xor ecx, ecx
mov eax, 0x80000000
call fcn.00402290
mov dword [ebp - 0x7c], eax
test eax, eax
je 0x40997c
mov dword [esp + 8], eax
mov eax, dword [ebp - 0x6c]
mov dword [esp], str._s__s
mov dword [esp + 4], eax
call fcn.00401950
mov edx, dword [ebp - 0x2c]
mov esi, eax
mov dword [ebp - 0xac], edx
test edx, edx
je 0x40a367
mov eax, dword [ebp - 0x30]
mov ebx, edx
mov dword [ebp - 0xa8], eax
jmp 0x409945
mov eax, dword [ebx + 4]
cmovns eax, dword [ebx + 8]
mov ebx, eax
test eax, eax
je 0x409d08
mov dword [esp + 4], ebx
mov dword [esp], esi
mov eax, dword [ebp - 0xa8]
call eax
test eax, eax
jne 0x409934
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
mov dword [ebp - 0xa8], 0
xor esi, esi
jmp 0x408f52
mov ecx, dword [edi + 4]
mov esi, dword [edi]
cmp word [ecx], 0
je 0x409f22
mov eax, ecx
nop
add ecx, 2
cmp word [ecx], 0
jne 0x4099a0
sub ecx, eax
sar ecx, 1
mov ebx, ecx
jmp 0x4098c5
mov eax, dword [ebp - 0x44]
mov dword [esp], eax
call dword [sym.imp.ucrtbase.dll_malloc]
mov esi, eax
test eax, eax
je 0x4097f6
lea eax, [ebp - 0x44]
mov dword [esp + 0x14], esi
mov dword [esp + 0x18], eax
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 eax, dword [ebp - 0x7c]
call eax
sub esp, 0x1c
test eax, eax
jne 0x409cf2
mov dword [esp], ebx
call dword [sym.imp.advapi32.dll_RegCloseKey]
sub esp, 4
cmp word [esi], 0
mov dword [ebp - 0x94], esi
jne 0x408ed1
mov dword [esp], esi
call edi
jmp 0x409160
mov esi, dword [edi]
mov eax, ecx
jmp 0x4099a0
mov dword [esp + 0xc], str.could_not_build_native_MIME_types_n
mov dword [esp + 8], str.generate_associations
mov dword [esp + 4], 0x40c000
mov dword [esp], 1
call fcn.00401550
jmp 0x408997
mov eax, dword [ebp - 0x38]
lea ecx, [ebp - 0x38]
lea esi, [eax - 8]
cmp ecx, eax
jne 0x40986a
mov dword [esp + 4], str..lnk
mov ebx, dword [ebp - 0x50]
mov dword [esp], ebx
mov eax, dword [ebp - 0x6c]
call eax
lea ecx, [ebx + 2]
mov dword [ebp - 0x7c], ecx
test eax, eax
je 0x40a2b4
mov eax, dword [ebp - 0x7c]
mov dword [esp], str.application_x_wine_extension__s
mov dword [esp + 4], eax
call fcn.00401950
mov dword [ebp - 0x6c], eax
mov ebx, dword [ebp - 0xa4]
test ebx, ebx
je 0x409b3e
mov eax, dword [ebp - 0x6c]
call fcn.00401be0
mov esi, eax
movzx eax, word [eax]
mov edx, esi
test ax, ax
je 0x409ae4
cmp ax, 0x2f
jne 0x409ad8
mov ecx, 0x2d
mov word [edx], cx
movzx eax, word [edx + 2]
add edx, 2
test ax, ax
jne 0x409aca
mov dword [esp + 4], 0x2c
mov eax, dword [ebp - 0xa4]
mov dword [esp], eax
call dword [sym.imp.ucrtbase.dll_wcsrchr]
xor edx, edx
test eax, eax
je 0x409b25
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 - 0xa4]
mov ecx, esi
call fcn.00406180
mov dword [esp], esi
call edi
test byte [section..data], 8
jne 0x40a1c6
mov eax, dword [ebp - 0x7c]
mov dword [esp + 8], eax
mov eax, dword [ebp - 0xa0]
mov dword [esp], str._sx_wine_extension__s.xml
mov dword [esp + 4], eax
call fcn.00401950
mov dword [esp + 4], 0x40e262
mov ebx, eax
mov dword [esp], eax
call dword [sym.imp.ucrtbase.dll__wfopen]
mov esi, eax
test eax, eax
je 0x409eb9
mov dword [esp + 4], str.__xml_version_1.0__encoding_UTF_8____n
mov dword [esp], eax
call fcn.004011e0
mov dword [esp + 4], str._mime_info_xmlns_http:__www.freedesktop.org_standards_shared_mime_info___n
mov dword [esp], esi
call fcn.004011e0
mov eax, dword [ebp - 0x6c]
call fcn.00402390
mov dword [esp + 4], str.___mime_type_type__s___n
mov dword [esp + 8], eax
mov dword [esp], esi
call fcn.004011e0
mov eax, dword [ebp - 0x50]
call fcn.00402390
mov dword [esp + 4], str._____glob_pattern__s____n
mov dword [esp + 8], eax
mov dword [esp], esi
call fcn.004011e0
mov eax, dword [ebp - 0x94]
test eax, eax
je 0x409c00
call fcn.00402390
mov dword [esp + 4], str._____comment__s__comment__n
mov dword [esp + 8], eax
mov dword [esp], esi
call fcn.004011e0
mov dword [esp + 4], str.____mime_type__n
mov dword [esp], esi
call fcn.004011e0
mov dword [esp + 4], str.__mime_info__n
mov dword [esp], esi
call fcn.004011e0
mov dword [esp], esi
call dword [sym.imp.ucrtbase.dll_fclose]
mov dword [esp], ebx
call edi
mov eax, dword [ebp - 0x80]
mov dword [ebp - 0x78], eax
jmp 0x4098e7
test byte [section..data], 2
jne 0x409f6c
movzx ecx, byte [ebp - 0x78]
and byte [ebp - 0xb1], cl
cmp byte [ebp - 0xb1], 0
je 0x408f52
mov dword [esp], 0
mov eax, dword [ebp - 0xa8]
mov ecx, esi
xor edx, edx
call fcn.00406180
mov eax, dword [ebp - 0x80]
mov dword [ebp - 0x78], eax
jmp 0x408f52
xor esi, esi
mov byte [ebp - 0xb1], 0
jmp 0x4091e2
mov dword [ebp - 0x5c], 0
jmp 0x4085e4
test ebx, ebx
jns 0x4098c5
mov esi, dword [edi]
xor ebx, ebx
jmp 0x4098c5
mov esi, dword [ebp - 0x98]
test esi, esi
je 0x409a71
mov dword [esp + 4], 0x2f
mov eax, dword [ebp - 0x98]
mov dword [esp], eax
call dword [sym.imp.ucrtbase.dll_wcschr]
test eax, eax
je 0x409a71
mov eax, dword [ebp - 0x50]
add eax, 2
mov dword [ebp - 0x7c], eax
mov eax, dword [ebp - 0x98]
call fcn.00401be0
mov dword [ebp - 0x6c], eax
jmp 0x409aa8
mov dword [esp], esi
call edi
mov dword [esp], ebx
call dword [sym.imp.advapi32.dll_RegCloseKey]
sub esp, 4
jmp 0x408ec2
mov dword [esp], 0x14
call dword [sym.imp.ucrtbase.dll_malloc]
mov ecx, eax
test eax, eax
je 0x4097f6
mov ebx, dword [ebp - 0xac]
mov dword [ecx], esi
mov dword [ebp - 0xb0], ecx
jmp 0x409d46
lea ecx, [ebx + 4]
lea edx, [ebx + 8]
mov eax, ecx
cmovns eax, edx
mov edx, dword [eax]
test edx, edx
je 0x409e42
mov ebx, edx
mov dword [esp + 4], ebx
mov dword [esp], esi
mov eax, dword [ebp - 0xa8]
call eax
test eax, eax
jne 0x409d2f
test byte [section..data], 2
je 0x40997c
mov dword [esp + 0xc], str.error_updating_rb_tree_n
mov dword [esp + 8], str.generate_associations
mov dword [esp + 4], 0x40c000
mov dword [esp], 1
call fcn.00401550
jmp 0x40997c
mov ebx, dword [ebp - 0x58]
jmp 0x40897d
mov dword [esp + 0xc], str.out_of_memory_n
mov dword [esp + 8], str.xmalloc
mov dword [esp + 4], 0x40c000
mov dword [esp], 1
call fcn.00401550
jmp 0x409803
test byte [section..data], 2
jne 0x40a162
movzx ecx, byte [ebp - 0x78]
and byte [ebp - 0xb1], cl
mov eax, dword [ebp - 0x70]
mov dword [esp], eax
call edi
jmp 0x409c50
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 fcn.00401950
mov dword [ebp - 0x70], eax
jmp 0x40939d
test esi, esi
jne 0x409f29
mov dword [esp], edx
call edi
mov eax, dword [ebp - 0xb0]
mov dword [esp], eax
mov eax, dword [sym.imp.advapi32.dll_RegCloseKey]
mov dword [ebp - 0xbc], eax
call eax
mov eax, dword [ebp - 0xc0]
sub esp, 4
test eax, eax
jne 0x409372
jmp 0x408f52
mov ecx, dword [ebp - 0xb0]
mov dword [ebp - 0xac], ebx
lea esi, [ecx + 4]
mov edx, dword [ebp - 0xac]
mov dword [ecx + 0x10], 1
mov dword [ecx + 8], 0
mov dword [ecx + 0xc], 0
mov dword [ecx + 4], edx
mov dword [eax], esi
mov ecx, dword [esi]
test ecx, ecx
je 0x409f95
test byte [ecx + 0xc], 1
je 0x409f95
mov eax, dword [ecx]
mov edx, dword [eax + 4]
cmp ecx, edx
je 0x40a40d
test edx, edx
je 0x40a5af
test byte [edx + 0xc], 1
je 0x40a5af
xor dword [eax + 0xc], 1
xor dword [edx + 0xc], 1
mov eax, dword [eax + 8]
xor dword [eax + 0xc], 1
mov eax, dword [esi]
mov esi, dword [eax]
jmp 0x409e71
test byte [section..data], 2
je 0x409c29
mov eax, ebx
shr eax, 0x10
test eax, eax
je 0x40a59a
mov dword [esp + 4], 0xffffffff
mov dword [esp], ebx
call dword [sym.imp.kernel32.dll_IsBadStringPtrW]
push esi
push esi
test eax, eax
jne 0x40a590
mov eax, ebx
call fcn.00401280
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], 0x40c000
mov dword [esp], 1
call fcn.00401550
jmp 0x409c29
xor ebx, ebx
jmp 0x4098c5
mov dword [esp], edx
mov dword [esp + 4], esi
mov eax, dword [ebp - 0x54]
mov dword [ebp - 0xb8], edx
call eax
mov edx, dword [ebp - 0xb8]
test eax, eax
mov dword [esp], edx
je 0x40a619
call edi
mov eax, dword [ebp - 0xb0]
mov dword [esp], eax
mov eax, dword [sym.imp.advapi32.dll_RegCloseKey]
mov dword [ebp - 0xbc], eax
call eax
sub esp, 4
jmp 0x409372
mov dword [esp + 0xc], str.error_opening_associations_registry_key_n
mov dword [esp + 8], str.has_association_changed
mov dword [esp + 4], 0x40c000
mov dword [esp], 1
call fcn.00401550
jmp 0x409c46
mov eax, dword [ebp - 0x2c]
and dword [eax + 0xc], 0xfffffffe
jmp 0x4091b0
mov dword [esp + 4], str.Execwine_start
mov dword [esp], ebx
call fcn.004011e0
jmp 0x409489
mov eax, dword [ebp - 0x80]
mov dword [ebp - 0xb8], eax
jmp 0x4092d2
mov eax, dword [ebp - 0x70]
shr eax, 0x10
test eax, eax
je 0x40a441
mov dword [esp + 4], 0xffffffff
mov ebx, dword [ebp - 0x70]
mov dword [esp], ebx
call dword [sym.imp.kernel32.dll_IsBadStringPtrW]
sub esp, 8
mov dword [ebp - 0xc4], str._invalid_
test eax, eax
jne 0x40a004
mov eax, ebx
call fcn.00401280
mov dword [ebp - 0xc4], eax
test esi, esi
je 0x40a432
mov eax, esi
shr eax, 0x10
test eax, eax
je 0x40a51b
mov dword [esp + 4], 0xffffffff
mov dword [esp], esi
call dword [sym.imp.kernel32.dll_IsBadStringPtrW]
sub esp, 8
mov dword [ebp - 0xb8], str._invalid_
test eax, eax
jne 0x40a048
mov eax, esi
call fcn.00401280
mov dword [ebp - 0xb8], eax
mov eax, dword [ebp - 0x7c]
test eax, eax
je 0x40a50c
shr eax, 0x10
test eax, eax
je 0x40a4ee
mov dword [esp + 4], 0xffffffff
mov ebx, dword [ebp - 0x7c]
mov dword [esp], ebx
call dword [sym.imp.kernel32.dll_IsBadStringPtrW]
sub esp, 8
mov dword [ebp - 0xb0], str._invalid_
test eax, eax
jne 0x40a090
mov eax, ebx
call fcn.00401280
mov dword [ebp - 0xb0], eax
mov eax, dword [ebp - 0x6c]
shr eax, 0x10
test eax, eax
je 0x40a4d0
mov dword [esp + 4], 0xffffffff
mov ebx, dword [ebp - 0x6c]
mov dword [esp], ebx
call dword [sym.imp.kernel32.dll_IsBadStringPtrW]
sub esp, 8
mov dword [ebp - 0xc0], str._invalid_
test eax, eax
jne 0x40a0d0
mov eax, ebx
call fcn.00401280
mov dword [ebp - 0xc0], eax
mov eax, dword [ebp - 0xac]
shr eax, 0x10
test eax, eax
je 0x40a3f2
mov dword [esp + 4], 0xffffffff
mov ebx, dword [ebp - 0xac]
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 0x40a10d
mov eax, ebx
call fcn.00401280
mov ecx, dword [ebp - 0xc4]
mov dword [esp + 0x20], ecx
mov ecx, dword [ebp - 0xb8]
mov dword [esp + 0x1c], ecx
mov ecx, dword [ebp - 0xb0]
mov dword [esp + 0x18], ecx
mov ecx, dword [ebp - 0xc0]
mov dword [esp + 0x10], eax
mov dword [esp + 0xc], str.friendlyAppName_s__MIME_type__s__progID_s__icon_s_to_file__s_n
mov dword [esp + 8], str.write_freedesktop_association_entry
mov dword [esp + 0x14], ecx
mov dword [esp + 4], 0x40c000
mov dword [esp], 3
call fcn.00401550
jmp 0x4093bc
mov eax, dword [ebp - 0x70]
shr eax, 0x10
test eax, eax
je 0x40a33a
mov dword [esp + 4], 0xffffffff
mov ebx, dword [ebp - 0x70]
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 0x40a199
mov eax, ebx
call fcn.00401280
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], 0x40c000
mov dword [esp], 1
call fcn.00401550
jmp 0x409dcd
mov eax, dword [ebp - 0x94]
test eax, eax
je 0x40a586
shr eax, 0x10
test eax, eax
je 0x40a569
mov dword [esp + 4], 0xffffffff
mov ebx, dword [ebp - 0x94]
mov esi, str._invalid_
mov dword [esp], ebx
call dword [sym.imp.kernel32.dll_IsBadStringPtrW]
sub esp, 8
test eax, eax
jne 0x40a20b
mov eax, ebx
call fcn.00401280
mov esi, eax
mov eax, dword [ebp - 0x50]
shr eax, 0x10
test eax, eax
je 0x40a54e
mov dword [esp + 4], 0xffffffff
mov ebx, dword [ebp - 0x50]
mov dword [esp], ebx
call dword [sym.imp.kernel32.dll_IsBadStringPtrW]
sub esp, 8
mov dword [ebp - 0x78], str._invalid_
test eax, eax
jne 0x40a245
mov eax, ebx
call fcn.00401280
mov dword [ebp - 0x78], eax
mov eax, dword [ebp - 0x6c]
shr eax, 0x10
test eax, eax
je 0x40a536
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 0x40a27c
mov eax, ebx
call fcn.00401280
mov dword [esp + 0x18], esi
mov ecx, dword [ebp - 0x78]
mov dword [esp + 0x10], eax
mov dword [esp + 0xc], str.writing_MIME_type__s__extension_s__comment_s_n
mov dword [esp + 8], str.write_freedesktop_mime_type_entry
mov dword [esp + 0x14], ecx
mov dword [esp + 4], 0x40c000
mov dword [esp], 3
call fcn.00401550
jmp 0x409b4b
mov eax, str.application_x_ms_shortcut
call fcn.00401be0
mov dword [ebp - 0x6c], eax
jmp 0x409aa8
mov dword [esp + 4], str.__u_n
mov dword [esp], ebx
call fcn.004011e0
jmp 0x4094ad
mov dword [esp], ebx
call edi
jmp 0x408d14
mov dword [esp + 4], ebx
mov dword [esp], str._04x
call fcn.00401440
jmp 0x4097c9
mov dword [esp + 4], ebx
mov dword [esp], str._04x
call fcn.00401440
jmp 0x408b16
mov dword [esp + 4], str.OpenWithIcon
mov dword [esp], edx
call dword [sym.imp.advapi32.dll_RegDeleteValueW]
push eax
push eax
jmp 0x4096d8
mov eax, dword [ebp - 0x70]
jmp 0x409658
mov eax, dword [ebp - 0xac]
jmp 0x40960a
mov eax, dword [ebp - 0x70]
mov dword [esp], str._04x
mov dword [esp + 4], eax
call fcn.00401440
jmp 0x40a199
test byte [section..data], 2
jne 0x40a3c9
mov dword [ebp - 0x78], 0
jmp 0x4096d8
mov dword [esp], 0x14
call dword [sym.imp.ucrtbase.dll_malloc]
mov ecx, eax
test eax, eax
je 0x4097f6
mov dword [eax], esi
lea esi, [eax + 4]
lea eax, [ebp - 0x2c]
jmp 0x409e51
test byte [section..data], 2
je 0x4096d8
mov dword [esp + 0xc], str.could_not_create_extension_subkey_n
mov dword [esp + 8], str.update_association
mov dword [esp + 4], 0x40c000
mov dword [esp], 1
call fcn.00401550
jmp 0x4096d8
mov eax, dword [ebp - 0x7c]
jmp 0x4095bc
mov dword [esp + 0xc], str.could_not_open_file_associations_key_n
mov dword [esp + 8], str.update_association
mov dword [esp + 4], 0x40c000
mov dword [esp], 1
call fcn.00401550
jmp 0x40a35b
mov eax, dword [ebp - 0xac]
mov dword [esp], str._04x
mov dword [esp + 4], eax
call fcn.00401440
jmp 0x40a10d
mov ebx, dword [eax + 8]
test ebx, ebx
je 0x40a45f
test byte [ebx + 0xc], 1
je 0x40a45f
xor dword [eax + 0xc], 1
xor dword [ecx + 0xc], 1
mov eax, dword [eax + 8]
xor dword [eax + 0xc], 1
mov eax, dword [esi]
mov esi, dword [eax]
jmp 0x409e71
mov dword [ebp - 0xb8], str._null_
jmp 0x40a048
mov eax, dword [ebp - 0x70]
mov dword [esp], str._04x
mov dword [esp + 4], eax
call fcn.00401440
mov dword [ebp - 0xc4], eax
jmp 0x40a004
mov ebx, dword [ecx + 8]
cmp esi, ebx
je 0x40a4ad
mov eax, dword [esi]
and dword [eax + 0xc], 0xfffffffe
mov eax, dword [esi]
mov eax, dword [eax]
or dword [eax + 0xc], 1
mov eax, dword [esi]
mov eax, dword [eax]
mov ecx, dword [eax]
mov edx, dword [eax + 4]
test ecx, ecx
je 0x40a4a8
cmp eax, dword [ecx + 4]
je 0x40a4a3
mov dword [ecx + 8], edx
mov ecx, dword [edx + 8]
mov dword [eax + 4], ecx
test ecx, ecx
je 0x40a495
mov dword [ecx], eax
mov dword [edx + 8], eax
mov ecx, dword [eax]
mov dword [edx], ecx
mov dword [eax], edx
jmp 0x409e71
mov dword [ecx + 4], edx
jmp 0x40a489
mov dword [ebp - 0x2c], edx
jmp 0x40a489
mov dword [eax + 4], ebx
mov eax, dword [ebx + 4]
mov dword [ecx + 8], eax
test eax, eax
je 0x40a4bc
mov dword [eax], ecx
mov dword [ebx + 4], ecx
mov eax, dword [ecx]
mov esi, edx
mov dword [ebx], eax
mov dword [ecx], ebx
jmp 0x40a466
mov eax, dword [ebp - 0x6c]
mov dword [esp], str._04x
mov dword [esp + 4], eax
call fcn.00401440
mov dword [ebp - 0xc0], eax
jmp 0x40a0d0
mov eax, dword [ebp - 0x7c]
mov dword [esp], str._04x
mov dword [esp + 4], eax
call fcn.00401440
mov dword [ebp - 0xb0], eax
jmp 0x40a090
mov dword [ebp - 0xb0], str._null_
jmp 0x40a090
mov dword [esp + 4], esi
mov dword [esp], str._04x
call fcn.00401440
mov dword [ebp - 0xb8], eax
jmp 0x40a048
mov eax, dword [ebp - 0x6c]
mov dword [esp], str._04x
mov dword [esp + 4], eax
call fcn.00401440
jmp 0x40a27c
mov eax, dword [ebp - 0x50]
mov dword [esp], str._04x
mov dword [esp + 4], eax
call fcn.00401440
mov dword [ebp - 0x78], eax
jmp 0x40a245
mov eax, dword [ebp - 0x94]
mov dword [esp], str._04x
mov dword [esp + 4], eax
call fcn.00401440
mov esi, eax
jmp 0x40a20b
mov esi, str._null_
jmp 0x40a20b
mov eax, str._invalid_
jmp 0x409ef5
mov dword [esp + 4], ebx
mov dword [esp], str._04x
call fcn.00401440
jmp 0x409ef5
mov edx, dword [ecx + 4]
cmp esi, edx
je 0x40a5fd
mov eax, dword [esi]
and dword [eax + 0xc], 0xfffffffe
mov eax, dword [esi]
mov eax, dword [eax]
or dword [eax + 0xc], 1
mov eax, dword [esi]
mov eax, dword [eax]
mov ecx, dword [eax]
mov edx, dword [eax + 8]
test ecx, ecx
je 0x40a5f8
cmp eax, dword [ecx + 4]
je 0x40a5f3
mov dword [ecx + 8], edx
mov ecx, dword [edx + 4]
mov dword [eax + 8], ecx
test ecx, ecx
je 0x40a5e5
mov dword [ecx], eax
mov dword [edx + 4], eax
mov ecx, dword [eax]
mov dword [edx], ecx
mov dword [eax], edx
jmp 0x409e71
mov dword [ecx + 4], edx
jmp 0x40a5d9
mov dword [ebp - 0x2c], edx
jmp 0x40a5d9
mov dword [eax + 8], edx
mov eax, dword [edx + 8]
mov dword [ecx + 4], eax
test eax, eax
je 0x40a60c
mov dword [eax], ecx
mov dword [edx + 8], ecx
mov eax, dword [ecx]
mov esi, ecx
mov dword [edx], eax
mov dword [ecx], edx
jmp 0x40a5b6
call edi
mov eax, dword [ebp - 0xb0]
mov dword [esp], eax
mov eax, dword [sym.imp.advapi32.dll_RegCloseKey]
mov dword [ebp - 0xbc], eax
call eax
mov ecx, dword [ebp - 0xc0]
sub esp, 4
test ecx, ecx
jne 0x409372
jmp 0x409c46