Function at 0x409a80
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 edi, dword [section..data]
mov ebx, dword [ecx + 8]
test edi, edi
je 0x409dc8
mov eax, dword [sym.imp.ucrtbase.dll__wgetenv]
mov dword [esp], str.WINECONFIGDIR
mov dword [ebp - 0x64], eax
call eax
test eax, eax
je 0x409ac7
cmp word [eax], 0x5c
je 0x40a05f
mov dword [esp + 4], eax
mov dword [esp], str._swindatacxmenu
call fcn.00403040
mov dword [0x41b228], eax
mov dword [esp], 0
call dword [sym.imp.ole32.dll_CoInitialize]
sub esp, 4
test eax, eax
js 0x40a046
mov dword [ebp - 0x4c], ebx
test ebx, ebx
je 0x40b001
lea eax, [ebp - 0x38]
mov dword [ebp - 0x58], 0
movd xmm0, eax
mov dword [ebp - 0x6c], 0
punpckldq xmm0, xmm0
mov dword [ebp - 0x60], 0
movq qword [ebp - 0x78], xmm0
jmp 0x409b49
mov ebx, dword [section..data]
test ebx, ebx
je 0x409d18
mov ebx, dword [ebp - 0x4c]
test ebx, ebx
je 0x409cd8
cmp word [ebx], 0
je 0x409cd8
lea eax, [ebp - 0x4c]
call fcn.00402900
mov ebx, eax
test eax, eax
je 0x409cd8
mov dword [esp], eax
mov eax, dword [sym.imp.ucrtbase.dll_wcscmp]
mov dword [esp + 4], 0x410542
mov dword [ebp - 0x50], eax
call eax
test eax, eax
je 0x409b30
mov dword [esp + 4], 0x410b78
mov dword [esp], ebx
mov eax, dword [ebp - 0x50]
call eax
test eax, eax
jne 0x409cf0
mov eax, dword [section..data]
mov dword [ebp - 0x50], eax
test eax, eax
jne 0x409b3e
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 0x40a2ec
mov eax, dword [ebp - 0x30]
mov dword [ebp - 0x54], eax
test eax, eax
je 0x409b3e
lea esi, [esi]
nop
mov dword [ebp - 0x40], 0x1000
mov edi, 0x1000
mov dword [ebp - 0x3c], 0x1000
jmp 0x409c16
mov eax, dword [ebp - 0x40]
shl dword [ebp - 0x3c], 1
lea edi, [eax + eax]
mov dword [ebp - 0x40], edi
mov dword [esp], esi
call dword [sym.imp.ucrtbase.dll_free]
mov dword [esp], ebx
call dword [sym.imp.ucrtbase.dll_free]
lea eax, [edi + edi]
mov dword [esp], eax
call dword [sym.imp.ucrtbase.dll_malloc]
mov esi, eax
test eax, eax
je 0x40b12d
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 0x40b12d
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 - 0x54]
mov dword [esp], eax
call dword [sym.imp.advapi32.dll_RegEnumValueW]
sub esp, 0x20
cmp eax, 0xea
je 0x409bf8
test eax, eax
je 0x409f90
cmp eax, 0x103
je 0x409ca7
test byte [0x40d014], 2
jne 0x409fe8
mov edi, dword [sym.imp.ucrtbase.dll_free]
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]
mov ebx, dword [ebp - 0x4c]
sub esp, 4
test ebx, ebx
jne 0x409b49
lea esi, [esi]
call dword [sym.imp.ole32.dll_CoUninitialize]
mov eax, dword [ebp - 0x58]
lea esp, [ebp - 0x10]
pop ecx
pop ebx
pop esi
pop edi
pop ebp
lea esp, [ecx - 4]
ret 0x10
mov dword [esp + 4], 0x410bbc
mov dword [esp], ebx
mov eax, dword [ebp - 0x50]
call eax
test eax, eax
jne 0x409fc0
mov dword [ebp - 0x60], 1
jmp 0x409b3e
lea eax, [ebp - 0x30]
mov dword [esp + 4], 0x410548
mov dword [esp + 8], eax
mov eax, dword [sym.imp.advapi32.dll_RegCreateKeyW]
mov dword [esp], 0x80000001
mov dword [ebp - 0x68], eax
call eax
sub esp, 0xc
test eax, eax
jne 0x409f04
mov ebx, dword [ebp - 0x30]
test ebx, ebx
je 0x409f04
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 0x409ef8
movzx eax, byte [ebp - 0x30]
cmp al, 0x59
je 0x409ef8
ja 0x409ee8
cmp al, 0x31
je 0x409ef8
cmp al, 0x54
je 0x409ef8
mov dword [esp], ebx
call dword [sym.imp.advapi32.dll_RegCloseKey]
sub esp, 4
jmp 0x409b3e
mov dword [esp + 0x10], 0x41b020
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 0x40a053
mov eax, dword [sym.imp.ucrtbase.dll__wgetenv]
mov dword [esp], str.XDG_CONFIG_HOME
mov dword [ebp - 0x64], eax
call eax
test eax, eax
je 0x40a360
mov dword [esp + 4], eax
mov dword [esp], str.__unix_s_menus_applications_merged
call fcn.00403040
movzx ecx, word [eax]
mov dword [0x41b22c], eax
mov edx, eax
test cx, cx
je 0x409e5a
lea esi, [esi]
nop
cmp cx, 0x2f
jne 0x409e4e
mov ecx, 0x5c
mov word [edx], cx
movzx ecx, word [edx + 2]
add edx, 2
test cx, cx
jne 0x409e40
mov esi, 0x5c
mov word [eax + 2], si
call fcn.004027f0
mov dword [esp], str.XDG_DATA_HOME
mov eax, dword [ebp - 0x64]
call eax
test eax, eax
je 0x40a33f
mov dword [esp + 4], eax
mov dword [esp], str.__unix_s
call fcn.00403040
movzx ecx, word [eax]
mov dword [0x41b228], eax
mov edx, eax
test cx, cx
je 0x409eba
lea esi, [esi]
nop
cmp cx, 0x2f
jne 0x409eae
mov esi, 0x5c
mov word [edx], si
movzx ecx, word [edx + 2]
add edx, 2
test cx, cx
jne 0x409ea0
mov edi, 0x5c
mov word [eax + 2], di
mov dword [esp + 4], eax
mov dword [esp], str._sdesktop_directories
call fcn.00403040
mov esi, eax
call fcn.004027f0
mov dword [esp], esi
call dword [sym.imp.ucrtbase.dll_free]
jmp 0x409adc
cmp al, 0x74
je 0x409ef8
cmp al, 0x79
jne 0x409db1
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]
mov dword [ebp - 0x48], eax
lea eax, [ebp - 0x48]
sub esp, 0x10
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 0x40a0b0
test byte [0x40d014], 2
jne 0x40a4a0
mov eax, dword [ebp - 0x48]
mov dword [esp], eax
call dword [sym.imp.kernel32.dll_CloseHandle]
sub esp, 4
jmp 0x409b3e
mov dword [esp], ebx
call dword [sym.imp.kernel32.dll_GetFileAttributesW]
sub esp, 4
cmp eax, 0xffffffff
je 0x40a015
add dword [ebp - 0x50], 1
mov dword [esp], esi
mov esi, dword [sym.imp.ucrtbase.dll_free]
call esi
mov dword [esp], ebx
call esi
jmp 0x409be0
mov dword [esp + 4], 0x410bc2
mov dword [esp], ebx
mov eax, dword [ebp - 0x50]
call eax
test eax, eax
jne 0x40a2fb
mov dword [ebp - 0x6c], 1
jmp 0x409b3e
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], 0x40d014
mov dword [esp], 1
call fcn.00402c50
jmp 0x409ca7
test byte [0x40d014], 8
jne 0x40a25f
mov dword [esp], esi
call dword [sym.imp.kernel32.dll_DeleteFileW]
sub esp, 4
mov dword [esp + 4], esi
mov eax, dword [ebp - 0x54]
mov dword [esp], eax
call dword [sym.imp.advapi32.dll_RegDeleteValueW]
sub esp, 8
jmp 0x409fa5
test byte [0x40d014], 2
jne 0x40a2bf
mov dword [ebp - 0x58], 1
jmp 0x409cde
cmp word [eax + 2], 0x3f
jne 0x409ac7
cmp word [eax + 4], 0x3f
jne 0x409ac7
cmp word [eax + 6], 0x5c
jne 0x409ac7
cmp word [eax + 8], 0
je 0x409ac7
cmp word [eax + 0xa], 0x3a
jne 0x409ac7
cmp word [eax + 0xc], 0x5c
jne 0x409ac7
add eax, 8
jmp 0x409ac7
mov eax, dword [0x41b228]
mov dword [esp], str._smime
mov dword [esp + 4], eax
call fcn.00403040
mov dword [ebp - 0x9c], eax
mov dword [esp + 4], eax
mov dword [esp], str._spackages
call fcn.00403040
mov dword [ebp - 0xa0], eax
call fcn.004027f0
mov eax, dword [0x41b228]
mov dword [esp], str._s_applications
mov dword [esp + 4], eax
call fcn.00403040
mov dword [ebp - 0x88], eax
call fcn.004027f0
movq xmm2, qword [ebp - 0x78]
mov dword [ebp - 0x2c], 0
mov dword [ebp - 0x30], 0x4028e0
movq qword [ebp - 0x38], xmm2
mov dword [esp], str.XDG_DATA_DIRS
mov edi, dword [ebp - 0x64]
call edi
test eax, eax
je 0x40ae36
mov dword [esp], str.XDG_DATA_DIRS
call edi
mov ebx, eax
test eax, eax
je 0x40a148
call fcn.004032c0
mov ebx, eax
mov eax, dword [0x41b228]
lea edx, [ebp - 0x38]
call fcn.004039b0
test eax, eax
jne 0x40a4c9
mov edi, dword [sym.imp.ucrtbase.dll_free]
mov dword [esp], ebx
call edi
lea eax, [ebp - 0x38]
call fcn.00402720
test byte [0x40d014], 2
jne 0x40a3fd
mov dword [ebp - 0x84], 0
lea eax, [ebp - 0x30]
mov dword [esp + 4], 0x410548
mov dword [esp + 8], eax
mov dword [esp], 0x80000001
mov eax, dword [ebp - 0x68]
call eax
sub esp, 0xc
mov esi, eax
test eax, eax
jne 0x40ae00
mov eax, dword [ebp - 0x30]
mov dword [ebp - 0x50], eax
test eax, eax
je 0x40ae00
mov dword [ebp - 0x54], 0
jmp 0x40a1dd
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.004031d0
mov ebx, eax
test eax, eax
je 0x40a426
mov edx, eax
mov ecx, str.open
mov eax, 1
call fcn.00403420
test eax, eax
jne 0x40a1d0
mov eax, dword [ebp - 0x50]
mov ecx, str.DesktopFile
mov edx, ebx
call fcn.004038b0
mov dword [ebp - 0x54], eax
test eax, eax
je 0x40a238
test byte [0x40d014], 8
jne 0x40ad38
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 0x40a1d8
mov eax, esi
shr eax, 0x10
test eax, eax
je 0x40a3e8
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 0x40a292
mov eax, esi
call fcn.00402980
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], 0x40d014
mov dword [esp], 3
call fcn.00402c50
jmp 0x40a022
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], 0x40d014
mov dword [esp], 1
call fcn.00402c50
jmp 0x40a053
mov edx, dword fs:[0x18]
mov dword [edx + 0x34], eax
jmp 0x409b3e
mov dword [esp + 4], 0x410bc8
mov dword [esp], ebx
mov eax, dword [ebp - 0x50]
call eax
test eax, eax
jne 0x40a381
lea eax, [ebp - 0x4c]
call fcn.00402900
mov ebx, eax
test eax, eax
je 0x409b3e
lea eax, [ebp - 0x4c]
call fcn.00402900
mov edx, eax
test eax, eax
je 0x409b3e
mov eax, ebx
call fcn.00406e90
jmp 0x409b3e
mov dword [esp], str.WINEHOMEDIR
mov eax, dword [ebp - 0x64]
call eax
mov dword [esp], str._s_.local_share
mov dword [esp + 4], eax
call fcn.00403040
jmp 0x409e8c
mov dword [esp], str.WINEHOMEDIR
mov eax, dword [ebp - 0x64]
call eax
mov dword [esp], str._s_.config_menus_applications_merged
mov dword [esp + 4], eax
call fcn.00403040
jmp 0x409e29
mov esi, dword [sym.imp.kernel32.dll_lstrcmpW]
mov dword [esp + 4], str.__cx_all_menus
mov dword [esp], ebx
call esi
sub esp, 8
test eax, eax
jne 0x40a3c1
call fcn.00402510
test eax, eax
jne 0x409b3e
test byte [0x40d014], 2
jne 0x40b6db
mov dword [ebp - 0x58], 1
jmp 0x409b3e
mov dword [esp + 4], str.__cx_dump_menus
mov dword [esp], ebx
call esi
sub esp, 8
test eax, eax
jne 0x40b084
mov dword [section..bss], 1
jmp 0x409b3e
mov dword [esp + 4], esi
mov dword [esp], str._04x
call fcn.00402b40
jmp 0x40a292
mov dword [esp + 0xc], str.could_not_build_native_MIME_types_n
mov dword [esp + 8], str.generate_associations
mov dword [esp + 4], 0x40d014
mov dword [esp], 1
call fcn.00402c50
jmp 0x40a17d
mov eax, dword [ebp - 0x50]
mov dword [esp], eax
call dword [sym.imp.advapi32.dll_RegCloseKey]
mov ecx, dword [ebp - 0x54]
or dword [ebp - 0x84], ecx
sub esp, 4
mov ecx, dword [ebp - 0x84]
test ecx, ecx
jne 0x40ad98
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 - 0x88]
mov dword [esp], eax
call edi
jmp 0x409b3e
mov dword [esp + 0xc], str.failed_wait_for_semaphore_n
mov dword [esp + 8], str.RefreshFileTypeAssociations
mov dword [esp + 4], 0x40d014
mov dword [esp], 1
call fcn.00402c50
jmp 0x409f7a
lea eax, [ebp - 0x3c]
mov dword [esp + 4], 0x410638
mov dword [esp + 8], eax
mov eax, dword [sym.imp.ucrtbase.dll_wcstok]
mov dword [esp], ebx
mov dword [ebp - 0x54], eax
call eax
test eax, eax
je 0x40b919
mov edi, dword [sym.imp.ucrtbase.dll_free]
mov dword [ebp - 0x5c], ebx
lea esi, [esi]
lea esi, [esi]
mov dword [esp + 4], eax
mov dword [esp], 0x41063c
call fcn.00403040
movzx edx, word [eax]
mov esi, eax
test dx, dx
je 0x40a53a
lea esi, [esi]
cmp dx, 0x2f
jne 0x40a52e
mov ecx, 0x5c
mov word [eax], cx
movzx edx, word [eax + 2]
add eax, 2
test dx, dx
jne 0x40a520
lea edx, [esi + 0x12]
cmp edx, eax
jae 0x40a550
cmp word [eax - 2], 0x5c
jne 0x40a550
xor edx, edx
mov word [eax - 2], dx
nop
lea edx, [ebp - 0x38]
mov eax, esi
call fcn.004039b0
mov dword [esp], esi
mov ebx, eax
call edi
test ebx, ebx
je 0x40aff4
lea eax, [ebp - 0x3c]
mov dword [esp + 4], 0x410638
mov dword [esp + 8], eax
mov dword [esp], 0
mov eax, dword [ebp - 0x54]
call eax
test eax, eax
jne 0x40a500
mov ebx, dword [ebp - 0x5c]
mov dword [esp], ebx
call edi
mov dword [ebp - 0x84], 0
mov dword [ebp - 0x5c], 0
jmp 0x40a60c
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 esi, dword [ebp - 0x54]
mov dword [esp], 0x80000000
mov dword [esp + 4], esi
call dword [sym.imp.advapi32.dll_RegGetValueW]
sub esp, 0x1c
test eax, eax
je 0x40a82b
cmp word [esi], 0x2e
je 0x40a62a
lea esi, [esi]
mov eax, dword [ebp - 0x54]
mov dword [esp], eax
call edi
add dword [ebp - 0x5c], 1
mov edx, dword [ebp - 0x5c]
mov eax, 0x80000000
call fcn.004031d0
mov dword [ebp - 0x54], eax
test eax, eax
je 0x40a837
cmp word [eax], 0x2e
jne 0x40a5b0
mov dword [ebp - 0x7c], 0
mov dword [esp + 4], str..bat
mov esi, dword [sym.imp.ucrtbase.dll__wcsicmp]
mov ebx, dword [ebp - 0x54]
mov dword [esp], ebx
mov dword [ebp - 0x80], esi
call esi
test eax, eax
je 0x40a600
mov dword [esp + 4], str..com
mov dword [esp], ebx
call esi
test eax, eax
je 0x40a600
mov dword [esp + 4], str..exe
mov dword [esp], ebx
call esi
test eax, eax
je 0x40a600
mov dword [esp + 4], str..msi
mov dword [esp], ebx
call esi
test eax, eax
je 0x40a600
mov dword [esp + 4], str..url
mov dword [esp], ebx
call esi
test eax, eax
je 0x40a600
mov dword [esp + 4], str.file
mov dword [esp], ebx
call esi
test eax, eax
je 0x40a600
mov ecx, str.open
mov edx, ebx
mov eax, 1
call fcn.00403420
mov dword [ebp - 0x8c], eax
test eax, eax
je 0x40a7a2
lea eax, [ebp - 0x3c]
mov dword [esp + 4], 0x410548
mov dword [esp + 8], eax
mov dword [esp], 0x80000001
mov eax, dword [ebp - 0x68]
call eax
sub esp, 0xc
test eax, eax
jne 0x40a74a
mov ebx, dword [ebp - 0x3c]
test ebx, ebx
je 0x40a74a
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 - 0x70], eax
call eax
sub esp, 0x1c
test eax, eax
je 0x40b00d
mov dword [esp], ebx
call dword [sym.imp.advapi32.dll_RegCloseKey]
sub esp, 4
mov esi, str.ieframe.dll
mov dword [ebp - 0x70], 0
mov dword [ebp - 0x90], edi
mov ebx, dword [sym.imp.ucrtbase.dll_wcsstr]
mov edi, esi
mov esi, dword [ebp - 0x8c]
jmp 0x40a787
mov dword [esp], edi
call dword [sym.imp.ucrtbase.dll_wcslen]
lea edi, [edi + eax*2 + 2]
cmp word [edi], 0
je 0x40a8ba
mov dword [esp + 4], edi
mov dword [esp], esi
call ebx
test eax, eax
je 0x40a770
mov eax, dword [ebp - 0x70]
mov edi, dword [ebp - 0x90]
mov dword [esp], eax
call edi
mov dword [ebp - 0x80], 0
xor esi, esi
mov dword [ebp - 0x70], 0
mov dword [ebp - 0x94], 0
mov dword [ebp - 0x98], 0
mov dword [ebp - 0x90], 0
mov dword [ebp - 0xa4], 0
mov eax, dword [ebp - 0x8c]
mov dword [esp], eax
call edi
mov eax, dword [ebp - 0xa4]
mov dword [esp], eax
call edi
mov dword [esp], esi
call edi
mov eax, dword [ebp - 0x90]
mov dword [esp], eax
call edi
mov eax, dword [ebp - 0x98]
mov dword [esp], eax
call edi
mov eax, dword [ebp - 0x94]
mov dword [esp], eax
call edi
mov eax, dword [ebp - 0x70]
mov dword [esp], eax
call edi
mov eax, dword [ebp - 0x80]
mov dword [esp], eax
call edi
jmp 0x40a600
mov dword [ebp - 0x7c], 1
jmp 0x40a631
mov eax, dword [ebp - 0x2c]
test eax, eax
je 0x40a8ad
nop
mov esi, eax
mov eax, dword [eax + 4]
test eax, eax
jne 0x40a840
mov eax, dword [esi + 8]
test eax, eax
jne 0x40a840
mov edx, dword [esi]
test edx, edx
je 0x40a89b
mov eax, dword [edx + 8]
cmp eax, esi
je 0x40a897
lea esi, [esi]
test eax, eax
je 0x40a897
lea esi, [esi]
mov ebx, eax
mov eax, dword [eax + 4]
test eax, eax
jne 0x40a868
mov eax, dword [ebx + 8]
test eax, eax
jne 0x40a868
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 0x40a89d
mov eax, dword [edx + 8]
mov esi, ebx
cmp eax, esi
jne 0x40a860
mov ebx, edx
jmp 0x40a878
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.00402720
jmp 0x40a187
mov eax, dword [ebp - 0x70]
mov edi, dword [ebp - 0x90]
mov dword [esp], eax
call edi
mov esi, dword [ebp - 0x54]
xor ecx, ecx
mov eax, 0xf
mov edx, esi
call fcn.00403420
mov dword [ebp - 0x98], eax
mov eax, dword [ebp - 0x7c]
test eax, eax
je 0x40ae47
mov dword [esp + 4], esi
mov dword [esp], str.x_scheme_handler__s
call fcn.00403040
mov dword [ebp - 0x80], 0
mov dword [ebp - 0x70], eax
mov dword [ebp - 0x94], 0
mov dword [ebp - 0x90], 0
mov edx, dword [ebp - 0x54]
mov ecx, str.open
mov eax, 2
call fcn.00403420
mov edx, eax
mov dword [ebp - 0xa4], eax
test eax, eax
je 0x40b393
xor eax, eax
call fcn.00403100
test eax, eax
mov esi, eax
setne byte [ebp - 0xac]
mov ebx, dword [ebp - 0x54]
mov ecx, str.open
mov eax, 4
mov edx, ebx
call fcn.00403420
test eax, eax
mov ecx, eax
mov eax, str.A_Wine_application
cmovne eax, ecx
mov dword [ebp - 0xa8], eax
lea eax, [ebp - 0x3c]
mov dword [esp + 8], eax
mov dword [esp + 4], 0x410548
mov dword [esp], 0x80000001
mov eax, dword [ebp - 0x68]
call eax
sub esp, 0xc
test eax, eax
jne 0x40b347
mov eax, dword [ebp - 0x3c]
mov dword [ebp - 0xb0], eax
test eax, eax
je 0x40b347
mov edx, ebx
mov ecx, str.MimeType
call fcn.004038b0
mov dword [ebp - 0xb4], 1
mov edx, eax
test eax, eax
je 0x40a9ee
mov eax, dword [ebp - 0x70]
mov dword [esp], edx
mov dword [esp + 4], eax
mov eax, dword [ebp - 0x50]
mov dword [ebp - 0xb8], edx
call eax
mov edx, dword [ebp - 0xb8]
test eax, eax
setne al
movzx eax, al
mov dword [ebp - 0xb4], eax
mov dword [esp], edx
call edi
mov eax, dword [ebp - 0x80]
test eax, eax
je 0x40aa41
mov edx, dword [ebp - 0x54]
mov ecx, str.ProgID
mov eax, dword [ebp - 0xb0]
call fcn.004038b0
mov edx, eax
test eax, eax
je 0x40aa32
mov eax, dword [ebp - 0x80]
mov dword [esp], edx
mov dword [esp + 4], eax
mov eax, dword [ebp - 0x50]
mov dword [ebp - 0xb8], edx
call eax
mov edx, dword [ebp - 0xb8]
test eax, eax
je 0x40aa3c
mov dword [ebp - 0xb4], 1
mov dword [esp], edx
call edi
mov edx, dword [ebp - 0x54]
mov ecx, str.AppName
mov eax, dword [ebp - 0xb0]
call fcn.004038b0
mov edx, eax
test eax, eax
je 0x40aa7c
mov eax, dword [ebp - 0xa8]
mov dword [esp], edx
mov dword [esp + 4], eax
mov eax, dword [ebp - 0x50]
mov dword [ebp - 0xb8], edx
call eax
mov edx, dword [ebp - 0xb8]
test eax, eax
je 0x40aa86
mov dword [ebp - 0xb4], 1
mov dword [esp], edx
call edi
mov ebx, dword [ebp - 0xb0]
mov ecx, str.OpenWithIcon
mov edx, dword [ebp - 0x54]
mov eax, ebx
call fcn.004038b0
test eax, eax
mov edx, eax
setne al
cmp al, byte [ebp - 0xac]
je 0x40b752
mov dword [esp], edx
call edi
mov eax, dword [sym.imp.advapi32.dll_RegCloseKey]
mov dword [esp], ebx
mov dword [ebp - 0xc0], eax
call eax
sub esp, 4
mov edx, dword [ebp - 0x7c]
mov eax, dword [ebp - 0x54]
test edx, edx
je 0x40b72d
mov dword [esp + 8], eax
mov eax, dword [ebp - 0x88]
mov dword [esp], str._swine_protocol__s.desktop
mov dword [esp + 4], eax
call fcn.00403040
mov dword [ebp - 0x7c], eax
mov dword [esp], str.WINECONFIGDIR
mov eax, dword [ebp - 0x64]
call eax
mov dword [ebp - 0xc4], eax
test byte [0x40d014], 8
jne 0x40b517
mov dword [esp + 4], 0x40fc02
mov eax, dword [ebp - 0x7c]
mov dword [esp], eax
call dword [sym.imp.ucrtbase.dll__wfopen]
mov ebx, eax
test eax, eax
je 0x40b4f0
mov dword [esp + 4], str._Desktop_Entry__n
mov dword [esp], eax
call fcn.004028a0
mov dword [esp + 4], str.TypeApplication_n
mov dword [esp], ebx
call fcn.004028a0
mov eax, dword [ebp - 0xa8]
mov dword [esp], eax
call fcn.004062f0
mov dword [esp + 4], str.Name_s_n
mov dword [esp + 8], eax
mov dword [esp], ebx
call fcn.004028a0
mov eax, dword [ebp - 0x70]
mov dword [esp], eax
call fcn.004062f0
mov dword [esp + 4], str.MimeType_s__n
mov dword [esp + 8], eax
mov dword [esp], ebx
call fcn.004028a0
mov eax, dword [ebp - 0xc4]
test eax, eax
je 0x40b93e
mov dword [esp], eax
call sub.kernel32.dll_wine_get_unix_file_name
mov dword [esp + 8], eax
mov dword [ebp - 0x84], eax
mov dword [esp + 4], str.Execenv_WINEPREFIX__s__wine_start
mov dword [esp], ebx
call fcn.004028a0
mov edx, dword [ebp - 0x84]
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 - 0x80]
test eax, eax
je 0x40b929
call fcn.004063e0
mov dword [esp + 4], str._ProgIDOpen__s___f_n
mov dword [esp + 8], eax
mov dword [esp], ebx
call fcn.004028a0
mov dword [esp + 4], str.NoDisplaytrue_n
mov dword [esp], ebx
call fcn.004028a0
mov dword [esp + 4], str.StartupNotifytrue_n
mov dword [esp], ebx
call fcn.004028a0
test esi, esi
je 0x40ac52
mov dword [esp], esi
call fcn.004062f0
mov dword [esp + 4], str.Icon_s_n
mov dword [esp + 8], eax
mov dword [esp], ebx
call fcn.004028a0
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], 0x410548
mov dword [esp], 0x80000001
mov eax, dword [ebp - 0x68]
call eax
sub esp, 0xc
test eax, eax
jne 0x40bd03
mov eax, dword [ebp - 0x3c]
mov dword [ebp - 0x84], eax
test eax, eax
je 0x40bd03
lea eax, [ebp - 0x40]
mov dword [esp + 8], eax
mov eax, dword [ebp - 0x54]
mov dword [esp + 4], eax
mov eax, dword [ebp - 0x84]
mov dword [esp], eax
mov eax, dword [ebp - 0x68]
call eax
sub esp, 0xc
test eax, eax
jne 0x40bccd
mov ecx, dword [ebp - 0x70]
cmp word [ecx], 0
mov eax, ecx
je 0x40acd4
add eax, 2
cmp word [eax], 0
jne 0x40accb
mov ecx, dword [ebp - 0x70]
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 - 0x80]
sub esp, 0x18
test eax, eax
je 0x40b7c3
cmp word [eax], 0
je 0x40b78b
add eax, 2
cmp word [eax], 0
jne 0x40ad23
jmp 0x40b78e
mov eax, ebx
shr eax, 0x10
test eax, eax
je 0x40b147
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 0x40ad6b
mov eax, ebx
call fcn.00402980
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], 0x40d014
mov dword [esp], 3
call fcn.00402c50
jmp 0x40a229
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 - 0x88]
mov dword [ebp - 0x30], str.update_desktop_database
sub esp, 8
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 0x40a44c
test byte [0x40d014], 2
je 0x40a43e
mov dword [esp + 0xc], str.could_not_open_file_associations_key_n
mov dword [esp + 8], str.cleanup_associations
mov dword [esp + 4], 0x40d014
mov dword [esp], 1
call fcn.00402c50
jmp 0x40a43e
mov eax, str._usr_local_share_:_usr_share_
call fcn.004032c0
mov ebx, eax
jmp 0x40a148
mov ebx, dword [ebp - 0x54]
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.00403420
xor ecx, ecx
mov edx, ebx
mov dword [ebp - 0x90], eax
mov eax, 0xe
call fcn.00403420
mov dword [ebp - 0x94], eax
test eax, eax
je 0x40b15c
mov eax, dword [ebp - 0x94]
mov dword [esp], eax
call esi
mov eax, dword [ebp - 0x38]
lea ecx, [ebp - 0x38]
lea esi, [eax - 8]
cmp ecx, eax
je 0x40b3af
xor ecx, ecx
mov dword [ebp - 0x70], edi
xor ebx, ebx
mov edi, esi
mov esi, ecx
mov eax, dword [edi + 4]
mov dword [esp + 4], eax
mov eax, dword [ebp - 0x54]
mov dword [esp], eax
call dword [sym.imp.shlwapi.dll_PathMatchSpecW]
sub esp, 8
test eax, eax
je 0x40aef5
test esi, esi
je 0x40afc5
mov ecx, dword [edi + 4]
cmp word [ecx], 0
je 0x40b458
mov eax, ecx
lea esi, [esi]
add eax, 2
cmp word [eax], 0
jne 0x40aee0
sub eax, ecx
sar eax, 1
cmp ebx, eax
jl 0x40b124
mov eax, dword [edi + 8]
lea ecx, [ebp - 0x38]
lea edi, [eax - 8]
cmp ecx, eax
jne 0x40aeac
mov edi, dword [ebp - 0x70]
test esi, esi
je 0x40b3a1
mov eax, esi
call fcn.004032c0
mov dword [ebp - 0x70], eax
test eax, eax
je 0x40b3a1
mov edx, dword [ebp - 0x54]
xor ecx, ecx
mov eax, 0x80000000
call fcn.004038b0
mov dword [ebp - 0x80], eax
test eax, eax
je 0x40afb4
mov dword [esp + 8], eax
mov eax, dword [ebp - 0x70]
mov dword [esp], str._s__s
mov dword [esp + 4], eax
call fcn.00403040
mov edx, dword [ebp - 0x2c]
mov esi, eax
mov dword [ebp - 0xa8], edx
test edx, edx
je 0x40be2d
mov eax, dword [ebp - 0x30]
mov ebx, edx
mov dword [ebp - 0xa4], eax
jmp 0x40af7d
mov eax, dword [ebx + 4]
cmovns eax, dword [ebx + 8]
mov ebx, eax
test eax, eax
je 0x40b469
mov dword [esp + 4], ebx
mov dword [esp], esi
mov eax, dword [ebp - 0xa4]
call eax
test eax, eax
jne 0x40af6c
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 - 0xa4], 0
xor esi, esi
jmp 0x40a7da
mov ecx, dword [edi + 4]
mov esi, dword [edi]
cmp word [ecx], 0
je 0x40ba42
mov eax, ecx
lea esi, [esi]
lea esi, [esi]
add ecx, 2
cmp word [ecx], 0
jne 0x40afe0
sub ecx, eax
sar ecx, 1
mov ebx, ecx
jmp 0x40aef5
mov ebx, dword [ebp - 0x5c]
mov dword [esp], ebx
call edi
jmp 0x40a168
mov dword [ebp - 0x58], 0
jmp 0x409cd8
mov eax, dword [ebp - 0x44]
mov dword [esp], eax
call dword [sym.imp.ucrtbase.dll_malloc]
mov esi, eax
test eax, eax
je 0x40b12d
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 - 0x70]
call eax
sub esp, 0x1c
test eax, eax
jne 0x40b6c5
mov dword [esp], ebx
call dword [sym.imp.advapi32.dll_RegCloseKey]
mov dword [ebp - 0x70], esi
sub esp, 4
cmp word [esi], 0
jne 0x40a756
mov dword [esp], esi
call edi
jmp 0x40a8c8
cmp word [ebx], 0x2d
je 0x40b3eb
mov edx, dword [ebp - 0x6c]
mov eax, dword [ebp - 0x60]
mov dword [esp], ebx
test edx, edx
mov dword [esp + 4], eax
je 0x40b3e1
call fcn.00409790
test eax, eax
jne 0x409b3e
mov dword [ebp - 0x58], 1
test byte [0x40d014], 2
je 0x409b3e
mov eax, ebx
shr eax, 0x10
test eax, eax
je 0x40be03
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 0x40b0f7
mov eax, ebx
call fcn.00402980
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], 0x40d014
mov dword [esp], 1
call fcn.00402c50
jmp 0x40a3b5
mov esi, dword [edi]
mov eax, ecx
jmp 0x40afe0
test byte [0x40d014], 2
jne 0x40b704
mov dword [esp], 1
call dword [sym.imp.kernel32.dll_ExitProcess]
mov dword [esp + 4], ebx
mov dword [esp], str._04x
call fcn.00402b40
jmp 0x40ad6b
mov eax, dword [ebp - 0x38]
lea ecx, [ebp - 0x38]
lea esi, [eax - 8]
cmp ecx, eax
jne 0x40aea1
mov dword [esp + 4], str..lnk
mov eax, dword [ebp - 0x54]
mov dword [esp], eax
mov eax, dword [ebp - 0x80]
call eax
test eax, eax
je 0x40ba49
mov eax, dword [ebp - 0x54]
mov dword [esp], str.application_x_wine_extension__s
add eax, 2
mov dword [esp + 4], eax
call fcn.00403040
mov dword [ebp - 0x70], eax
mov eax, dword [ebp - 0x98]
test eax, eax
je 0x40b242
mov esi, dword [ebp - 0x70]
test esi, esi
je 0x40bf8f
mov eax, dword [ebp - 0x70]
call fcn.004032c0
mov esi, eax
movzx eax, word [eax]
mov edx, esi
test ax, ax
je 0x40b1e8
cmp ax, 0x2f
jne 0x40b1dc
mov ebx, 0x2d
mov word [edx], bx
movzx eax, word [edx + 2]
add edx, 2
test ax, ax
jne 0x40b1ce
mov dword [esp + 4], 0x2c
mov eax, dword [ebp - 0x98]
mov dword [esp], eax
call dword [sym.imp.ucrtbase.dll_wcsrchr]
xor edx, edx
test eax, eax
je 0x40b229
xor ecx, ecx
add eax, 2
mov word [eax - 2], cx
mov dword [esp + 8], 0xa
mov dword [esp + 4], 0
mov dword [esp], eax
call dword [sym.imp.ucrtbase.dll_wcstol]
mov edx, eax
mov dword [esp], 0
mov eax, dword [ebp - 0x98]
mov ecx, esi
call fcn.00405ae0
mov dword [esp], esi
call edi
test byte [0x40d014], 8
jne 0x40ba71
mov ebx, dword [ebp - 0x54]
lea eax, [ebx + 2]
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.00403040
mov dword [ebp - 0x80], eax
mov dword [esp + 4], 0x40fc02
mov dword [esp], eax
call dword [sym.imp.ucrtbase.dll__wfopen]
mov esi, eax
test eax, eax
je 0x40bb67
mov dword [esp + 4], str.__xml_version_1.0__encoding_UTF_8____n
mov dword [esp], eax
call fcn.004028a0
mov dword [esp + 4], str._mime_info_xmlns_http:__www.freedesktop.org_standards_shared_mime_info___n
mov dword [esp], esi
call fcn.004028a0
mov eax, dword [ebp - 0x70]
call fcn.00406d20
mov dword [esp + 4], str.___mime_type_type__s___n
mov dword [esp + 8], eax
mov dword [esp], esi
call fcn.004028a0
mov eax, ebx
call fcn.00406d20
mov dword [esp + 4], str._____glob_pattern__s____n
mov dword [esp + 8], eax
mov dword [esp], esi
call fcn.004028a0
mov eax, dword [ebp - 0x90]
test eax, eax
je 0x40b307
call fcn.00406d20
mov dword [esp + 4], str._____comment__s__comment__n
mov dword [esp + 8], eax
mov dword [esp], esi
call fcn.004028a0
mov dword [esp + 4], str.____mime_type__n
mov dword [esp], esi
call fcn.004028a0
mov dword [esp + 4], str.__mime_info__n
mov dword [esp], esi
call fcn.004028a0
mov dword [esp], esi
call dword [sym.imp.ucrtbase.dll_fclose]
mov eax, dword [ebp - 0x80]
mov dword [esp], eax
call edi
mov dword [ebp - 0x84], 1
jmp 0x40af1f
test byte [0x40d014], 2
jne 0x40bbd4
movzx ecx, byte [ebp - 0x84]
and byte [ebp - 0xac], cl
cmp byte [ebp - 0xac], 0
je 0x40a7da
mov dword [esp], 0
mov eax, dword [ebp - 0xa4]
mov ecx, esi
xor edx, edx
call fcn.00405ae0
mov dword [ebp - 0x84], 1
jmp 0x40a7da
xor esi, esi
mov byte [ebp - 0xac], 0
jmp 0x40a94c
mov eax, dword [ebp - 0x94]
test eax, eax
je 0x40b16d
mov dword [esp + 4], 0x2f
mov eax, dword [ebp - 0x94]
mov dword [esp], eax
call dword [sym.imp.ucrtbase.dll_wcschr]
test eax, eax
je 0x40b16d
mov eax, dword [ebp - 0x94]
call fcn.004032c0
mov dword [ebp - 0x70], eax
jmp 0x40b1a1
call fcn.00409420
jmp 0x40b0a8
test byte [0x40d014], 2
je 0x409b3e
mov eax, ebx
shr eax, 0x10
test eax, eax
je 0x40be18
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 0x40b42b
mov eax, ebx
call fcn.00402980
mov dword [esp + 0x10], eax
mov dword [esp + 0xc], str.unknown_option__s_n
mov dword [esp + 8], str.wWinMain
mov dword [esp + 4], 0x40d014
mov dword [esp], 1
call fcn.00402c50
jmp 0x409b3e
test ebx, ebx
jns 0x40aef5
mov esi, dword [edi]
xor ebx, ebx
jmp 0x40aef5
mov dword [esp], 0x14
call dword [sym.imp.ucrtbase.dll_malloc]
mov ecx, eax
test eax, eax
je 0x40b12d
mov ebx, dword [ebp - 0xa8]
mov dword [ecx], esi
mov dword [ebp - 0xac], ecx
jmp 0x40b4a7
lea ecx, [ebx + 4]
lea edx, [ebx + 8]
mov eax, ecx
cmovns eax, edx
mov edx, dword [eax]
test edx, edx
je 0x40b953
mov ebx, edx
mov dword [esp + 4], ebx
mov dword [esp], esi
mov eax, dword [ebp - 0xa4]
call eax
test eax, eax
jne 0x40b490
test byte [0x40d014], 2
je 0x40afb4
mov dword [esp + 0xc], str.error_updating_rb_tree_n
mov dword [esp + 8], str.generate_associations
mov dword [esp + 4], 0x40d014
mov dword [esp], 1
call fcn.00402c50
jmp 0x40afb4
test byte [0x40d014], 2
jne 0x40b9ca
movzx ecx, byte [ebp - 0x84]
and byte [ebp - 0xac], cl
mov eax, dword [ebp - 0x7c]
mov dword [esp], eax
call edi
jmp 0x40b361
mov eax, dword [ebp - 0x7c]
test eax, eax
je 0x40bdc9
shr eax, 0x10
test eax, eax
je 0x40bdab
mov dword [esp + 4], 0xffffffff
mov ebx, dword [ebp - 0x7c]
mov dword [esp], ebx
call dword [sym.imp.kernel32.dll_IsBadStringPtrW]
mov dword [ebp - 0xb8], str._invalid_
sub esp, 8
test eax, eax
jne 0x40b55f
mov eax, ebx
call fcn.00402980
mov dword [ebp - 0xb8], eax
test esi, esi
je 0x40bd9c
mov eax, esi
shr eax, 0x10
test eax, eax
je 0x40bd81
mov dword [esp + 4], 0xffffffff
mov dword [esp], esi
call dword [sym.imp.kernel32.dll_IsBadStringPtrW]
mov dword [ebp - 0xb4], str._invalid_
sub esp, 8
test eax, eax
jne 0x40b5a3
mov eax, esi
call fcn.00402980
mov dword [ebp - 0xb4], eax
mov eax, dword [ebp - 0x80]
test eax, eax
je 0x40bd72
shr eax, 0x10
test eax, eax
je 0x40bd54
mov dword [esp + 4], 0xffffffff
mov ebx, dword [ebp - 0x80]
mov dword [esp], ebx
call dword [sym.imp.kernel32.dll_IsBadStringPtrW]
mov dword [ebp - 0xb0], str._invalid_
sub esp, 8
test eax, eax
jne 0x40b5eb
mov eax, ebx
call fcn.00402980
mov dword [ebp - 0xb0], eax
mov eax, dword [ebp - 0x70]
test eax, eax
je 0x40bd45
shr eax, 0x10
test eax, eax
je 0x40bd27
mov dword [esp + 4], 0xffffffff
mov ebx, dword [ebp - 0x70]
mov dword [esp], ebx
call dword [sym.imp.kernel32.dll_IsBadStringPtrW]
mov dword [ebp - 0xbc], str._invalid_
sub esp, 8
test eax, eax
jne 0x40b633
mov eax, ebx
call fcn.00402980
mov dword [ebp - 0xbc], eax
mov eax, dword [ebp - 0xa8]
shr eax, 0x10
test eax, eax
je 0x40bc9f
mov dword [esp + 4], 0xffffffff
mov ebx, dword [ebp - 0xa8]
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 0x40b670
mov eax, ebx
call fcn.00402980
mov ecx, dword [ebp - 0xb8]
mov dword [esp + 0x20], ecx
mov ecx, dword [ebp - 0xb4]
mov dword [esp + 0x1c], ecx
mov ecx, dword [ebp - 0xb0]
mov dword [esp + 0x18], ecx
mov ecx, dword [ebp - 0xbc]
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], 0x40d014
mov dword [esp], 3
call fcn.00402c50
jmp 0x40ab15
mov dword [esp], esi
call edi
mov dword [esp], ebx
call dword [sym.imp.advapi32.dll_RegCloseKey]
sub esp, 4
jmp 0x40a74a
mov dword [esp + 0xc], str.failed_to_build_some_menu_items_n
mov dword [esp + 8], str.wWinMain
mov dword [esp + 4], 0x40d014
mov dword [esp], 1
call fcn.00402c50
jmp 0x40a3b5
mov dword [esp + 0xc], str.out_of_memory_n
mov dword [esp + 8], str.xmalloc
mov dword [esp + 4], 0x40d014
mov dword [esp], 1
call fcn.00402c50
jmp 0x40b13a
add eax, 2
mov dword [esp + 8], eax
mov eax, dword [ebp - 0x88]
mov dword [esp], str._swine_extension__s.desktop
mov dword [esp + 4], eax
call fcn.00403040
mov dword [ebp - 0x7c], eax
jmp 0x40aaf6
test esi, esi
jne 0x40b8d8
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 - 0xc0], eax
call eax
mov eax, dword [ebp - 0xb4]
sub esp, 4
test eax, eax
jne 0x40aacb
jmp 0x40a7da
mov eax, dword [ebp - 0x80]
mov ecx, dword [ebp - 0x80]
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 - 0xa8]
cmp word [eax], 0
je 0x40bcc2
add eax, 2
cmp word [eax], 0
jne 0x40b7d3
mov ecx, dword [ebp - 0xa8]
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 - 0x7c]
sub esp, 0x18
cmp word [eax], 0
je 0x40bcba
add eax, 2
cmp word [eax], 0
jne 0x40b821
mov ecx, dword [ebp - 0x7c]
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
sub esp, 0x18
test esi, esi
je 0x40bc84
cmp word [esi], 0
mov eax, esi
je 0x40b878
add eax, 2
cmp word [eax], 0
jne 0x40b86f
sub eax, esi
mov dword [esp + 0x10], esi
add eax, 2
mov dword [esp + 0xc], 1
mov dword [esp + 0x14], eax
mov dword [esp + 8], 0
mov dword [esp + 4], str.OpenWithIcon
mov eax, dword [ebp - 0x40]
mov dword [esp], eax
mov eax, ebx
call eax
sub esp, 0x18
mov eax, dword [ebp - 0x84]
mov dword [esp], eax
mov ebx, dword [ebp - 0xc0]
call ebx
mov eax, dword [ebp - 0x40]
sub esp, 4
mov dword [esp], eax
call ebx
mov dword [ebp - 0x84], 1
sub esp, 4
jmp 0x40b50a
mov dword [esp], edx
mov dword [esp + 4], esi
mov eax, dword [ebp - 0x50]
mov dword [ebp - 0xb8], edx
call eax
mov edx, dword [ebp - 0xb8]
test eax, eax
mov dword [esp], edx
je 0x40bdd8
call edi
mov eax, dword [ebp - 0xb0]
mov dword [esp], eax
mov eax, dword [sym.imp.advapi32.dll_RegCloseKey]
mov dword [ebp - 0xc0], eax
call eax
push ebx
jmp 0x40aacb
mov edi, dword [sym.imp.ucrtbase.dll_free]
mov dword [esp], ebx
call edi
jmp 0x40a594
mov dword [esp + 4], str.__u_n
mov dword [esp], ebx
call fcn.004028a0
jmp 0x40ac12
mov dword [esp + 4], str.Execwine_start
mov dword [esp], ebx
call fcn.004028a0
jmp 0x40abee
mov ecx, dword [ebp - 0xac]
mov dword [ebp - 0xa8], ebx
lea esi, [ecx + 4]
mov edx, dword [ebp - 0xa8]
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 0x40ba36
test byte [ecx + 0xc], 1
je 0x40ba36
mov eax, dword [ecx]
mov edx, dword [eax + 4]
cmp ecx, edx
je 0x40be69
test edx, edx
je 0x40be96
test byte [edx + 0xc], 1
je 0x40be96
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 0x40b982
mov eax, dword [ebp - 0x7c]
test eax, eax
je 0x40bd1d
shr eax, 0x10
test eax, eax
je 0x40be51
mov dword [esp + 4], 0xffffffff
mov ebx, dword [ebp - 0x7c]
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 0x40ba09
mov eax, ebx
call fcn.00402980
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], 0x40d014
mov dword [esp], 1
call fcn.00402c50
jmp 0x40b4fd
mov eax, dword [ebp - 0x2c]
and dword [eax + 0xc], 0xfffffffe
jmp 0x40a918
xor ebx, ebx
jmp 0x40aef5
mov eax, str.application_x_ms_shortcut
call fcn.004032c0
mov dword [ebp - 0x70], eax
test eax, eax
je 0x40b188
mov eax, dword [ebp - 0x98]
test eax, eax
jne 0x40b1ba
jmp 0x40b242
mov eax, dword [ebp - 0x90]
test eax, eax
je 0x40bc20
shr eax, 0x10
test eax, eax
je 0x40bc67
mov dword [esp + 4], 0xffffffff
mov ebx, dword [ebp - 0x90]
mov esi, str._invalid_
mov dword [esp], ebx
call dword [sym.imp.kernel32.dll_IsBadStringPtrW]
sub esp, 8
test eax, eax
jne 0x40bab6
mov eax, ebx
call fcn.00402980
mov esi, eax
mov eax, dword [ebp - 0x54]
shr eax, 0x10
test eax, eax
je 0x40bc4c
mov dword [esp + 4], 0xffffffff
mov ebx, dword [ebp - 0x54]
mov dword [esp], ebx
call dword [sym.imp.kernel32.dll_IsBadStringPtrW]
mov dword [ebp - 0x80], str._invalid_
sub esp, 8
test eax, eax
jne 0x40baf0
mov eax, ebx
call fcn.00402980
mov dword [ebp - 0x80], eax
mov eax, dword [ebp - 0x70]
test eax, eax
je 0x40bc42
shr eax, 0x10
test eax, eax
je 0x40bc2a
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 0x40bb2f
mov eax, ebx
call fcn.00402980
mov dword [esp + 0x18], esi
mov ecx, dword [ebp - 0x80]
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], 0x40d014
mov dword [esp], 3
call fcn.00402c50
jmp 0x40b24f
test byte [0x40d014], 2
je 0x40b330
mov eax, dword [ebp - 0x80]
test eax, eax
je 0x40bc19
shr eax, 0x10
test eax, eax
je 0x40bc04
mov dword [esp + 4], 0xffffffff
mov esi, dword [ebp - 0x80]
mov dword [esp], esi
call dword [sym.imp.kernel32.dll_IsBadStringPtrW]
push edx
push edx
test eax, eax
jne 0x40bbfd
mov eax, esi
call fcn.00402980
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], 0x40d014
mov dword [esp], 1
call fcn.00402c50
jmp 0x40b330
mov dword [esp + 0xc], str.error_opening_associations_registry_key_n
mov dword [esp + 8], str.has_association_changed
mov dword [esp + 4], 0x40d014
mov dword [esp], 1
call fcn.00402c50
jmp 0x40b354
mov eax, str._invalid_
jmp 0x40bba7
mov eax, dword [ebp - 0x80]
mov dword [esp], str._04x
mov dword [esp + 4], eax
call fcn.00402b40
jmp 0x40bba7
mov eax, str._null_
jmp 0x40bba7
mov esi, str._null_
jmp 0x40bab6
mov eax, dword [ebp - 0x70]
mov dword [esp], str._04x
mov dword [esp + 4], eax
call fcn.00402b40
jmp 0x40bb2f
mov eax, str._null_
jmp 0x40bb2f
mov eax, dword [ebp - 0x54]
mov dword [esp], str._04x
mov dword [esp + 4], eax
call fcn.00402b40
mov dword [ebp - 0x80], eax
jmp 0x40baf0
mov eax, dword [ebp - 0x90]
mov dword [esp], str._04x
mov dword [esp + 4], eax
call fcn.00402b40
mov esi, eax
jmp 0x40bab6
mov dword [esp + 4], str.OpenWithIcon
mov eax, dword [ebp - 0x40]
mov dword [esp], eax
call dword [sym.imp.advapi32.dll_RegDeleteValueW]
push ebx
push ebx
jmp 0x40b8aa
mov eax, dword [ebp - 0xa8]
mov dword [esp], str._04x
mov dword [esp + 4], eax
call fcn.00402b40
jmp 0x40b670
mov eax, dword [ebp - 0x7c]
jmp 0x40b82a
mov eax, dword [ebp - 0xa8]
jmp 0x40b7dc
test byte [0x40d014], 2
je 0x40b8aa
mov dword [esp + 0xc], str.could_not_create_extension_subkey_n
mov dword [esp + 8], str.update_association
mov dword [esp + 4], 0x40d014
mov dword [esp], 1
call fcn.00402c50
jmp 0x40b8aa
test byte [0x40d014], 2
jne 0x40befe
xor eax, eax
mov dword [ebp - 0x84], eax
jmp 0x40b8aa
mov eax, str._null_
jmp 0x40ba09
mov eax, dword [ebp - 0x70]
mov dword [esp], str._04x
mov dword [esp + 4], eax
call fcn.00402b40
mov dword [ebp - 0xbc], eax
jmp 0x40b633
mov dword [ebp - 0xbc], str._null_
jmp 0x40b633
mov eax, dword [ebp - 0x80]
mov dword [esp], str._04x
mov dword [esp + 4], eax
call fcn.00402b40
mov dword [ebp - 0xb0], eax
jmp 0x40b5eb
mov dword [ebp - 0xb0], str._null_
jmp 0x40b5eb
mov dword [esp + 4], esi
mov dword [esp], str._04x
call fcn.00402b40
mov dword [ebp - 0xb4], eax
jmp 0x40b5a3
mov dword [ebp - 0xb4], str._null_
jmp 0x40b5a3
mov eax, dword [ebp - 0x7c]
mov dword [esp], str._04x
mov dword [esp + 4], eax
call fcn.00402b40
mov dword [ebp - 0xb8], eax
jmp 0x40b55f
mov dword [ebp - 0xb8], str._null_
jmp 0x40b55f
call edi
mov eax, dword [ebp - 0xb0]
mov dword [esp], eax
mov eax, dword [sym.imp.advapi32.dll_RegCloseKey]
mov dword [ebp - 0xc0], eax
call eax
push ecx
cmp dword [ebp - 0xb4], 0
jne 0x40aacb
jmp 0x40b354
mov dword [esp + 4], ebx
mov dword [esp], str._04x
call fcn.00402b40
jmp 0x40b0f7
mov dword [esp + 4], ebx
mov dword [esp], str._04x
call fcn.00402b40
jmp 0x40b42b
mov dword [esp], 0x14
call dword [sym.imp.ucrtbase.dll_malloc]
mov ecx, eax
test eax, eax
je 0x40b12d
mov dword [eax], esi
lea esi, [eax + 4]
lea eax, [ebp - 0x2c]
jmp 0x40b962
mov eax, dword [ebp - 0x7c]
mov dword [esp], str._04x
mov dword [esp + 4], eax
call fcn.00402b40
jmp 0x40ba09
mov ebx, dword [eax + 8]
test ebx, ebx
je 0x40bf27
test byte [ebx + 0xc], 1
je 0x40bf27
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 0x40b982
cmp dword [ecx + 4], esi
je 0x40bee2
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 0x40bedd
cmp eax, dword [ecx + 4]
je 0x40bed8
mov dword [ecx + 8], edx
mov ecx, dword [edx + 4]
mov dword [eax + 8], ecx
test ecx, ecx
je 0x40beca
mov dword [ecx], eax
mov dword [edx + 4], eax
mov ecx, dword [eax]
mov dword [edx], ecx
mov dword [eax], edx
jmp 0x40b982
mov dword [ecx + 4], edx
jmp 0x40bebe
mov dword [ebp - 0x2c], edx
jmp 0x40bebe
mov dword [eax + 8], esi
mov eax, dword [esi + 8]
mov dword [ecx + 4], eax
test eax, eax
je 0x40bef1
mov dword [eax], ecx
mov dword [esi + 8], ecx
mov eax, dword [ecx]
mov dword [esi], eax
mov dword [ecx], esi
mov esi, ecx
jmp 0x40be9b
mov dword [esp + 0xc], str.could_not_open_file_associations_key_n
mov dword [esp + 8], str.update_association
mov dword [esp + 4], 0x40d014
mov dword [esp], 1
call fcn.00402c50
jmp 0x40bd10
cmp dword [ecx + 8], esi
je 0x40bf73
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 0x40bf6e
cmp eax, dword [ecx + 4]
je 0x40bf69
mov dword [ecx + 8], edx
mov ecx, dword [edx + 8]
mov dword [eax + 4], ecx
test ecx, ecx
je 0x40bf5b
mov dword [ecx], eax
mov dword [edx + 8], eax
mov ecx, dword [eax]
mov dword [edx], ecx
mov dword [eax], edx
jmp 0x40b982
mov dword [ecx + 4], edx
jmp 0x40bf4f
mov dword [ebp - 0x2c], edx
jmp 0x40bf4f
mov dword [eax + 4], esi
mov eax, dword [esi + 4]
mov dword [ecx + 8], eax
test eax, eax
je 0x40bf82
mov dword [eax], ecx
mov dword [esi + 4], ecx
mov eax, dword [ecx]
mov dword [esi], eax
mov dword [ecx], esi
mov esi, edx
jmp 0x40bf2c
movzx eax, word [pe_dos_header]
ud2