Function at 0x401f10
Capabilities:
Accept command line arguments
Create service
Create thread
Delete service
Get common file path
Query or enumerate registry value
Read file on windows
Terminate process
Write file on windows

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, 0x2dc
mov dword [ebp - 0x25c], 0
mov dword [ebp - 0x258], 0
mov dword [ebp - 0x250], 0
call dword [sym.imp.comctl32.dll_InitCommonControls]
call dword [sym.imp.kernel32.dll_GetCommandLineW]
lea ecx, [ebp - 0x250]
lea edx, [ebp - 0x254]
call sym._process_args
cmp dword [ebp - 0x254], 1
jle 0x403969
mov ecx, dword [ebp - 0x250]
mov ebx, dword [ecx + 4]
movzx eax, word [ebx]
and eax, 0xfffffffd
cmp ax, 0x2d
je 0x403380
xor eax, eax
mov edi, 1
mov dword [ebp - 0x294], 0
mov dword [ebp - 0x29c], 5
mov dword [ebp - 0x28c], 0
mov dword [ebp - 0x290], 0
mov dword [ebp - 0x2b8], 0
mov dword [ebp - 0x2a0], 0
mov word [ebp - 0x2ae], ax
mov dword [ebp - 0x278], 0
mov dword [ebp - 0x288], 0
mov dword [ebp - 0x264], 0
mov dword [ebp - 0x2a8], 0
mov dword [ebp - 0x2b4], 0
mov dword [ebp - 0x268], 0
mov dword [ebp - 0x270], 0
mov dword [ebp - 0x2a4], 0
mov dword [ebp - 0x2ac], 0
mov dword [ebp - 0x27c], 0
mov dword [ebp - 0x280], 0
mov dword [ebp - 0x298], 0
mov dword [ebp - 0x284], 0
mov dword [ebp - 0x26c], 0
jmp 0x4020cd
mov edx, str.umtgl
mov eax, ebx
call sym._msi_strequal
test eax, eax
je 0x402739
mov edx, dword [ebp - 0x254]
add edi, 1
cmp edx, edi
jle 0x4059a7
mov ecx, dword [ebp - 0x250]
mov eax, dword [ecx + esi + 4]
mov dword [ebp - 0x264], eax
test byte [section..data], 8
jne 0x402f40
mov dword [ebp - 0x278], 1
mov dword [ebp - 0x280], 1
lea esi, [esi]
lea esi, [esi]
add edi, 1
cmp edi, edx
jge 0x40211f
mov ecx, dword [ebp - 0x250]
mov ebx, dword [ecx + edi*4]
lea esi, [edi*4]
test byte [section..data], 8
jne 0x402440
movzx eax, word [ebx]
and eax, 0xfffffffd
cmp ax, 0x2d
jne 0x402060
mov edx, str.regserver
mov eax, ebx
call sym._msi_option_equal.part.0
test eax, eax
je 0x4022b0
mov edx, dword [ebp - 0x254]
add edi, 1
mov dword [ebp - 0x270], 1
cmp edi, edx
jl 0x4020c7
movzx eax, byte [ebp - 0x284]
and al, byte [ebp - 0x27c]
mov byte [ebp - 0x2a0], al
mov eax, dword [ebp - 0x29c]
mov dword [esp + 4], 0
mov dword [esp], eax
call sym._MsiSetInternalUI_8
mov eax, dword [ebp - 0x25c]
sub esp, 8
mov dword [ebp - 0x260], eax
test eax, eax
je 0x40450f
mov edx, eax
mov ebx, 1
lea esi, [esi]
lea esi, [esi]
cmp word [edx + 4], 0
lea ecx, [edx + 4]
je 0x403060
mov eax, ecx
add eax, 2
cmp word [eax], 0
jne 0x402180
sub eax, ecx
sar eax, 1
add eax, 3
mov edx, dword [edx]
add ebx, eax
test edx, edx
jne 0x402170
add ebx, ebx
mov dword [esp], ebx
call dword [sym.imp.ucrtbase.dll_malloc]
mov dword [ebp - 0x29c], eax
mov esi, eax
jmp 0x4021c6
mov eax, dword [ebp - 0x260]
mov eax, dword [eax]
mov dword [ebp - 0x260], eax
test eax, eax
je 0x402e40
mov eax, dword [ebp - 0x260]
mov dword [esp + 4], 0x3d
lea edi, [eax + 4]
mov dword [esp], edi
call dword [sym.imp.ucrtbase.dll_wcschr]
mov ebx, eax
test eax, eax
je 0x4021b0
mov ecx, 0x20
lea edx, [esi + 2]
mov word [esi], cx
mov esi, eax
sub esi, edi
mov dword [esp + 4], edi
mov dword [esp], edx
mov dword [esp + 8], esi
mov dword [ebp - 0x274], edx
call sym._memcpy
mov edx, dword [ebp - 0x274]
mov eax, 0x3d
lea ecx, [ebx + 2]
lea edi, [edx + esi]
mov word [edi], ax
cmp word [ebx + 2], 0x22
je 0x402d08
mov dword [ebp - 0x284], edx
mov dword [esp], ecx
mov dword [ebp - 0x274], ecx
mov dword [esp + 4], 0x20
call dword [sym.imp.ucrtbase.dll_wcschr]
mov ecx, dword [ebp - 0x274]
mov edx, dword [ebp - 0x284]
test eax, eax
je 0x4038b8
mov edx, 0x22
lea esi, [edi + 4]
mov word [edi + 2], dx
cmp word [ebx + 2], 0
je 0x40229f
mov edi, 1
mov eax, ecx
lea esi, [esi]
add eax, 2
cmp word [eax], 0
jne 0x402278
sub eax, ecx
mov dword [esp], esi
mov dword [esp + 8], eax
mov ebx, eax
mov dword [esp + 4], ecx
add esi, ebx
call sym._memcpy
test edi, edi
je 0x4021b0
mov eax, 0x22
add esi, 2
mov word [esi - 2], ax
jmp 0x4021b0
mov eax, dword [ebp - 0x250]
mov ebx, dword [eax + esi]
movzx eax, word [ebx]
and eax, 0xfffffffd
cmp ax, 0x2d
jne 0x402060
mov edx, str.unregserver
mov eax, ebx
call sym._msi_option_equal.part.0
test eax, eax
jne 0x402428
mov eax, dword [ebp - 0x250]
mov ebx, dword [eax + esi]
movzx eax, word [ebx]
and eax, 0xfffffffd
cmp ax, 0x2d
jne 0x402060
mov edx, str.unregister
mov eax, ebx
call sym._msi_option_equal.part.0
test eax, eax
jne 0x402428
mov eax, dword [ebp - 0x250]
mov ebx, dword [eax + esi]
movzx eax, word [ebx]
and eax, 0xfffffffd
cmp ax, 0x2d
jne 0x402060
mov edx, str.unreg
mov eax, ebx
call sym._msi_option_equal.part.0
test eax, eax
jne 0x402428
mov eax, dword [ebp - 0x250]
mov ebx, dword [eax + esi]
movzx eax, word [ebx]
and eax, 0xfffffffd
cmp ax, 0x2d
jne 0x402060
mov edx, 0x409277
mov eax, ebx
call sym._msi_option_prefix.part.0
test eax, eax
jne 0x4027b0
mov eax, dword [ebp - 0x250]
mov ebx, dword [eax + esi]
movzx eax, word [ebx]
and eax, 0xfffffffd
cmp ax, 0x2d
jne 0x402060
mov edx, str.package
mov eax, ebx
call sym._msi_option_prefix.part.0
test eax, eax
jne 0x4027b0
mov eax, dword [ebp - 0x250]
mov ebx, dword [eax + esi]
movzx eax, word [ebx]
and eax, 0xfffffffd
cmp ax, 0x2d
jne 0x402060
mov edx, 0x409281
mov eax, ebx
call sym._msi_option_equal.part.0
test eax, eax
je 0x402668
add edi, 1
cmp dword [ebp - 0x254], edi
jle 0x4059a7
mov eax, dword [ebp - 0x250]
mov eax, dword [eax + esi + 4]
mov dword [ebp - 0x264], eax
test byte [section..data], 8
jne 0x402d18
mov edx, str.ACTIONADMIN
lea eax, [ebp - 0x25c]
call sym._StringListAppend
mov edx, dword [ebp - 0x254]
mov dword [ebp - 0x28c], 1
mov dword [ebp - 0x284], 1
mov dword [ebp - 0x26c], 1
jmp 0x4020c0
mov dword [ebp - 0x268], 1
mov edx, dword [ebp - 0x254]
jmp 0x4020c0
test ebx, ebx
je 0x4028a8
mov eax, ebx
shr eax, 0x10
je 0x402648
mov dword [esp + 4], 0xffffffff
mov dword [esp], ebx
call dword [sym.imp.kernel32.dll_IsBadStringPtrW]
mov edx, str._invalid_
sub esp, 8
test eax, eax
jne 0x402564
cmp word [ebx], 0
je 0x402a50
nop
mov edx, eax
lea eax, [eax + 1]
cmp word [ebx + edx*2 + 2], 0
jne 0x402480
mov ecx, 0x224c
mov dword [ebp - 0x274], edi
mov word [ebp - 0x230], cx
lea ecx, [ebp - 0x22e]
mov dword [ebp - 0x260], ebx
jmp 0x4024e3
cmp ax, 9
je 0x4025b8
cmp ax, 0xa
jne 0x4025d6
mov eax, 0x6e5c
add ecx, 2
mov word [ecx - 2], ax
lea edi, [ebp - 0x10e]
lea eax, [edx - 1]
cmp ecx, edi
ja 0x402530
test edx, edx
jle 0x402530
mov edx, eax
add dword [ebp - 0x260], 2
mov eax, dword [ebp - 0x260]
movzx eax, word [eax - 2]
cmp ax, 0xd
je 0x4025a0
jbe 0x4024b0
cmp ax, 0x22
je 0x402630
cmp ax, 0x5c
jne 0x4025c9
mov ebx, 0x5c5c
lea edi, [ebp - 0x10e]
lea eax, [edx - 1]
add ecx, 2
mov word [ecx - 2], bx
cmp ecx, edi
jbe 0x4024dd
lea esi, [esi]
mov byte [ecx], 0x22
mov edi, dword [ebp - 0x274]
test eax, eax
jle 0x402a69
mov edx, 0x2e2e
mov byte [ecx + 3], 0x2e
lea eax, [ecx + 4]
mov word [ecx + 1], dx
mov byte [eax], 0
lea eax, [ebp - 0x230]
mov dword [esp], eax
call sym.___wine_dbg_strdup
mov edx, eax
mov dword [esp + 0x14], edx
mov dword [esp + 0x10], edi
mov dword [esp + 0xc], str.argvW__d____s_n
mov dword [esp + 8], str.WinMain
mov dword [esp + 4], 0x407000
mov dword [esp], 3
call sym._wine_dbg_log.constprop.0
mov eax, dword [ebp - 0x250]
mov ebx, dword [eax + esi]
jmp 0x4020e4
mov eax, 0x725c
add ecx, 2
mov word [ecx - 2], ax
jmp 0x4024d0
mov eax, 0x745c
add ecx, 2
mov word [ecx - 2], ax
jmp 0x4024d0
lea edi, [eax - 0x20]
cmp di, 0x5e
jbe 0x4027a0
mov edi, eax
mov byte [ecx], 0x5c
add ecx, 5
shr di, 0xc
movzx edi, di
movzx ebx, byte [edi + str.0123456789abcdefcustom_action_server]
mov edi, eax
shr di, 8
and edi, 0xf
mov byte [ecx - 4], bl
movzx ebx, byte [edi + str.0123456789abcdefcustom_action_server]
mov edi, eax
and eax, 0xf
shr di, 4
movzx eax, byte [eax + str.0123456789abcdefcustom_action_server]
and edi, 0xf
mov byte [ecx - 3], bl
movzx ebx, byte [edi + str.0123456789abcdefcustom_action_server]
mov byte [ecx - 1], al
mov byte [ecx - 2], bl
jmp 0x4024d0
mov edi, 0x225c
add ecx, 2
mov word [ecx - 2], di
jmp 0x4024d0
movzx ebx, bx
mov dword [esp], str._04x
mov dword [esp + 4], ebx
call sym._wine_dbg_sprintf.constprop.0
mov edx, eax
jmp 0x402564
mov eax, dword [ebp - 0x250]
mov ebx, dword [eax + esi]
movzx eax, word [ebx]
and eax, 0xfffffffd
cmp ax, 0x2d
jne 0x402060
mov edx, 0x40929e
mov eax, ebx
call sym._msi_option_prefix.part.0
test eax, eax
mov eax, dword [ebp - 0x250]
jne 0x402bc8
mov ebx, dword [eax + esi]
movzx eax, word [ebx]
and eax, 0xfffffffd
cmp ax, 0x2d
jne 0x402060
mov edx, 0x4092c4
mov eax, ebx
call sym._msi_option_prefix.part.0
test eax, eax
jne 0x402830
mov eax, dword [ebp - 0x250]
mov ebx, dword [eax + esi]
movzx eax, word [ebx]
and eax, 0xfffffffd
cmp ax, 0x2d
jne 0x402060
mov edx, str.uninstall
mov eax, ebx
call sym._msi_option_equal.part.0
test eax, eax
jne 0x402830
mov eax, dword [ebp - 0x250]
mov ebx, dword [eax + esi]
movzx eax, word [ebx]
and eax, 0xfffffffd
cmp ax, 0x2d
jne 0x402060
mov edx, 0x4092f8
mov eax, ebx
call sym._msi_option_prefix.part.0
test eax, eax
mov eax, dword [ebp - 0x250]
jne 0x4030a0
mov ebx, dword [eax + esi]
mov edx, str.umtgl
mov eax, ebx
call sym._msi_strequal
test eax, eax
jne 0x402074
mov eax, dword [ebp - 0x250]
mov edx, 0x409325
mov eax, dword [eax + esi]
call sym._msi_strequal
test eax, eax
je 0x403070
mov edx, dword [ebp - 0x254]
add edi, 1
cmp edx, edi
jle 0x4059a7
mov ecx, dword [ebp - 0x250]
mov eax, dword [ecx + esi + 4]
mov dword [ebp - 0x264], eax
test byte [section..data], 8
jne 0x403471
mov dword [ebp - 0x278], 0
mov dword [ebp - 0x280], 1
jmp 0x4020c0
mov byte [ecx], al
add ecx, 1
jmp 0x4024d0
mov ecx, dword [ebp - 0x250]
mov ebx, dword [ecx + esi]
movzx eax, word [ebx]
mov edx, eax
and edx, 0xfffffffd
cmp dx, 0x2d
je 0x402b90
mov dword [ebp - 0x260], ebx
mov dword [ebp - 0x264], 8
mov edx, dword [ebp - 0x254]
test ax, ax
je 0x402a78
mov eax, dword [ebp - 0x260]
add eax, 2
cmp word [eax], 0
jne 0x4027f0
sub eax, dword [ebp - 0x260]
sar eax, 1
cmp dword [ebp - 0x264], eax
jge 0x402a78
mov dword [ebp - 0x26c], 1
mov eax, dword [ebp - 0x264]
lea eax, [ebx + eax*2]
mov dword [ebp - 0x264], eax
jmp 0x4020c0
mov eax, dword [ebp - 0x250]
mov ecx, dword [eax + esi]
movzx eax, word [ecx]
and eax, 0xfffffffd
cmp ax, 0x2d
jne 0x4028b8
mov edx, 0x4092c4
mov eax, ecx
call sym._msi_option_prefix.part.0
test eax, eax
je 0x4028b8
mov eax, dword [ebp - 0x250]
mov eax, dword [eax + esi]
add eax, 4
mov dword [ebp - 0x264], eax
mov eax, dword [ebp - 0x264]
cmp word [eax], 0
je 0x4028c2
test byte [section..data], 8
jne 0x4028f7
mov edx, str.REMOVEALL
lea eax, [ebp - 0x25c]
call sym._StringListAppend
mov edx, dword [ebp - 0x254]
mov dword [ebp - 0x26c], 1
jmp 0x4020c0
mov edx, str._null_
jmp 0x402564
mov eax, dword [ebp - 0x264]
test eax, eax
jne 0x402867
add edi, 1
cmp dword [ebp - 0x254], edi
jle 0x4059a7
mov eax, dword [ebp - 0x250]
mov eax, dword [eax + esi + 4]
mov dword [ebp - 0x264], eax
test byte [section..data], 8
je 0x40287c
mov edx, str._null_
test eax, eax
je 0x402a1b
mov eax, dword [ebp - 0x264]
shr eax, 0x10
je 0x403c3d
mov esi, dword [ebp - 0x264]
mov dword [esp + 4], 0xffffffff
mov dword [esp], esi
call dword [sym.imp.kernel32.dll_IsBadStringPtrW]
mov edx, str._invalid_
sub esp, 8
test eax, eax
jne 0x402a1b
cmp word [esi], 0
je 0x40427a
mov ecx, esi
lea esi, [esi]
mov edx, eax
lea eax, [eax + 1]
cmp word [ecx + edx*2 + 2], 0
jne 0x402940
mov ebx, dword [ebp - 0x264]
mov ecx, 0x224c
mov word [ebp - 0x230], cx
lea ecx, [ebp - 0x22e]
mov dword [ebp - 0x260], ebx
jmp 0x4029a3
cmp ax, 9
je 0x4038a0
cmp ax, 0xa
jne 0x40381f
mov eax, 0x6e5c
add ecx, 2
mov word [ecx - 2], ax
lea esi, [ebp - 0x10e]
lea eax, [edx - 1]
cmp ecx, esi
ja 0x4029ed
test edx, edx
jle 0x4029ed
mov edx, eax
add dword [ebp - 0x260], 2
mov eax, dword [ebp - 0x260]
movzx eax, word [eax - 2]
cmp ax, 0xd
je 0x403888
jbe 0x402970
cmp ax, 0x22
je 0x403870
cmp ax, 0x5c
jne 0x403812
mov ebx, 0x5c5c
lea esi, [ebp - 0x10e]
lea eax, [edx - 1]
add ecx, 2
mov word [ecx - 2], bx
cmp ecx, esi
jbe 0x40299d
mov byte [ecx], 0x22
test eax, eax
jle 0x404293
mov edx, 0x2e2e
mov byte [ecx + 3], 0x2e
lea eax, [ecx + 4]
mov word [ecx + 1], dx
mov byte [eax], 0
lea eax, [ebp - 0x230]
mov dword [esp], eax
call sym.___wine_dbg_strdup
mov edx, eax
mov dword [esp + 0x10], edx
mov dword [esp + 0xc], str.PackageName___s_n
mov dword [esp + 8], str.WinMain
mov dword [esp + 4], 0x407000
mov dword [esp], 3
call sym._wine_dbg_log.constprop.0
jmp 0x40287c
mov edx, 0x224c
mov byte [ebp - 0x22e], 0x22
lea ecx, [ebp - 0x22e]
mov word [ebp - 0x230], dx
lea eax, [ecx + 1]
jmp 0x402551
add edi, 1
cmp edi, edx
jge 0x4059a7
mov eax, dword [ecx + esi + 4]
mov dword [ebp - 0x264], eax
test byte [section..data], 8
je 0x402414
test eax, eax
je 0x403e29
shr eax, 0x10
je 0x404248
mov ebx, dword [ebp - 0x264]
mov dword [esp + 4], 0xffffffff
mov dword [esp], ebx
call dword [sym.imp.kernel32.dll_IsBadStringPtrW]
mov edx, str._invalid_
sub esp, 8
test eax, eax
jne 0x4037cb
cmp word [ebx], 0
je 0x4044ee
mov ecx, ebx
nop
mov edx, eax
lea eax, [eax + 1]
cmp word [ecx + edx*2 + 2], 0
jne 0x402ae0
mov ebx, 0x224c
mov dword [ebp - 0x260], edi
lea ecx, [ebp - 0x22e]
mov word [ebp - 0x230], bx
jmp 0x402b4b
cmp ax, 9
je 0x404078
cmp ax, 0xa
jne 0x403ff5
mov eax, 0x6e5c
add ecx, 2
mov word [ecx - 2], ax
lea edi, [ebp - 0x10e]
lea eax, [edx - 1]
cmp ecx, edi
ja 0x403797
test edx, edx
jle 0x403797
mov edx, eax
add dword [ebp - 0x264], 2
mov eax, dword [ebp - 0x264]
movzx eax, word [eax - 2]
cmp ax, 0xd
je 0x404061
jbe 0x402b10
cmp ax, 0x22
je 0x404050
cmp ax, 0x5c
jne 0x403fe8
mov ebx, 0x5c5c
add ecx, 2
mov word [ecx - 2], bx
jmp 0x402b30
mov edx, 0x409277
mov eax, ebx
call sym._msi_option_prefix.part.0
mov ecx, dword [ebp - 0x250]
test eax, eax
mov eax, dword [ecx + esi]
mov dword [ebp - 0x260], eax
movzx eax, word [eax]
je 0x4027d1
mov dword [ebp - 0x264], 2
jmp 0x4027db
mov eax, dword [eax + esi]
cmp word [eax], 0
je 0x402c7e
mov edx, eax
lea esi, [esi]
nop
add edx, 2
cmp word [edx], 0
jne 0x402be0
sub edx, eax
mov ecx, edx
sar ecx, 1
cmp edx, 4
jle 0x403ac9
mov edx, ecx
mov dword [ebp - 0x260], edi
mov edi, dword [ebp - 0x288]
mov ecx, esi
mov ebx, 2
mov esi, edx
nop
movzx edx, word [eax + ebx*2]
lea eax, [edx - 0x41]
cmp ax, 0x35
ja case.0x402c20.1
movzx eax, ax
jmp dword [eax*4 + 0x409610]
mov dword [esp + 4], edx
mov dword [esp], str.Unknown_option___c__in_Repair_mode_n
mov dword [ebp - 0x264], ecx
call sym._report_error
mov ecx, dword [ebp - 0x264]
lea esi, [esi]
add ebx, 1
cmp ebx, esi
jge 0x402c70
mov eax, dword [ebp - 0x250]
mov eax, dword [eax + ecx]
jmp 0x402c10
add ebx, 1
or edi, 0x400
cmp ebx, esi
jl 0x402c57
nop
mov dword [ebp - 0x288], edi
mov edi, dword [ebp - 0x260]
mov esi, ecx
mov edx, dword [ebp - 0x254]
add edi, 1
cmp edx, edi
jle 0x4059a7
mov ecx, dword [ebp - 0x250]
mov eax, dword [ecx + esi + 4]
mov dword [ebp - 0x264], eax
test byte [section..data], 8
jne 0x403ae0
mov dword [ebp - 0x298], 1
jmp 0x4020c0
or edi, 0x200
jmp 0x402c50
or edi, 2
jmp 0x402c50
or edi, 4
jmp 0x402c50
or edi, 0x80
jmp 0x402c50
or edi, 8
jmp 0x402c50
or edi, 0x10
jmp 0x402c50
or edi, 0x20
jmp 0x402c50
or edi, 0x40
jmp 0x402c50
or edi, 0x100
jmp 0x402c50
lea esi, [edx + esi + 2]
xor edi, edi
jmp 0x402273
test eax, eax
je 0x404266
shr eax, 0x10
je 0x4033b7
mov ebx, dword [ebp - 0x264]
mov dword [esp + 4], 0xffffffff
mov dword [esp], ebx
call dword [sym.imp.kernel32.dll_IsBadStringPtrW]
mov edx, str._invalid_
sub esp, 8
test eax, eax
jne 0x4033d0
cmp word [ebx], 0
je 0x403e33
mov ecx, ebx
lea esi, [esi]
mov edx, eax
lea eax, [eax + 1]
cmp word [ecx + edx*2 + 2], 0
jne 0x402d60
mov eax, 0x224c
mov dword [ebp - 0x260], edi
lea ecx, [ebp - 0x22e]
mov word [ebp - 0x230], ax
jmp 0x402dc3
cmp ax, 9
je 0x403958
cmp ax, 0xa
jne 0x4038ec
mov eax, 0x6e5c
add ecx, 2
mov word [ecx - 2], ax
lea eax, [edx - 1]
test edx, edx
jle 0x402e07
lea edi, [ebp - 0x10e]
cmp ecx, edi
ja 0x402e07
mov edx, eax
add dword [ebp - 0x264], 2
mov eax, dword [ebp - 0x264]
movzx eax, word [eax - 2]
cmp ax, 0xd
je 0x4038ce
jbe 0x402d90
cmp ax, 0x22
je 0x403940
cmp ax, 0x5c
jne 0x4038df
mov ebx, 0x5c5c
add ecx, 2
lea eax, [edx - 1]
mov word [ecx - 2], bx
test edx, edx
jg 0x402db7
mov byte [ecx], 0x22
mov edi, dword [ebp - 0x260]
test eax, eax
jle 0x403e4c
mov edx, 0x2e2e
mov byte [ecx + 3], 0x2e
lea eax, [ecx + 4]
mov word [ecx + 1], dx
mov byte [eax], 0
lea eax, [ebp - 0x230]
mov dword [esp], eax
call sym.___wine_dbg_strdup
mov edx, eax
jmp 0x4033d0
xor eax, eax
mov word [esi], ax
test byte [section..data], 8
jne 0x403c5b
cmp byte [ebp - 0x2a0], 0
mov eax, 0
cmove eax, dword [ebp - 0x26c]
mov dword [ebp - 0x26c], eax
mov eax, dword [ebp - 0x264]
test eax, eax
je 0x402e88
call sym._remove_quotes
mov dword [ebp - 0x264], eax
test eax, eax
je 0x40377d
mov eax, dword [ebp - 0x290]
test eax, eax
je 0x402ea5
call sym._remove_quotes
mov dword [ebp - 0x290], eax
test eax, eax
je 0x40377d
mov eax, dword [ebp - 0x294]
test eax, eax
je 0x402ec2
call sym._remove_quotes
mov dword [ebp - 0x294], eax
test eax, eax
je 0x40377d
mov edi, dword [ebp - 0x26c]
test edi, edi
je 0x40326a
mov eax, dword [ebp - 0x264]
cmp word [eax], 0
je 0x402ef8
lea esi, [esi]
add eax, 2
cmp word [eax], 0
jne 0x402ee0
sub eax, dword [ebp - 0x264]
cmp eax, 0x4c
je 0x403dcf
mov eax, dword [ebp - 0x29c]
mov dword [esp + 4], eax
mov eax, dword [ebp - 0x264]
mov dword [esp], eax
call sym._MsiInstallProductW_8
mov dword [ebp - 0x27c], eax
sub esp, 8
cmp eax, 2
je 0x404532
mov eax, dword [ebp - 0x27c]
lea esp, [ebp - 0x10]
pop ecx
pop ebx
pop esi
pop edi
pop ebp
lea esp, [ecx - 4]
ret 0x10
test eax, eax
je 0x40429b
shr eax, 0x10
je 0x403411
mov ebx, dword [ebp - 0x264]
mov dword [esp + 4], 0xffffffff
mov dword [esp], ebx
call dword [sym.imp.kernel32.dll_IsBadStringPtrW]
mov edx, str._invalid_
sub esp, 8
test eax, eax
jne 0x40342a
cmp word [ebx], 0
je 0x403e54
mov ecx, ebx
lea esi, [esi]
mov edx, eax
lea eax, [eax + 1]
cmp word [ecx + edx*2 + 2], 0
jne 0x402f88
mov eax, 0x224c
mov dword [ebp - 0x260], edi
lea ecx, [ebp - 0x22e]
mov word [ebp - 0x230], ax
jmp 0x402fe3
cmp ax, 9
je 0x403ab8
cmp ax, 0xa
jne 0x403a35
mov eax, 0x6e5c
add ecx, 2
mov word [ecx - 2], ax
lea eax, [edx - 1]
test edx, edx
jle 0x403027
lea edi, [ebp - 0x10e]
cmp ecx, edi
ja 0x403027
mov edx, eax
add dword [ebp - 0x264], 2
mov eax, dword [ebp - 0x264]
movzx eax, word [eax - 2]
cmp ax, 0xd
je 0x403aa1
jbe 0x402fb0
cmp ax, 0x22
je 0x403a90
cmp ax, 0x5c
jne 0x403a28
mov ebx, 0x5c5c
add ecx, 2
lea eax, [edx - 1]
mov word [ecx - 2], bx
test edx, edx
jg 0x402fd7
mov byte [ecx], 0x22
mov edi, dword [ebp - 0x260]
test eax, eax
jle 0x403e6d
mov edx, 0x2e2e
mov byte [ecx + 3], 0x2e
lea eax, [ecx + 4]
mov word [ecx + 1], dx
mov byte [eax], 0
lea eax, [ebp - 0x230]
mov dword [esp], eax
call sym.___wine_dbg_strdup
mov edx, eax
jmp 0x40342a
mov eax, 3
jmp 0x402190
mov eax, dword [ebp - 0x250]
mov eax, dword [eax + esi]
movzx edx, word [eax]
and edx, 0xfffffffd
cmp dx, 0x2d
je 0x403330
mov edx, eax
lea eax, [ebp - 0x25c]
call sym._StringListAppend
jmp 0x40481f
mov eax, dword [eax + esi]
cmp word [eax], 0
je 0x40314c
mov edx, eax
nop
add edx, 2
cmp word [edx], 0
jne 0x4030b0
sub edx, eax
mov ecx, edx
sar ecx, 1
cmp edx, 4
jle 0x40314c
mov dword [ebp - 0x264], edi
mov ebx, 2
mov edi, esi
mov esi, dword [ebp - 0x278]
jmp 0x403105
cmp ax, 0x4d
je 0x403790
cmp ax, 0x55
jne 0x40311b
mov esi, 1
add ebx, 1
cmp ebx, ecx
jge 0x40313e
mov eax, dword [ebp - 0x250]
mov eax, dword [eax + edi]
movzx eax, word [eax + ebx*2]
cmp ax, 0x6d
je 0x403790
jbe 0x4030e0
cmp ax, 0x75
je 0x4030f0
mov dword [esp + 4], eax
add ebx, 1
mov dword [esp], str.Unknown_option___c__in_Advertise_mode_n
mov dword [ebp - 0x260], ecx
call sym._report_error
mov ecx, dword [ebp - 0x260]
cmp ebx, ecx
jl 0x4030fc
mov dword [ebp - 0x278], esi
mov esi, edi
mov edi, dword [ebp - 0x264]
mov edx, dword [ebp - 0x254]
add edi, 1
cmp edx, edi
jle 0x4059a7
mov ecx, dword [ebp - 0x250]
mov eax, dword [ecx + esi + 4]
mov dword [ebp - 0x264], eax
test byte [section..data], 8
je 0x4020ac
test eax, eax
je 0x404dc0
shr eax, 0x10
je 0x404738
mov ebx, dword [ebp - 0x264]
mov dword [esp + 4], 0xffffffff
mov dword [esp], ebx
call dword [sym.imp.kernel32.dll_IsBadStringPtrW]
mov edx, str._invalid_
sub esp, 8
test eax, eax
jne 0x404192
cmp word [ebx], 0
je 0x4048bf
mov ecx, ebx
nop
mov edx, eax
lea eax, [eax + 1]
cmp word [ecx + edx*2 + 2], 0
jne 0x4031c0
mov eax, 0x224c
mov dword [ebp - 0x260], edi
lea ebx, [ebp - 0x22e]
mov word [ebp - 0x230], ax
jmp 0x40322b
cmp ax, 9
je 0x4044ac
cmp ax, 0xa
jne 0x404439
mov eax, 0x6e5c
add ebx, 2
mov word [ebx - 2], ax
lea esi, [esi]
nop
lea eax, [edx - 1]
test edx, edx
jle 0x40415e
lea ecx, [ebp - 0x10e]
cmp ebx, ecx
ja 0x40415e
mov edx, eax
add dword [ebp - 0x264], 2
mov eax, dword [ebp - 0x264]
movzx eax, word [eax - 2]
cmp ax, 0xd
je 0x40449b
jbe 0x4031e7
cmp ax, 0x22
je 0x40448a
cmp ax, 0x5c
jne 0x40442c
mov ecx, 0x5c5c
add ebx, 2
mov word [ebx - 2], cx
jmp 0x403210
mov esi, dword [ebp - 0x298]
test esi, esi
jne 0x403d79
mov ebx, dword [ebp - 0x280]
test ebx, ebx
jne 0x404590
mov eax, dword [ebp - 0x27c]
test eax, eax
jne 0x404cff
mov eax, dword [ebp - 0x2ac]
test eax, eax
jne 0x404e2b
mov eax, dword [ebp - 0x2a4]
test eax, eax
jne 0x404968
mov eax, dword [ebp - 0x270]
test eax, eax
jne 0x405441
mov eax, dword [ebp - 0x268]
test eax, eax
jne 0x4053b6
mov edi, dword [ebp - 0x2b4]
test edi, edi
jne 0x405977
mov esi, dword [ebp - 0x2a8]
test esi, esi
je 0x4059a7
test byte [section..data], 1
je 0x40377d
mov dword [esp + 0xc], str.Unknown_function__ignoring_n
mov dword [esp + 8], str.WinMain
mov dword [esp + 4], 0x407000
mov dword [esp], 0
call sym._wine_dbg_log.constprop.0
mov eax, dword [ebp - 0x2a8]
mov dword [ebp - 0x27c], eax
jmp 0x402f22
mov edx, 0x409327
call sym._msi_option_equal.part.0
test eax, eax
je 0x40355a
add edi, 1
cmp dword [ebp - 0x254], edi
jle 0x4059a7
mov eax, dword [ebp - 0x250]
mov ebx, dword [eax + esi + 4]
test byte [section..data], 8
jne 0x404a4e
mov edx, ebx
lea eax, [ebp - 0x258]
call sym._StringListAppend
mov edx, dword [ebp - 0x254]
jmp 0x4020c0
mov edx, 0x4090c7
mov eax, ebx
call sym._msi_option_equal.part.0
test eax, eax
jne 0x4036c4
mov eax, dword [ebp - 0x254]
cmp eax, 3
je 0x404089
cmp eax, 1
jle 0x403969
mov ecx, dword [ebp - 0x250]
jmp 0x401f88
movzx eax, word [ebp - 0x264]
mov dword [esp], str._04x
mov dword [esp + 4], eax
call sym._wine_dbg_sprintf.constprop.0
mov edx, eax
mov dword [esp + 0x14], edx
mov dword [esp + 0x10], edi
mov dword [esp + 0xc], str.argvW__d____s_n
mov dword [esp + 8], str.WinMain
mov dword [esp + 4], 0x407000
mov dword [esp], 3
call sym._wine_dbg_log.constprop.0
mov eax, dword [ebp - 0x250]
mov eax, dword [eax + esi + 4]
mov dword [ebp - 0x264], eax
jmp 0x4023ea
movzx eax, word [ebp - 0x264]
mov dword [esp], str._04x
mov dword [esp + 4], eax
call sym._wine_dbg_sprintf.constprop.0
mov edx, eax
mov dword [esp + 0x14], edx
mov dword [esp + 0x10], edi
mov dword [esp + 0xc], str.argvW__d____s_n
mov dword [esp + 8], str.WinMain
mov dword [esp + 4], 0x407000
mov dword [esp], 3
call sym._wine_dbg_log.constprop.0
mov ecx, dword [ebp - 0x250]
mov edx, dword [ebp - 0x254]
mov eax, dword [ecx + esi + 4]
mov dword [ebp - 0x264], eax
jmp 0x4020a2
test eax, eax
je 0x404848
shr eax, 0x10
je 0x404572
mov ebx, dword [ebp - 0x264]
mov dword [esp + 4], 0xffffffff
mov dword [esp], ebx
call dword [sym.imp.kernel32.dll_IsBadStringPtrW]
mov edx, str._invalid_
sub esp, 8
test eax, eax
jne 0x4040f5
cmp word [ebx], 0
je 0x40489e
mov ecx, ebx
lea esi, [esi]
mov edx, eax
lea eax, [eax + 1]
cmp word [ecx + edx*2 + 2], 0
jne 0x4034b8
mov ecx, 0x224c
mov dword [ebp - 0x260], edi
lea ebx, [ebp - 0x22e]
mov word [ebp - 0x230], cx
jmp 0x40351b
cmp ax, 9
je 0x4043a2
cmp ax, 0xa
jne 0x4043c0
mov eax, 0x6e5c
add ebx, 2
mov word [ebx - 2], ax
nop
lea ecx, [ebp - 0x10e]
lea eax, [edx - 1]
cmp ebx, ecx
ja 0x4040c1
test edx, edx
jle 0x4040c1
mov edx, eax
add dword [ebp - 0x264], 2
mov eax, dword [ebp - 0x264]
movzx eax, word [eax - 2]
cmp ax, 0xd
je 0x404391
jbe 0x4034df
cmp ax, 0x22
je 0x404411
cmp ax, 0x5c
jne 0x4043b3
mov ecx, 0x5c5c
add ebx, 2
mov word [ebx - 2], cx
jmp 0x403500
mov eax, dword [ebp - 0x250]
mov eax, dword [eax + esi]
movzx edx, word [eax]
and edx, 0xfffffffd
cmp dx, 0x2d
jne 0x403089
mov edx, 0x409329
call sym._msi_option_equal.part.0
test eax, eax
jne 0x403eb9
mov eax, dword [ebp - 0x250]
mov eax, dword [eax + esi]
movzx edx, word [eax]
and edx, 0xfffffffd
cmp dx, 0x2d
jne 0x403089
mov edx, 0x40932b
call sym._msi_option_prefix.part.0
test eax, eax
mov eax, dword [ebp - 0x250]
jne 0x404756
mov eax, dword [eax + esi]
movzx edx, word [eax]
and edx, 0xfffffffd
cmp dx, 0x2d
jne 0x403089
mov edx, 0x409355
call sym._msi_option_equal.part.0
test eax, eax
jne 0x4042a5
mov eax, dword [ebp - 0x250]
mov eax, dword [eax + esi]
movzx edx, word [eax]
and edx, 0xfffffffd
cmp dx, 0x2d
jne 0x403089
mov edx, str.update
call sym._msi_option_equal.part.0
test eax, eax
jne 0x4042a5
mov eax, dword [ebp - 0x250]
mov eax, dword [eax + esi]
movzx edx, word [eax]
and edx, 0xfffffffd
cmp dx, 0x2d
jne 0x403089
mov edx, 0x40935e
call sym._msi_option_prefix.part.0
test eax, eax
jne 0x404ed4
mov eax, dword [ebp - 0x250]
mov eax, dword [eax + esi]
movzx edx, word [eax]
and edx, 0xfffffffd
cmp dx, 0x2d
jne 0x403089
mov edx, str.passive
call sym._msi_option_equal.part.0
test eax, eax
jne 0x404e83
mov eax, dword [ebp - 0x250]
mov eax, dword [eax + esi]
movzx edx, word [eax]
and edx, 0xfffffffd
cmp dx, 0x2d
jne 0x403089
mov edx, 0x4093da
call sym._msi_option_equal.part.0
test eax, eax
je 0x403f1a
mov edx, dword [ebp - 0x254]
add edi, 1
cmp edx, edi
jle 0x4059a7
mov ecx, dword [ebp - 0x250]
mov eax, dword [ecx + esi + 4]
mov dword [ebp - 0x294], eax
test byte [section..data], 8
jne 0x40536a
mov dword [ebp - 0x2ac], 1
jmp 0x4020c0
mov eax, dword [ebp - 0x250]
mov eax, dword [eax + 8]
mov dword [esp + 4], str.SoftwareMicrosoftWindowsCurrentVersionInstallerRunOnceEntries
mov dword [ebp - 0x240], 0
mov dword [ebp - 0x260], eax
lea eax, [ebp - 0x248]
mov dword [ebp - 0x230], 0
mov dword [esp + 8], eax
mov dword [esp], 0x80000002
call dword [sym.imp.advapi32.dll_RegOpenKeyW]
sub esp, 0xc
test eax, eax
jne 0x40377d
mov eax, dword [ebp - 0x260]
lea ebx, [ebp - 0x240]
lea esi, [ebp - 0x230]
mov dword [esp + 0x10], 0
mov dword [esp + 0x14], ebx
mov dword [esp + 4], eax
mov eax, dword [ebp - 0x248]
mov dword [esp + 0xc], esi
mov dword [esp], eax
mov eax, dword [sym.imp.advapi32.dll_RegQueryValueExW]
mov dword [esp + 8], 0
mov dword [ebp - 0x26c], eax
call eax
sub esp, 0x18
test eax, eax
mov eax, dword [ebp - 0x248]
jne 0x403771
cmp dword [ebp - 0x230], 1
mov dword [ebp - 0x268], eax
je 0x40553b
mov dword [esp], eax
call dword [sym.imp.advapi32.dll_RegCloseKey]
sub esp, 4
mov dword [ebp - 0x27c], 1
jmp 0x402f22
xor esi, esi
jmp 0x4030f5
mov byte [ecx], 0x22
mov edi, dword [ebp - 0x260]
test eax, eax
jle 0x404507
mov edx, 0x2e2e
mov byte [ecx + 3], 0x2e
lea eax, [ecx + 4]
mov word [ecx + 1], dx
mov byte [eax], 0
lea eax, [ebp - 0x230]
mov dword [esp], eax
call sym.___wine_dbg_strdup
mov edx, eax
mov dword [esp + 0x14], edx
mov dword [esp + 0x10], edi
mov dword [esp + 0xc], str.argvW__d____s_n
mov dword [esp + 8], str.WinMain
mov dword [esp + 4], 0x407000
mov dword [esp], 3
call sym._wine_dbg_log.constprop.0
mov ecx, dword [ebp - 0x250]
mov edx, dword [ebp - 0x254]
mov eax, dword [ecx + esi + 4]
mov dword [ebp - 0x264], eax
jmp 0x402414
lea esi, [eax - 0x20]
cmp si, 0x5e
jbe 0x403d5b
mov esi, eax
mov byte [ecx], 0x5c
add ecx, 5
shr si, 0xc
movzx esi, si
movzx ebx, byte [esi + str.0123456789abcdefcustom_action_server]
mov esi, eax
shr si, 8
and esi, 0xf
mov byte [ecx - 4], bl
movzx ebx, byte [esi + str.0123456789abcdefcustom_action_server]
mov esi, eax
and eax, 0xf
shr si, 4
movzx eax, byte [eax + str.0123456789abcdefcustom_action_server]
and esi, 0xf
mov byte [ecx - 3], bl
movzx ebx, byte [esi + str.0123456789abcdefcustom_action_server]
mov byte [ecx - 1], al
mov byte [ecx - 2], bl
jmp 0x402990
mov esi, 0x225c
add ecx, 2
mov word [ecx - 2], si
jmp 0x402990
mov eax, 0x725c
add ecx, 2
mov word [ecx - 2], ax
jmp 0x402990
mov eax, 0x745c
add ecx, 2
mov word [ecx - 2], ax
jmp 0x402990
xor edi, edi
cmp word [ebx + 2], 0
lea esi, [edx + esi + 2]
jne 0x402273
jmp 0x4021b0
mov eax, 0x725c
add ecx, 2
mov word [ecx - 2], ax
jmp 0x402db0
lea edi, [eax - 0x20]
cmp di, 0x5e
jbe 0x403d65
mov edi, eax
mov byte [ecx], 0x5c
add ecx, 5
shr di, 0xc
movzx edi, di
movzx ebx, byte [edi + str.0123456789abcdefcustom_action_server]
mov edi, eax
shr di, 8
and edi, 0xf
mov byte [ecx - 4], bl
movzx ebx, byte [edi + str.0123456789abcdefcustom_action_server]
mov edi, eax
and eax, 0xf
shr di, 4
movzx eax, byte [eax + str.0123456789abcdefcustom_action_server]
and edi, 0xf
mov byte [ecx - 3], bl
movzx ebx, byte [edi + str.0123456789abcdefcustom_action_server]
mov byte [ecx - 1], al
mov byte [ecx - 2], bl
jmp 0x402db0
mov edi, 0x225c
add ecx, 2
mov word [ecx - 2], di
jmp 0x402db0
mov eax, 0x745c
add ecx, 2
mov word [ecx - 2], ax
jmp 0x402db0
xor eax, eax
mov byte [ebp - 0x2a0], 0
mov dword [ebp - 0x294], 0
mov dword [ebp - 0x29c], 5
mov dword [ebp - 0x28c], 0
mov dword [ebp - 0x290], 0
mov word [ebp - 0x2ae], ax
mov dword [ebp - 0x278], 0
mov dword [ebp - 0x288], 0
mov dword [ebp - 0x264], 0
mov dword [ebp - 0x2a8], 0
mov dword [ebp - 0x2b4], 0
mov dword [ebp - 0x268], 0
mov dword [ebp - 0x270], 0
mov dword [ebp - 0x2a4], 0
mov dword [ebp - 0x2ac], 0
mov dword [ebp - 0x27c], 0
mov dword [ebp - 0x280], 0
mov dword [ebp - 0x298], 0
mov dword [ebp - 0x26c], 0
jmp 0x402132
lea edi, [eax - 0x20]
cmp di, 0x5e
jbe 0x403d6f
mov edi, eax
mov byte [ecx], 0x5c
add ecx, 5
shr di, 0xc
movzx edi, di
movzx ebx, byte [edi + str.0123456789abcdefcustom_action_server]
mov edi, eax
shr di, 8
and edi, 0xf
mov byte [ecx - 4], bl
movzx ebx, byte [edi + str.0123456789abcdefcustom_action_server]
mov edi, eax
and eax, 0xf
shr di, 4
movzx eax, byte [eax + str.0123456789abcdefcustom_action_server]
and edi, 0xf
mov byte [ecx - 3], bl
movzx ebx, byte [edi + str.0123456789abcdefcustom_action_server]
mov byte [ecx - 1], al
mov byte [ecx - 2], bl
jmp 0x402fd0
mov edi, 0x225c
add ecx, 2
mov word [ecx - 2], di
jmp 0x402fd0
mov eax, 0x725c
add ecx, 2
mov word [ecx - 2], ax
jmp 0x402fd0
mov eax, 0x745c
add ecx, 2
mov word [ecx - 2], ax
jmp 0x402fd0
mov eax, 0x2aa
cmovne eax, dword [ebp - 0x288]
mov dword [ebp - 0x288], eax
jmp 0x402c7e
test eax, eax
je 0x404528
shr eax, 0x10
je 0x404373
mov ebx, dword [ebp - 0x264]
mov dword [esp + 4], 0xffffffff
mov dword [esp], ebx
call dword [sym.imp.kernel32.dll_IsBadStringPtrW]
mov edx, str._invalid_
sub esp, 8
test eax, eax
jne 0x403bf6
cmp word [ebx], 0
je 0x4046a0
mov ecx, ebx
lea esi, [esi]
mov edx, eax
lea eax, [eax + 1]
cmp word [ecx + edx*2 + 2], 0
jne 0x403b28
mov eax, 0x224c
mov dword [ebp - 0x260], edi
lea ecx, [ebp - 0x22e]
mov word [ebp - 0x230], ax
jmp 0x403b83
cmp ax, 9
je 0x40414d
cmp ax, 0xa
jne 0x4041e6
mov eax, 0x6e5c
add ecx, 2
mov word [ecx - 2], ax
lea edi, [ebp - 0x10e]
lea eax, [edx - 1]
cmp ecx, edi
ja 0x403bc2
test edx, edx
jle 0x403bc2
mov edx, eax
add dword [ebp - 0x264], 2
mov eax, dword [ebp - 0x264]
movzx eax, word [eax - 2]
cmp ax, 0xd
je 0x40413c
jbe 0x403b50
cmp ax, 0x22
je 0x404237
cmp ax, 0x5c
jne 0x4041d9
mov ebx, 0x5c5c
add ecx, 2
mov word [ecx - 2], bx
jmp 0x403b70
mov byte [ecx], 0x22
mov edi, dword [ebp - 0x260]
test eax, eax
jle 0x4046b9
mov edx, 0x2e2e
mov byte [ecx + 3], 0x2e
lea eax, [ecx + 4]
mov word [ecx + 1], dx
mov byte [eax], 0
lea eax, [ebp - 0x230]
mov dword [esp], eax
call sym.___wine_dbg_strdup
mov edx, eax
mov dword [esp + 0x14], edx
mov dword [esp + 0x10], edi
mov dword [esp + 0xc], str.argvW__d____s_n
mov dword [esp + 8], str.WinMain
mov dword [esp + 4], 0x407000
mov dword [esp], 3
call sym._wine_dbg_log.constprop.0
mov ecx, dword [ebp - 0x250]
mov edx, dword [ebp - 0x254]
mov eax, dword [ecx + esi + 4]
mov dword [ebp - 0x264], eax
jmp 0x402cac
movzx eax, word [ebp - 0x264]
mov dword [esp], str._04x
mov dword [esp + 4], eax
call sym._wine_dbg_sprintf.constprop.0
mov edx, eax
jmp 0x402a1b
mov eax, dword [ebp - 0x29c]
test eax, eax
je 0x40482a
shr eax, 0x10
je 0x403e75
mov esi, dword [ebp - 0x29c]
mov dword [esp + 4], 0xffffffff
mov dword [esp], esi
call dword [sym.imp.kernel32.dll_IsBadStringPtrW]
mov ecx, eax
sub esp, 8
mov eax, str._invalid_
test ecx, ecx
jne 0x403e8c
movzx eax, word [esi]
test ax, ax
je 0x404cde
mov ebx, esi
lea esi, [esi]
mov edx, ecx
lea ecx, [ecx + 1]
cmp word [ebx + edx*2 + 2], 0
jne 0x403cb0
mov ebx, dword [ebp - 0x29c]
mov ecx, 0x224c
lea edi, [ebp - 0x10e]
mov word [ebp - 0x230], cx
lea ecx, [ebp - 0x22e]
mov dword [ebp - 0x260], ebx
jmp 0x403d26
cmp ax, 9
je 0x4042e2
cmp ax, 0xa
jne 0x404311
mov eax, 0x6e5c
add ecx, 2
mov word [ecx - 2], ax
lea esi, [esi]
nop
lea esi, [edx - 1]
test edx, edx
jle 0x4044bd
cmp ecx, edi
ja 0x4044bd
mov eax, dword [ebp - 0x260]
mov edx, esi
movzx eax, word [eax]
add dword [ebp - 0x260], 2
cmp ax, 0xd
je 0x4042f3
jbe 0x403ce3
cmp ax, 0x22
je 0x404362
cmp ax, 0x5c
jne 0x404304
mov ebx, 0x5c5c
add ecx, 2
mov word [ecx - 2], bx
jmp 0x403d08
mov byte [ecx], al
add ecx, 1
jmp 0x402990
mov byte [ecx], al
add ecx, 1
jmp 0x402db0
mov byte [ecx], al
add ecx, 1
jmp 0x402fd0
mov eax, dword [ebp - 0x264]
cmp word [eax], 0
je 0x403da0
lea esi, [esi]
add eax, 2
cmp word [eax], 0
jne 0x403d88
sub eax, dword [ebp - 0x264]
cmp eax, 0x4c
je 0x4046c1
mov eax, dword [ebp - 0x288]
mov dword [esp + 4], eax
mov eax, dword [ebp - 0x264]
mov dword [esp], eax
call sym._MsiReinstallProductW_8
sub esp, 8
cmp eax, 2
je 0x404ea8
mov dword [ebp - 0x27c], eax
jmp 0x402f22
lea eax, [ebp - 0x230]
mov dword [esp + 4], eax
mov eax, dword [ebp - 0x264]
mov dword [esp], eax
call dword [sym.imp.ole32.dll_CLSIDFromString]
sub esp, 8
test eax, eax
jne 0x402ef8
mov eax, dword [ebp - 0x29c]
mov dword [esp + 8], 5
mov dword [esp + 4], 0
mov dword [esp + 0xc], eax
mov eax, dword [ebp - 0x264]
mov dword [esp], eax
call sym._MsiConfigureProductExW_16
mov dword [ebp - 0x27c], eax
sub esp, 0x10
jmp 0x402f22
mov edx, str._null_
jmp 0x4037cb
mov eax, 0x224c
mov byte [ebp - 0x22e], 0x22
lea ecx, [ebp - 0x22e]
mov word [ebp - 0x230], ax
lea eax, [ecx + 1]
jmp 0x402e28
mov ebx, 0x224c
mov byte [ebp - 0x22e], 0x22
lea ecx, [ebp - 0x22e]
mov word [ebp - 0x230], bx
lea eax, [ecx + 1]
jmp 0x403048
movzx eax, word [ebp - 0x29c]
mov dword [esp], str._04x
mov dword [esp + 4], eax
call sym._wine_dbg_sprintf.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], 0x407000
mov dword [esp], 3
call sym._wine_dbg_log.constprop.0
jmp 0x402e52
mov edx, dword [ebp - 0x254]
add edi, 1
cmp edx, edi
jle 0x4059a7
mov ecx, dword [ebp - 0x250]
mov ebx, dword [ecx + esi + 4]
test byte [section..data], 8
jne 0x4048e0
movzx eax, word [ebx]
lea ecx, [eax - 0x30]
cmp cx, 9
ja 0x405999
xor ecx, ecx
lea esi, [esi]
nop
lea ecx, [ecx + ecx*4]
add ebx, 2
lea ecx, [eax + ecx*2 - 0x30]
movzx eax, word [ebx]
lea esi, [eax - 0x30]
cmp si, 9
jbe 0x403ef8
mov word [ebp - 0x2ae], cx
jmp 0x4020c0
mov eax, dword [ebp - 0x250]
mov eax, dword [eax + esi]
movzx edx, word [eax]
and edx, 0xfffffffd
cmp dx, 0x2d
jne 0x403089
mov edx, 0x4093dc
call sym._msi_option_equal.part.0
test eax, eax
jne 0x404861
mov eax, dword [ebp - 0x250]
mov eax, dword [eax + esi]
movzx edx, word [eax]
and edx, 0xfffffffd
cmp dx, 0x2d
jne 0x403089
mov edx, str.help
call sym._msi_option_equal.part.0
test eax, eax
jne 0x405a37
mov eax, dword [ebp - 0x250]
mov eax, dword [eax + esi]
movzx edx, word [eax]
and edx, 0xfffffffd
cmp dx, 0x2d
jne 0x403089
mov edx, 0x4093e3
call sym._msi_option_equal.part.0
test eax, eax
jne 0x405a37
mov eax, dword [ebp - 0x250]
mov eax, dword [eax + esi]
movzx edx, word [eax]
and edx, 0xfffffffd
cmp dx, 0x2d
jne 0x403089
mov edx, 0x409325
call sym._msi_option_equal.part.0
test eax, eax
je 0x404dca
test byte [section..data], 1
jne 0x40596a
mov dword [ebp - 0x2a8], 1
mov edx, dword [ebp - 0x254]
jmp 0x4020c0
lea edi, [eax - 0x20]
cmp di, 0x5e
jbe 0x404270
mov edi, eax
mov byte [ecx], 0x5c
add ecx, 5
shr di, 0xc
movzx edi, di
movzx ebx, byte [edi + str.0123456789abcdefcustom_action_server]
mov edi, eax
shr di, 8
and edi, 0xf
mov byte [ecx - 4], bl
movzx ebx, byte [edi + str.0123456789abcdefcustom_action_server]
mov edi, eax
and eax, 0xf
shr di, 4
movzx eax, byte [eax + str.0123456789abcdefcustom_action_server]
and edi, 0xf
mov byte [ecx - 3], bl
movzx ebx, byte [edi + str.0123456789abcdefcustom_action_server]
mov byte [ecx - 1], al
mov byte [ecx - 2], bl
jmp 0x402b30
mov edi, 0x225c
add ecx, 2
mov word [ecx - 2], di
jmp 0x402b30
mov eax, 0x725c
add ecx, 2
mov word [ecx - 2], ax
jmp 0x402b30
mov eax, 0x745c
add ecx, 2
mov word [ecx - 2], ax
jmp 0x402b30
mov ecx, dword [ebp - 0x250]
mov ebx, dword [ecx + 4]
movzx eax, word [ebx]
and eax, 0xfffffffd
cmp ax, 0x2d
jne 0x401f88
mov edx, str.Embedding
mov eax, ebx
call sym._msi_option_equal.part.0
test eax, eax
jne 0x404d39
mov eax, dword [ebp - 0x254]
jmp 0x4033a3
mov byte [ebx], 0x22
mov edi, dword [ebp - 0x260]
test eax, eax
jle 0x4048b7
mov edx, 0x2e2e
mov byte [ebx + 3], 0x2e
lea eax, [ebx + 4]
mov word [ebx + 1], dx
mov byte [eax], 0
lea eax, [ebp - 0x230]
mov dword [esp], eax
call sym.___wine_dbg_strdup
mov edx, eax
mov dword [esp + 0x14], edx
mov dword [esp + 0x10], edi
mov dword [esp + 0xc], str.argvW__d____s_n
mov dword [esp + 8], str.WinMain
mov dword [esp + 4], 0x407000
mov dword [esp], 3
call sym._wine_dbg_log.constprop.0
mov ecx, dword [ebp - 0x250]
mov edx, dword [ebp - 0x254]
mov eax, dword [ecx + esi + 4]
mov dword [ebp - 0x264], eax
jmp 0x402782
mov eax, 0x725c
add ecx, 2
mov word [ecx - 2], ax
jmp 0x403b70
mov eax, 0x745c
add ecx, 2
mov word [ecx - 2], ax
jmp 0x403b70
mov byte [ebx], 0x22
mov edi, dword [ebp - 0x260]
test eax, eax
jle 0x4048d8
mov edx, 0x2e2e
mov byte [ebx + 3], 0x2e
lea eax, [ebx + 4]
mov word [ebx + 1], dx
mov byte [eax], 0
lea eax, [ebp - 0x230]
mov dword [esp], eax
call sym.___wine_dbg_strdup
mov edx, eax
mov dword [esp + 0x14], edx
mov dword [esp + 0x10], edi
mov dword [esp + 0xc], str.argvW__d____s_n
mov dword [esp + 8], str.WinMain
mov dword [esp + 4], 0x407000
mov dword [esp], 3
call sym._wine_dbg_log.constprop.0
mov ecx, dword [ebp - 0x250]
mov edx, dword [ebp - 0x254]
mov eax, dword [ecx + esi + 4]
mov dword [ebp - 0x264], eax
jmp 0x4020ac
lea edi, [eax - 0x20]
cmp di, 0x5e
jbe 0x404422
mov edi, eax
mov byte [ecx], 0x5c
add ecx, 5
shr di, 0xc
movzx edi, di
movzx ebx, byte [edi + str.0123456789abcdefcustom_action_server]
mov edi, eax
shr di, 8
and edi, 0xf
mov byte [ecx - 4], bl
movzx ebx, byte [edi + str.0123456789abcdefcustom_action_server]
mov edi, eax
and eax, 0xf
shr di, 4
movzx eax, byte [eax + str.0123456789abcdefcustom_action_server]
and edi, 0xf
mov byte [ecx - 3], bl
movzx ebx, byte [edi + str.0123456789abcdefcustom_action_server]
mov byte [ecx - 1], al
mov byte [ecx - 2], bl
jmp 0x403b70
mov edi, 0x225c
add ecx, 2
mov word [ecx - 2], di
jmp 0x403b70
movzx eax, word [ebp - 0x264]
mov dword [esp], str._04x
mov dword [esp + 4], eax
call sym._wine_dbg_sprintf.constprop.0
mov edx, eax
jmp 0x4037cb
mov edx, str._null_
jmp 0x4033d0
mov byte [ecx], al
add ecx, 1
jmp 0x402b30
mov ebx, 0x224c
mov byte [ebp - 0x22e], 0x22
lea ecx, [ebp - 0x22e]
mov word [ebp - 0x230], bx
lea eax, [ecx + 1]
jmp 0x402a08
mov edx, str._null_
jmp 0x40342a
mov edx, dword [ebp - 0x254]
add edi, 1
cmp edx, edi
jle 0x4059a7
mov ecx, dword [ebp - 0x250]
mov eax, dword [ecx + esi + 4]
mov dword [ebp - 0x290], eax
test byte [section..data], 8
jne 0x404b8b
mov dword [ebp - 0x27c], 1
jmp 0x4020c0
mov eax, 0x745c
add ecx, 2
mov word [ecx - 2], ax
jmp 0x403d08
mov eax, 0x725c
add ecx, 2
mov word [ecx - 2], ax
jmp 0x403d08
lea esi, [eax - 0x20]
cmp si, 0x5e
jbe 0x40451e
mov esi, eax
mov byte [ecx], 0x5c
add ecx, 5
shr si, 0xc
movzx esi, si
movzx ebx, byte [esi + str.0123456789abcdefcustom_action_server]
mov esi, eax
shr si, 8
and esi, 0xf
mov byte [ecx - 4], bl
movzx ebx, byte [esi + str.0123456789abcdefcustom_action_server]
mov esi, eax
and eax, 0xf
shr si, 4
movzx eax, byte [eax + str.0123456789abcdefcustom_action_server]
and esi, 0xf
mov byte [ecx - 3], bl
movzx ebx, byte [esi + str.0123456789abcdefcustom_action_server]
mov byte [ecx - 1], al
mov byte [ecx - 2], bl
jmp 0x403d08
mov esi, 0x225c
add ecx, 2
mov word [ecx - 2], si
jmp 0x403d08
movzx eax, word [ebp - 0x264]
mov dword [esp], str._04x
mov dword [esp + 4], eax
call sym._wine_dbg_sprintf.constprop.0
mov edx, eax
jmp 0x403bf6
mov eax, 0x725c
add ebx, 2
mov word [ebx - 2], ax
jmp 0x403500
mov eax, 0x745c
add ebx, 2
mov word [ebx - 2], ax
jmp 0x403500
lea edi, [eax - 0x20]
cmp di, 0x5e
jbe 0x404834
mov edi, eax
mov byte [ebx], 0x5c
add ebx, 5
shr di, 0xc
movzx edi, di
movzx ecx, byte [edi + str.0123456789abcdefcustom_action_server]
mov edi, eax
shr di, 8
and edi, 0xf
mov byte [ebx - 4], cl
movzx ecx, byte [edi + str.0123456789abcdefcustom_action_server]
mov edi, eax
and eax, 0xf
shr di, 4
movzx eax, byte [eax + str.0123456789abcdefcustom_action_server]
and edi, 0xf
mov byte [ebx - 3], cl
movzx ecx, byte [edi + str.0123456789abcdefcustom_action_server]
mov byte [ebx - 1], al
mov byte [ebx - 2], cl
jmp 0x403500
mov edi, 0x225c
add ebx, 2
mov word [ebx - 2], di
jmp 0x403500
mov byte [ecx], al
add ecx, 1
jmp 0x403b70
lea edi, [eax - 0x20]
cmp di, 0x5e
jbe 0x40483e
mov edi, eax
mov byte [ebx], 0x5c
add ebx, 5
shr di, 0xc
movzx edi, di
movzx ecx, byte [edi + str.0123456789abcdefcustom_action_server]
mov edi, eax
shr di, 8
and edi, 0xf
mov byte [ebx - 4], cl
movzx ecx, byte [edi + str.0123456789abcdefcustom_action_server]
mov edi, eax
and eax, 0xf
shr di, 4
movzx eax, byte [eax + str.0123456789abcdefcustom_action_server]
and edi, 0xf
mov byte [ebx - 3], cl
movzx ecx, byte [edi + str.0123456789abcdefcustom_action_server]
mov byte [ebx - 1], al
mov byte [ebx - 2], cl
jmp 0x403210
mov edi, 0x225c
add ebx, 2
mov word [ebx - 2], di
jmp 0x403210
mov eax, 0x725c
add ebx, 2
mov word [ebx - 2], ax
jmp 0x403210
mov eax, 0x745c
add ebx, 2
mov word [ebx - 2], ax
jmp 0x403210
mov byte [ecx], 0x22
test esi, esi
jle 0x404cf7
mov edx, 0x2e2e
mov byte [ecx + 3], 0x2e
lea eax, [ecx + 4]
mov word [ecx + 1], dx
mov byte [eax], 0
lea eax, [ebp - 0x230]
mov dword [esp], eax
call sym.___wine_dbg_strdup
jmp 0x403e8c
mov eax, 0x224c
mov byte [ebp - 0x22e], 0x22
lea ecx, [ebp - 0x22e]
mov word [ebp - 0x230], ax
lea eax, [ecx + 1]
jmp 0x4037b8
mov dword [ebp - 0x29c], 0
jmp 0x402e52
mov byte [ecx], al
add ecx, 1
jmp 0x403d08
mov edx, str._null_
jmp 0x403bf6
mov eax, dword [ebp - 0x264]
call sym._get_path_with_extension
mov ebx, eax
test eax, eax
je 0x404852
mov eax, dword [ebp - 0x29c]
mov dword [esp], ebx
mov dword [esp + 4], eax
call sym._MsiInstallProductW_8
sub esp, 8
mov esi, eax
mov dword [esp], ebx
call dword [sym.imp.ucrtbase.dll_free]
mov dword [ebp - 0x27c], esi
jmp 0x402f22
movzx eax, word [ebp - 0x264]
mov dword [esp], str._04x
mov dword [esp + 4], eax
call sym._wine_dbg_sprintf.constprop.0
mov edx, eax
jmp 0x4040f5
mov edi, dword [ebp - 0x25c]
test edi, edi
je 0x405981
mov edx, edi
mov ebx, 1
cmp word [edx + 4], 0
lea ecx, [edx + 4]
je 0x404727
mov eax, ecx
lea esi, [esi]
add eax, 2
cmp word [eax], 0
jne 0x4045b8
sub eax, ecx
sar eax, 1
add eax, 1
mov edx, dword [edx]
add ebx, eax
test edx, edx
jne 0x4045a5
add ebx, ebx
mov dword [esp], ebx
call dword [sym.imp.ucrtbase.dll_malloc]
mov dword [ebp - 0x268], eax
mov edx, eax
movzx ebx, word [edi + 4]
lea ecx, [edi + 4]
test bx, bx
je 0x404731
mov eax, ecx
lea esi, [esi]
add eax, 2
cmp word [eax], 0
jne 0x4045f8
sub eax, ecx
mov esi, eax
add eax, edx
sar esi, 1
mov dword [ebp - 0x260], esi
cmp esi, 1
jbe 0x404690
lea esi, [esi]
sub esi, 1
add edx, 2
add ecx, 2
mov word [edx - 2], bx
cmp esi, 1
je 0x404632
movzx ebx, word [ecx]
test bx, bx
jne 0x404618
xor esi, esi
mov word [edx], si
mov ebx, dword [edi]
test ebx, ebx
je 0x404650
mov ecx, 0x3b
lea edx, [eax + 2]
mov word [eax], cx
mov edi, dword [edi]
test edi, edi
jne 0x4045e3
mov eax, edx
xor edx, edx
movzx ebx, word [ebp - 0x2ae]
mov word [eax], dx
mov eax, dword [ebp - 0x268]
mov dword [esp + 0xc], ebx
mov dword [esp + 8], eax
mov eax, dword [ebp - 0x278]
mov dword [esp + 4], eax
mov eax, dword [ebp - 0x264]
mov dword [esp], eax
call sym._MsiAdvertiseProductW_16
mov dword [ebp - 0x27c], eax
sub esp, 0x10
jmp 0x402f22
mov ecx, dword [ebp - 0x260]
test ecx, ecx
je 0x404637
jmp 0x404632
mov eax, 0x224c
mov byte [ebp - 0x22e], 0x22
lea ecx, [ebp - 0x22e]
mov word [ebp - 0x230], ax
lea eax, [ecx + 1]
jmp 0x403be3
lea eax, [ebp - 0x230]
mov dword [esp + 4], eax
mov eax, dword [ebp - 0x264]
mov dword [esp], eax
call dword [sym.imp.ole32.dll_CLSIDFromString]
sub esp, 8
test eax, eax
jne 0x403da0
test byte [section..data], 1
je 0x40377d
mov dword [esp + 0xc], str.Product_code_treatment_not_implemented_yet_n
mov dword [esp + 8], str.WinMain
mov dword [esp + 4], 0x407000
mov dword [esp], 0
call sym._wine_dbg_log.constprop.0
mov eax, dword [ebp - 0x298]
mov dword [ebp - 0x27c], eax
jmp 0x402f22
mov eax, 1
jmp 0x4045c8
mov eax, edx
jmp 0x404637
movzx eax, word [ebp - 0x264]
mov dword [esp], str._04x
mov dword [esp + 4], eax
call sym._wine_dbg_sprintf.constprop.0
mov edx, eax
jmp 0x404192
mov ecx, dword [eax + esi]
mov dword [ebp - 0x260], eax
cmp word [ecx], 0
je 0x4047c3
mov eax, ecx
add eax, 2
cmp word [eax], 0
jne 0x404767
sub eax, ecx
mov ebx, eax
sar ebx, 1
cmp eax, 4
jle 0x4047c3
mov dword [ebp - 0x274], edi
mov edi, dword [ebp - 0x2a0]
mov edx, 2
movzx eax, word [ecx + edx*2]
sub eax, 0x21
cmp ax, 0x56
ja case.0x40479c.1
movzx eax, ax
jmp dword [eax*4 + 0x4096e8]
mov edi, 0x7fdf
lea esi, [esi]
nop
add edx, 1
cmp edx, ebx
jl 0x40478c
mov dword [ebp - 0x2a0], edi
mov edi, dword [ebp - 0x274]
add edi, 1
cmp dword [ebp - 0x254], edi
jle 0x4059a7
mov eax, dword [ebp - 0x260]
mov eax, dword [eax + esi + 4]
test byte [section..data], 8
jne 0x404928
call sym._remove_quotes
mov ebx, eax
test eax, eax
je 0x40377d
mov eax, dword [ebp - 0x2b8]
mov dword [esp + 4], ebx
mov dword [esp + 8], eax
mov eax, dword [ebp - 0x2a0]
mov dword [esp], eax
call sym._MsiEnableLogW_12
sub esp, 0xc
test eax, eax
jne 0x405b49
mov edx, dword [ebp - 0x254]
jmp 0x4020c0
mov eax, str._null_
jmp 0x403e8c
mov byte [ebx], al
add ebx, 1
jmp 0x403500
mov byte [ebx], al
add ebx, 1
jmp 0x403210
mov edx, str._null_
jmp 0x4040f5
mov dword [ebp - 0x27c], 2
jmp 0x402f22
mov edx, dword [ebp - 0x254]
add edi, 1
cmp edx, edi
jle 0x4059a7
mov ecx, dword [ebp - 0x250]
mov eax, dword [ecx + esi + 4]
mov dword [ebp - 0x294], eax
test byte [section..data], 8
jne 0x4056fd
mov dword [ebp - 0x2a4], 1
jmp 0x4020c0
mov edx, 0x224c
mov byte [ebp - 0x22e], 0x22
lea ebx, [ebp - 0x22e]
mov word [ebp - 0x230], dx
lea eax, [ebx + 1]
jmp 0x4040e2
mov eax, 0x224c
mov byte [ebp - 0x22e], 0x22
lea ebx, [ebp - 0x22e]
mov word [ebp - 0x230], ax
lea eax, [ebx + 1]
jmp 0x40417f
mov eax, 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], 0x407000
mov dword [esp], 3
call sym._wine_dbg_log.constprop.0
mov ecx, dword [ebp - 0x250]
mov edx, dword [ebp - 0x254]
mov ebx, dword [ecx + esi + 4]
jmp 0x403ee1
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], 0x407000
mov dword [esp], 3
call sym._wine_dbg_log.constprop.0
mov eax, dword [ebp - 0x250]
mov eax, dword [eax + esi + 4]
jmp 0x4047e9
mov eax, dword [ebp - 0x294]
lea ecx, [ebp - 0x230]
mov edx, str.DllUnregisterServer
mov dword [ebp - 0x230], 0
call sym._LoadProc.constprop.0
call eax
test eax, eax
mov eax, dword [ebp - 0x294]
js 0x405944
call sym._wine_dbgstr_wn.constprop.0
mov dword [esp], str.Successfully_unregistered_dll__s_n
mov dword [esp + 4], eax
call sym._wine_dbg_printf
mov eax, dword [ebp - 0x230]
test eax, eax
je 0x402f22
mov dword [esp], eax
call dword [sym.imp.kernel32.dll_FreeLibrary]
sub esp, 4
jmp 0x402f22
or edi, 1
jmp case.0x40479c.1
or edi, 0x100
jmp case.0x40479c.1
or edi, 2
jmp case.0x40479c.1
or edi, 0x800
jmp case.0x40479c.1
or edi, 0x10
jmp case.0x40479c.1
or edi, 4
jmp case.0x40479c.1
or edi, 0x1000
jmp case.0x40479c.1
or edi, 8
jmp case.0x40479c.1
or edi, 0x200
jmp case.0x40479c.1
or edi, 0x400
jmp case.0x40479c.1
or edi, 0x80
jmp case.0x40479c.1
or dword [ebp - 0x2b8], 1
jmp case.0x40479c.1
or dword [ebp - 0x2b8], 2
jmp case.0x40479c.1
test ebx, ebx
je 0x405360
mov eax, ebx
shr eax, 0x10
je 0x405264
mov dword [esp + 4], 0xffffffff
mov dword [esp], ebx
call dword [sym.imp.kernel32.dll_IsBadStringPtrW]
mov edx, str._invalid_
sub esp, 8
test eax, eax
jne 0x404b50
cmp word [ebx], 0
je 0x405306
mov edx, eax
lea eax, [eax + 1]
cmp word [ebx + edx*2 + 2], 0
jne 0x404a8c
mov eax, 0x224c
mov dword [ebp - 0x260], esi
mov esi, edx
mov word [ebp - 0x230], ax
lea eax, [ebp - 0x22e]
jmp 0x404ae8
cmp dx, 9
je 0x40502d
cmp dx, 0xa
jne 0x404fcb
mov edx, 0x6e5c
add eax, 2
mov word [eax - 2], dx
lea edx, [esi - 1]
test esi, esi
jle 0x404b1c
lea esi, [ebp - 0x10e]
cmp eax, esi
ja 0x404b1c
mov esi, edx
movzx edx, word [ebx]
add ebx, 2
cmp dx, 0xd
je 0x404fad
jbe 0x404ab5
cmp dx, 0x22
je 0x40501c
cmp dx, 0x5c
jne 0x404fbe
mov edx, 0x5c5c
add eax, 2
mov word [eax - 2], dx
jmp 0x404ad5
mov byte [eax], 0x22
mov esi, dword [ebp - 0x260]
test edx, edx
jle 0x40531f
mov ebx, 0x2e2e
mov byte [eax + 3], 0x2e
lea edx, [eax + 4]
mov word [eax + 1], bx
lea eax, [ebp - 0x230]
mov byte [edx], 0
mov dword [esp], eax
call sym.___wine_dbg_strdup
mov edx, eax
mov dword [esp + 0x14], edx
mov dword [esp + 0x10], edi
mov dword [esp + 0xc], str.argvW__d____s_n
mov dword [esp + 8], str.WinMain
mov dword [esp + 4], 0x407000
mov dword [esp], 3
call sym._wine_dbg_log.constprop.0
mov eax, dword [ebp - 0x250]
mov ebx, dword [eax + esi + 4]
jmp 0x403368
test eax, eax
je 0x405348
shr eax, 0x10
je 0x4052e8
mov ebx, dword [ebp - 0x290]
mov dword [esp + 4], 0xffffffff
mov dword [esp], ebx
call dword [sym.imp.kernel32.dll_IsBadStringPtrW]
mov edx, str._invalid_
sub esp, 8
test eax, eax
jne 0x404c97
cmp word [ebx], 0
je 0x405327
mov edx, ebx
mov ebx, eax
lea eax, [eax + 1]
cmp word [edx + ebx*2 + 2], 0
jne 0x404bcf
mov eax, 0x224c
mov dword [ebp - 0x260], esi
mov esi, dword [ebp - 0x290]
mov word [ebp - 0x230], ax
lea eax, [ebp - 0x22e]
jmp 0x404c2f
cmp dx, 9
je 0x404f9c
cmp dx, 0xa
jne 0x404f3a
mov edx, 0x6e5c
add eax, 2
mov word [eax - 2], dx
lea ecx, [ebp - 0x10e]
lea edx, [ebx - 1]
cmp eax, ecx
ja 0x404c63
test ebx, ebx
jle 0x404c63
mov ebx, edx
movzx edx, word [esi]
add esi, 2
cmp dx, 0xd
je 0x404f1c
jbe 0x404bfc
cmp dx, 0x22
je 0x404f8b
cmp dx, 0x5c
jne 0x404f2d
mov edx, 0x5c5c
add eax, 2
mov word [eax - 2], dx
jmp 0x404c1c
mov byte [eax], 0x22
mov esi, dword [ebp - 0x260]
test edx, edx
jle 0x405340
mov ecx, 0x2e2e
mov byte [eax + 3], 0x2e
lea edx, [eax + 4]
mov word [eax + 1], cx
lea eax, [ebp - 0x230]
mov byte [edx], 0
mov dword [esp], eax
call sym.___wine_dbg_strdup
mov edx, eax
mov dword [esp + 0x14], edx
mov dword [esp + 0x10], edi
mov dword [esp + 0xc], str.argvW__d____s_n
mov dword [esp + 8], str.WinMain
mov dword [esp + 4], 0x407000
mov dword [esp], 3
call sym._wine_dbg_log.constprop.0
mov ecx, dword [ebp - 0x250]
mov edx, dword [ebp - 0x254]
mov eax, dword [ecx + esi + 4]
mov dword [ebp - 0x290], eax
jmp 0x4042d3
mov ebx, 0x224c
mov byte [ebp - 0x22e], 0x22
lea ecx, [ebp - 0x22e]
mov word [ebp - 0x230], bx
lea eax, [ecx + 1]
jmp 0x4044d8
mov eax, dword [ebp - 0x29c]
mov dword [esp + 0xc], eax
mov eax, dword [ebp - 0x28c]
mov dword [esp + 8], eax
mov eax, dword [ebp - 0x264]
mov dword [esp + 4], eax
mov eax, dword [ebp - 0x290]
mov dword [esp], eax
call sym._MsiApplyPatchW_16
mov dword [ebp - 0x27c], eax
sub esp, 0x10
jmp 0x402f22
mov eax, dword [ebp - 0x250]
mov ebx, dword [eax + 8]
test byte [section..data], 8
jne 0x405625
mov dword [esp + 8], 0xa
mov dword [esp + 4], 0
mov dword [esp], ebx
call dword [sym.imp.ucrtbase.dll_wcstol]
mov dword [section..bss], eax
test eax, eax
jne 0x405088
mov dword [ebp - 0x27c], 1
test byte [section..data], 2
je 0x402f22
mov eax, ebx
call sym._wine_dbgstr_wn.constprop.0
mov dword [esp + 0xc], str.Invalid_parameter__s_n
mov dword [esp + 0x10], eax
mov dword [esp + 8], 0x4098ac
mov dword [esp + 4], 0x407000
mov dword [esp], 1
call sym._wine_dbg_log.constprop.0
jmp 0x402f22
mov edx, str._null_
jmp 0x404192
mov eax, dword [ebp - 0x250]
mov eax, dword [eax + esi]
movzx edx, word [eax]
and edx, 0xfffffffd
cmp dx, 0x2d
jne 0x403089
mov edx, 0x4093fb
call sym._msi_option_equal.part.0
test eax, eax
je 0x40503e
test byte [section..data], 1
je 0x403fd3
mov dword [esp + 0xc], str.Unknown_parameter__D_n
mov dword [esp + 8], str.WinMain
mov dword [esp + 4], 0x407000
mov dword [esp], 0
call sym._wine_dbg_log.constprop.0
jmp 0x403fd3
mov eax, dword [ebp - 0x294]
lea ecx, [ebp - 0x230]
mov edx, str.DllRegisterServer
mov dword [ebp - 0x230], 0
call sym._LoadProc.constprop.0
call eax
test eax, eax
mov eax, dword [ebp - 0x294]
js 0x40588a
call sym._wine_dbgstr_wn.constprop.0
mov dword [esp], str.Successfully_registered_dll__s_n
mov dword [esp + 4], eax
call sym._wine_dbg_printf
mov eax, dword [ebp - 0x230]
test eax, eax
jne 0x4049bb
jmp 0x402f22
mov edx, str.REBOOTPROMPT_S_
lea eax, [ebp - 0x25c]
call sym._StringListAppend
mov edx, dword [ebp - 0x254]
mov dword [ebp - 0x29c], 0x63
jmp 0x4020c0
mov eax, dword [ebp - 0x264]
call sym._get_path_with_extension
mov ebx, eax
test eax, eax
je 0x404852
mov eax, dword [ebp - 0x288]
mov dword [esp], ebx
mov dword [esp + 4], eax
call sym._MsiReinstallProductW_8
jmp 0x404559
mov ecx, dword [ebp - 0x250]
mov edx, dword [ecx + esi]
cmp word [edx], 0
je 0x40527e
mov eax, edx
add eax, 2
cmp word [eax], 0
jne 0x404ee9
sub eax, edx
cmp eax, 4
jne 0x40527e
mov dword [ebp - 0x29c], 2
mov edx, dword [ebp - 0x254]
mov dword [0x40a004], 1
jmp 0x4020c0
mov ecx, 0x725c
add eax, 2
mov word [eax - 2], cx
jmp 0x404c1c
lea ecx, [edx - 0x20]
cmp cx, 0x5e
jbe 0x40525a
mov ecx, edx
mov byte [eax], 0x5c
add eax, 5
shr cx, 0xc
movzx ecx, cx
movzx ecx, byte [ecx + str.0123456789abcdefcustom_action_server]
mov byte [eax - 4], cl
mov ecx, edx
shr cx, 8
and ecx, 0xf
movzx ecx, byte [ecx + str.0123456789abcdefcustom_action_server]
mov byte [eax - 3], cl
mov ecx, edx
and edx, 0xf
shr cx, 4
movzx edx, byte [edx + str.0123456789abcdefcustom_action_server]
and ecx, 0xf
movzx ecx, byte [ecx + str.0123456789abcdefcustom_action_server]
mov byte [eax - 1], dl
mov byte [eax - 2], cl
jmp 0x404c1c
mov ecx, 0x225c
add eax, 2
mov word [eax - 2], cx
jmp 0x404c1c
mov edx, 0x745c
add eax, 2
mov word [eax - 2], dx
jmp 0x404c1c
mov ecx, 0x725c
add eax, 2
mov word [eax - 2], cx
jmp 0x404ad5
lea ecx, [edx - 0x20]
cmp cx, 0x5e
jbe 0x40507e
mov ecx, edx
mov byte [eax], 0x5c
add eax, 5
shr cx, 0xc
movzx ecx, cx
movzx ecx, byte [ecx + str.0123456789abcdefcustom_action_server]
mov byte [eax - 4], cl
mov ecx, edx
shr cx, 8
and ecx, 0xf
movzx ecx, byte [ecx + str.0123456789abcdefcustom_action_server]
mov byte [eax - 3], cl
mov ecx, edx
and edx, 0xf
shr cx, 4
movzx edx, byte [edx + str.0123456789abcdefcustom_action_server]
and ecx, 0xf
movzx ecx, byte [ecx + str.0123456789abcdefcustom_action_server]
mov byte [eax - 1], dl
mov byte [eax - 2], cl
jmp 0x404ad5
mov ecx, 0x225c
add eax, 2
mov word [eax - 2], cx
jmp 0x404ad5
mov edx, 0x745c
add eax, 2
mov word [eax - 2], dx
jmp 0x404ad5
mov eax, dword [ebp - 0x250]
mov eax, dword [eax + esi]
movzx edx, word [eax]
and edx, 0xfffffffd
cmp dx, 0x2d
jne 0x403089
mov edx, 0x409413
call sym._msi_option_equal.part.0
test eax, eax
je 0x405352
mov dword [ebp - 0x2b4], 1
mov edx, dword [ebp - 0x254]
jmp 0x4020c0
mov byte [eax], dl
add eax, 1
jmp 0x404ad5
lea ebx, [ebp - 0x230]
mov dword [esp + 0x10], 0x20
mov dword [esp + 0xc], eax
mov dword [esp + 8], str..pipemsica__x__d
mov dword [esp + 4], 0x18
mov dword [esp], ebx
call sym._swprintf
mov dword [esp + 0x18], 0
mov dword [esp + 0x14], 0
mov dword [esp + 0x10], 3
mov dword [esp + 0xc], 0
mov dword [esp + 8], 0
mov dword [esp + 4], 0xc0000000
mov dword [esp], ebx
call dword [sym.imp.kernel32.dll_CreateFileW]
sub esp, 0x1c
mov esi, eax
cmp eax, 0xffffffff
je 0x4059f4
mov dword [esp + 4], 0
lea ebx, [ebp - 0x240]
lea edi, [ebp - 0x24c]
mov dword [esp], 0
call dword [sym.imp.ole32.dll_CoInitializeEx]
sub esp, 8
jmp 0x4051d5
mov dword [esp], 0x10
call dword [sym.imp.ucrtbase.dll_malloc]
mov edx, dword [ebp - 0x240]
mov dword [eax], edx
mov edx, dword [ebp - 0x23c]
mov dword [eax + 4], edx
mov edx, dword [ebp - 0x238]
mov dword [eax + 8], edx
mov edx, dword [ebp - 0x234]
mov dword [eax + 0xc], edx
mov dword [esp + 0x14], 0
mov dword [esp + 0x10], 0
mov dword [esp + 0xc], eax
mov dword [esp + 8], sym._custom_action_thread_4
mov dword [esp + 4], 0
mov dword [esp], 0
call dword [sym.imp.kernel32.dll_CreateThread]
mov dword [ebp - 0x244], 0
sub esp, 0x18
mov dword [ebp - 0x248], eax
lea eax, [ebp - 0x248]
mov dword [esp + 0x10], 0
mov dword [esp + 0xc], edi
mov dword [esp + 8], 8
mov dword [esp + 4], eax
mov dword [esp], esi
call dword [sym.imp.kernel32.dll_WriteFile]
sub esp, 0x14
test eax, eax
je 0x4057ce
cmp dword [ebp - 0x24c], 8
jne 0x4057ce
mov dword [esp + 0x10], 0
mov dword [esp + 0xc], edi
mov dword [esp + 8], 0x10
mov dword [esp + 4], ebx
mov dword [esp], esi
call dword [sym.imp.kernel32.dll_ReadFile]
sub esp, 0x14
test eax, eax
je 0x4059b1
cmp dword [ebp - 0x24c], 0x10
jne 0x4059b1
mov eax, dword [0x4098cc]
cmp dword [ebx], eax
jne 0x405122
mov eax, dword [0x4098d0]
cmp dword [ebx + 4], eax
jne 0x405122
mov eax, dword [0x4098d4]
cmp dword [ebx + 8], eax
jne 0x405122
mov eax, dword [0x4098d8]
cmp dword [ebx + 0xc], eax
jne 0x405122
mov dword [ebp - 0x27c], 0
call dword [sym.imp.ole32.dll_CoUninitialize]
jmp 0x402f22
mov byte [eax], dl
add eax, 1
jmp 0x404c1c
movzx ebx, bx
mov dword [esp], str._04x
mov dword [esp + 4], ebx
call sym._wine_dbg_sprintf.constprop.0
mov edx, eax
jmp 0x404b50
lea eax, [edx + 4]
mov edx, 0x409360
call sym._msi_strequal
test eax, eax
jne 0x404efd
mov eax, dword [ebp - 0x250]
mov edx, str.uiet
mov eax, dword [eax + esi]
add eax, 4
call sym._msi_strequal
test eax, eax
jne 0x404efd
mov eax, dword [ebp - 0x250]
mov edx, 0x409367
mov eax, dword [eax + esi]
add eax, 4
call sym._msi_strequal
test eax, eax
je 0x405a3e
mov dword [ebp - 0x29c], 4
mov edx, dword [ebp - 0x254]
jmp 0x4020c0
movzx eax, word [ebp - 0x290]
mov dword [esp], str._04x
mov dword [esp + 4], eax
call sym._wine_dbg_sprintf.constprop.0
mov edx, eax
jmp 0x404c97
mov byte [ebp - 0x22e], 0x22
mov eax, 0x224c
mov word [ebp - 0x230], ax
lea eax, [ebp - 0x22e]
lea edx, [eax + 1]
jmp 0x404b3d
mov byte [ebp - 0x22e], 0x22
mov eax, 0x224c
mov word [ebp - 0x230], ax
lea eax, [ebp - 0x22e]
lea edx, [eax + 1]
jmp 0x404c84
mov edx, str._null_
jmp 0x404c97
mov eax, dword [ebp - 0x250]
mov eax, dword [eax + esi]
jmp 0x403089
mov edx, str._null_
jmp 0x404b50
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], 0x407000
mov dword [esp], 3
call sym._wine_dbg_log.constprop.0
mov ecx, dword [ebp - 0x250]
mov edx, dword [ebp - 0x254]
mov eax, dword [ecx + esi + 4]
mov dword [ebp - 0x294], eax
jmp 0x4036b5
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 0x405a8a
mov dword [esp + 8], 0x10000
mov dword [esp + 4], 0x40955e
mov dword [esp], eax
call dword [sym.imp.advapi32.dll_OpenServiceW]
sub esp, 0xc
mov esi, eax
test eax, eax
je 0x40590e
mov dword [esp], eax
call dword [sym.imp.advapi32.dll_DeleteService]
sub esp, 4
test eax, eax
je 0x405aa7
mov dword [esp], esi
mov esi, dword [sym.imp.advapi32.dll_CloseServiceHandle]
call esi
sub esp, 4
mov dword [esp], ebx
call esi
mov eax, dword [ebp - 0x270]
sub esp, 4
mov dword [ebp - 0x27c], eax
jmp 0x402f22
mov dword [esp + 8], 2
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 0x405a6d
lea esi, [ebp - 0x230]
mov dword [esp + 4], 0x104
mov dword [esp], esi
call dword [sym.imp.kernel32.dll_GetSystemDirectoryW]
mov edx, 0x5c
lea ecx, [esi + eax*2]
sub esp, 8
xor eax, eax
jmp 0x405498
movzx edx, word [eax + str.msiexec__V]
mov word [ecx + eax], dx
add eax, 2
test dx, dx
jne 0x405491
mov dword [esp + 0x30], 0
mov dword [esp + 0x2c], 0
mov dword [esp + 0x28], 0
mov dword [esp + 0x24], 0
mov dword [esp + 0x20], 0
mov dword [esp + 0x1c], esi
mov dword [esp + 0x18], 1
mov dword [esp + 0x14], 3
mov dword [esp + 0x10], 0x20
mov dword [esp + 0xc], 0x10000000
mov dword [esp + 8], 0x40955e
mov dword [esp + 4], 0x40955e
mov dword [esp], ebx
call dword [sym.imp.advapi32.dll_CreateServiceW]
sub esp, 0x34
test eax, eax
je 0x4058b0
mov dword [esp], eax
mov esi, dword [sym.imp.advapi32.dll_CloseServiceHandle]
call esi
sub esp, 4
mov dword [esp], ebx
call esi
sub esp, 4
mov eax, dword [ebp - 0x2a4]
mov dword [ebp - 0x27c], eax
jmp 0x402f22
mov eax, dword [ebp - 0x250]
mov ecx, dword [eax]
cmp word [ecx], 0
je 0x405b38
mov edx, ecx
add edx, 2
cmp word [edx], 0
jne 0x40554f
sub edx, ecx
lea eax, [edx + 2]
mov dword [ebp - 0x264], eax
mov eax, dword [ebp - 0x264]
mov dword [ebp - 0x274], edx
mov dword [ebp - 0x270], ecx
mov dword [esp], eax
call dword [sym.imp.ucrtbase.dll_malloc]
mov ecx, dword [ebp - 0x270]
mov edx, dword [ebp - 0x274]
test eax, eax
mov edi, eax
je 0x405b15
mov dword [esp + 8], edx
mov dword [esp + 4], ecx
mov dword [esp], eax
mov dword [ebp - 0x270], edx
call sym._memcpy
mov edx, dword [ebp - 0x270]
mov eax, 0x20
mov word [edi + edx], ax
mov eax, dword [ebp - 0x264]
mov dword [esp + 0x14], ebx
add eax, edi
mov dword [esp + 0xc], esi
mov dword [esp + 0x10], eax
mov eax, dword [ebp - 0x260]
mov dword [esp + 8], 0
mov dword [esp + 4], eax
mov eax, dword [ebp - 0x268]
mov dword [esp], eax
mov eax, dword [ebp - 0x26c]
call eax
sub esp, 0x18
test eax, eax
je 0x405857
mov dword [esp], edi
call dword [sym.imp.ucrtbase.dll_free]
mov eax, dword [ebp - 0x248]
mov dword [esp], eax
call dword [sym.imp.advapi32.dll_RegCloseKey]
mov dword [ebp - 0x27c], 1
sub esp, 4
jmp 0x402f22
test ebx, ebx
je 0x405bbe
mov eax, ebx
shr eax, 0x10
je 0x4057a8
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 0x40577b
cmp word [ebx], 0
je 0x405af7
mov ecx, edx
lea edx, [edx + 1]
cmp word [ebx + ecx*2 + 2], 0
jne 0x405665
mov eax, 0x224c
mov dword [ebp - 0x260], ebx
mov esi, ebx
mov word [ebp - 0x230], ax
lea eax, [ebp - 0x22e]
jmp 0x4056c9
cmp dx, 9
je 0x405846
cmp dx, 0xa
jne 0x4057f5
mov edi, 0x6e5c
add eax, 2
mov word [eax - 2], di
lea edi, [ebp - 0x10e]
lea edx, [ecx - 1]
cmp eax, edi
ja 0x405749
test ecx, ecx
jle 0x405749
mov ecx, edx
movzx edx, word [esi]
add esi, 2
cmp dx, 0xd
je 0x4057bd
jbe 0x40568e
cmp dx, 0x22
je 0x4058fd
cmp dx, 0x5c
jne 0x4058e6
mov ebx, 0x5c5c
add eax, 2
mov word [eax - 2], bx
jmp 0x4056ae
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], 0x407000
mov dword [esp], 3
call sym._wine_dbg_log.constprop.0
mov ecx, dword [ebp - 0x250]
mov edx, dword [ebp - 0x254]
mov eax, dword [ecx + esi + 4]
mov dword [ebp - 0x294], eax
jmp 0x40488f
mov byte [eax], 0x22
mov ebx, dword [ebp - 0x260]
test edx, edx
jle 0x405b0d
mov ecx, 0x2e2e
mov byte [eax + 3], 0x2e
lea edx, [eax + 4]
mov word [eax + 1], cx
lea eax, [ebp - 0x230]
mov byte [edx], 0
mov dword [esp], eax
call sym.___wine_dbg_strdup
mov dword [esp + 0x10], eax
mov dword [esp + 0xc], 0x40915c
mov dword [esp + 8], 0x4098ac
mov dword [esp + 4], 0x407000
mov dword [esp], 3
call sym._wine_dbg_log.constprop.0
jmp 0x404d4f
movzx eax, bx
mov dword [esp], str._04x
mov dword [esp + 4], eax
call sym._wine_dbg_sprintf.constprop.0
jmp 0x40577b
mov ebx, 0x725c
add eax, 2
mov word [eax - 2], bx
jmp 0x4056ae
test byte [section..data], 2
jne 0x405b88
call dword [sym.imp.ole32.dll_CoUninitialize]
mov eax, dword fs:[0x18]
mov eax, dword [eax + 0x34]
mov dword [ebp - 0x27c], eax
jmp 0x402f22
mov edi, edx
mov byte [eax], 0x5c
add eax, 5
shr di, 0xc
movzx edi, di
movzx ebx, byte [edi + str.0123456789abcdefcustom_action_server]
mov edi, edx
shr di, 8
and edi, 0xf
mov byte [eax - 4], bl
movzx ebx, byte [edi + str.0123456789abcdefcustom_action_server]
mov edi, edx
and edx, 0xf
shr di, 4
movzx edx, byte [edx + str.0123456789abcdefcustom_action_server]
and edi, 0xf
mov byte [eax - 3], bl
movzx ebx, byte [edi + str.0123456789abcdefcustom_action_server]
mov byte [eax - 1], dl
mov byte [eax - 2], bl
jmp 0x4056ae
mov edx, 0x745c
add eax, 2
mov word [eax - 2], dx
jmp 0x4056ae
lea ecx, [ebp - 0x250]
lea edx, [ebp - 0x254]
mov eax, edi
call sym._process_args
mov dword [esp], edi
call dword [sym.imp.ucrtbase.dll_free]
mov eax, dword [ebp - 0x248]
mov dword [esp], eax
call dword [sym.imp.advapi32.dll_RegCloseKey]
sub esp, 4
jmp 0x403394
call sym._wine_dbgstr_wn.constprop.0
mov dword [esp], str.Failed_to_register_dll__s_n
mov dword [esp + 4], eax
call sym._report_error
mov eax, dword [ebp - 0x2ac]
mov dword [ebp - 0x27c], eax
jmp 0x402f22
mov eax, dword fs:[0x18]
cmp dword [eax + 0x34], 0x431
mov esi, dword [sym.imp.advapi32.dll_CloseServiceHandle]
je 0x405522
mov dword [esp], str.Failed_to_create_MSI_service_n
call sym._report_error
mov eax, dword [ebp - 0x270]
mov dword [ebp - 0x2a4], eax
jmp 0x405522
lea edi, [edx - 0x20]
cmp di, 0x5e
ja 0x4057f5
mov byte [eax], dl
add eax, 1
jmp 0x4056ae
mov edi, 0x225c
add eax, 2
mov word [eax - 2], di
jmp 0x4056ae
mov eax, dword fs:[0x18]
cmp dword [eax + 0x34], 0x424
mov esi, dword [sym.imp.advapi32.dll_CloseServiceHandle]
je 0x405428
mov dword [esp], str.Failed_to_open_MSI_service_n
call sym._report_error
mov eax, dword [ebp - 0x268]
mov dword [ebp - 0x270], eax
jmp 0x405428
call sym._wine_dbgstr_wn.constprop.0
mov dword [esp], str.Failed_to_unregister_dll__s_n
mov dword [esp + 4], eax
call sym._report_error
mov eax, dword [ebp - 0x2a4]
mov dword [ebp - 0x27c], eax
jmp 0x402f22
mov dword [esp + 0xc], str.Unknown_parameter__m_n
jmp 0x404e0a
call sym._DoService
jmp 0x403dc4
mov dword [esp], 2
call dword [sym.imp.ucrtbase.dll_malloc]
mov dword [ebp - 0x268], eax
jmp 0x404650
xor ecx, ecx
mov word [ebp - 0x2ae], cx
jmp 0x4020c0
mov eax, 1
call sym._ShowUsage
test byte [section..data], 2
je 0x4057db
mov eax, dword fs:[0x18]
mov eax, dword [eax + 0x34]
mov dword [esp + 0xc], str.Failed_to_read_from_custom_action_server_pipe:__lu_n
mov dword [esp + 8], 0x4098ac
mov dword [esp + 0x10], eax
mov dword [esp + 4], 0x407000
mov dword [esp], 1
call sym._wine_dbg_log.constprop.0
jmp 0x4057db
test byte [section..data], 2
je 0x4057e1
mov eax, dword fs:[0x18]
mov eax, dword [eax + 0x34]
mov dword [esp + 0xc], str.Failed_to_create_custom_action_server_pipe:__lu_n
mov dword [esp + 8], 0x4098ac
mov dword [esp + 0x10], eax
mov dword [esp + 4], 0x407000
mov dword [esp], 1
call sym._wine_dbg_log.constprop.0
jmp 0x4057e1
xor eax, eax
call sym._ShowUsage
mov eax, dword [ebp - 0x250]
mov edx, 0x40929e
mov eax, dword [eax + esi]
add eax, 4
call sym._msi_strequal
test eax, eax
je 0x405ac4
mov dword [ebp - 0x29c], 0x85
mov edx, dword [ebp - 0x254]
jmp 0x4020c0
mov dword [esp], str.Failed_to_open_the_service_control_manager._n
call sym._report_error
mov eax, dword [ebp - 0x270]
mov dword [ebp - 0x2a4], eax
jmp 0x40552a
mov dword [esp], str.Failed_to_open_service_control_manager_n
call sym._report_error
mov eax, dword [ebp - 0x268]
mov dword [ebp - 0x27c], eax
jmp 0x402f22
mov dword [esp], str.Failed_to_delete_MSI_service_n
call sym._report_error
mov eax, dword [ebp - 0x268]
mov dword [ebp - 0x270], eax
jmp 0x40541a
mov eax, dword [ebp - 0x250]
mov edx, 0x409369
mov eax, dword [eax + esi]
add eax, 4
call sym._msi_strequal
test eax, eax
je 0x405bc8
mov dword [ebp - 0x29c], 0x82
mov edx, dword [ebp - 0x254]
jmp 0x4020c0
mov word [ebp - 0x230], 0x224c
lea eax, [ebp - 0x22e]
mov byte [ebp - 0x22e], 0x22
lea edx, [eax + 1]
jmp 0x40576a
mov eax, dword [ebp - 0x268]
mov dword [esp], eax
call dword [sym.imp.advapi32.dll_RegCloseKey]
mov dword [ebp - 0x27c], 1
push eax
jmp 0x402f22
mov dword [ebp - 0x264], 2
xor edx, edx
jmp 0x405563
mov eax, ebx
call sym._wine_dbgstr_wn.constprop.0
mov esi, dword [ebp - 0x2b8]
mov dword [esp], str.Logging_in__s__0x_08lx___lu__failed_n
mov dword [esp + 4], eax
mov dword [esp + 0xc], esi
mov esi, dword [ebp - 0x2a0]
mov dword [esp + 8], esi
call sym._report_error
mov dword [esp], 1
call dword [sym.imp.kernel32.dll_ExitProcess]
mov eax, dword fs:[0x18]
mov eax, dword [eax + 0x34]
mov dword [esp + 0xc], str.Failed_to_write_to_custom_action_server_pipe:__lu_n
mov dword [esp + 8], 0x4098ac
mov dword [esp + 0x10], eax
mov dword [esp + 4], 0x407000
mov dword [esp], 1
call sym._wine_dbg_log.constprop.0
jmp 0x4057db
mov eax, str._null_
jmp 0x40577b
mov eax, dword [ebp - 0x250]
mov edx, 0x40936c
mov eax, dword [eax + esi]
add eax, 4
call sym._msi_strprefix
test eax, eax
jne 0x405c0e
mov eax, dword [ebp - 0x250]
mov eax, dword [eax + esi]
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
mov edx, dword [ebp - 0x254]
jmp 0x4020c0
mov ecx, dword [ebp - 0x250]
mov ebx, dword [ecx + esi]
mov esi, 3
add ebx, 6
jmp 0x405c27
or esi, 0x20
add ebx, 2
cmp word [ebx], 0
je 0x405c95
mov edx, 0x40936e
mov eax, ebx
call sym._msi_strprefix
test eax, eax
je 0x405c43
or esi, 0x80
mov edx, 0x409370
mov eax, ebx
call sym._msi_strprefix
test eax, eax
je 0x405c56
or esi, 0x40
mov edx, 0x409372
mov eax, ebx
call sym._msi_strprefix
test eax, eax
je 0x405c24
test byte [section..data], 1
je 0x405c21
mov dword [esp + 0xc], 0x409374
mov dword [esp + 8], str.WinMain
mov dword [esp + 4], 0x407000
mov dword [esp], 0
call sym._wine_dbg_log.constprop.0
jmp 0x405c21
mov dword [ebp - 0x29c], esi
mov edx, dword [ebp - 0x254]
jmp 0x4020c0