Function at 0x4027c0
Capabilities:
Accept command line arguments
Delete service
Query or enumerate registry value
Terminate process

Disassembly:
push ebp
mov ebp, esp
push edi
push esi
push ebx
sub esp, 0xa0
mov dword [ebp - 0x34], 0
mov dword [ebp - 0x30], 0
mov dword [ebp - 0x28], 0
call dword [sym.imp.comctl32.dll_InitCommonControls]
call dword [sym.imp.kernel32.dll_GetCommandLineW]
lea ecx, [ebp - 0x28]
lea edx, [ebp - 0x2c]
call sym._process_args
mov eax, dword [ebp - 0x2c]
mov dword [ebp - 0x3c], eax
cmp eax, 1
jg 0x402972
mov dword [esp + 4], 0
mov dword [esp], 5
call sym._MsiSetInternalUI_8
xor eax, eax
mov dword [ebp - 0x60], 0
mov dword [ebp - 0x54], 0
sub esp, 8
mov dword [ebp - 0x4c], 0
mov dword [ebp - 0x90], 0
mov dword [ebp - 0x6c], 0
mov dword [ebp - 0x58], 0
mov dword [ebp - 0x80], 0
mov dword [ebp - 0x8c], 0
mov dword [ebp - 0x94], 0
mov dword [ebp - 0x64], 0
mov dword [ebp - 0x78], 0
mov dword [ebp - 0x70], 0
mov dword [ebp - 0x74], 0
mov dword [ebp - 0x48], 0
mov word [ebp - 0x82], ax
mov dword [ebp - 0x40], 0
mov dword [ebp - 0x7c], 0
mov dword [ebp - 0x5c], 0
xor edi, edi
mov eax, dword [ebp - 0x54]
test eax, eax
jne 0x402fdd
mov eax, dword [ebp - 0x4c]
test eax, eax
jne 0x402f8e
mov eax, dword [ebp - 0x6c]
test eax, eax
jne 0x4032e0
mov eax, dword [ebp - 0x58]
test eax, eax
jne 0x4031dc
mov eax, dword [ebp - 0x78]
test eax, eax
jne 0x403525
mov eax, dword [ebp - 0x80]
test eax, eax
jne 0x403878
mov esi, dword [ebp - 0x40]
test esi, esi
jne 0x403949
mov ebx, dword [ebp - 0x48]
test ebx, ebx
jne 0x40364b
mov ecx, dword [ebp - 0x90]
test ecx, ecx
jne 0x403b4c
mov eax, dword [ebp - 0x7c]
test eax, eax
je 0x403d9b
mov dword [ebp - 0x4c], eax
mov ebx, dword [sym.imp.ucrtbase.dll_free]
test byte [section..data], 1
je 0x402960
mov dword [esp + 0xc], str.Unknown_function__ignoring_n
mov dword [esp + 8], str.WinMain
mov dword [esp + 4], 0x406000
mov dword [esp], 0
call sym._wine_dbg_log.constprop.0
mov eax, dword [ebp - 0x7c]
mov ebx, dword [sym.imp.ucrtbase.dll_free]
mov dword [ebp - 0x4c], eax
lea esi, [esi]
mov dword [esp], edi
call ebx
mov eax, dword [ebp - 0x4c]
lea esp, [ebp - 0xc]
pop ebx
pop esi
pop edi
pop ebp
ret 0x10
mov esi, dword [ebp - 0x28]
mov edx, dword [esi + 4]
mov dword [ebp - 0x38], esi
movzx eax, word [edx]
and eax, 0xfffffffd
cmp ax, 0x2d
jne 0x402a41
lea eax, [edx + 2]
mov edx, 0x408243
call sym._msi_strequal
test eax, eax
je 0x403229
lea eax, [ebp - 0x24]
mov esi, dword [esi + 8]
mov dword [ebp - 0x20], 0
mov dword [ebp - 0x1c], 0
mov dword [esp + 8], eax
mov dword [esp + 4], str.SoftwareMicrosoftWindowsCurrentVersionInstallerRunOnceEntries
mov dword [esp], 0x80000002
call dword [sym.imp.advapi32.dll_RegOpenKeyW]
sub esp, 0xc
test eax, eax
jne 0x4034ba
lea eax, [ebp - 0x20]
mov dword [esp + 0x10], 0
mov dword [esp + 0x14], eax
lea eax, [ebp - 0x1c]
mov dword [esp + 0xc], eax
mov eax, dword [ebp - 0x24]
mov dword [esp + 8], 0
mov dword [esp], eax
mov eax, dword [sym.imp.advapi32.dll_RegQueryValueExW]
mov dword [esp + 4], esi
mov dword [ebp - 0x3c], eax
call eax
sub esp, 0x18
test eax, eax
jne 0x4034ab
cmp dword [ebp - 0x1c], 1
mov edx, dword [ebp - 0x24]
je 0x403409
mov dword [esp], edx
call dword [sym.imp.advapi32.dll_RegCloseKey]
mov dword [ebp - 0x4c], 1
sub esp, 4
jmp 0x402965
mov dword [ebp - 0x3c], 3
xor ebx, ebx
mov edi, 1
mov dword [ebp - 0x60], 0
mov dword [ebp - 0x5c], 5
mov dword [ebp - 0x8c], 0
mov dword [ebp - 0x94], 0
mov dword [ebp - 0x88], 0
mov dword [ebp - 0x64], 0
mov word [ebp - 0x82], bx
mov dword [ebp - 0x74], 0
mov dword [ebp - 0x70], 0
mov dword [ebp - 0x50], 0
mov dword [ebp - 0x7c], 0
mov dword [ebp - 0x90], 0
mov dword [ebp - 0x48], 0
mov dword [ebp - 0x40], 0
mov dword [ebp - 0x80], 0
mov dword [ebp - 0x78], 0
mov dword [ebp - 0x58], 0
mov dword [ebp - 0x6c], 0
mov dword [ebp - 0x4c], 0
mov dword [ebp - 0x68], 0
mov dword [ebp - 0x54], 0
lea esi, [esi]
nop
mov eax, dword [ebp - 0x38]
lea esi, [edi*4]
lea ebx, [eax + esi]
test byte [section..data], 8
jne 0x402b98
mov eax, dword [ebx]
movzx edx, word [eax]
and edx, 0xfffffffd
cmp dx, 0x2d
je 0x402b60
mov edx, str.umtgl
call sym._msi_strequal
test eax, eax
je 0x403ee9
add edi, 1
cmp edi, dword [ebp - 0x3c]
jge 0x403d9b
mov eax, dword [ebp - 0x38]
lea ebx, [eax + esi + 4]
test byte [section..data], 8
jne 0x403e57
mov eax, dword [ebx]
mov dword [ebp - 0x74], 1
mov dword [ebp - 0x6c], 1
mov dword [ebp - 0x50], eax
jmp 0x402b7c
add eax, 2
mov edx, str.regserver
call sym._msi_strequal
test eax, eax
je 0x402c10
mov dword [ebp - 0x40], 1
add edi, 1
cmp edi, dword [ebp - 0x3c]
jge 0x402c4a
mov eax, dword [ebp - 0x28]
mov dword [ebp - 0x38], eax
jmp 0x402af0
mov edx, dword [ebx]
test edx, edx
je 0x402e60
mov eax, edx
shr eax, 0x10
je 0x402e40
mov dword [esp + 4], 0xffffffff
mov dword [esp], edx
mov dword [ebp - 0x44], edx
call dword [sym.imp.kernel32.dll_IsBadStringPtrW]
mov ecx, eax
sub esp, 8
mov eax, str._invalid_
test ecx, ecx
jne 0x402bd7
mov eax, dword [ebp - 0x44]
call sym._wine_dbgstr_wn.part.0.constprop.0
mov dword [esp + 0x14], eax
mov dword [esp + 0x10], edi
mov dword [esp + 0xc], str.argvW__d____s_n
mov dword [esp + 8], str.WinMain
mov dword [esp + 4], 0x406000
mov dword [esp], 3
call sym._wine_dbg_log.constprop.0
jmp 0x402b0a
mov eax, dword [ebx]
movzx edx, word [eax]
and edx, 0xfffffffd
cmp dx, 0x2d
jne 0x402b18
add eax, 2
mov edx, str.unregserver
call sym._msi_strequal
test eax, eax
je 0x402e70
mov dword [ebp - 0x48], 1
add edi, 1
cmp edi, dword [ebp - 0x3c]
jl 0x402b88
movzx eax, byte [ebp - 0x68]
and al, byte [ebp - 0x58]
mov dword [esp + 4], 0
mov byte [ebp - 0x68], al
mov eax, dword [ebp - 0x5c]
mov esi, dword [ebp - 0x34]
mov dword [esp], eax
mov dword [ebp - 0x64], esi
call sym._MsiSetInternalUI_8
sub esp, 8
test esi, esi
je 0x4035b7
mov edx, esi
mov ebx, 1
nop
cmp word [edx + 4], 0
lea ecx, [edx + 4]
je 0x402f50
mov eax, ecx
add eax, 2
cmp word [eax], 0
jne 0x402c90
sub eax, ecx
sar eax, 1
add eax, 3
mov edx, dword [edx]
add ebx, eax
test edx, edx
jne 0x402c80
add ebx, ebx
mov dword [esp], ebx
call dword [sym.imp.ucrtbase.dll_malloc]
mov ebx, dword [ebp - 0x64]
mov dword [ebp - 0x5c], eax
mov esi, eax
jmp 0x402cca
mov ebx, dword [ebx]
test ebx, ebx
je 0x402db4
lea ecx, [ebx + 4]
mov dword [esp + 4], 0x3d
mov dword [esp], ecx
mov dword [ebp - 0x38], ecx
call dword [sym.imp.ucrtbase.dll_wcschr]
mov edi, eax
test eax, eax
je 0x402cc0
mov ecx, dword [ebp - 0x38]
mov eax, 0x20
lea edx, [esi + 2]
mov word [esi], ax
mov esi, edi
sub esi, ecx
mov dword [esp], edx
mov dword [esp + 8], esi
mov dword [esp + 4], ecx
mov dword [ebp - 0x38], edx
call sym._memcpy
mov edx, dword [ebp - 0x38]
mov eax, 0x3d
add edx, esi
mov word [edx], ax
lea eax, [edi + 2]
cmp word [edi + 2], 0x22
mov dword [ebp - 0x38], eax
je 0x402f40
mov dword [ebp - 0x3c], edx
mov dword [esp + 4], 0x20
mov dword [esp], eax
call dword [sym.imp.ucrtbase.dll_wcschr]
mov edx, dword [ebp - 0x3c]
test eax, eax
je 0x402f5a
mov eax, 0x22
lea esi, [edx + 4]
mov word [edx + 2], ax
cmp word [edi + 2], 0
je 0x402d9e
mov edx, 1
mov eax, dword [ebp - 0x38]
lea esi, [esi]
mov ecx, eax
add eax, 2
cmp word [eax], 0
jne 0x402d68
mov eax, dword [ebp - 0x38]
sub ecx, edi
mov dword [esp], esi
mov dword [esp + 8], ecx
mov dword [esp + 4], eax
mov dword [ebp - 0x44], edx
mov dword [ebp - 0x3c], ecx
call sym._memcpy
mov ecx, dword [ebp - 0x3c]
mov edx, dword [ebp - 0x44]
add esi, ecx
test edx, edx
je 0x402cc0
mov edi, 0x22
add esi, 2
mov word [esi - 2], di
mov ebx, dword [ebx]
test ebx, ebx
jne 0x402cca
xor ebx, ebx
mov word [esi], bx
test byte [section..data], 8
jne 0x403060
cmp byte [ebp - 0x68], 0
jne 0x402f6f
mov ecx, dword [ebp - 0x50]
test ecx, ecx
je 0x4028a7
mov esi, dword [ebp - 0x50]
mov dword [esp], esi
call dword [sym.imp.ucrtbase.dll_wcslen]
mov ebx, eax
lea eax, [eax + eax + 2]
mov dword [esp], eax
call dword [sym.imp.ucrtbase.dll_malloc]
mov edi, eax
test eax, eax
je 0x403f2d
cmp word [esi], 0x22
jne 0x402e0d
add dword [ebp - 0x50], 2
sub ebx, 1
mov eax, dword [ebp - 0x50]
mov dword [esp], edi
mov dword [esp + 4], eax
call dword [sym.imp.ucrtbase.dll_wcscpy]
test ebx, ebx
je 0x4028a9
lea eax, [edi + ebx*2 - 2]
cmp word [eax], 0x22
jne 0x4028a9
xor edx, edx
mov word [eax], dx
jmp 0x4028a9
movzx edx, dx
mov dword [esp], str._04x
mov dword [esp + 4], edx
call sym._wine_dbg_sprintf.constprop.0
jmp 0x402bd7
mov eax, str._null_
jmp 0x402bd7
mov eax, dword [ebx]
movzx edx, word [eax]
and edx, 0xfffffffd
cmp dx, 0x2d
jne 0x402b18
add eax, 2
mov edx, str.unregister
call sym._msi_strequal
test eax, eax
jne 0x402c37
mov eax, dword [ebx]
movzx edx, word [eax]
and edx, 0xfffffffd
cmp dx, 0x2d
jne 0x402b18
add eax, 2
mov edx, str.unreg
call sym._msi_strequal
test eax, eax
jne 0x402c37
mov eax, dword [ebx]
movzx edx, word [eax]
and edx, 0xfffffffd
cmp dx, 0x2d
jne 0x402b18
add eax, 2
mov edx, 0x40830f
call sym._msi_strprefix
test eax, eax
je 0x4030f4
mov ecx, dword [ebx]
movzx eax, word [ecx]
mov edx, eax
and edx, 0xfffffffd
cmp dx, 0x2d
je 0x4030ca
mov edx, ecx
mov ebx, 8
test ax, ax
je 0x40323a
mov eax, edx
lea esi, [esi]
nop
add eax, 2
cmp word [eax], 0
jne 0x402f10
sub eax, edx
sar eax, 1
cmp ebx, eax
jge 0x40323a
lea eax, [ecx + ebx*2]
mov dword [ebp - 0x54], 1
mov dword [ebp - 0x50], eax
jmp 0x402b7c
lea esi, [edx + 2]
xor edx, edx
jmp 0x402d61
mov eax, 3
jmp 0x402ca0
lea esi, [edx + 2]
xor edx, edx
cmp word [edi + 2], 0
jne 0x402d61
jmp 0x402cc0
mov edx, dword [ebp - 0x50]
mov dword [ebp - 0x54], 0
xor edi, edi
test edx, edx
jne 0x402ddb
mov eax, dword [ebp - 0x4c]
test eax, eax
je 0x4028bf
cmp word [edi], 0
je 0x402fb4
mov eax, edi
lea esi, [esi]
lea esi, [esi]
add eax, 2
cmp word [eax], 0
jne 0x402fa0
sub eax, edi
cmp eax, 0x4c
je 0x4034ce
mov eax, dword [ebp - 0x70]
mov dword [esp], edi
mov dword [esp + 4], eax
call sym._MsiReinstallProductW_8
sub esp, 8
cmp eax, 2
je 0x403c62
mov dword [ebp - 0x4c], eax
mov ebx, dword [sym.imp.ucrtbase.dll_free]
jmp 0x402960
cmp word [edi], 0
je 0x402ffc
mov eax, edi
lea esi, [esi]
add eax, 2
cmp word [eax], 0
jne 0x402fe8
sub eax, edi
cmp eax, 0x4c
je 0x403191
mov eax, dword [ebp - 0x5c]
mov dword [esp], edi
mov dword [esp + 4], eax
call sym._MsiInstallProductW_8
mov ebx, dword [sym.imp.ucrtbase.dll_free]
mov dword [ebp - 0x4c], eax
sub esp, 8
cmp eax, 2
jne 0x402960
mov eax, edi
call sym._get_path_with_extension
mov esi, eax
test eax, eax
je 0x402960
mov eax, dword [ebp - 0x5c]
mov dword [esp], esi
mov dword [esp + 4], eax
call sym._MsiInstallProductW_8
sub esp, 8
mov dword [ebp - 0x38], eax
mov dword [esp], esi
call ebx
mov eax, dword [ebp - 0x38]
mov dword [ebp - 0x4c], eax
jmp 0x402960
mov eax, dword [ebp - 0x5c]
test eax, eax
je 0x4035c3
shr eax, 0x10
je 0x403210
mov esi, dword [ebp - 0x5c]
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 0x40309d
mov eax, esi
call sym._wine_dbgstr_wn.part.0.constprop.0
mov dword [esp + 0x10], eax
mov dword [esp + 0xc], str.properties_____s_n
mov dword [esp + 8], str.build_properties
mov dword [esp + 4], 0x406000
mov dword [esp], 3
call sym._wine_dbg_log.constprop.0
jmp 0x402dc6
lea eax, [ecx + 2]
mov edx, 0x40830f
mov dword [ebp - 0x44], ecx
call sym._msi_strprefix
mov edx, dword [ebx]
mov ecx, dword [ebp - 0x44]
test eax, eax
movzx eax, word [edx]
je 0x402efb
mov ebx, 2
jmp 0x402f00
mov eax, dword [ebx]
movzx edx, word [eax]
and edx, 0xfffffffd
cmp dx, 0x2d
jne 0x402b18
add eax, 2
mov edx, str.package
call sym._msi_strprefix
test eax, eax
jne 0x402ee5
mov eax, dword [ebx]
movzx edx, word [eax]
and edx, 0xfffffffd
cmp dx, 0x2d
jne 0x402b18
add eax, 2
mov edx, 0x408319
call sym._msi_strequal
test eax, eax
je 0x4037a1
add edi, 1
cmp edi, dword [ebp - 0x3c]
jge 0x403d9b
mov eax, dword [ebp - 0x38]
lea esi, [eax + esi + 4]
test byte [section..data], 8
jne 0x403735
mov eax, dword [esi]
mov edx, str.ACTIONADMIN
mov dword [ebp - 0x50], eax
lea eax, [ebp - 0x34]
call sym._StringListAppend
mov dword [ebp - 0x68], 1
mov dword [ebp - 0x8c], 1
mov dword [ebp - 0x54], 1
jmp 0x402b7c
lea eax, [ebp - 0x1c]
mov dword [esp], edi
mov dword [esp + 4], eax
call dword [sym.imp.ole32.dll_CLSIDFromString]
sub esp, 8
test eax, eax
jne 0x402ffc
mov eax, dword [ebp - 0x5c]
mov dword [esp + 8], 5
mov dword [esp + 4], 0
mov dword [esp + 0xc], eax
mov dword [esp], edi
call sym._MsiConfigureProductExW_16
mov ebx, dword [sym.imp.ucrtbase.dll_free]
mov dword [ebp - 0x4c], eax
sub esp, 0x10
jmp 0x402960
mov eax, dword [ebp - 0x5c]
mov dword [esp + 4], edi
mov dword [esp + 0xc], eax
mov eax, dword [ebp - 0x8c]
mov dword [esp + 8], eax
mov eax, dword [ebp - 0x94]
mov dword [esp], eax
call sym._MsiApplyPatchW_16
mov ebx, dword [sym.imp.ucrtbase.dll_free]
mov dword [ebp - 0x4c], eax
sub esp, 0x10
jmp 0x402960
movzx eax, word [ebp - 0x5c]
mov dword [esp], str._04x
mov dword [esp + 4], eax
call sym._wine_dbg_sprintf.constprop.0
jmp 0x40309d
cmp dword [ebp - 0x3c], 3
je 0x40329f
mov eax, dword [ebp - 0x28]
mov dword [ebp - 0x38], eax
jmp 0x402a41
add edi, 1
cmp edi, dword [ebp - 0x3c]
jge 0x403d9b
mov eax, dword [ebp - 0x38]
lea esi, [eax + esi + 4]
test byte [section..data], 8
jne 0x4035cd
mov eax, dword [esi]
mov dword [ebp - 0x54], 1
mov dword [ebp - 0x50], eax
jmp 0x402b7c
lea ecx, [ebp - 0x28]
lea edx, [ebp - 0x2c]
mov eax, edi
call sym._process_args
mov dword [esp], edi
call dword [sym.imp.ucrtbase.dll_free]
mov eax, dword [ebp - 0x24]
mov dword [esp], eax
call dword [sym.imp.advapi32.dll_RegCloseKey]
mov eax, dword [ebp - 0x2c]
sub esp, 4
mov dword [ebp - 0x3c], eax
cmp eax, 3
jne 0x403e99
mov eax, dword [ebp - 0x28]
mov edx, dword [eax + 4]
mov dword [ebp - 0x38], eax
movzx eax, word [edx]
and eax, 0xfffffffd
cmp ax, 0x2d
jne 0x402a3a
lea eax, [edx + 2]
mov edx, str.Embedding
call sym._msi_strequal
test eax, eax
je 0x403639
mov eax, dword [ebp - 0x38]
mov eax, dword [eax + 8]
call sym._custom_action_server
mov dword [ebp - 0x4c], eax
jmp 0x402965
mov edx, dword [ebp - 0x64]
test edx, edx
je 0x403cae
mov ebx, 1
cmp word [edx + 4], 0
lea ecx, [edx + 4]
je 0x4033ff
mov eax, ecx
add eax, 2
cmp word [eax], 0
jne 0x403300
sub eax, ecx
sar eax, 1
add eax, 1
mov edx, dword [edx]
add ebx, eax
test edx, edx
jne 0x4032f0
add ebx, ebx
mov dword [esp], ebx
call dword [sym.imp.ucrtbase.dll_malloc]
mov dword [ebp - 0x3c], edi
mov edi, dword [ebp - 0x64]
mov dword [ebp - 0x40], eax
mov dword [ebp - 0x38], eax
nop
cmp word [edi + 4], 0
lea edx, [edi + 4]
je 0x4033fa
mov eax, edx
add eax, 2
cmp word [eax], 0
jne 0x403340
sub eax, edx
mov ecx, eax
sar ecx, 1
mov esi, ecx
cmp eax, 2
jbe 0x4033b0
mov ecx, dword [ebp - 0x38]
jmp 0x403372
sub esi, 1
add ecx, 2
add edx, 2
mov word [ecx - 2], bx
cmp esi, 1
je 0x40337a
movzx ebx, word [edx]
test bx, bx
jne 0x403360
mov esi, dword [ebp - 0x38]
add eax, esi
xor esi, esi
mov edx, eax
mov word [ecx], si
mov ebx, dword [edi]
test ebx, ebx
je 0x4033c0
mov ecx, 0x3b
lea eax, [edx + 2]
mov word [edx], cx
mov edi, dword [edi]
mov dword [ebp - 0x38], eax
test edi, edi
jne 0x403330
mov edi, dword [ebp - 0x3c]
mov edx, eax
jmp 0x4033c3
add eax, dword [ebp - 0x38]
mov edx, eax
test ecx, ecx
je 0x403386
mov ecx, dword [ebp - 0x38]
jmp 0x40337f
mov edi, dword [ebp - 0x3c]
xor eax, eax
mov word [edx], ax
movzx eax, word [ebp - 0x82]
mov dword [esp], edi
mov dword [esp + 0xc], eax
mov eax, dword [ebp - 0x40]
mov dword [esp + 8], eax
mov eax, dword [ebp - 0x74]
mov dword [esp + 4], eax
call sym._MsiAdvertiseProductW_16
mov ebx, dword [sym.imp.ucrtbase.dll_free]
mov dword [ebp - 0x4c], eax
sub esp, 0x10
jmp 0x402960
mov edx, dword [ebp - 0x38]
jmp 0x403386
mov eax, 1
jmp 0x403310
mov eax, dword [ebp - 0x38]
mov ecx, dword [eax]
cmp word [ecx], 0
je 0x403dcb
mov ebx, ecx
add ebx, 2
cmp word [ebx], 0
jne 0x40341a
sub ebx, ecx
lea eax, [ebx + 2]
mov dword [ebp - 0x38], eax
mov eax, dword [ebp - 0x38]
mov dword [ebp - 0x44], edx
mov dword [ebp - 0x40], ecx
mov dword [esp], eax
call dword [sym.imp.ucrtbase.dll_malloc]
mov ecx, dword [ebp - 0x40]
mov edx, dword [ebp - 0x44]
test eax, eax
mov edi, eax
je 0x402a22
mov dword [esp + 8], ebx
mov dword [esp + 4], ecx
mov dword [esp], eax
mov dword [ebp - 0x40], edx
call sym._memcpy
mov eax, 0x20
mov edx, dword [ebp - 0x40]
mov word [edi + ebx], ax
lea eax, [ebp - 0x20]
mov dword [esp + 0x14], eax
mov eax, dword [ebp - 0x38]
mov dword [esp + 8], 0
add eax, edi
mov dword [esp + 4], esi
mov dword [esp + 0x10], eax
lea eax, [ebp - 0x1c]
mov dword [esp + 0xc], eax
mov eax, dword [ebp - 0x3c]
mov dword [esp], edx
call eax
sub esp, 0x18
test eax, eax
je 0x40326b
mov dword [esp], edi
call dword [sym.imp.ucrtbase.dll_free]
mov eax, dword [ebp - 0x24]
mov dword [esp], eax
call dword [sym.imp.advapi32.dll_RegCloseKey]
sub esp, 4
mov dword [ebp - 0x4c], 1
mov eax, dword [ebp - 0x4c]
lea esp, [ebp - 0xc]
pop ebx
pop esi
pop edi
pop ebp
ret 0x10
lea eax, [ebp - 0x1c]
mov dword [esp], edi
mov dword [esp + 4], eax
call dword [sym.imp.ole32.dll_CLSIDFromString]
sub esp, 8
test eax, eax
jne 0x402fb4
mov ebx, dword [sym.imp.ucrtbase.dll_free]
test byte [section..data], 1
je 0x402960
mov dword [esp + 0xc], str.Product_code_treatment_not_implemented_yet_n
mov dword [esp + 8], str.WinMain
mov dword [esp + 4], 0x406000
mov dword [esp], 0
call sym._wine_dbg_log.constprop.0
jmp 0x402960
mov eax, dword [ebp - 0x60]
lea ecx, [ebp - 0x1c]
mov edx, str.DllRegisterServer
mov dword [ebp - 0x1c], 0
call sym._LoadProc.constprop.0
call eax
test eax, eax
mov eax, dword [ebp - 0x60]
js 0x4036d6
test eax, eax
je 0x403d09
shr eax, 0x10
je 0x403b71
mov esi, dword [ebp - 0x60]
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 0x403583
mov eax, esi
call sym._wine_dbgstr_wn.part.0.constprop.0
mov dword [esp + 4], eax
mov dword [esp], str.Successfully_registered_dll__s_n
call sym._wine_dbg_printf
mov eax, dword [ebp - 0x1c]
test eax, eax
je 0x4035a6
mov dword [esp], eax
call dword [sym.imp.kernel32.dll_FreeLibrary]
sub esp, 4
mov eax, dword [ebp - 0x58]
mov ebx, dword [sym.imp.ucrtbase.dll_free]
mov dword [ebp - 0x4c], eax
jmp 0x402960
mov dword [ebp - 0x5c], 0
jmp 0x402dc6
mov eax, str._null_
jmp 0x40309d
mov ebx, dword [esi]
test ebx, ebx
je 0x40372b
mov eax, ebx
shr eax, 0x10
je 0x403c96
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 0x403608
mov eax, ebx
call sym._wine_dbgstr_wn.part.0.constprop.0
mov dword [esp + 0x14], eax
mov dword [esp + 0x10], edi
mov dword [esp + 0xc], str.argvW__d____s_n
mov dword [esp + 8], str.WinMain
mov dword [esp + 4], 0x406000
mov dword [esp], 3
call sym._wine_dbg_log.constprop.0
jmp 0x40325a
mov eax, dword [ebp - 0x28]
mov dword [ebp - 0x3c], 3
mov dword [ebp - 0x38], eax
jmp 0x402a41
mov dword [esp + 8], 1
mov dword [esp + 4], str.ServicesActive
mov dword [esp], 0
call dword [sym.imp.advapi32.dll_OpenSCManagerW]
sub esp, 0xc
mov ebx, eax
test eax, eax
je 0x403d3f
mov dword [esp + 8], 0x10000
mov dword [esp + 4], 0x4081d2
mov dword [esp], eax
call dword [sym.imp.advapi32.dll_OpenServiceW]
sub esp, 0xc
mov esi, eax
test eax, eax
je 0x403d13
mov dword [esp], eax
call dword [sym.imp.advapi32.dll_DeleteService]
sub esp, 4
test eax, eax
je 0x403eb0
mov dword [esp], esi
mov esi, dword [sym.imp.advapi32.dll_CloseServiceHandle]
call esi
mov eax, dword [ebp - 0x40]
sub esp, 4
mov dword [ebp - 0x4c], eax
mov dword [esp], ebx
call esi
mov ebx, dword [sym.imp.ucrtbase.dll_free]
sub esp, 4
jmp 0x402960
test eax, eax
je 0x403e8f
shr eax, 0x10
je 0x403cf0
mov esi, dword [ebp - 0x60]
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 0x403710
mov eax, esi
call sym._wine_dbgstr_wn.part.0.constprop.0
mov dword [esp + 4], eax
mov dword [esp], str.Failed_to_register_dll__s_n
call sym._report_error
mov eax, dword [ebp - 0x78]
mov dword [ebp - 0x58], eax
jmp 0x4035a6
mov eax, str._null_
jmp 0x403608
mov ebx, dword [esi]
test ebx, ebx
je 0x403d6e
mov eax, ebx
shr eax, 0x10
je 0x403b34
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 0x403770
mov eax, ebx
call sym._wine_dbgstr_wn.part.0.constprop.0
mov dword [esp + 0x14], eax
mov dword [esp + 0x10], edi
mov dword [esp + 0xc], str.argvW__d____s_n
mov dword [esp + 8], str.WinMain
mov dword [esp + 4], 0x406000
mov dword [esp], 3
call sym._wine_dbg_log.constprop.0
jmp 0x403162
mov eax, dword [ebx]
movzx edx, word [eax]
and edx, 0xfffffffd
cmp dx, 0x2d
jne 0x402b18
add eax, 2
mov edx, 0x408336
call sym._msi_strprefix
test eax, eax
mov eax, dword [ebx]
je 0x403953
cmp word [eax], 0
je 0x403918
mov edx, eax
add edx, 2
cmp word [edx], 0
jne 0x4037d6
sub edx, eax
mov ecx, edx
sar ecx, 1
mov dword [ebp - 0x44], ecx
cmp edx, 4
jle 0x403be5
mov dword [ebp - 0x4c], edi
mov ecx, 2
mov edi, dword [ebp - 0x70]
mov dword [ebp - 0x50], esi
mov esi, ebx
mov ebx, ecx
movzx edx, word [eax + ebx*2]
lea eax, [edx - 0x41]
cmp ax, 0x35
ja case.0x403813.1
movzx eax, ax
jmp dword [eax*4 + 0x408614]
mov dword [esp + 4], edx
mov dword [esp], str.Unknown_option___c__in_Repair_mode_n
call sym._report_error
add ebx, 1
cmp ebx, dword [ebp - 0x44]
jge 0x40390f
mov eax, dword [esi]
jmp 0x403803
or edi, 0x400
jmp 0x40382a
or edi, 0x100
jmp 0x40382a
or edi, 0x200
jmp 0x40382a
or edi, 2
jmp 0x40382a
or edi, 4
jmp 0x40382a
or edi, 0x80
jmp 0x40382a
or edi, 8
jmp 0x40382a
or edi, 0x10
jmp 0x40382a
or edi, 0x20
jmp 0x40382a
or edi, 0x40
jmp 0x40382a
mov eax, dword [ebp - 0x60]
lea ecx, [ebp - 0x1c]
mov edx, str.DllUnregisterServer
mov dword [ebp - 0x1c], 0
call sym._LoadProc.constprop.0
call eax
test eax, eax
mov eax, dword [ebp - 0x60]
js 0x403b8a
test eax, eax
je 0x403d91
shr eax, 0x10
je 0x403d78
mov esi, dword [ebp - 0x60]
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 0x4038d6
mov eax, esi
call sym._wine_dbgstr_wn.part.0.constprop.0
mov dword [esp + 4], eax
mov dword [esp], str.Successfully_unregistered_dll__s_n
call sym._wine_dbg_printf
mov eax, dword [ebp - 0x1c]
test eax, eax
je 0x403b5f
mov dword [esp], eax
call dword [sym.imp.kernel32.dll_FreeLibrary]
mov dword [ebp - 0x4c], 0
mov ebx, dword [sym.imp.ucrtbase.dll_free]
sub esp, 4
jmp 0x402960
mov dword [ebp - 0x70], edi
mov esi, dword [ebp - 0x50]
mov edi, dword [ebp - 0x4c]
add edi, 1
cmp edi, dword [ebp - 0x3c]
jge 0x403d9b
mov eax, dword [ebp - 0x38]
lea esi, [eax + esi + 4]
test byte [section..data], 8
jne 0x403bf6
mov eax, dword [esi]
mov dword [ebp - 0x4c], 1
mov dword [ebp - 0x50], eax
jmp 0x402b7c
call sym._DoRegServer
jmp 0x402fcf
movzx edx, word [eax]
and edx, 0xfffffffd
cmp dx, 0x2d
jne 0x402b18
add eax, 2
mov edx, 0x40835c
call sym._msi_strprefix
test eax, eax
je 0x403a5e
mov eax, dword [ebx]
movzx edx, word [eax]
and edx, 0xfffffffd
cmp dx, 0x2d
jne 0x4039ca
add eax, 2
mov edx, 0x40835c
call sym._msi_strprefix
test eax, eax
je 0x4039ca
mov eax, dword [ebx]
add eax, 4
mov dword [ebp - 0x50], eax
mov eax, dword [ebp - 0x50]
cmp word [eax], 0
je 0x4039d1
test byte [section..data], 8
jne 0x4039fc
mov edx, str.REMOVEALL
lea eax, [ebp - 0x34]
call sym._StringListAppend
mov dword [ebp - 0x54], 1
jmp 0x402b7c
mov ecx, dword [ebp - 0x50]
test ecx, ecx
jne 0x40399f
add edi, 1
cmp edi, dword [ebp - 0x3c]
jge 0x403d9b
mov eax, dword [ebp - 0x38]
mov eax, dword [eax + esi + 4]
mov dword [ebp - 0x50], eax
test byte [section..data], 8
je 0x4039b1
mov edx, dword [ebp - 0x50]
mov eax, str._null_
test edx, edx
je 0x403a31
mov eax, dword [ebp - 0x50]
shr eax, 0x10
je 0x403cd7
mov esi, dword [ebp - 0x50]
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 0x403a31
mov eax, esi
call sym._wine_dbgstr_wn.part.0.constprop.0
mov dword [esp + 0x10], eax
mov dword [esp + 0xc], str.PackageName___s_n
mov dword [esp + 8], str.WinMain
mov dword [esp + 4], 0x406000
mov dword [esp], 3
call sym._wine_dbg_log.constprop.0
jmp 0x4039b1
mov eax, dword [ebx]
movzx edx, word [eax]
and edx, 0xfffffffd
cmp dx, 0x2d
jne 0x402b18
add eax, 2
mov edx, str.uninstall
call sym._msi_strequal
test eax, eax
jne 0x403978
mov eax, dword [ebx]
movzx edx, word [eax]
and edx, 0xfffffffd
cmp dx, 0x2d
jne 0x402b18
add eax, 2
mov edx, 0x408390
call sym._msi_strprefix
test eax, eax
je 0x403e0b
mov edx, dword [ebx]
cmp word [edx], 0
je 0x403de2
mov eax, edx
add eax, 2
cmp word [eax], 0
jne 0x403aba
sub eax, edx
mov ecx, eax
sar ecx, 1
mov dword [ebp - 0x44], ecx
cmp eax, 4
jle 0x403de2
mov eax, 2
mov dword [ebp - 0x50], edi
mov edi, ebx
mov ebx, dword [ebp - 0x74]
mov dword [ebp - 0x6c], esi
mov esi, eax
jmp 0x403b0c
cmp dx, 0x4d
je 0x403e50
cmp dx, 0x55
jne 0x403b22
mov ebx, 1
add esi, 1
cmp esi, dword [ebp - 0x44]
jge 0x403dd9
mov edx, dword [edi]
movzx edx, word [edx + esi*2]
cmp dx, 0x6d
je 0x403e50
jbe 0x403ae9
cmp dx, 0x75
je 0x403af9
mov dword [esp + 4], edx
mov dword [esp], str.Unknown_option___c__in_Advertise_mode_n
call sym._report_error
jmp 0x403afe
movzx ebx, bx
mov dword [esp], str._04x
mov dword [esp + 4], ebx
call sym._wine_dbg_sprintf.constprop.0
jmp 0x403770
call sym._DoService
mov ebx, dword [sym.imp.ucrtbase.dll_free]
mov dword [ebp - 0x4c], eax
jmp 0x402960
mov dword [ebp - 0x4c], 0
mov ebx, dword [sym.imp.ucrtbase.dll_free]
jmp 0x402960
movzx eax, word [ebp - 0x60]
mov dword [esp], str._04x
mov dword [esp + 4], eax
call sym._wine_dbg_sprintf.constprop.0
jmp 0x403583
test eax, eax
je 0x403dc1
shr eax, 0x10
je 0x403da8
mov esi, dword [ebp - 0x60]
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 0x403bc4
mov eax, esi
call sym._wine_dbgstr_wn.part.0.constprop.0
mov dword [esp + 4], eax
mov dword [esp], str.Failed_to_unregister_dll__s_n
call sym._report_error
mov eax, dword [ebp - 0x80]
mov ebx, dword [sym.imp.ucrtbase.dll_free]
mov dword [ebp - 0x4c], eax
jmp 0x402960
mov eax, 0x2aa
cmovne eax, dword [ebp - 0x70]
mov dword [ebp - 0x70], eax
jmp 0x403918
mov ebx, dword [esi]
test ebx, ebx
je 0x403edf
mov eax, ebx
shr eax, 0x10
je 0x403ec7
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 0x403c31
mov eax, ebx
call sym._wine_dbgstr_wn.part.0.constprop.0
mov dword [esp + 0x14], eax
mov dword [esp + 0x10], edi
mov dword [esp + 0xc], str.argvW__d____s_n
mov dword [esp + 8], str.WinMain
mov dword [esp + 4], 0x406000
mov dword [esp], 3
call sym._wine_dbg_log.constprop.0
jmp 0x403938
mov eax, edi
call sym._get_path_with_extension
mov ebx, eax
test eax, eax
je 0x403cc5
mov eax, dword [ebp - 0x70]
mov dword [esp], ebx
mov dword [esp + 4], eax
call sym._MsiReinstallProductW_8
sub esp, 8
mov esi, eax
mov dword [esp], ebx
mov ebx, dword [sym.imp.ucrtbase.dll_free]
call ebx
mov dword [ebp - 0x4c], esi
jmp 0x402960
movzx ebx, bx
mov dword [esp], str._04x
mov dword [esp + 4], ebx
call sym._wine_dbg_sprintf.constprop.0
jmp 0x403608
mov dword [esp], 2
call dword [sym.imp.ucrtbase.dll_malloc]
mov dword [ebp - 0x40], eax
mov edx, eax
jmp 0x4033c3
mov dword [ebp - 0x4c], 2
mov ebx, dword [sym.imp.ucrtbase.dll_free]
jmp 0x402960
movzx eax, word [ebp - 0x50]
mov dword [esp], str._04x
mov dword [esp + 4], eax
call sym._wine_dbg_sprintf.constprop.0
jmp 0x403a31
movzx eax, word [ebp - 0x60]
mov dword [esp], str._04x
mov dword [esp + 4], eax
call sym._wine_dbg_sprintf.constprop.0
jmp 0x403710
mov eax, str._null_
jmp 0x403583
mov eax, dword fs:[0x18]
cmp dword [eax + 0x34], 0x424
je 0x403d5c
mov dword [esp], str.Failed_to_open_MSI_service_n
call sym._report_error
mov eax, dword [ebp - 0x48]
mov esi, dword [sym.imp.advapi32.dll_CloseServiceHandle]
mov dword [ebp - 0x4c], eax
jmp 0x4036c3
mov dword [esp], str.Failed_to_open_service_control_manager_n
call sym._report_error
mov eax, dword [ebp - 0x48]
mov ebx, dword [sym.imp.ucrtbase.dll_free]
mov dword [ebp - 0x4c], eax
jmp 0x402960
mov dword [ebp - 0x4c], 0
mov esi, dword [sym.imp.advapi32.dll_CloseServiceHandle]
jmp 0x4036c3
mov eax, str._null_
jmp 0x403770
movzx eax, word [ebp - 0x60]
mov dword [esp], str._04x
mov dword [esp + 4], eax
call sym._wine_dbg_sprintf.constprop.0
jmp 0x4038d6
mov eax, str._null_
jmp 0x4038d6
mov eax, 1
call sym._ShowUsage
lea esi, [esi]
movzx eax, word [ebp - 0x60]
mov dword [esp], str._04x
mov dword [esp + 4], eax
call sym._wine_dbg_sprintf.constprop.0
jmp 0x403bc4
mov eax, str._null_
jmp 0x403bc4
mov dword [ebp - 0x38], 2
xor ebx, ebx
jmp 0x40342b
mov edi, dword [ebp - 0x50]
mov esi, dword [ebp - 0x6c]
mov dword [ebp - 0x74], ebx
add edi, 1
cmp edi, dword [ebp - 0x3c]
jge 0x403d9b
mov eax, dword [ebp - 0x38]
lea ebx, [eax + esi + 4]
test byte [section..data], 8
jne 0x403e12
mov eax, dword [ebx]
mov dword [ebp - 0x6c], 1
mov dword [ebp - 0x50], eax
jmp 0x402b7c
mov eax, dword [ebx]
jmp 0x402b18
mov eax, dword [ebx]
call sym._wine_dbgstr_wn.constprop.0
mov dword [esp + 0x10], edi
mov dword [esp + 0x14], eax
mov dword [esp + 0xc], str.argvW__d____s_n
mov dword [esp + 8], str.WinMain
mov dword [esp + 4], 0x406000
mov dword [esp], 3
call sym._wine_dbg_log.constprop.0
jmp 0x403dfa
xor ebx, ebx
jmp 0x403afe
mov eax, dword [ebx]
call sym._wine_dbgstr_wn.constprop.0
mov dword [esp + 0x10], edi
mov dword [esp + 0x14], eax
mov dword [esp + 0xc], str.argvW__d____s_n
mov dword [esp + 8], str.WinMain
mov dword [esp + 4], 0x406000
mov dword [esp], 3
call sym._wine_dbg_log.constprop.0
jmp 0x402b4a
mov eax, str._null_
jmp 0x403710
mov eax, dword [ebp - 0x28]
cmp dword [ebp - 0x3c], 1
mov dword [ebp - 0x38], eax
jg 0x402a41
jmp 0x402807
mov dword [esp], str.Failed_to_delete_MSI_service_n
call sym._report_error
mov eax, dword [ebp - 0x48]
mov dword [ebp - 0x40], eax
jmp 0x4036af
movzx ebx, bx
mov dword [esp], str._04x
mov dword [esp + 4], ebx
call sym._wine_dbg_sprintf.constprop.0
jmp 0x403c31
mov eax, str._null_
jmp 0x403c31
mov eax, dword [ebx]
mov edx, 0x4083bd
call sym._msi_strequal
test eax, eax
je 0x403f6e
add edi, 1
cmp edi, dword [ebp - 0x3c]
jge 0x403d9b
mov eax, dword [ebp - 0x38]
lea ebx, [eax + esi + 4]
test byte [section..data], 8
jne 0x403f39
mov eax, dword [ebx]
mov dword [ebp - 0x74], 0
mov dword [ebp - 0x6c], 1
mov dword [ebp - 0x50], eax
jmp 0x402b7c
mov dword [ebp - 0x4c], 0xe
jmp 0x402965
mov eax, dword [ebx]
call sym._wine_dbgstr_wn.constprop.0
mov dword [esp + 0x10], edi
mov dword [esp + 0x14], eax
mov dword [esp + 0xc], str.argvW__d____s_n
mov dword [esp + 8], str.WinMain
mov dword [esp + 4], 0x406000
mov dword [esp], 3
call sym._wine_dbg_log.constprop.0
jmp 0x403f15
mov eax, dword [ebx]
mov edx, 0x4083bf
call sym._msi_option_equal
test eax, eax
je 0x403fad
add edi, 1
cmp edi, dword [ebp - 0x3c]
jge 0x403d9b
mov eax, dword [ebp - 0x38]
lea ebx, [eax + esi + 4]
test byte [section..data], 8
jne 0x404027
mov edx, dword [ebx]
lea eax, [ebp - 0x30]
call sym._StringListAppend
jmp 0x402b7c
mov eax, dword [ebx]
mov edx, 0x4083c1
call sym._msi_option_equal
test eax, eax
jne 0x4040a3
mov eax, dword [ebx]
movzx edx, word [eax]
and edx, 0xfffffffd
cmp dx, 0x2d
jne 0x40405f
add eax, 2
mov edx, 0x4083c3
call sym._msi_strprefix
test eax, eax
je 0x40405f
mov ecx, dword [ebx]
mov eax, ecx
jmp 0x403fed
add eax, 2
cmp word [eax], 0
jne 0x403fea
sub eax, ecx
mov dword [ebp - 0x44], edi
mov edx, 2
sar eax, 1
mov ebx, eax
mov eax, dword [ebp - 0x64]
cmp edx, ebx
jge 0x404552
movzx edi, word [ecx + edx*2]
sub edi, 0x21
cmp di, 0x56
ja case.0x404020.1
movzx edi, di
jmp dword [edi*4 + 0x4086ec]
mov eax, dword [ebx]
call sym._wine_dbgstr_wn.constprop.0
mov dword [esp + 0x10], edi
mov dword [esp + 0x14], eax
mov dword [esp + 0xc], str.argvW__d____s_n
mov dword [esp + 8], str.WinMain
mov dword [esp + 4], 0x406000
mov dword [esp], 3
call sym._wine_dbg_log.constprop.0
jmp 0x403f9e
mov eax, dword [ebx]
mov edx, 0x4083ed
call sym._msi_option_equal
test eax, eax
je 0x404123
add edi, 1
cmp edi, dword [ebp - 0x3c]
jge 0x403d9b
mov eax, dword [ebp - 0x38]
lea ebx, [eax + esi + 4]
test byte [section..data], 8
jne 0x4040eb
mov eax, dword [ebx]
mov dword [ebp - 0x58], 1
mov dword [ebp - 0x94], eax
jmp 0x402b7c
add edi, 1
cmp edi, dword [ebp - 0x3c]
jge 0x403d9b
mov eax, dword [ebp - 0x38]
lea ebx, [eax + esi + 4]
test byte [section..data], 8
jne 0x404197
mov ebx, dword [ebx]
xor eax, eax
jmp 0x4040d3
imul eax, eax, 0xa
add ebx, 2
lea eax, [eax + edx - 0x30]
movzx edx, word [ebx]
lea ecx, [edx - 0x30]
cmp cx, 9
jbe 0x4040c9
mov word [ebp - 0x82], ax
jmp 0x402b7c
mov eax, dword [ebx]
call sym._wine_dbgstr_wn.constprop.0
mov dword [esp + 0x10], edi
mov dword [esp + 0x14], eax
mov dword [esp + 0xc], str.argvW__d____s_n
mov dword [esp + 8], str.WinMain
mov dword [esp + 4], 0x406000
mov dword [esp], 3
call sym._wine_dbg_log.constprop.0
jmp 0x40408f
mov eax, dword [ebx]
mov edx, str.update
call sym._msi_option_equal
test eax, eax
jne 0x404073
mov eax, dword [ebx]
movzx edx, word [eax]
and edx, 0xfffffffd
cmp dx, 0x2d
jne 0x4041cf
add eax, 2
mov edx, 0x4083f6
call sym._msi_strprefix
test eax, eax
je 0x4041cf
mov edx, dword [ebx]
mov eax, edx
jmp 0x404163
add eax, 2
cmp word [eax], 0
jne 0x404160
sub eax, edx
cmp eax, 4
je 0x404181
lea eax, [edx + 4]
mov edx, 0x4083f8
call sym._msi_strequal
test eax, eax
je 0x4041f8
mov dword [0x40b004], 1
mov dword [ebp - 0x5c], 2
jmp 0x402b7c
mov eax, dword [ebx]
call sym._wine_dbgstr_wn.constprop.0
mov dword [esp + 0x10], edi
mov dword [esp + 0x14], eax
mov dword [esp + 0xc], str.argvW__d____s_n
mov dword [esp + 8], str.WinMain
mov dword [esp + 4], 0x406000
mov dword [esp], 3
call sym._wine_dbg_log.constprop.0
jmp 0x4040c3
mov eax, dword [ebx]
mov edx, str.passive
call sym._msi_option_equal
test eax, eax
je 0x404232
mov edx, str.REBOOTPROMPT_S_
lea eax, [ebp - 0x34]
call sym._StringListAppend
mov dword [ebp - 0x5c], 0x63
jmp 0x402b7c
mov eax, dword [ebx]
mov edx, str.uiet
add eax, 4
call sym._msi_strequal
test eax, eax
jne 0x404181
mov eax, dword [ebx]
mov edx, 0x4083ff
add eax, 4
call sym._msi_strequal
test eax, eax
je 0x404387
mov dword [ebp - 0x5c], 4
jmp 0x402b7c
mov eax, dword [ebx]
mov edx, 0x408472
call sym._msi_option_equal
test eax, eax
je 0x4042a2
add edi, 1
cmp edi, dword [ebp - 0x3c]
jge 0x403d9b
mov eax, dword [ebp - 0x38]
lea ebx, [eax + esi + 4]
test byte [section..data], 8
je 0x404291
mov eax, dword [ebx]
call sym._wine_dbgstr_wn.constprop.0
mov dword [esp + 0x10], edi
mov dword [esp + 0x14], eax
mov dword [esp + 0xc], str.argvW__d____s_n
mov dword [esp + 8], str.WinMain
mov dword [esp + 4], 0x406000
mov dword [esp], 3
call sym._wine_dbg_log.constprop.0
mov eax, dword [ebx]
mov dword [ebp - 0x78], 1
mov dword [ebp - 0x60], eax
jmp 0x402b7c
mov eax, dword [ebx]
mov edx, 0x408474
call sym._msi_option_equal
test eax, eax
je 0x404312
add edi, 1
cmp edi, dword [ebp - 0x3c]
jge 0x403d9b
mov eax, dword [ebp - 0x38]
lea ebx, [eax + esi + 4]
test byte [section..data], 8
je 0x404301
mov eax, dword [ebx]
call sym._wine_dbgstr_wn.constprop.0
mov dword [esp + 0x10], edi
mov dword [esp + 0x14], eax
mov dword [esp + 0xc], str.argvW__d____s_n
mov dword [esp + 8], str.WinMain
mov dword [esp + 4], 0x406000
mov dword [esp], 3
call sym._wine_dbg_log.constprop.0
mov eax, dword [ebx]
mov dword [ebp - 0x80], 1
mov dword [ebp - 0x60], eax
jmp 0x402b7c
mov eax, dword [ebx]
mov edx, str.help
call sym._msi_option_equal
test eax, eax
jne 0x4043f3
mov eax, dword [ebx]
mov edx, 0x40847b
call sym._msi_option_equal
test eax, eax
jne 0x4043f3
mov eax, dword [ebx]
mov edx, 0x4083bd
call sym._msi_option_equal
test eax, eax
je 0x4043a6
mov dword [ebp - 0x7c], 1
test byte [section..data], 1
je 0x402b7c
mov dword [esp + 0xc], str.Unknown_parameter__m_n
mov dword [esp + 8], str.WinMain
mov dword [esp + 4], 0x406000
mov dword [esp], 0
call sym._wine_dbg_log.constprop.0
jmp 0x402b7c
mov eax, dword [ebx]
mov edx, 0x408336
add eax, 4
call sym._msi_strequal
test eax, eax
je 0x4043fa
mov dword [ebp - 0x5c], 0x85
jmp 0x402b7c
mov eax, dword [ebx]
mov edx, 0x408493
call sym._msi_option_equal
test eax, eax
je 0x404419
mov dword [ebp - 0x7c], 1
test byte [section..data], 1
je 0x402b7c
mov dword [esp + 0xc], str.Unknown_parameter__D_n
mov dword [esp + 8], str.WinMain
mov dword [esp + 4], 0x406000
mov dword [esp], 0
call sym._wine_dbg_log.constprop.0
jmp 0x402b7c
xor eax, eax
call sym._ShowUsage
mov eax, dword [ebx]
mov edx, 0x408401
add eax, 4
call sym._msi_strequal
test eax, eax
je 0x404438
mov dword [ebp - 0x5c], 0x82
jmp 0x402b7c
mov eax, dword [ebx]
mov edx, 0x4084ab
call sym._msi_option_equal
test eax, eax
je 0x40446a
mov dword [ebp - 0x90], 1
jmp 0x402b7c
mov eax, dword [ebx]
mov edx, 0x408404
add eax, 4
call sym._msi_strprefix
test eax, eax
mov eax, dword [ebx]
jne 0x404479
add eax, 4
call sym._wine_dbgstr_wn.constprop.0
mov dword [esp], str.Unknown_option___s__for_UI_level_n
mov dword [esp + 4], eax
call sym._report_error
jmp 0x402b7c
mov edx, dword [ebx]
lea eax, [ebp - 0x34]
call sym._StringListAppend
jmp 0x402b7c
lea ebx, [eax + 6]
mov esi, 3
cmp word [ebx], 0
je 0x4044f5
mov edx, 0x408406
mov eax, ebx
call sym._msi_strprefix
test eax, eax
je 0x40449d
or esi, 0x80
mov edx, 0x408408
mov eax, ebx
call sym._msi_strprefix
test eax, eax
je 0x4044b0
or esi, 0x40
mov edx, 0x40840a
mov eax, ebx
call sym._msi_strprefix
test eax, eax
je 0x4044f0
test byte [section..data], 1
je 0x4044ed
mov dword [esp + 0xc], 0x40840c
mov dword [esp + 8], str.WinMain
mov dword [esp + 4], 0x406000
mov dword [esp], 0
call sym._wine_dbg_log.constprop.0
or esi, 0x20
add ebx, 2
jmp 0x404481
mov dword [ebp - 0x5c], esi
jmp 0x402b7c
or eax, 4
add edx, 1
jmp 0x404004
or eax, 2
jmp case.0x404020.1
or ah, 8
jmp case.0x404020.1
mov eax, 0x7fdf
jmp case.0x404020.1
or dword [ebp - 0x88], 2
jmp case.0x404020.1
or ah, 1
jmp case.0x404020.1
or dword [ebp - 0x88], 1
jmp case.0x404020.1
or ah, 4
jmp case.0x404020.1
or al, 0x80
jmp case.0x404020.1
or eax, 1
jmp case.0x404020.1
or eax, 0x10
jmp case.0x404020.1
or eax, 8
jmp case.0x404020.1
or ah, 2
jmp case.0x404020.1
or ah, 0x10
jmp case.0x404020.1
mov edi, dword [ebp - 0x44]
mov dword [ebp - 0x64], eax
add edi, 1
cmp edi, dword [ebp - 0x3c]
jge 0x403d9b
mov eax, dword [ebp - 0x38]
lea ebx, [eax + esi + 4]
test byte [section..data], 8
jne 0x4045cf
mov eax, dword [ebp - 0x88]
mov ebx, dword [ebx]
mov dword [esp + 8], eax
mov eax, dword [ebp - 0x64]
mov dword [esp + 4], ebx
mov dword [esp], eax
call sym._MsiEnableLogW_12
sub esp, 0xc
test eax, eax
je 0x402b7c
mov eax, ebx
call sym._wine_dbgstr_wn.constprop.0
mov ecx, dword [ebp - 0x88]
mov dword [esp], str.Logging_in__s__0x_08lx___lu__failed_n
mov dword [esp + 4], eax
mov dword [esp + 0xc], ecx
mov ecx, dword [ebp - 0x64]
mov dword [esp + 8], ecx
call sym._report_error
mov dword [esp], 1
call dword [sym.imp.kernel32.dll_ExitProcess]
mov eax, dword [ebx]
call sym._wine_dbgstr_wn.constprop.0
mov dword [esp + 0x10], edi
mov dword [esp + 0x14], eax
mov dword [esp + 0xc], str.argvW__d____s_n
mov dword [esp + 8], str.WinMain
mov dword [esp + 4], 0x406000
mov dword [esp], 3
call sym._wine_dbg_log.constprop.0
jmp 0x404574