Function at 0x401e20
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 dbg.process_args
cmp dword [ebp - 0x254], 1
jle 0x403806
mov edi, dword [ebp - 0x250]
mov eax, dword [edi + 4]
movzx edx, word [eax]
and edx, 0xfffffffd
cmp dx, 0x2d
je 0x4032a0
xor eax, eax
mov ebx, 1
mov esi, edi
mov dword [ebp - 0x29c], 0
mov dword [ebp - 0x28c], 5
mov edi, ebx
mov dword [ebp - 0x290], 0
mov dword [ebp - 0x2ac], 0
mov dword [ebp - 0x2a0], 0
mov dword [ebp - 0x298], 0
mov word [ebp - 0x2b2], ax
mov dword [ebp - 0x27c], 0
mov dword [ebp - 0x288], 0
mov dword [ebp - 0x268], 0
mov dword [ebp - 0x2a8], 0
mov dword [ebp - 0x2b8], 0
mov dword [ebp - 0x26c], 0
mov dword [ebp - 0x270], 0
mov dword [ebp - 0x2b0], 0
mov dword [ebp - 0x2a4], 0
mov dword [ebp - 0x280], 0
mov dword [ebp - 0x284], 0
mov dword [ebp - 0x294], 0
mov dword [ebp - 0x278], 0
mov dword [ebp - 0x274], 0
jmp 0x401fdd
mov edx, str.umtgl
mov eax, ebx
call dbg.msi_strequal
test eax, eax
je 0x402749
mov edx, dword [ebp - 0x254]
add edi, 1
cmp edx, edi
jle 0x405774
mov esi, dword [ebp - 0x250]
mov eax, dword [ebp - 0x260]
mov eax, dword [esi + eax + 4]
mov dword [ebp - 0x268], eax
test byte [section..data], 8
jne 0x402ec0
mov dword [ebp - 0x27c], 1
mov dword [ebp - 0x284], 1
add edi, 1
cmp edi, edx
jge 0x402035
mov esi, dword [ebp - 0x250]
lea eax, [edi*4]
mov ebx, dword [esi + edi*4]
mov dword [ebp - 0x260], eax
test byte [section..data], 8
jne 0x402430
movzx eax, word [ebx]
and eax, 0xfffffffd
cmp ax, 0x2d
jne 0x401f74
mov edx, str.regserver
mov eax, ebx
call sym._msi_option_equal.part.1
test eax, eax
je 0x402270
mov edx, dword [ebp - 0x254]
add edi, 1
mov dword [ebp - 0x270], 1
cmp edi, edx
jl 0x401fd7
movzx eax, byte [ebp - 0x278]
and al, byte [ebp - 0x280]
xor eax, 1
and al, byte [ebp - 0x274]
mov byte [ebp - 0x298], al
mov eax, dword [ebp - 0x28c]
mov dword [esp + 4], 0
mov dword [esp], eax
call sym._MsiSetInternalUI_8
mov edi, dword [ebp - 0x25c]
sub esp, 8
test edi, edi
je 0x4045f9
mov edx, edi
mov ebx, 1
nop
cmp word [edx + 4], 0
lea ecx, [edx + 4]
je 0x402fb0
mov eax, ecx
add eax, 2
cmp word [eax], 0
jne 0x402090
sub eax, ecx
sar eax, 1
add eax, 3
mov edx, dword [edx]
add ebx, eax
test edx, edx
jne 0x402080
add ebx, ebx
mov dword [esp], ebx
call dword [sym.imp.ucrtbase.dll_malloc]
mov dword [ebp - 0x2a0], eax
mov dword [ebp - 0x260], eax
jmp 0x4020cb
mov edi, dword [edi]
test edi, edi
je 0x4021ce
lea esi, [edi + 4]
mov dword [esp + 4], 0x3d
mov dword [esp], esi
call dword [sym.imp.ucrtbase.dll_wcschr]
mov ebx, eax
test eax, eax
je 0x4020c1
mov ecx, dword [ebp - 0x260]
mov edx, 0x20
mov word [ecx], dx
lea eax, [ecx + 2]
mov ecx, ebx
sub ecx, esi
mov dword [esp + 4], esi
mov esi, eax
mov dword [esp + 8], ecx
mov dword [esp], eax
mov dword [ebp - 0x260], ecx
mov dword [ebp - 0x28c], eax
call sym._memcpy
mov ecx, dword [ebp - 0x260]
lea edx, [ebx + 2]
mov dword [ebp - 0x264], edx
add ecx, esi
mov esi, 0x3d
mov word [ecx], si
mov dword [ebp - 0x278], ecx
mov dword [esp], edx
mov dword [esp + 4], 0x20
call dword [sym.imp.ucrtbase.dll_wcschr]
mov edx, dword [ebp - 0x264]
test eax, eax
mov dword [ebp - 0x274], eax
je 0x402d70
mov ecx, dword [ebp - 0x278]
mov eax, 0x22
mov word [ecx + 2], ax
cmp word [ebx + 2], 0
lea esi, [ecx + 4]
je 0x4021b3
mov eax, edx
lea esi, [esi]
nop
add eax, 2
cmp word [eax], 0
jne 0x402180
sub eax, edx
mov dword [esp], esi
mov dword [esp + 8], eax
mov ebx, eax
mov dword [esp + 4], edx
add esi, ebx
call sym._memcpy
mov ebx, dword [ebp - 0x274]
mov dword [ebp - 0x260], esi
test ebx, ebx
je 0x4020c1
mov ecx, 0x22
lea eax, [esi + 2]
mov word [esi], cx
mov edi, dword [edi]
mov dword [ebp - 0x260], eax
test edi, edi
jne 0x4020cb
mov eax, dword [ebp - 0x260]
xor edx, edx
mov word [eax], dx
test byte [section..data], 8
jne 0x403b6f
cmp byte [ebp - 0x298], 0
jne 0x403c4a
mov esi, dword [ebp - 0x294]
test esi, esi
je 0x403196
mov eax, dword [ebp - 0x268]
cmp word [eax], 0
je 0x402228
lea esi, [esi]
add eax, 2
cmp word [eax], 0
jne 0x402210
sub eax, dword [ebp - 0x268]
cmp eax, 0x4c
je 0x403d22
mov eax, dword [ebp - 0x288]
mov dword [esp + 4], eax
mov eax, dword [ebp - 0x268]
mov dword [esp], eax
call sym._MsiReinstallProductW_8
sub esp, 8
cmp eax, 2
je 0x40467e
mov dword [ebp - 0x280], eax
mov eax, dword [ebp - 0x280]
lea esp, [ebp - 0x10]
pop ecx
pop ebx
pop esi
pop edi
pop ebp
lea esp, [ecx - 4]
ret 0x10
mov eax, dword [ebp - 0x250]
mov ecx, dword [ebp - 0x260]
mov ebx, dword [eax + ecx]
movzx eax, word [ebx]
and eax, 0xfffffffd
cmp ax, 0x2d
jne 0x401f74
mov edx, str.unregserver
mov eax, ebx
call sym._msi_option_equal.part.1
test eax, eax
jne 0x402414
mov eax, dword [ebp - 0x250]
mov ecx, dword [ebp - 0x260]
mov ebx, dword [eax + ecx]
movzx eax, word [ebx]
and eax, 0xfffffffd
cmp ax, 0x2d
jne 0x401f74
mov edx, str.unregister
mov eax, ebx
call sym._msi_option_equal.part.1
test eax, eax
jne 0x402414
mov eax, dword [ebp - 0x250]
mov ecx, dword [ebp - 0x260]
mov ebx, dword [eax + ecx]
movzx eax, word [ebx]
and eax, 0xfffffffd
cmp ax, 0x2d
jne 0x401f74
mov edx, str.unreg
mov eax, ebx
call sym._msi_option_equal.part.1
test eax, eax
jne 0x402414
mov eax, dword [ebp - 0x250]
mov ecx, dword [ebp - 0x260]
mov ebx, dword [eax + ecx]
movzx eax, word [ebx]
and eax, 0xfffffffd
cmp ax, 0x2d
jne 0x401f74
mov edx, 0x40927b
mov eax, ebx
call sym._msi_option_prefix.part.2
test eax, eax
jne 0x4027c0
mov eax, dword [ebp - 0x250]
mov ecx, dword [ebp - 0x260]
mov ebx, dword [eax + ecx]
movzx eax, word [ebx]
and eax, 0xfffffffd
cmp ax, 0x2d
jne 0x401f74
mov edx, str.package
mov eax, ebx
call sym._msi_option_prefix.part.2
test eax, eax
jne 0x4027c0
mov eax, dword [ebp - 0x250]
mov esi, dword [ebp - 0x260]
mov ebx, dword [eax + esi]
movzx eax, word [ebx]
and eax, 0xfffffffd
cmp ax, 0x2d
jne 0x401f74
mov edx, 0x409285
mov eax, ebx
call sym._msi_option_equal.part.1
test eax, eax
je 0x402660
add edi, 1
cmp dword [ebp - 0x254], edi
jle 0x405774
mov eax, dword [ebp - 0x250]
mov eax, dword [eax + esi + 4]
mov dword [ebp - 0x268], eax
test byte [section..data], 8
jne 0x402dd0
mov edx, str.ACTIONADMIN
lea eax, [ebp - 0x25c]
call sym._StringListAppend
test byte [section..data], 1
jne 0x402da0
mov dword [ebp - 0x290], 1
mov edx, dword [ebp - 0x254]
mov dword [ebp - 0x278], 1
mov dword [ebp - 0x274], 1
jmp 0x401fd0
mov dword [ebp - 0x26c], 1
mov edx, dword [ebp - 0x254]
jmp 0x401fd0
test ebx, ebx
je 0x402a75
mov eax, ebx
shr eax, 0x10
je 0x402640
mov dword [esp + 4], 0xffffffff
mov dword [esp], ebx
call dword [sym.imp.kernel32.dll_IsBadStringPtrW]
mov esi, eax
sub esp, 8
mov eax, str._invalid_
test esi, esi
jne 0x402528
cmp word [ebx], 0
je 0x40247a
lea esi, [esi]
add esi, 1
cmp word [ebx + esi*2], 0
jne 0x402470
mov eax, 0x224c
lea edx, [ebp - 0x22e]
mov dword [ebp - 0x264], ebx
lea ecx, [esi - 1]
mov word [ebp - 0x230], ax
lea eax, [ebp - 0x10e]
cmp edx, eax
ja 0x4024fd
nop
test esi, esi
jle 0x4024fd
add dword [ebp - 0x264], 2
mov eax, dword [ebp - 0x264]
movzx eax, word [eax - 2]
cmp ax, 0xd
je 0x402610
ja 0x402570
cmp ax, 9
je 0x4025f3
cmp ax, 0xa
jne 0x402593
mov eax, 0x6e5c
add edx, 2
mov esi, ecx
mov word [edx - 2], ax
lea esi, [esi]
nop
lea eax, [ebp - 0x10e]
lea ecx, [esi - 1]
cmp edx, eax
jbe 0x4024a0
mov byte [edx], 0x22
lea eax, [edx + 1]
test ecx, ecx
jle 0x402517
mov ecx, 0x2e2e
mov byte [edx + 3], 0x2e
lea eax, [edx + 4]
mov word [edx + 1], cx
mov byte [eax], 0
lea eax, [ebp - 0x230]
mov dword [esp], eax
call dbg.__wine_dbg_strdup
mov dword [esp + 0x14], eax
mov dword [esp + 0x10], edi
mov dword [esp + 0xc], str.argvW__d____s_n
mov dword [esp + 8], global___func__.1
mov dword [esp + 4], 0x407000
mov dword [esp], 3
call sym._wine_dbg_log.constprop.10
mov eax, dword [ebp - 0x250]
mov ecx, dword [ebp - 0x260]
mov ebx, dword [eax + ecx]
jmp 0x401ffa
cmp ax, 0x22
je 0x402623
cmp ax, 0x5c
jne 0x402593
mov ebx, 0x5c5c
add edx, 2
mov esi, ecx
mov word [edx - 2], bx
jmp 0x4024f0
lea esi, [eax - 0x20]
cmp si, 0x5e
jbe 0x4027b1
mov esi, eax
mov byte [edx], 0x5c
add edx, 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 [edx - 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 [edx - 3], bl
movzx ebx, byte [esi + str.0123456789abcdefcustom_action_server]
mov byte [edx - 1], al
mov esi, ecx
mov byte [edx - 2], bl
jmp 0x4024f0
mov eax, 0x745c
add edx, 2
mov esi, ecx
mov word [edx - 2], ax
jmp 0x4024f0
mov eax, 0x725c
add edx, 2
mov esi, ecx
mov word [edx - 2], ax
jmp 0x4024f0
mov esi, 0x225c
add edx, 2
mov word [edx - 2], si
mov esi, ecx
jmp 0x4024f0
movzx ebx, bx
mov dword [esp], str._04x
mov dword [esp + 4], ebx
call sym._wine_dbg_sprintf.constprop.8
jmp 0x402528
mov eax, dword [ebp - 0x250]
mov ecx, dword [ebp - 0x260]
mov ebx, dword [eax + ecx]
movzx eax, word [ebx]
and eax, 0xfffffffd
cmp ax, 0x2d
jne 0x401f74
mov edx, 0x4092d9
mov eax, ebx
call sym._msi_option_prefix.part.2
mov ecx, dword [ebp - 0x260]
test eax, eax
mov eax, dword [ebp - 0x250]
jne 0x402be0
mov ebx, dword [eax + ecx]
movzx eax, word [ebx]
and eax, 0xfffffffd
cmp ax, 0x2d
jne 0x401f74
mov edx, 0x409300
mov eax, ebx
call sym._msi_option_prefix.part.2
test eax, eax
jne 0x402860
mov eax, dword [ebp - 0x250]
mov ecx, dword [ebp - 0x260]
mov ebx, dword [eax + ecx]
movzx eax, word [ebx]
and eax, 0xfffffffd
cmp ax, 0x2d
jne 0x401f74
mov edx, str.uninstall
mov eax, ebx
call sym._msi_option_equal.part.1
test eax, eax
jne 0x402860
mov eax, dword [ebp - 0x250]
mov esi, dword [ebp - 0x260]
mov ebx, dword [eax + esi]
movzx eax, word [ebx]
and eax, 0xfffffffd
cmp ax, 0x2d
jne 0x401f74
mov edx, 0x409334
mov eax, ebx
call sym._msi_option_prefix.part.2
test eax, eax
mov eax, dword [ebp - 0x250]
jne 0x402ff1
mov ebx, dword [eax + esi]
mov edx, str.umtgl
mov eax, ebx
call dbg.msi_strequal
test eax, eax
jne 0x401f88
mov eax, dword [ebp - 0x250]
mov ebx, dword [ebp - 0x260]
mov edx, 0x409361
mov eax, dword [eax + ebx]
call dbg.msi_strequal
test eax, eax
je 0x402fc0
mov edx, dword [ebp - 0x254]
add edi, 1
cmp edx, edi
jle 0x405774
mov esi, dword [ebp - 0x250]
mov eax, dword [esi + ebx + 4]
mov dword [ebp - 0x268], eax
test byte [section..data], 8
jne 0x403397
mov dword [ebp - 0x27c], 0
mov dword [ebp - 0x284], 1
jmp 0x401fd0
mov byte [edx], al
mov esi, ecx
add edx, 1
jmp 0x4024f0
mov eax, dword [ebp - 0x260]
mov esi, dword [ebp - 0x250]
mov ebx, dword [esi + eax]
movzx eax, word [ebx]
mov ecx, ebx
mov edx, eax
and edx, 0xfffffffd
cmp dx, 0x2d
jne 0x4028f0
mov edx, 0x40927b
mov eax, ebx
call sym._msi_option_prefix.part.2
mov esi, dword [ebp - 0x250]
test eax, eax
mov eax, dword [ebp - 0x260]
mov ecx, dword [esi + eax]
movzx eax, word [ecx]
je 0x4028f0
mov dword [ebp - 0x264], 2
mov edx, dword [ebp - 0x254]
test ax, ax
je 0x402910
mov eax, ecx
add eax, 2
cmp word [eax], 0
jne 0x402824
sub eax, ecx
mov ecx, dword [ebp - 0x264]
sar eax, 1
cmp ecx, eax
jge 0x402910
mov dword [ebp - 0x274], 1
lea eax, [ebx + ecx*2]
mov dword [ebp - 0x268], eax
jmp 0x401fd0
mov eax, dword [ebp - 0x250]
mov ecx, dword [ebp - 0x260]
mov eax, dword [eax + ecx]
movzx edx, word [eax]
and edx, 0xfffffffd
cmp dx, 0x2d
jne 0x4028a1
mov edx, 0x409300
call sym._msi_option_prefix.part.2
test eax, eax
je 0x4028a1
mov eax, dword [ebp - 0x250]
mov ecx, dword [ebp - 0x260]
mov eax, dword [eax + ecx]
add eax, 4
mov dword [ebp - 0x268], eax
mov eax, dword [ebp - 0x268]
test eax, eax
je 0x402a80
cmp word [eax], 0
je 0x402a80
test byte [section..data], 8
jne 0x402ac5
mov edx, str.REMOVEALL
lea eax, [ebp - 0x25c]
call sym._StringListAppend
mov edx, dword [ebp - 0x254]
mov dword [ebp - 0x274], 1
jmp 0x401fd0
mov dword [ebp - 0x264], 8
mov edx, dword [ebp - 0x254]
test ax, ax
jne 0x402822
lea esi, [esi]
add edi, 1
cmp edi, edx
jge 0x405774
mov eax, dword [ebp - 0x260]
mov eax, dword [esi + eax + 4]
mov dword [ebp - 0x268], eax
test byte [section..data], 8
je 0x402405
test eax, eax
je 0x404454
shr eax, 0x10
je 0x403cfa
mov esi, dword [ebp - 0x268]
mov dword [esp + 4], 0xffffffff
mov dword [esp], esi
call dword [sym.imp.kernel32.dll_IsBadStringPtrW]
mov ebx, eax
sub esp, 8
mov eax, str._invalid_
test ebx, ebx
jne 0x402a28
cmp word [esi], 0
je 0x40298a
mov eax, esi
lea esi, [esi]
add ebx, 1
cmp word [eax + ebx*2], 0
jne 0x402980
mov eax, 0x224c
lea edx, [ebp - 0x22e]
mov esi, dword [ebp - 0x268]
lea ecx, [ebx - 1]
mov word [ebp - 0x230], ax
lea eax, [ebp - 0x10e]
cmp edx, eax
ja 0x4029fd
nop
test ebx, ebx
jle 0x4029fd
add esi, 2
movzx eax, word [esi - 2]
cmp ax, 0xd
je 0x403b40
ja 0x403690
cmp ax, 9
je 0x403ac3
cmp ax, 0xa
jne 0x403ae0
mov eax, 0x6e5c
add edx, 2
mov ebx, ecx
mov word [edx - 2], ax
lea esi, [esi]
lea eax, [ebp - 0x10e]
lea ecx, [ebx - 1]
cmp edx, eax
jbe 0x4029b0
mov byte [edx], 0x22
lea eax, [edx + 1]
test ecx, ecx
jle 0x402a17
mov ecx, 0x2e2e
mov byte [edx + 3], 0x2e
lea eax, [edx + 4]
mov word [edx + 1], cx
mov byte [eax], 0
lea eax, [ebp - 0x230]
mov dword [esp], eax
call dbg.__wine_dbg_strdup
mov dword [esp + 0x14], eax
mov dword [esp + 0x10], edi
mov dword [esp + 0xc], str.argvW__d____s_n
mov dword [esp + 8], global___func__.1
mov dword [esp + 4], 0x407000
mov dword [esp], 3
call sym._wine_dbg_log.constprop.10
mov esi, dword [ebp - 0x250]
mov eax, dword [ebp - 0x260]
mov edx, dword [ebp - 0x254]
mov eax, dword [esi + eax + 4]
mov dword [ebp - 0x268], eax
jmp 0x402405
mov eax, str._null_
jmp 0x402528
add edi, 1
cmp dword [ebp - 0x254], edi
jle 0x405774
mov eax, dword [ebp - 0x250]
mov ecx, dword [ebp - 0x260]
mov eax, dword [eax + ecx + 4]
mov dword [ebp - 0x268], eax
test byte [section..data], 8
je 0x4028c6
mov edx, dword [ebp - 0x268]
mov eax, str._null_
test edx, edx
je 0x402bb3
mov eax, dword [ebp - 0x268]
shr eax, 0x10
je 0x403b53
mov ebx, dword [ebp - 0x268]
mov dword [esp + 4], 0xffffffff
mov dword [esp], ebx
call dword [sym.imp.kernel32.dll_IsBadStringPtrW]
mov esi, eax
sub esp, 8
mov eax, str._invalid_
test esi, esi
jne 0x402bb3
cmp word [ebx], 0
je 0x402b0f
mov eax, ebx
add esi, 1
cmp word [eax + esi*2], 0
jne 0x402b05
mov ecx, dword [ebp - 0x268]
mov eax, 0x224c
lea edx, [ebp - 0x22e]
lea ebx, [esi - 1]
mov word [ebp - 0x230], ax
mov dword [ebp - 0x260], ecx
test esi, esi
jle 0x402b88
lea eax, [ebp - 0x10e]
cmp edx, eax
ja 0x402b88
add dword [ebp - 0x260], 2
mov eax, dword [ebp - 0x260]
movzx eax, word [eax - 2]
cmp ax, 0xd
je 0x4036c0
ja 0x403601
cmp ax, 9
je 0x4036d3
cmp ax, 0xa
jne 0x4036f0
mov eax, 0x6e5c
add edx, 2
mov esi, ebx
mov word [edx - 2], ax
lea ebx, [esi - 1]
test esi, esi
jg 0x402b34
mov byte [edx], 0x22
lea eax, [edx + 1]
test ebx, ebx
jle 0x402ba2
mov ecx, 0x2e2e
mov byte [edx + 3], 0x2e
lea eax, [edx + 4]
mov word [edx + 1], cx
mov byte [eax], 0
lea eax, [ebp - 0x230]
mov dword [esp], eax
call dbg.__wine_dbg_strdup
mov dword [esp + 0x10], eax
mov dword [esp + 0xc], str.PackageName___s_n
mov dword [esp + 8], global___func__.1
mov dword [esp + 4], 0x407000
mov dword [esp], 3
call sym._wine_dbg_log.constprop.10
jmp 0x4028c6
mov eax, dword [eax + ecx]
cmp word [eax], 0
je 0x402c9c
mov edx, eax
nop
add edx, 2
cmp word [edx], 0
jne 0x402bf0
sub edx, eax
mov esi, edx
sar esi, 1
cmp edx, 4
jle 0x403960
mov ebx, 2
mov dword [ebp - 0x264], edi
mov ecx, dword [ebp - 0x260]
movzx edx, word [eax + ebx*2]
mov edi, dword [ebp - 0x288]
lea eax, [edx - 0x41]
cmp ax, 0x35
ja case.0x402c33.1
lea esi, [esi]
movzx eax, ax
jmp dword [eax*4 + 0x40964c]
or edi, 0x400
lea esi, [esi]
lea esi, [esi]
add ebx, 1
cmp ebx, esi
jge 0x402c90
mov eax, dword [ebp - 0x250]
mov eax, dword [eax + ecx]
movzx edx, word [eax + ebx*2]
lea eax, [edx - 0x41]
cmp ax, 0x35
jbe 0x402c30
mov dword [esp + 4], edx
add ebx, 1
mov dword [esp], str.Unknown_option___c__in_Repair_mode_n
mov dword [ebp - 0x268], ecx
call dbg.report_error
mov ecx, dword [ebp - 0x268]
cmp ebx, esi
jl 0x402c57
mov dword [ebp - 0x288], edi
mov edi, dword [ebp - 0x264]
mov edx, dword [ebp - 0x254]
add edi, 1
cmp edx, edi
jle 0x405774
mov esi, dword [ebp - 0x250]
mov eax, dword [ebp - 0x260]
mov eax, dword [esi + eax + 4]
mov dword [ebp - 0x268], eax
test byte [section..data], 8
jne 0x403977
mov dword [ebp - 0x294], 1
jmp 0x401fd0
or edi, 0x100
jmp 0x402c50
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
mov eax, dword [ebp - 0x28c]
mov ecx, dword [ebp - 0x260]
cmp word [ebx + 2], 0
lea esi, [eax + ecx + 2]
jne 0x402175
mov dword [ebp - 0x260], esi
jmp 0x4020c1
mov dword [esp + 0xc], str.Administrative_installs_are_not_currently_supported_n
mov dword [esp + 8], global___func__.1
mov dword [esp + 4], 0x407000
mov dword [esp], 0
call sym._wine_dbg_log.constprop.10
jmp 0x4023eb
test eax, eax
je 0x404251
shr eax, 0x10
je 0x4032d5
mov esi, dword [ebp - 0x268]
mov dword [esp + 4], 0xffffffff
mov dword [esp], esi
call dword [sym.imp.kernel32.dll_IsBadStringPtrW]
mov ebx, eax
sub esp, 8
mov eax, str._invalid_
test ebx, ebx
jne 0x4032ec
cmp word [esi], 0
je 0x402e1c
mov eax, esi
add ebx, 1
cmp word [eax + ebx*2], 0
jne 0x402e12
mov eax, 0x224c
lea edx, [ebp - 0x22e]
mov esi, dword [ebp - 0x268]
lea ecx, [ebx - 1]
mov word [ebp - 0x230], ax
lea eax, [ebp - 0x10e]
cmp edx, eax
ja 0x402e8d
test ebx, ebx
jle 0x402e8d
add esi, 2
movzx eax, word [esi - 2]
cmp ax, 0xd
je 0x4037f3
ja 0x403630
cmp ax, 9
je 0x4037e0
cmp ax, 0xa
jne 0x403780
mov eax, 0x6e5c
add edx, 2
mov ebx, ecx
mov word [edx - 2], ax
nop
lea eax, [ebp - 0x10e]
lea ecx, [ebx - 1]
cmp edx, eax
jbe 0x402e41
mov byte [edx], 0x22
lea eax, [edx + 1]
test ecx, ecx
jle 0x402ea7
mov ecx, 0x2e2e
mov byte [edx + 3], 0x2e
lea eax, [edx + 4]
mov word [edx + 1], cx
mov byte [eax], 0
lea eax, [ebp - 0x230]
mov dword [esp], eax
call dbg.__wine_dbg_strdup
jmp 0x4032ec
test eax, eax
je 0x40429e
shr eax, 0x10
je 0x403333
mov esi, dword [ebp - 0x268]
mov dword [esp + 4], 0xffffffff
mov dword [esp], esi
call dword [sym.imp.kernel32.dll_IsBadStringPtrW]
mov ebx, eax
sub esp, 8
mov eax, str._invalid_
test ebx, ebx
jne 0x40334a
cmp word [esi], 0
je 0x402f0c
mov eax, esi
add ebx, 1
cmp word [eax + ebx*2], 0
jne 0x402f02
mov eax, 0x224c
lea edx, [ebp - 0x22e]
mov esi, dword [ebp - 0x268]
lea ecx, [ebx - 1]
mov word [ebp - 0x230], ax
test ebx, ebx
jle 0x402f7a
lea esi, [esi]
nop
lea eax, [ebp - 0x10e]
cmp edx, eax
ja 0x402f7a
add esi, 2
movzx eax, word [esi - 2]
cmp ax, 0xd
je 0x4038e6
ja 0x403660
cmp ax, 9
je 0x4038d3
cmp ax, 0xa
jne 0x403900
mov eax, 0x6e5c
add edx, 2
mov ebx, ecx
mov word [edx - 2], ax
lea ecx, [ebx - 1]
test ebx, ebx
jg 0x402f30
mov byte [edx], 0x22
lea eax, [edx + 1]
test ecx, ecx
jle 0x402f94
mov ecx, 0x2e2e
mov byte [edx + 3], 0x2e
lea eax, [edx + 4]
mov word [edx + 1], cx
mov byte [eax], 0
lea eax, [ebp - 0x230]
mov dword [esp], eax
call dbg.__wine_dbg_strdup
jmp 0x40334a
mov eax, 3
jmp 0x4020a0
mov eax, dword [ebp - 0x250]
mov esi, dword [ebp - 0x260]
mov eax, dword [eax + esi]
movzx edx, word [eax]
and edx, 0xfffffffd
cmp dx, 0x2d
je 0x403250
mov edx, eax
lea eax, [ebp - 0x25c]
call sym._StringListAppend
jmp 0x404806
mov ecx, dword [ebp - 0x260]
mov eax, dword [eax + ecx]
cmp word [eax], 0
je 0x4030a7
mov edx, eax
lea esi, [esi]
lea esi, [esi]
add edx, 2
cmp word [edx], 0
jne 0x403010
sub edx, eax
mov esi, edx
sar esi, 1
cmp edx, 4
jle 0x4030a7
mov dword [ebp - 0x268], edi
mov edx, esi
mov ebx, 2
mov edi, dword [ebp - 0x260]
mov esi, dword [ebp - 0x27c]
jmp 0x40306f
mov dword [esp + 4], eax
mov dword [esp], str.Unknown_option___c__in_Advertise_mode_n
mov dword [ebp - 0x264], edx
call dbg.report_error
mov edx, dword [ebp - 0x264]
add ebx, 1
cmp ebx, edx
jge 0x40309b
mov eax, dword [ebp - 0x250]
mov eax, dword [eax + edi]
movzx eax, word [eax + ebx*2]
cmp ax, 0x55
je 0x40308f
jbe 0x4035f0
cmp ax, 0x6d
je 0x4035fa
cmp ax, 0x75
jne 0x403043
add ebx, 1
mov esi, 1
cmp ebx, edx
jl 0x403066
mov dword [ebp - 0x27c], esi
mov edi, dword [ebp - 0x268]
mov edx, dword [ebp - 0x254]
add edi, 1
cmp edx, edi
jle 0x405774
mov esi, dword [ebp - 0x250]
mov eax, dword [ebp - 0x260]
mov eax, dword [esi + eax + 4]
mov dword [ebp - 0x268], eax
test byte [section..data], 8
je 0x401fc6
test eax, eax
je 0x40418c
shr eax, 0x10
je 0x4046c6
mov esi, dword [ebp - 0x268]
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 0x404191
cmp word [esi], 0
je 0x40312a
mov eax, esi
lea esi, [esi]
add ecx, 1
cmp word [eax + ecx*2], 0
jne 0x403120
mov eax, 0x224c
mov esi, dword [ebp - 0x268]
lea edx, [ebp - 0x22e]
mov word [ebp - 0x230], ax
lea ebx, [ecx - 1]
test ecx, ecx
jle 0x40464e
lea eax, [ebp - 0x10e]
cmp edx, eax
ja 0x40464e
add esi, 2
movzx eax, word [esi - 2]
cmp ax, 0xd
je 0x4045d3
ja 0x4040b7
cmp ax, 9
je 0x404554
cmp ax, 0xa
jne 0x404567
mov eax, 0x6e5c
add edx, 2
mov ecx, ebx
mov word [edx - 2], ax
jmp 0x403142
mov ebx, dword [ebp - 0x284]
test ebx, ebx
jne 0x404343
mov eax, dword [ebp - 0x280]
test eax, eax
jne 0x403ec0
mov edi, dword [ebp - 0x2a4]
test edi, edi
jne 0x4046ec
mov esi, dword [ebp - 0x2b0]
test esi, esi
jne 0x404c62
mov ebx, dword [ebp - 0x270]
test ebx, ebx
jne 0x4048f9
mov ecx, dword [ebp - 0x26c]
test ecx, ecx
jne 0x404f80
mov edx, dword [ebp - 0x2b8]
test edx, edx
jne 0x4054e1
mov eax, dword [ebp - 0x2a8]
test eax, eax
je 0x405774
test byte [section..data], 1
je 0x403d53
mov dword [esp + 0xc], str.Unknown_function__ignoring_n
mov dword [esp + 8], global___func__.1
mov dword [esp + 4], 0x407000
mov dword [esp], 0
call sym._wine_dbg_log.constprop.10
mov eax, dword [ebp - 0x2a8]
mov dword [ebp - 0x280], eax
jmp 0x402252
mov edx, 0x409363
call sym._msi_option_equal.part.1
test eax, eax
je 0x403456
add edi, 1
cmp dword [ebp - 0x254], edi
jle 0x405774
mov eax, dword [ebp - 0x250]
mov ebx, dword [eax + esi + 4]
test byte [section..data], 8
jne 0x404b32
mov edx, ebx
lea eax, [ebp - 0x258]
call sym._StringListAppend
mov edx, dword [ebp - 0x254]
jmp 0x401fd0
mov edx, 0x4090cb
call sym._msi_option_equal.part.1
test eax, eax
jne 0x403d62
mov eax, dword [ebp - 0x254]
cmp eax, 3
je 0x4040de
cmp eax, 1
jle 0x403806
mov edi, dword [ebp - 0x250]
jmp 0x401e98
movzx eax, word [ebp - 0x268]
mov dword [esp], str._04x
mov dword [esp + 4], eax
call sym._wine_dbg_sprintf.constprop.8
mov dword [esp + 0x14], eax
mov dword [esp + 0x10], edi
mov dword [esp + 0xc], str.argvW__d____s_n
mov dword [esp + 8], global___func__.1
mov dword [esp + 4], 0x407000
mov dword [esp], 3
call sym._wine_dbg_log.constprop.10
mov eax, dword [ebp - 0x250]
mov ecx, dword [ebp - 0x260]
mov eax, dword [eax + ecx + 4]
mov dword [ebp - 0x268], eax
jmp 0x4023ce
movzx eax, word [ebp - 0x268]
mov dword [esp], str._04x
mov dword [esp + 4], eax
call sym._wine_dbg_sprintf.constprop.8
mov dword [esp + 0x14], eax
mov dword [esp + 0x10], edi
mov dword [esp + 0xc], str.argvW__d____s_n
mov dword [esp + 8], global___func__.1
mov dword [esp + 4], 0x407000
mov dword [esp], 3
call sym._wine_dbg_log.constprop.10
mov esi, dword [ebp - 0x250]
mov eax, dword [ebp - 0x260]
mov edx, dword [ebp - 0x254]
mov eax, dword [esi + eax + 4]
mov dword [ebp - 0x268], eax
jmp 0x401fbc
test eax, eax
je 0x404114
shr eax, 0x10
je 0x4046aa
mov esi, dword [ebp - 0x268]
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 0x404119
cmp word [esi], 0
je 0x4033ea
mov eax, esi
lea esi, [esi]
add ecx, 1
cmp word [eax + ecx*2], 0
jne 0x4033e0
mov eax, 0x224c
mov esi, dword [ebp - 0x268]
lea edx, [ebp - 0x22e]
mov word [ebp - 0x230], ax
lea eax, [ebp - 0x10e]
lea ebx, [ecx - 1]
cmp edx, eax
ja 0x404608
test ecx, ecx
jle 0x404608
add esi, 2
movzx eax, word [esi - 2]
cmp ax, 0xd
je 0x40452e
ja 0x404090
cmp ax, 9
je 0x4044bb
cmp ax, 0xa
jne 0x4044ce
mov eax, 0x6e5c
add edx, 2
mov ecx, ebx
mov word [edx - 2], ax
jmp 0x403402
mov eax, dword [ebp - 0x250]
mov ecx, dword [ebp - 0x260]
mov eax, dword [eax + ecx]
movzx edx, word [eax]
and edx, 0xfffffffd
cmp dx, 0x2d
jne 0x402fdf
mov edx, 0x409365
call sym._msi_option_equal.part.1
test eax, eax
jne 0x403efa
mov eax, dword [ebp - 0x250]
mov ecx, dword [ebp - 0x260]
mov eax, dword [eax + ecx]
movzx edx, word [eax]
and edx, 0xfffffffd
cmp dx, 0x2d
jne 0x402fdf
mov edx, 0x409367
call sym._msi_option_prefix.part.2
test eax, eax
jne 0x404750
mov eax, dword [ebp - 0x250]
mov ecx, dword [ebp - 0x260]
mov eax, dword [eax + ecx]
movzx edx, word [eax]
and edx, 0xfffffffd
cmp dx, 0x2d
jne 0x402fdf
mov edx, 0x409391
call sym._msi_option_equal.part.1
test eax, eax
jne 0x40425b
mov eax, dword [ebp - 0x250]
mov ecx, dword [ebp - 0x260]
mov eax, dword [eax + ecx]
movzx edx, word [eax]
and edx, 0xfffffffd
cmp dx, 0x2d
jne 0x402fdf
mov edx, str.update
call sym._msi_option_equal.part.1
test eax, eax
jne 0x40425b
mov eax, dword [ebp - 0x250]
mov ecx, dword [ebp - 0x260]
mov eax, dword [eax + ecx]
movzx edx, word [eax]
and edx, 0xfffffffd
cmp dx, 0x2d
jne 0x402fdf
mov edx, 0x40939a
call sym._msi_option_prefix.part.2
test eax, eax
jne 0x404dbc
mov eax, dword [ebp - 0x250]
mov ecx, dword [ebp - 0x260]
mov eax, dword [eax + ecx]
movzx edx, word [eax]
and edx, 0xfffffffd
cmp dx, 0x2d
jne 0x402fdf
mov edx, str.passive
call sym._msi_option_equal.part.1
test eax, eax
jne 0x404e0a
mov eax, dword [ebp - 0x250]
mov ebx, dword [ebp - 0x260]
mov eax, dword [eax + ebx]
movzx edx, word [eax]
and edx, 0xfffffffd
cmp dx, 0x2d
jne 0x402fdf
mov edx, 0x409416
call sym._msi_option_equal.part.1
test eax, eax
je 0x403f62
mov edx, dword [ebp - 0x254]
add edi, 1
cmp edx, edi
jle 0x405774
mov esi, dword [ebp - 0x250]
mov eax, dword [esi + ebx + 4]
mov dword [ebp - 0x29c], eax
test byte [section..data], 8
jne 0x405511
mov dword [ebp - 0x2a4], 1
jmp 0x401fd0
cmp ax, 0x4d
jne 0x403043
xor esi, esi
jmp 0x40305f
cmp ax, 0x22
je 0x403750
cmp ax, 0x5c
jne 0x4036f0
mov esi, 0x5c5c
add edx, 2
mov word [edx - 2], si
mov esi, ebx
jmp 0x402b81
cmp ax, 0x22
je 0x403763
cmp ax, 0x5c
jne 0x403780
mov ebx, 0x5c5c
add edx, 2
mov word [edx - 2], bx
mov ebx, ecx
jmp 0x402e80
cmp ax, 0x22
je 0x4038c0
cmp ax, 0x5c
jne 0x403900
mov ebx, 0x5c5c
add edx, 2
mov word [edx - 2], bx
mov ebx, ecx
jmp 0x402f73
cmp ax, 0x22
je 0x403ab0
cmp ax, 0x5c
jne 0x403ae0
mov ebx, 0x5c5c
add edx, 2
mov word [edx - 2], bx
mov ebx, ecx
jmp 0x4029f0
mov eax, 0x725c
add edx, 2
mov esi, ebx
mov word [edx - 2], ax
jmp 0x402b81
mov eax, 0x745c
add edx, 2
mov esi, ebx
mov word [edx - 2], ax
jmp 0x402b81
lea esi, [eax - 0x20]
cmp si, 0x5e
jbe 0x403c3e
mov esi, eax
mov byte [edx], 0x5c
add edx, 5
shr si, 0xc
movzx esi, si
movzx ecx, byte [esi + str.0123456789abcdefcustom_action_server]
mov esi, eax
shr si, 8
and esi, 0xf
mov byte [edx - 4], cl
movzx ecx, 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 [edx - 3], cl
movzx ecx, byte [esi + str.0123456789abcdefcustom_action_server]
mov byte [edx - 1], al
mov esi, ebx
mov byte [edx - 2], cl
jmp 0x402b81
mov eax, 0x225c
add edx, 2
mov esi, ebx
mov word [edx - 2], ax
jmp 0x402b81
mov eax, 0x225c
add edx, 2
mov ebx, ecx
mov word [edx - 2], ax
jmp 0x402e80
lea ebx, [eax - 0x20]
cmp bx, 0x5e
jbe 0x403ce2
mov ebx, eax
mov byte [edx], 0x5c
add edx, 5
shr bx, 0xc
movzx ebx, bx
movzx ebx, byte [ebx + str.0123456789abcdefcustom_action_server]
mov byte [edx - 4], bl
mov ebx, eax
shr bx, 8
and ebx, 0xf
movzx ebx, byte [ebx + str.0123456789abcdefcustom_action_server]
mov byte [edx - 3], bl
mov ebx, eax
and eax, 0xf
shr bx, 4
movzx eax, byte [eax + str.0123456789abcdefcustom_action_server]
and ebx, 0xf
movzx ebx, byte [ebx + str.0123456789abcdefcustom_action_server]
mov byte [edx - 1], al
mov byte [edx - 2], bl
mov ebx, ecx
jmp 0x402e80
mov eax, 0x745c
add edx, 2
mov ebx, ecx
mov word [edx - 2], ax
jmp 0x402e80
mov eax, 0x725c
add edx, 2
mov ebx, ecx
mov word [edx - 2], ax
jmp 0x402e80
xor edi, edi
mov byte [ebp - 0x298], 0
mov dword [ebp - 0x29c], 0
mov dword [ebp - 0x28c], 5
mov dword [ebp - 0x290], 0
mov dword [ebp - 0x2ac], 0
mov word [ebp - 0x2b2], di
mov dword [ebp - 0x27c], 0
mov dword [ebp - 0x288], 0
mov dword [ebp - 0x268], 0
mov dword [ebp - 0x2a8], 0
mov dword [ebp - 0x2b8], 0
mov dword [ebp - 0x26c], 0
mov dword [ebp - 0x270], 0
mov dword [ebp - 0x2b0], 0
mov dword [ebp - 0x2a4], 0
mov dword [ebp - 0x280], 0
mov dword [ebp - 0x284], 0
mov dword [ebp - 0x294], 0
jmp 0x402051
mov eax, 0x225c
add edx, 2
mov ebx, ecx
mov word [edx - 2], ax
jmp 0x402f73
mov eax, 0x745c
add edx, 2
mov ebx, ecx
mov word [edx - 2], ax
jmp 0x402f73
mov eax, 0x725c
add edx, 2
mov ebx, ecx
mov word [edx - 2], ax
jmp 0x402f73
lea ebx, [eax - 0x20]
cmp bx, 0x5e
jbe 0x403cee
mov ebx, eax
mov byte [edx], 0x5c
add edx, 5
shr bx, 0xc
movzx ebx, bx
movzx ebx, byte [ebx + str.0123456789abcdefcustom_action_server]
mov byte [edx - 4], bl
mov ebx, eax
shr bx, 8
and ebx, 0xf
movzx ebx, byte [ebx + str.0123456789abcdefcustom_action_server]
mov byte [edx - 3], bl
mov ebx, eax
and eax, 0xf
shr bx, 4
movzx eax, byte [eax + str.0123456789abcdefcustom_action_server]
and ebx, 0xf
movzx ebx, byte [ebx + str.0123456789abcdefcustom_action_server]
mov byte [edx - 1], al
mov byte [edx - 2], bl
mov ebx, ecx
jmp 0x402f73
mov eax, 0x2aa
cmovne eax, dword [ebp - 0x288]
mov dword [ebp - 0x288], eax
jmp 0x402c9c
test eax, eax
je 0x404644
shr eax, 0x10
je 0x40445e
mov esi, dword [ebp - 0x268]
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 0x403a59
cmp word [esi], 0
je 0x4039ca
mov eax, esi
lea esi, [esi]
add ecx, 1
cmp word [eax + ecx*2], 0
jne 0x4039c0
mov eax, 0x224c
mov esi, dword [ebp - 0x268]
lea edx, [ebp - 0x22e]
mov word [ebp - 0x230], ax
lea eax, [ebp - 0x10e]
lea ebx, [ecx - 1]
cmp edx, eax
ja 0x403a2e
test ecx, ecx
jle 0x403a2e
add esi, 2
movzx eax, word [esi - 2]
cmp ax, 0xd
je 0x404179
ja 0x404042
cmp ax, 9
je 0x404166
cmp ax, 0xa
jne 0x4041f1
mov eax, 0x6e5c
add edx, 2
mov ecx, ebx
mov word [edx - 2], ax
jmp 0x4039e2
mov byte [edx], 0x22
lea eax, [edx + 1]
test ebx, ebx
jle 0x403a48
mov ecx, 0x2e2e
mov byte [edx + 3], 0x2e
lea eax, [edx + 4]
mov word [edx + 1], cx
mov byte [eax], 0
lea eax, [ebp - 0x230]
mov dword [esp], eax
call dbg.__wine_dbg_strdup
mov dword [esp + 0x14], eax
mov dword [esp + 0x10], edi
mov dword [esp + 0xc], str.argvW__d____s_n
mov dword [esp + 8], global___func__.1
mov dword [esp + 4], 0x407000
mov dword [esp], 3
call sym._wine_dbg_log.constprop.10
mov esi, dword [ebp - 0x250]
mov eax, dword [ebp - 0x260]
mov edx, dword [ebp - 0x254]
mov eax, dword [esi + eax + 4]
mov dword [ebp - 0x268], eax
jmp 0x402cd0
mov eax, 0x225c
add edx, 2
mov ebx, ecx
mov word [edx - 2], ax
jmp 0x4029f0
mov eax, 0x745c
add edx, 2
mov ebx, ecx
mov word [edx - 2], ax
jmp 0x4029f0
lea ebx, [eax - 0x20]
cmp bx, 0x5e
jbe 0x403d16
mov ebx, eax
mov byte [edx], 0x5c
add edx, 5
shr bx, 0xc
movzx ebx, bx
movzx ebx, byte [ebx + str.0123456789abcdefcustom_action_server]
mov byte [edx - 4], bl
mov ebx, eax
shr bx, 8
and ebx, 0xf
movzx ebx, byte [ebx + str.0123456789abcdefcustom_action_server]
mov byte [edx - 3], bl
mov ebx, eax
and eax, 0xf
shr bx, 4
movzx eax, byte [eax + str.0123456789abcdefcustom_action_server]
and ebx, 0xf
movzx ebx, byte [ebx + str.0123456789abcdefcustom_action_server]
mov byte [edx - 1], al
mov byte [edx - 2], bl
mov ebx, ecx
jmp 0x4029f0
mov eax, 0x725c
add edx, 2
mov ebx, ecx
mov word [edx - 2], ax
jmp 0x4029f0
movzx eax, word [ebp - 0x268]
mov dword [esp], str._04x
mov dword [esp + 4], eax
call sym._wine_dbg_sprintf.constprop.8
jmp 0x402bb3
mov eax, dword [ebp - 0x2a0]
test eax, eax
je 0x4046e2
shr eax, 0x10
je 0x403e7c
mov edi, dword [ebp - 0x2a0]
mov dword [esp + 4], 0xffffffff
mov dword [esp], edi
call dword [sym.imp.kernel32.dll_IsBadStringPtrW]
mov ebx, eax
sub esp, 8
mov eax, str._invalid_
test ebx, ebx
jne 0x403e93
cmp word [edi], 0
je 0x403bca
mov eax, edi
lea esi, [esi]
nop
add ebx, 1
cmp word [eax + ebx*2], 0
jne 0x403bc0
mov eax, 0x224c
mov ecx, dword [ebp - 0x2a0]
lea edx, [ebp - 0x22e]
lea edi, [ebp - 0x10e]
mov word [ebp - 0x230], ax
lea esi, [esi]
nop
lea esi, [ebx - 1]
test ebx, ebx
jle 0x40447a
cmp edx, edi
ja 0x40447a
add ecx, 2
movzx eax, word [ecx - 2]
cmp ax, 0xd
je 0x4042a8
ja 0x404069
cmp ax, 9
je 0x4042bb
cmp ax, 0xa
jne 0x4042d0
mov eax, 0x6e5c
add edx, 2
mov ebx, esi
mov word [edx - 2], ax
jmp 0x403bf0
mov byte [edx], al
mov esi, ebx
add edx, 1
jmp 0x402b81
mov eax, dword [ebp - 0x268]
cmp word [eax], 0
je 0x403c78
lea esi, [esi]
lea esi, [esi]
add eax, 2
cmp word [eax], 0
jne 0x403c60
sub eax, dword [ebp - 0x268]
cmp eax, 0x4c
je 0x403e22
mov eax, dword [ebp - 0x2a0]
mov dword [esp + 4], eax
mov eax, dword [ebp - 0x268]
mov dword [esp], eax
call sym._MsiInstallProductW_8
sub esp, 8
mov dword [ebp - 0x280], eax
cmp eax, 2
jne 0x402252
mov eax, dword [ebp - 0x268]
call dbg.get_path_with_extension
mov ebx, eax
test eax, eax
je 0x404829
mov eax, dword [ebp - 0x2a0]
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 - 0x280], esi
jmp 0x402252
mov byte [edx], al
mov ebx, ecx
add edx, 1
jmp 0x402e80
mov byte [edx], al
mov ebx, ecx
add edx, 1
jmp 0x402f73
movzx eax, word [ebp - 0x268]
mov dword [esp], str._04x
mov dword [esp + 4], eax
call sym._wine_dbg_sprintf.constprop.8
jmp 0x402a28
mov byte [edx], al
mov ebx, ecx
add edx, 1
jmp 0x4029f0
lea eax, [ebp - 0x230]
mov dword [esp + 4], eax
mov eax, dword [ebp - 0x268]
mov dword [esp], eax
call dword [sym.imp.ole32.dll_CLSIDFromString]
sub esp, 8
test eax, eax
jne 0x402228
test byte [section..data], 1
jne 0x4049f1
mov dword [ebp - 0x280], 1
jmp 0x402252
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 0x403d53
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
mov edx, eax
sub esp, 0x18
mov eax, dword [ebp - 0x248]
test edx, edx
jne 0x403e11
cmp dword [ebp - 0x230], 1
mov dword [ebp - 0x268], eax
je 0x405211
mov dword [esp], eax
call dword [sym.imp.advapi32.dll_RegCloseKey]
sub esp, 4
jmp 0x403d53
lea eax, [ebp - 0x230]
mov dword [esp + 4], eax
mov eax, dword [ebp - 0x268]
mov dword [esp], eax
call dword [sym.imp.ole32.dll_CLSIDFromString]
sub esp, 8
test eax, eax
jne 0x403c78
mov eax, dword [ebp - 0x2a0]
mov dword [esp + 8], 5
mov dword [esp + 4], 0
mov dword [esp + 0xc], eax
mov eax, dword [ebp - 0x268]
mov dword [esp], eax
call sym._MsiConfigureProductExW_16
sub esp, 0x10
mov dword [ebp - 0x280], eax
jmp 0x402252
movzx eax, word [ebp - 0x2a0]
mov dword [esp], str._04x
mov dword [esp + 4], eax
call sym._wine_dbg_sprintf.constprop.8
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.10
jmp 0x4021e6
mov eax, dword [ebp - 0x2a0]
mov dword [esp + 0xc], eax
mov eax, dword [ebp - 0x290]
mov dword [esp + 8], eax
mov eax, dword [ebp - 0x268]
mov dword [esp + 4], eax
mov eax, dword [ebp - 0x2ac]
mov dword [esp], eax
call sym._MsiApplyPatchW_16
sub esp, 0x10
mov dword [ebp - 0x280], eax
jmp 0x402252
mov edx, dword [ebp - 0x254]
add edi, 1
cmp edx, edi
jle 0x405774
mov esi, dword [ebp - 0x250]
mov eax, dword [ebp - 0x260]
mov eax, dword [esi + eax + 4]
test byte [section..data], 8
jne 0x404a26
movzx ecx, word [eax]
lea ebx, [ecx - 0x30]
cmp bx, 9
ja 0x405671
xor ebx, ebx
lea esi, [esi]
lea ebx, [ebx + ebx*4]
add eax, 2
lea ebx, [ecx + ebx*2 - 0x30]
movzx ecx, word [eax]
lea esi, [ecx - 0x30]
cmp si, 9
jbe 0x403f40
mov word [ebp - 0x2b2], bx
jmp 0x401fd0
mov eax, dword [ebp - 0x250]
mov ebx, dword [ebp - 0x260]
mov eax, dword [eax + ebx]
movzx edx, word [eax]
and edx, 0xfffffffd
cmp dx, 0x2d
jne 0x402fdf
mov edx, 0x409418
call sym._msi_option_equal.part.1
test eax, eax
jne 0x404838
mov eax, dword [ebp - 0x250]
mov ecx, dword [ebp - 0x260]
mov eax, dword [eax + ecx]
movzx edx, word [eax]
and edx, 0xfffffffd
cmp dx, 0x2d
jne 0x402fdf
mov edx, str.help
call sym._msi_option_equal.part.1
test eax, eax
jne 0x405794
mov eax, dword [ebp - 0x250]
mov esi, dword [ebp - 0x260]
mov eax, dword [eax + esi]
movzx edx, word [eax]
and edx, 0xfffffffd
cmp dx, 0x2d
jne 0x402fdf
mov edx, 0x40941f
call sym._msi_option_equal.part.1
test eax, eax
jne 0x405794
mov eax, dword [ebp - 0x250]
mov eax, dword [eax + esi]
movzx edx, word [eax]
and edx, 0xfffffffd
cmp dx, 0x2d
jne 0x402fdf
mov edx, 0x409361
call sym._msi_option_equal.part.1
test eax, eax
je 0x404d55
test byte [section..data], 1
jne 0x405664
mov dword [ebp - 0x2a8], 1
mov edx, dword [ebp - 0x254]
jmp 0x401fd0
cmp ax, 0x22
je 0x4041de
cmp ax, 0x5c
jne 0x4041f1
mov eax, 0x5c5c
add edx, 2
mov ecx, ebx
mov word [edx - 2], ax
jmp 0x4039e2
cmp ax, 0x22
je 0x404330
cmp ax, 0x5c
jne 0x4042d0
mov eax, 0x5c5c
add edx, 2
mov ebx, esi
mov word [edx - 2], ax
jmp 0x403bf0
cmp ax, 0x22
je 0x404541
cmp ax, 0x5c
jne 0x4044ce
mov eax, 0x5c5c
add edx, 2
mov ecx, ebx
mov word [edx - 2], ax
jmp 0x403402
cmp ax, 0x22
je 0x4045e6
cmp ax, 0x5c
jne 0x404567
mov eax, 0x5c5c
add edx, 2
mov ecx, ebx
mov word [edx - 2], ax
jmp 0x403142
mov edi, dword [ebp - 0x250]
mov eax, dword [edi + 4]
movzx edx, word [eax]
and edx, 0xfffffffd
cmp dx, 0x2d
jne 0x401e98
mov edx, str.Embedding
call sym._msi_option_equal.part.1
test eax, eax
jne 0x404cce
mov eax, dword [ebp - 0x254]
jmp 0x4032c1
mov eax, str._null_
mov dword [esp + 0x14], eax
mov dword [esp + 0x10], edi
mov dword [esp + 0xc], str.argvW__d____s_n
mov dword [esp + 8], global___func__.1
mov dword [esp + 4], 0x407000
mov dword [esp], 3
call sym._wine_dbg_log.constprop.10
mov esi, dword [ebp - 0x250]
mov eax, dword [ebp - 0x260]
mov edx, dword [ebp - 0x254]
mov eax, dword [esi + eax + 4]
mov dword [ebp - 0x268], eax
jmp 0x402798
mov eax, 0x745c
add edx, 2
mov ecx, ebx
mov word [edx - 2], ax
jmp 0x4039e2
mov eax, 0x725c
add edx, 2
mov ecx, ebx
mov word [edx - 2], ax
jmp 0x4039e2
mov eax, str._null_
mov dword [esp + 0x14], eax
mov dword [esp + 0x10], edi
mov dword [esp + 0xc], str.argvW__d____s_n
mov dword [esp + 8], global___func__.1
mov dword [esp + 4], 0x407000
mov dword [esp], 3
call sym._wine_dbg_log.constprop.10
mov esi, dword [ebp - 0x250]
mov eax, dword [ebp - 0x260]
mov edx, dword [ebp - 0x254]
mov eax, dword [esi + eax + 4]
mov dword [ebp - 0x268], eax
jmp 0x401fc6
mov eax, 0x225c
add edx, 2
mov ecx, ebx
mov word [edx - 2], ax
jmp 0x4039e2
lea ecx, [eax - 0x20]
cmp cx, 0x5e
jbe 0x4045c7
mov ecx, eax
mov byte [edx], 0x5c
add edx, 5
shr cx, 0xc
movzx ecx, cx
movzx ecx, byte [ecx + str.0123456789abcdefcustom_action_server]
mov byte [edx - 4], cl
mov ecx, eax
shr cx, 8
and ecx, 0xf
movzx ecx, byte [ecx + str.0123456789abcdefcustom_action_server]
mov byte [edx - 3], cl
mov ecx, eax
and eax, 0xf
shr cx, 4
movzx eax, byte [eax + str.0123456789abcdefcustom_action_server]
and ecx, 0xf
movzx ecx, byte [ecx + str.0123456789abcdefcustom_action_server]
mov byte [edx - 1], al
mov byte [edx - 2], cl
mov ecx, ebx
jmp 0x4039e2
mov eax, str._null_
jmp 0x4032ec
mov edx, dword [ebp - 0x254]
add edi, 1
cmp edx, edi
jle 0x405774
mov esi, dword [ebp - 0x250]
mov eax, dword [ebp - 0x260]
mov eax, dword [esi + eax + 4]
mov dword [ebp - 0x2ac], eax
test byte [section..data], 8
jne 0x404ae0
mov dword [ebp - 0x280], 1
jmp 0x401fd0
mov eax, str._null_
jmp 0x40334a
mov eax, 0x725c
add edx, 2
mov ebx, esi
mov word [edx - 2], ax
jmp 0x403bf0
mov eax, 0x745c
add edx, 2
mov ebx, esi
mov word [edx - 2], ax
jmp 0x403bf0
lea ebx, [eax - 0x20]
cmp bx, 0x5e
jbe 0x404638
mov ebx, eax
mov byte [edx], 0x5c
add edx, 5
shr bx, 0xc
movzx ebx, bx
movzx ebx, byte [ebx + str.0123456789abcdefcustom_action_server]
mov byte [edx - 4], bl
mov ebx, eax
shr bx, 8
and ebx, 0xf
movzx ebx, byte [ebx + str.0123456789abcdefcustom_action_server]
mov byte [edx - 3], bl
mov ebx, eax
and eax, 0xf
shr bx, 4
movzx eax, byte [eax + str.0123456789abcdefcustom_action_server]
and ebx, 0xf
movzx ebx, byte [ebx + str.0123456789abcdefcustom_action_server]
mov byte [edx - 1], al
mov byte [edx - 2], bl
mov ebx, esi
jmp 0x403bf0
mov eax, 0x225c
add edx, 2
mov ebx, esi
mov word [edx - 2], ax
jmp 0x403bf0
mov edi, dword [ebp - 0x25c]
test edi, edi
je 0x4051f9
mov edx, edi
mov ebx, 1
lea esi, [esi]
nop
cmp word [edx + 4], 0
lea ecx, [edx + 4]
je 0x4044b1
mov eax, ecx
add eax, 2
cmp word [eax], 0
jne 0x404370
sub eax, ecx
sar eax, 1
add eax, 1
mov edx, dword [edx]
add ebx, eax
test edx, edx
jne 0x404360
add ebx, ebx
mov dword [esp], ebx
call dword [sym.imp.ucrtbase.dll_malloc]
mov dword [ebp - 0x264], eax
mov edx, eax
lea esi, [esi]
nop
movzx ebx, word [edi + 4]
lea ecx, [edi + 4]
test bx, bx
je 0x4044aa
mov eax, ecx
add eax, 2
cmp word [eax], 0
jne 0x4043b2
sub eax, ecx
mov esi, eax
add eax, edx
sar esi, 1
mov dword [ebp - 0x260], esi
cmp esi, 1
ja 0x4043d8
jmp 0x404448
movzx ebx, word [ecx]
test bx, bx
je 0x4043ea
add edx, 2
sub esi, 1
add ecx, 2
mov word [edx - 2], bx
cmp esi, 1
jne 0x4043d0
xor esi, esi
mov word [edx], si
mov ebx, dword [edi]
test ebx, ebx
je 0x404408
mov ecx, 0x3b
lea edx, [eax + 2]
mov word [eax], cx
mov edi, dword [edi]
test edi, edi
jne 0x4043a0
mov eax, edx
xor edx, edx
movzx ebx, word [ebp - 0x2b2]
mov word [eax], dx
mov eax, dword [ebp - 0x264]
mov dword [esp + 0xc], ebx
mov dword [esp + 8], eax
mov eax, dword [ebp - 0x27c]
mov dword [esp + 4], eax
mov eax, dword [ebp - 0x268]
mov dword [esp], eax
call sym._MsiAdvertiseProductW_16
sub esp, 0x10
mov dword [ebp - 0x280], eax
jmp 0x402252
mov ecx, dword [ebp - 0x260]
test ecx, ecx
je 0x4043ef
jmp 0x4043ea
mov eax, str._null_
jmp 0x402a28
movzx eax, word [ebp - 0x268]
mov dword [esp], str._04x
mov dword [esp + 4], eax
call sym._wine_dbg_sprintf.constprop.8
jmp 0x403a59
mov byte [edx], 0x22
lea eax, [edx + 1]
test esi, esi
jle 0x404494
mov edi, 0x2e2e
mov byte [edx + 3], 0x2e
lea eax, [edx + 4]
mov word [edx + 1], di
mov byte [eax], 0
lea eax, [ebp - 0x230]
mov dword [esp], eax
call dbg.__wine_dbg_strdup
jmp 0x403e93
mov eax, edx
jmp 0x4043ef
mov eax, 1
jmp 0x404380
mov eax, 0x745c
add edx, 2
mov ecx, ebx
mov word [edx - 2], ax
jmp 0x403402
lea ecx, [eax - 0x20]
cmp cx, 0x5e
jbe 0x404811
mov ecx, eax
mov byte [edx], 0x5c
add edx, 5
shr cx, 0xc
movzx ecx, cx
movzx ecx, byte [ecx + str.0123456789abcdefcustom_action_server]
mov byte [edx - 4], cl
mov ecx, eax
shr cx, 8
and ecx, 0xf
movzx ecx, byte [ecx + str.0123456789abcdefcustom_action_server]
mov byte [edx - 3], cl
mov ecx, eax
and eax, 0xf
shr cx, 4
movzx eax, byte [eax + str.0123456789abcdefcustom_action_server]
and ecx, 0xf
movzx ecx, byte [ecx + str.0123456789abcdefcustom_action_server]
mov byte [edx - 1], al
mov byte [edx - 2], cl
mov ecx, ebx
jmp 0x403402
mov eax, 0x725c
add edx, 2
mov ecx, ebx
mov word [edx - 2], ax
jmp 0x403402
mov eax, 0x225c
add edx, 2
mov ecx, ebx
mov word [edx - 2], ax
jmp 0x403402
mov eax, 0x745c
add edx, 2
mov ecx, ebx
mov word [edx - 2], ax
jmp 0x403142
lea ecx, [eax - 0x20]
cmp cx, 0x5e
jbe 0x40481d
mov ecx, eax
mov byte [edx], 0x5c
add edx, 5
shr cx, 0xc
movzx ecx, cx
movzx ecx, byte [ecx + str.0123456789abcdefcustom_action_server]
mov byte [edx - 4], cl
mov ecx, eax
shr cx, 8
and ecx, 0xf
movzx ecx, byte [ecx + str.0123456789abcdefcustom_action_server]
mov byte [edx - 3], cl
mov ecx, eax
and eax, 0xf
shr cx, 4
movzx eax, byte [eax + str.0123456789abcdefcustom_action_server]
and ecx, 0xf
movzx ecx, byte [ecx + str.0123456789abcdefcustom_action_server]
mov byte [edx - 1], al
mov byte [edx - 2], cl
mov ecx, ebx
jmp 0x403142
mov byte [edx], al
mov ecx, ebx
add edx, 1
jmp 0x4039e2
mov eax, 0x725c
add edx, 2
mov ecx, ebx
mov word [edx - 2], ax
jmp 0x403142
mov eax, 0x225c
add edx, 2
mov ecx, ebx
mov word [edx - 2], ax
jmp 0x403142
mov dword [ebp - 0x2a0], 0
jmp 0x4021e6
mov byte [edx], 0x22
lea eax, [edx + 1]
test ebx, ebx
jle 0x404622
mov ecx, 0x2e2e
mov byte [edx + 3], 0x2e
lea eax, [edx + 4]
mov word [edx + 1], cx
mov byte [eax], 0
lea eax, [ebp - 0x230]
mov dword [esp], eax
call dbg.__wine_dbg_strdup
jmp 0x404119
mov byte [edx], al
mov ebx, esi
add edx, 1
jmp 0x403bf0
mov eax, str._null_
jmp 0x403a59
mov byte [edx], 0x22
lea eax, [edx + 1]
test ebx, ebx
jle 0x404668
mov ecx, 0x2e2e
mov byte [edx + 3], 0x2e
lea eax, [edx + 4]
mov word [edx + 1], cx
mov byte [eax], 0
lea eax, [ebp - 0x230]
mov dword [esp], eax
call dbg.__wine_dbg_strdup
jmp 0x404191
mov eax, dword [ebp - 0x268]
call dbg.get_path_with_extension
mov ebx, eax
test eax, eax
je 0x404829
mov eax, dword [ebp - 0x288]
mov dword [esp], ebx
mov dword [esp + 4], eax
call sym._MsiReinstallProductW_8
jmp 0x403cc9
movzx eax, word [ebp - 0x268]
mov dword [esp], str._04x
mov dword [esp + 4], eax
call sym._wine_dbg_sprintf.constprop.8
jmp 0x404119
movzx eax, word [ebp - 0x268]
mov dword [esp], str._04x
mov dword [esp + 4], eax
call sym._wine_dbg_sprintf.constprop.8
jmp 0x404191
mov eax, str._null_
jmp 0x403e93
mov eax, dword [ebp - 0x29c]
lea ecx, [ebp - 0x230]
mov edx, str.DllRegisterServer
mov dword [ebp - 0x230], 0
call sym._LoadProc.constprop.6
call eax
test eax, eax
mov eax, dword [ebp - 0x29c]
js 0x404aba
call sym._wine_dbgstr_wn.constprop.7
mov dword [esp], str.Successfully_registered_dll__s_n
mov dword [esp + 4], eax
call dbg.wine_dbg_printf
mov eax, dword [ebp - 0x230]
test eax, eax
je 0x402252
mov dword [esp], eax
call dword [sym.imp.kernel32.dll_FreeLibrary]
sub esp, 4
jmp 0x402252
mov esi, dword [ebp - 0x250]
mov eax, dword [ebp - 0x260]
mov ecx, dword [esi + eax]
cmp word [ecx], 0
je 0x4047b9
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 0x4047b9
mov dword [ebp - 0x264], esi
mov esi, dword [ebp - 0x298]
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 + 0x409724]
or esi, 4
add edx, 1
cmp edx, ebx
jl 0x40478c
mov dword [ebp - 0x298], esi
mov esi, dword [ebp - 0x264]
add edi, 1
cmp dword [ebp - 0x254], edi
jle 0x405774
mov eax, dword [ebp - 0x260]
mov esi, dword [esi + eax + 4]
test byte [section..data], 8
jne 0x404a72
mov eax, dword [ebp - 0x2a0]
mov dword [esp + 4], esi
mov dword [esp + 8], eax
mov eax, dword [ebp - 0x298]
mov dword [esp], eax
call sym._MsiEnableLogW_12
sub esp, 0xc
test eax, eax
jne 0x405828
mov edx, dword [ebp - 0x254]
jmp 0x401fd0
mov byte [edx], al
mov ecx, ebx
add edx, 1
jmp 0x403402
mov byte [edx], al
mov ecx, ebx
add edx, 1
jmp 0x403142
mov dword [ebp - 0x280], 2
jmp 0x402252
mov edx, dword [ebp - 0x254]
add edi, 1
cmp edx, edi
jle 0x405774
mov esi, dword [ebp - 0x250]
mov eax, dword [esi + ebx + 4]
mov dword [ebp - 0x29c], eax
test byte [section..data], 8
jne 0x405365
mov dword [ebp - 0x2b0], 1
jmp 0x401fd0
or esi, 0x10
jmp case.0x40479c.1
or esi, 2
jmp case.0x40479c.1
or esi, 0x800
jmp case.0x40479c.1
or esi, 0x100
jmp case.0x40479c.1
or dword [ebp - 0x2a0], 1
jmp case.0x40479c.1
or dword [ebp - 0x2a0], 2
jmp case.0x40479c.1
mov esi, 0x7fdf
jmp case.0x40479c.1
or esi, 0x200
jmp case.0x40479c.1
or esi, 0x400
jmp case.0x40479c.1
or esi, 0x80
jmp case.0x40479c.1
or esi, 1
jmp case.0x40479c.1
or esi, 0x1000
jmp case.0x40479c.1
or esi, 8
jmp case.0x40479c.1
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 0x405563
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 0x404950
movzx edx, word [eax + str.msiexec__V]
mov word [ecx + eax], dx
add eax, 2
test dx, dx
jne 0x404949
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], 0x40959a
mov dword [esp + 4], 0x40959a
mov dword [esp], ebx
call dword [sym.imp.advapi32.dll_CreateServiceW]
sub esp, 0x34
test eax, eax
je 0x405314
mov dword [esp], eax
mov esi, dword [sym.imp.advapi32.dll_CloseServiceHandle]
call esi
mov dword [ebp - 0x280], 0
sub esp, 4
mov dword [esp], ebx
call esi
sub esp, 4
jmp 0x402252
mov dword [esp + 0xc], str.Product_code_treatment_not_implemented_yet_n
mov dword [esp + 8], global___func__.1
mov dword [esp + 4], 0x407000
mov dword [esp], 0
call sym._wine_dbg_log.constprop.10
mov eax, dword [ebp - 0x294]
mov dword [ebp - 0x280], eax
jmp 0x402252
call sym._wine_dbgstr_wn.constprop.7
mov dword [esp + 0x10], edi
mov dword [esp + 0x14], eax
mov dword [esp + 0xc], str.argvW__d____s_n
mov dword [esp + 8], global___func__.1
mov dword [esp + 4], 0x407000
mov dword [esp], 3
call sym._wine_dbg_log.constprop.10
mov esi, dword [ebp - 0x250]
mov eax, dword [ebp - 0x260]
mov edx, dword [ebp - 0x254]
mov eax, dword [esi + eax + 4]
jmp 0x403f28
mov eax, esi
call sym._wine_dbgstr_wn.constprop.7
mov dword [esp + 0x10], edi
mov dword [esp + 0x14], eax
mov dword [esp + 0xc], str.argvW__d____s_n
mov dword [esp + 8], global___func__.1
mov dword [esp + 4], 0x407000
mov dword [esp], 3
call sym._wine_dbg_log.constprop.10
mov eax, dword [ebp - 0x250]
mov ecx, dword [ebp - 0x260]
mov esi, dword [eax + ecx + 4]
jmp 0x4047df
call sym._wine_dbgstr_wn.constprop.7
mov dword [esp], str.Failed_to_register_dll__s_n
mov dword [esp + 4], eax
call dbg.report_error
mov eax, dword [ebp - 0x2a4]
mov dword [ebp - 0x280], eax
jmp 0x402252
call sym._wine_dbgstr_wn.constprop.7
mov dword [esp + 0x10], edi
mov dword [esp + 0x14], eax
mov dword [esp + 0xc], str.argvW__d____s_n
mov dword [esp + 8], global___func__.1
mov dword [esp + 4], 0x407000
mov dword [esp], 3
call sym._wine_dbg_log.constprop.10
mov esi, dword [ebp - 0x250]
mov eax, dword [ebp - 0x260]
mov edx, dword [ebp - 0x254]
mov eax, dword [esi + eax + 4]
mov dword [ebp - 0x2ac], eax
jmp 0x40428f
test ebx, ebx
je 0x405346
mov eax, ebx
shr eax, 0x10
je 0x40500f
mov dword [esp + 4], 0xffffffff
mov dword [esp], ebx
call dword [sym.imp.kernel32.dll_IsBadStringPtrW]
mov ecx, eax
sub esp, 8
mov eax, str._invalid_
test ecx, ecx
jne 0x404c21
cmp word [ebx], 0
je 0x404b78
add ecx, 1
cmp word [ebx + ecx*2], 0
jne 0x404b6e
mov eax, 0x224c
lea edx, [ebp - 0x22e]
mov word [ebp - 0x230], ax
lea eax, [ebp - 0x10e]
lea esi, [ecx - 1]
cmp edx, eax
ja 0x404bf6
test ecx, ecx
jle 0x404bf6
add ebx, 2
movzx eax, word [ebx - 2]
cmp ax, 0xd
je 0x404efb
ja 0x404bd2
cmp ax, 9
je 0x404e8f
cmp ax, 0xa
jne 0x404e2f
mov eax, 0x6e5c
add edx, 2
mov ecx, esi
mov word [edx - 2], ax
jmp 0x404b8a
cmp ax, 0x22
je 0x404ea2
cmp ax, 0x5c
jne 0x404e2f
mov eax, 0x5c5c
add edx, 2
mov ecx, esi
mov word [edx - 2], ax
jmp 0x404b8a
mov byte [edx], 0x22
lea eax, [edx + 1]
test esi, esi
jle 0x404c10
mov ecx, 0x2e2e
mov byte [edx + 3], 0x2e
lea eax, [edx + 4]
mov word [edx + 1], cx
mov byte [eax], 0
lea eax, [ebp - 0x230]
mov dword [esp], eax
call dbg.__wine_dbg_strdup
mov dword [esp + 0x14], eax
mov dword [esp + 0x10], edi
mov dword [esp + 0xc], str.argvW__d____s_n
mov dword [esp + 8], global___func__.1
mov dword [esp + 4], 0x407000
mov dword [esp], 3
call sym._wine_dbg_log.constprop.10
mov eax, dword [ebp - 0x250]
mov ecx, dword [ebp - 0x260]
mov ebx, dword [eax + ecx + 4]
jmp 0x403288
mov eax, dword [ebp - 0x29c]
lea ecx, [ebp - 0x230]
mov edx, str.DllUnregisterServer
mov dword [ebp - 0x230], 0
call sym._LoadProc.constprop.6
call eax
test eax, eax
mov eax, dword [ebp - 0x29c]
js 0x4054eb
call sym._wine_dbgstr_wn.constprop.7
mov dword [esp], str.Successfully_unregistered_dll__s_n
mov dword [esp + 4], eax
call dbg.wine_dbg_printf
mov eax, dword [ebp - 0x230]
test eax, eax
je 0x404cbd
mov dword [esp], eax
call dword [sym.imp.kernel32.dll_FreeLibrary]
sub esp, 4
mov eax, dword [ebp - 0x2a4]
mov dword [ebp - 0x280], eax
jmp 0x402252
mov eax, dword [ebp - 0x250]
mov ebx, dword [eax + 8]
test byte [section..data], 8
jne 0x4053b7
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 0x405027
mov dword [ebp - 0x280], 1
test byte [section..data], 2
je 0x402252
mov eax, ebx
call sym._wine_dbgstr_wn.constprop.7
mov dword [esp + 0xc], str.Invalid_parameter__s_n
mov dword [esp + 0x10], eax
mov dword [esp + 8], 0x4098e8
mov dword [esp + 4], 0x407000
mov dword [esp], 1
call sym._wine_dbg_log.constprop.10
jmp 0x402252
mov eax, dword [ebp - 0x250]
mov ecx, dword [ebp - 0x260]
mov eax, dword [eax + ecx]
movzx edx, word [eax]
and edx, 0xfffffffd
cmp dx, 0x2d
jne 0x402fdf
mov edx, 0x409437
call sym._msi_option_equal.part.1
test eax, eax
je 0x404eb5
test byte [section..data], 1
je 0x40402d
mov dword [esp + 0xc], str.Unknown_parameter__D_n
mov dword [esp + 8], global___func__.1
mov dword [esp + 4], 0x407000
mov dword [esp], 0
call sym._wine_dbg_log.constprop.10
jmp 0x40402d
mov esi, dword [ebp - 0x250]
mov eax, dword [ebp - 0x260]
mov edx, dword [esi + eax]
cmp word [edx], 0
je 0x404f0e
mov eax, edx
add eax, 2
cmp word [eax], 0
jne 0x404dd7
sub eax, edx
cmp eax, 4
jne 0x404f0e
mov dword [ebp - 0x28c], 2
mov edx, dword [ebp - 0x254]
mov dword [0x40a004], 1
jmp 0x401fd0
mov edx, str.REBOOTPROMPT_S_
lea eax, [ebp - 0x25c]
call sym._StringListAppend
mov edx, dword [ebp - 0x254]
mov dword [ebp - 0x28c], 0x63
jmp 0x401fd0
lea ecx, [eax - 0x20]
cmp cx, 0x5e
jbe 0x405003
mov ecx, eax
mov byte [edx], 0x5c
add edx, 5
shr cx, 0xc
movzx ecx, cx
movzx ecx, byte [ecx + str.0123456789abcdefcustom_action_server]
mov byte [edx - 4], cl
mov ecx, eax
shr cx, 8
and ecx, 0xf
movzx ecx, byte [ecx + str.0123456789abcdefcustom_action_server]
mov byte [edx - 3], cl
mov ecx, eax
and eax, 0xf
shr cx, 4
movzx eax, byte [eax + str.0123456789abcdefcustom_action_server]
and ecx, 0xf
movzx ecx, byte [ecx + str.0123456789abcdefcustom_action_server]
mov byte [edx - 1], al
mov byte [edx - 2], cl
mov ecx, esi
jmp 0x404b8a
mov eax, 0x745c
add edx, 2
mov ecx, esi
mov word [edx - 2], ax
jmp 0x404b8a
mov eax, 0x225c
add edx, 2
mov ecx, esi
mov word [edx - 2], ax
jmp 0x404b8a
mov eax, dword [ebp - 0x250]
mov ecx, dword [ebp - 0x260]
mov eax, dword [eax + ecx]
movzx edx, word [eax]
and edx, 0xfffffffd
cmp dx, 0x2d
jne 0x402fdf
mov edx, 0x40944f
call sym._msi_option_equal.part.1
test eax, eax
je 0x405300
mov dword [ebp - 0x2b8], 1
mov edx, dword [ebp - 0x254]
jmp 0x401fd0
mov eax, 0x725c
add edx, 2
mov ecx, esi
mov word [edx - 2], ax
jmp 0x404b8a
lea eax, [edx + 4]
mov edx, 0x40939c
call dbg.msi_strequal
test eax, eax
jne 0x404deb
mov eax, dword [ebp - 0x250]
mov ecx, dword [ebp - 0x260]
mov edx, str.uiet
mov eax, dword [eax + ecx]
add eax, 4
call dbg.msi_strequal
test eax, eax
jne 0x404deb
mov eax, dword [ebp - 0x250]
mov ecx, dword [ebp - 0x260]
mov edx, 0x4093a3
mov eax, dword [eax + ecx]
add eax, 4
call dbg.msi_strequal
test eax, eax
je 0x4057f3
mov dword [ebp - 0x28c], 4
mov edx, dword [ebp - 0x254]
jmp 0x401fd0
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 0x405757
mov dword [esp + 8], 0x10000
mov dword [esp + 4], 0x40959a
mov dword [esp], eax
call dword [sym.imp.advapi32.dll_OpenServiceW]
sub esp, 0xc
mov esi, eax
test eax, eax
je 0x405721
mov dword [esp], eax
call dword [sym.imp.advapi32.dll_DeleteService]
sub esp, 4
test eax, eax
je 0x4057a0
mov dword [esp], esi
mov esi, dword [sym.imp.advapi32.dll_CloseServiceHandle]
call esi
mov eax, dword [ebp - 0x270]
sub esp, 4
mov dword [ebp - 0x280], eax
jmp 0x4049e4
mov byte [edx], al
mov ecx, esi
add edx, 1
jmp 0x404b8a
movzx ebx, bx
mov dword [esp], str._04x
mov dword [esp + 4], ebx
call sym._wine_dbg_sprintf.constprop.8
jmp 0x404c21
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 dbg.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 0x4056e2
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 0x405174
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], dbg.custom_action_thread
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 0x40567f
cmp dword [ebp - 0x24c], 8
jne 0x40567f
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 0x4056a6
cmp dword [ebp - 0x24c], 0x10
jne 0x4056a6
mov eax, dword [0x409908]
cmp dword [ebx], eax
jne 0x4050c1
mov eax, dword [0x40990c]
cmp dword [ebx + 4], eax
jne 0x4050c1
mov eax, dword [0x409910]
cmp dword [ebx + 8], eax
jne 0x4050c1
mov eax, dword [0x409914]
cmp dword [ebx + 0xc], eax
jne 0x4050c1
mov dword [ebp - 0x280], 0
call dword [sym.imp.ole32.dll_CoUninitialize]
jmp 0x402252
mov dword [esp], 2
call dword [sym.imp.ucrtbase.dll_malloc]
mov dword [ebp - 0x264], eax
jmp 0x404408
mov eax, dword [ebp - 0x250]
mov ecx, dword [eax]
cmp word [ecx], 0
je 0x405895
mov edx, ecx
add edx, 2
cmp word [edx], 0
jne 0x405225
sub edx, ecx
mov eax, edx
sar eax, 1
lea eax, [eax + eax + 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 0x4058a4
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 0x405580
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 - 0x280], 1
sub esp, 4
jmp 0x402252
mov eax, dword [ebp - 0x250]
mov ecx, dword [ebp - 0x260]
mov eax, dword [eax + ecx]
jmp 0x402fdf
mov eax, dword fs:[0x18]
cmp dword [eax + 0x34], 0x431
je 0x405350
mov dword [esp], str.Failed_to_create_MSI_service_n
call dbg.report_error
mov eax, dword [ebp - 0x270]
mov esi, dword [sym.imp.advapi32.dll_CloseServiceHandle]
mov dword [ebp - 0x280], eax
jmp 0x4049e4
mov eax, str._null_
jmp 0x404c21
mov dword [ebp - 0x280], 0
mov esi, dword [sym.imp.advapi32.dll_CloseServiceHandle]
jmp 0x4049e4
call sym._wine_dbgstr_wn.constprop.7
mov dword [esp + 0x10], edi
mov dword [esp + 0x14], eax
mov dword [esp + 0xc], str.argvW__d____s_n
mov dword [esp + 8], global___func__.1
mov dword [esp + 4], 0x407000
mov dword [esp], 3
call sym._wine_dbg_log.constprop.10
mov esi, dword [ebp - 0x250]
mov eax, dword [ebp - 0x260]
mov edx, dword [ebp - 0x254]
mov eax, dword [esi + eax + 4]
mov dword [ebp - 0x29c], eax
jmp 0x404866
test ebx, ebx
je 0x40578a
mov eax, ebx
shr eax, 0x10
je 0x4055b3
mov dword [esp + 4], 0xffffffff
mov dword [esp], ebx
call dword [sym.imp.kernel32.dll_IsBadStringPtrW]
mov esi, eax
sub esp, 8
mov eax, str._invalid_
test esi, esi
jne 0x4054b4
cmp word [ebx], 0
je 0x4053fd
add esi, 1
cmp word [ebx + esi*2], 0
jne 0x4053f3
mov eax, 0x224c
mov dword [ebp - 0x260], ebx
mov ecx, ebx
lea edx, [ebp - 0x22e]
mov word [ebp - 0x230], ax
lea edi, [esi - 1]
test esi, esi
jle 0x405483
lea eax, [ebp - 0x10e]
cmp edx, eax
ja 0x405483
add ecx, 2
movzx eax, word [ecx - 2]
cmp ax, 0xd
je 0x405651
ja 0x40545f
cmp ax, 9
je 0x40563e
cmp ax, 0xa
jne 0x4055de
mov eax, 0x6e5c
add edx, 2
mov esi, edi
mov word [edx - 2], ax
jmp 0x405417
cmp ax, 0x22
je 0x4055cb
cmp ax, 0x5c
jne 0x4055de
mov ebx, 0x5c5c
add edx, 2
mov esi, edi
mov word [edx - 2], bx
jmp 0x405417
mov ebx, dword [ebp - 0x260]
mov byte [edx], 0x22
lea eax, [edx + 1]
test edi, edi
jle 0x4054a3
mov ecx, 0x2e2e
mov byte [edx + 3], 0x2e
lea eax, [edx + 4]
mov word [edx + 1], cx
mov byte [eax], 0
lea eax, [ebp - 0x230]
mov dword [esp], eax
call dbg.__wine_dbg_strdup
mov dword [esp + 0x10], eax
mov dword [esp + 0xc], 0x409160
mov dword [esp + 8], 0x4098e8
mov dword [esp + 4], 0x407000
mov dword [esp], 3
call sym._wine_dbg_log.constprop.10
jmp 0x404ce4
call dbg.DoService
jmp 0x40224c
call sym._wine_dbgstr_wn.constprop.7
mov dword [esp], str.Failed_to_unregister_dll__s_n
mov dword [esp + 4], eax
call dbg.report_error
mov eax, dword [ebp - 0x2b0]
mov dword [ebp - 0x2a4], eax
jmp 0x404cbd
call sym._wine_dbgstr_wn.constprop.7
mov dword [esp + 0x10], edi
mov dword [esp + 0x14], eax
mov dword [esp + 0xc], str.argvW__d____s_n
mov dword [esp + 8], global___func__.1
mov dword [esp + 4], 0x407000
mov dword [esp], 3
call sym._wine_dbg_log.constprop.10
mov esi, dword [ebp - 0x250]
mov eax, dword [ebp - 0x260]
mov edx, dword [ebp - 0x254]
mov eax, dword [esi + eax + 4]
mov dword [ebp - 0x29c], eax
jmp 0x4035db
mov dword [esp], str.Failed_to_open_the_service_control_manager._n
call dbg.report_error
mov eax, dword [ebp - 0x270]
mov dword [ebp - 0x280], eax
jmp 0x402252
lea ecx, [ebp - 0x250]
lea edx, [ebp - 0x254]
mov eax, edi
call dbg.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 0x4032b2
movzx eax, bx
mov dword [esp], str._04x
mov dword [esp + 4], eax
call sym._wine_dbg_sprintf.constprop.8
jmp 0x4054b4
mov esi, 0x225c
add edx, 2
mov word [edx - 2], si
mov esi, edi
jmp 0x405417
lea esi, [eax - 0x20]
cmp si, 0x5e
jbe 0x40577e
mov esi, eax
mov byte [edx], 0x5c
add edx, 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 [edx - 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 [edx - 3], bl
movzx ebx, byte [esi + str.0123456789abcdefcustom_action_server]
mov byte [edx - 1], al
mov esi, edi
mov byte [edx - 2], bl
jmp 0x405417
mov eax, 0x745c
add edx, 2
mov esi, edi
mov word [edx - 2], ax
jmp 0x405417
mov eax, 0x725c
add edx, 2
mov esi, edi
mov word [edx - 2], ax
jmp 0x405417
mov dword [esp + 0xc], str.Unknown_parameter__m_n
jmp 0x404d9b
xor eax, eax
mov word [ebp - 0x2b2], ax
jmp 0x401fd0
test byte [section..data], 2
jne 0x4057bd
call dword [sym.imp.ole32.dll_CoUninitialize]
mov eax, dword fs:[0x18]
mov eax, dword [eax + 0x34]
mov dword [ebp - 0x280], eax
jmp 0x402252
test byte [section..data], 2
je 0x40568c
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], 0x4098e8
mov dword [esp + 0x10], eax
mov dword [esp + 4], 0x407000
mov dword [esp], 1
call sym._wine_dbg_log.constprop.10
jmp 0x40568c
test byte [section..data], 2
je 0x405692
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], 0x4098e8
mov dword [esp + 0x10], eax
mov dword [esp + 4], 0x407000
mov dword [esp], 1
call sym._wine_dbg_log.constprop.10
jmp 0x405692
mov eax, dword fs:[0x18]
cmp dword [eax + 0x34], 0x424
je 0x405350
mov dword [esp], str.Failed_to_open_MSI_service_n
call dbg.report_error
mov eax, dword [ebp - 0x26c]
mov esi, dword [sym.imp.advapi32.dll_CloseServiceHandle]
mov dword [ebp - 0x280], eax
jmp 0x4049e4
mov dword [esp], str.Failed_to_open_service_control_manager_n
call dbg.report_error
mov eax, dword [ebp - 0x26c]
mov dword [ebp - 0x280], eax
jmp 0x402252
mov eax, 1
call dbg.ShowUsage
mov byte [edx], al
mov esi, edi
add edx, 1
jmp 0x405417
mov eax, str._null_
jmp 0x4054b4
xor eax, eax
call dbg.ShowUsage
lea esi, [esi]
nop
mov dword [esp], str.Failed_to_delete_MSI_service_n
call dbg.report_error
mov eax, dword [ebp - 0x26c]
mov dword [ebp - 0x270], eax
jmp 0x404fe4
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], 0x4098e8
mov dword [esp + 0x10], eax
mov dword [esp + 4], 0x407000
mov dword [esp], 1
call sym._wine_dbg_log.constprop.10
jmp 0x40568c
mov eax, dword [ebp - 0x250]
mov ecx, dword [ebp - 0x260]
mov edx, 0x4092d9
mov eax, dword [eax + ecx]
add eax, 4
call dbg.msi_strequal
test eax, eax
je 0x405860
mov dword [ebp - 0x28c], 0x85
mov edx, dword [ebp - 0x254]
jmp 0x401fd0
mov eax, esi
call sym._wine_dbgstr_wn.constprop.7
mov edi, dword [ebp - 0x2a0]
mov dword [esp], str.Logging_in__s__0x_08lx___lu__failed_n
mov dword [esp + 4], eax
mov dword [esp + 0xc], edi
mov edi, dword [ebp - 0x298]
mov dword [esp + 8], edi
call dbg.report_error
mov dword [esp], 1
call dword [sym.imp.kernel32.dll_ExitProcess]
mov eax, dword [ebp - 0x250]
mov ecx, dword [ebp - 0x260]
mov edx, 0x4093a5
mov eax, dword [eax + ecx]
add eax, 4
call dbg.msi_strequal
test eax, eax
je 0x4058c5
mov dword [ebp - 0x28c], 0x82
mov edx, dword [ebp - 0x254]
jmp 0x401fd0
mov dword [ebp - 0x264], 2
jmp 0x40523e
mov eax, dword [ebp - 0x268]
mov dword [esp], eax
call dword [sym.imp.advapi32.dll_RegCloseKey]
mov dword [ebp - 0x280], 1
sub esp, 4
jmp 0x402252
mov eax, dword [ebp - 0x250]
mov ebx, dword [ebp - 0x260]
mov edx, 0x4093a8
mov eax, dword [eax + ebx]
add eax, 4
call dbg.msi_strprefix
test eax, eax
jne 0x405917
mov ecx, dword [ebp - 0x260]
mov eax, dword [ebp - 0x250]
mov eax, dword [eax + ecx]
add eax, 4
call sym._wine_dbgstr_wn.constprop.7
mov dword [esp], str.Unknown_option___s__for_UI_level_n
mov dword [esp + 4], eax
call dbg.report_error
mov edx, dword [ebp - 0x254]
jmp 0x401fd0
mov esi, dword [ebp - 0x250]
mov ebx, dword [esi + ebx]
mov esi, 3
add ebx, 6
jmp 0x405930
or esi, 0x20
add ebx, 2
cmp word [ebx], 0
je 0x40599e
mov edx, 0x4093aa
mov eax, ebx
call dbg.msi_strprefix
test eax, eax
je 0x40594c
or esi, 0x80
mov edx, 0x4093ac
mov eax, ebx
call dbg.msi_strprefix
test eax, eax
je 0x40595f
or esi, 0x40
mov edx, 0x4093ae
mov eax, ebx
call dbg.msi_strprefix
test eax, eax
je 0x40592d
test byte [section..data], 1
je 0x40592a
mov dword [esp + 0xc], 0x4093b0
mov dword [esp + 8], global___func__.1
mov dword [esp + 4], 0x407000
mov dword [esp], 0
call sym._wine_dbg_log.constprop.10
jmp 0x40592a
mov dword [ebp - 0x28c], esi
mov edx, dword [ebp - 0x254]
jmp 0x401fd0