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

Disassembly:
push ebp
mov ebp, esp
push edi
push esi
push ebx
sub esp, 0xa0
mov dword [ebp - 0x34], 0
mov dword [ebp - 0x30], 0
mov dword [ebp - 0x28], 0
call dword [sym.imp.comctl32.dll_InitCommonControls]
call dword [sym.imp.kernel32.dll_GetCommandLineW]
lea ecx, [ebp - 0x28]
lea edx, [ebp - 0x2c]
call fcn.004011e0
mov eax, dword [ebp - 0x2c]
mov dword [ebp - 0x3c], eax
cmp eax, 1
jg 0x402838
mov dword [esp + 4], 0
mov dword [esp], 5
call sub.msi.dll_MsiSetInternalUI
sub esp, 8
mov eax, 1
call fcn.00401890
lea esi, [esi]
mov esi, dword [ebp - 0x28]
mov edx, dword [esi + 4]
mov dword [ebp - 0x38], esi
movzx eax, word [edx]
and eax, 0xfffffffd
cmp ax, 0x2d
jne 0x402907
lea eax, [edx + 2]
mov edx, 0x408243
call fcn.00401360
test eax, eax
je 0x403149
lea eax, [ebp - 0x24]
mov esi, dword [esi + 8]
mov dword [ebp - 0x20], 0
mov dword [ebp - 0x1c], 0
mov dword [esp + 8], eax
mov dword [esp + 4], str.SoftwareMicrosoftWindowsCurrentVersionInstallerRunOnceEntries
mov dword [esp], 0x80000002
call dword [sym.imp.advapi32.dll_RegOpenKeyW]
sub esp, 0xc
test eax, eax
jne 0x403092
lea eax, [ebp - 0x20]
mov dword [esp + 0x10], 0
mov dword [esp + 0x14], eax
lea eax, [ebp - 0x1c]
mov dword [esp + 0xc], eax
mov eax, dword [ebp - 0x24]
mov dword [esp + 8], 0
mov dword [esp], eax
mov eax, dword [sym.imp.advapi32.dll_RegQueryValueExW]
mov dword [esp + 4], esi
mov dword [ebp - 0x3c], eax
call eax
sub esp, 0x18
test eax, eax
jne 0x40353b
cmp dword [ebp - 0x1c], 1
mov edx, dword [ebp - 0x24]
je 0x403499
mov dword [esp], edx
call dword [sym.imp.advapi32.dll_RegCloseKey]
mov dword [ebp - 0x4c], 1
sub esp, 4
jmp 0x402f86
mov dword [ebp - 0x3c], 3
xor ebx, ebx
mov edi, 1
mov dword [ebp - 0x64], 0
mov dword [ebp - 0x58], 5
mov dword [ebp - 0x8c], 0
mov dword [ebp - 0x94], 0
mov dword [ebp - 0x84], 0
mov dword [ebp - 0x5c], 0
mov word [ebp - 0x86], bx
mov dword [ebp - 0x78], 0
mov dword [ebp - 0x74], 0
mov dword [ebp - 0x50], 0
mov dword [ebp - 0x80], 0
mov dword [ebp - 0x90], 0
mov dword [ebp - 0x48], 0
mov dword [ebp - 0x40], 0
mov dword [ebp - 0x7c], 0
mov dword [ebp - 0x70], 0
mov dword [ebp - 0x4c], 0
mov dword [ebp - 0x6c], 0
mov dword [ebp - 0x68], 0
mov dword [ebp - 0x60], 0
mov dword [ebp - 0x54], 0
lea esi, [esi]
mov eax, dword [ebp - 0x38]
lea esi, [edi*4]
lea ebx, [eax + esi]
test byte [section..data], 8
jne 0x402a58
mov eax, dword [ebx]
movzx edx, word [eax]
and edx, 0xfffffffd
cmp dx, 0x2d
je 0x402a20
mov edx, str.umtgl
call fcn.00401360
test eax, eax
je 0x403d53
add edi, 1
cmp edi, dword [ebp - 0x3c]
jge 0x40282a
mov eax, dword [ebp - 0x38]
lea ebx, [eax + esi + 4]
test byte [section..data], 8
jne 0x403d9b
mov eax, dword [ebx]
mov dword [ebp - 0x78], 1
mov dword [ebp - 0x6c], 1
mov dword [ebp - 0x50], eax
jmp 0x402a3c
add eax, 2
mov edx, str.regserver
call fcn.00401360
test eax, eax
je 0x402ad0
mov dword [ebp - 0x40], 1
add edi, 1
cmp edi, dword [ebp - 0x3c]
jge 0x402b0a
mov eax, dword [ebp - 0x28]
mov dword [ebp - 0x38], eax
jmp 0x4029b0
mov edx, dword [ebx]
test edx, edx
je 0x402d50
mov eax, edx
shr eax, 0x10
je 0x402d38
mov dword [esp + 4], 0xffffffff
mov dword [esp], edx
mov dword [ebp - 0x44], edx
call dword [sym.imp.kernel32.dll_IsBadStringPtrW]
mov ecx, eax
sub esp, 8
mov eax, str._invalid_
test ecx, ecx
jne 0x402a97
mov eax, dword [ebp - 0x44]
call fcn.004015e0
mov dword [esp + 0x14], eax
mov dword [esp + 0x10], edi
mov dword [esp + 0xc], str.argvW__d____s_n
mov dword [esp + 8], str.WinMain
mov dword [esp + 4], 0x406000
mov dword [esp], 3
call fcn.00401840
jmp 0x4029ca
mov eax, dword [ebx]
movzx edx, word [eax]
and edx, 0xfffffffd
cmp dx, 0x2d
jne 0x4029d8
add eax, 2
mov edx, str.unregserver
call fcn.00401360
test eax, eax
je 0x402d60
mov dword [ebp - 0x48], 1
add edi, 1
cmp edi, dword [ebp - 0x3c]
jl 0x402a48
movzx eax, byte [ebp - 0x60]
and al, byte [ebp - 0x4c]
mov dword [esp + 4], 0
xor eax, 1
and al, byte [ebp - 0x54]
mov esi, dword [ebp - 0x34]
mov byte [ebp - 0x54], al
mov eax, dword [ebp - 0x58]
mov dword [ebp - 0x5c], esi
mov dword [esp], eax
call sub.msi.dll_MsiSetInternalUI
sub esp, 8
test esi, esi
je 0x403379
mov edx, esi
mov ebx, 1
lea esi, [esi]
cmp word [edx + 4], 0
lea ecx, [edx + 4]
je 0x402e48
mov eax, ecx
lea esi, [esi]
nop
add eax, 2
cmp word [eax], 0
jne 0x402b60
sub eax, ecx
sar eax, 1
add eax, 3
mov edx, dword [edx]
add ebx, eax
test edx, edx
jne 0x402b48
add ebx, ebx
mov dword [esp], ebx
call dword [sym.imp.ucrtbase.dll_malloc]
mov ebx, dword [ebp - 0x5c]
mov dword [ebp - 0x58], eax
mov edi, eax
jmp 0x402b9a
mov ebx, dword [ebx]
test ebx, ebx
je 0x402c75
lea edx, [ebx + 4]
mov dword [esp + 4], 0x3d
mov dword [esp], edx
mov dword [ebp - 0x38], edx
call dword [sym.imp.ucrtbase.dll_wcschr]
mov esi, eax
test eax, eax
je 0x402b90
mov edx, 0x20
lea ecx, [edi + 2]
mov word [edi], dx
mov edx, dword [ebp - 0x38]
mov edi, eax
mov dword [esp], ecx
sub edi, edx
mov dword [esp + 4], edx
mov dword [esp + 8], edi
mov dword [ebp - 0x38], ecx
call sub.ucrtbase.dll_memcpy
mov ecx, dword [ebp - 0x38]
add ecx, edi
mov edi, 0x3d
mov word [ecx], di
lea edi, [esi + 2]
mov dword [ebp - 0x38], ecx
mov dword [esp + 4], 0x20
mov dword [esp], edi
call dword [sym.imp.ucrtbase.dll_wcschr]
mov ecx, dword [ebp - 0x38]
test eax, eax
mov dword [ebp - 0x3c], eax
je 0x402e30
mov eax, 0x22
lea edx, [ecx + 4]
mov word [ecx + 2], ax
cmp word [esi + 2], 0
je 0x402c60
mov eax, edi
lea esi, [esi]
nop
mov ecx, eax
add eax, 2
cmp word [eax], 0
jne 0x402c28
sub ecx, esi
mov dword [esp + 4], edi
mov dword [esp + 8], ecx
mov dword [esp], edx
mov dword [ebp - 0x44], ecx
mov dword [ebp - 0x38], edx
call sub.ucrtbase.dll_memcpy
mov edx, dword [ebp - 0x38]
mov ecx, dword [ebp - 0x44]
mov eax, dword [ebp - 0x3c]
add edx, ecx
mov edi, edx
test eax, eax
je 0x402b90
mov eax, 0x22
lea edi, [edx + 2]
mov word [edx], ax
mov ebx, dword [ebx]
test ebx, ebx
jne 0x402b9a
xor eax, eax
mov word [edi], ax
test byte [section..data], 8
jne 0x402e52
cmp byte [ebp - 0x54], 0
jne 0x402ec1
mov eax, dword [ebp - 0x68]
test eax, eax
jne 0x402f40
mov edi, dword [ebp - 0x6c]
test edi, edi
jne 0x40315e
mov eax, dword [ebp - 0x4c]
test eax, eax
jne 0x403320
mov edi, dword [ebp - 0x70]
test edi, edi
jne 0x4030a6
mov esi, dword [ebp - 0x7c]
test esi, esi
jne 0x4033fb
mov ebx, dword [ebp - 0x40]
test ebx, ebx
jne 0x40372c
mov ecx, dword [ebp - 0x48]
test ecx, ecx
jne 0x40354f
mov edx, dword [ebp - 0x90]
test edx, edx
jne 0x403ba4
mov eax, dword [ebp - 0x80]
test eax, eax
je 0x40282a
test byte [section..data], 1
je 0x403092
mov dword [esp + 0xc], str.Unknown_function__ignoring_n
mov dword [esp + 8], str.WinMain
mov dword [esp + 4], 0x406000
mov dword [esp], 0
call fcn.00401840
mov eax, dword [ebp - 0x80]
mov dword [ebp - 0x4c], eax
jmp 0x402f86
movzx edx, dx
mov dword [esp], str._04x
mov dword [esp + 4], edx
call fcn.00401c90
jmp 0x402a97
mov eax, str._null_
jmp 0x402a97
mov eax, dword [ebx]
movzx edx, word [eax]
and edx, 0xfffffffd
cmp dx, 0x2d
jne 0x4029d8
add eax, 2
mov edx, str.unregister
call fcn.00401360
test eax, eax
jne 0x402af7
mov eax, dword [ebx]
movzx edx, word [eax]
and edx, 0xfffffffd
cmp dx, 0x2d
jne 0x4029d8
add eax, 2
mov edx, str.unreg
call fcn.00401360
test eax, eax
jne 0x402af7
mov eax, dword [ebx]
movzx edx, word [eax]
and edx, 0xfffffffd
cmp dx, 0x2d
jne 0x4029d8
add eax, 2
mov edx, 0x40830f
call fcn.00401490
test eax, eax
je 0x402fbd
mov ecx, dword [ebx]
movzx eax, word [ecx]
mov edx, eax
and edx, 0xfffffffd
cmp dx, 0x2d
je 0x402f93
mov edx, ecx
mov ebx, 8
test ax, ax
je 0x403268
mov eax, edx
lea esi, [esi]
nop
add eax, 2
cmp word [eax], 0
jne 0x402e00
sub eax, edx
sar eax, 1
cmp ebx, eax
jge 0x403268
lea eax, [ecx + ebx*2]
mov dword [ebp - 0x54], 1
mov dword [ebp - 0x50], eax
jmp 0x402a3c
cmp word [esi + 2], 0
lea edx, [ecx + 2]
jne 0x402c21
mov edi, edx
jmp 0x402b90
mov eax, 3
jmp 0x402b70
mov eax, dword [ebp - 0x58]
test eax, eax
je 0x4033f1
shr eax, 0x10
je 0x403130
mov esi, dword [ebp - 0x58]
mov dword [esp + 4], 0xffffffff
mov dword [esp], esi
call dword [sym.imp.kernel32.dll_IsBadStringPtrW]
mov edx, eax
sub esp, 8
mov eax, str._invalid_
test edx, edx
jne 0x402e8f
mov eax, esi
call fcn.004015e0
mov dword [esp + 0x10], eax
mov dword [esp + 0xc], str.properties_____s_n
mov dword [esp + 8], str.build_properties
mov dword [esp + 4], 0x406000
mov dword [esp], 3
call fcn.00401840
cmp byte [ebp - 0x54], 0
je 0x402c91
mov eax, dword [ebp - 0x50]
cmp word [eax], 0
je 0x402ee5
lea esi, [esi]
add eax, 2
cmp word [eax], 0
jne 0x402ed0
sub eax, dword [ebp - 0x50]
cmp eax, 0x4c
je 0x40363e
mov eax, dword [ebp - 0x58]
mov dword [esp + 4], eax
mov eax, dword [ebp - 0x50]
mov dword [esp], eax
call sub.msi.dll_MsiInstallProductW
mov dword [ebp - 0x4c], eax
sub esp, 8
cmp eax, 2
jne 0x402f86
mov eax, dword [ebp - 0x50]
call fcn.00401ad0
mov ebx, eax
test eax, eax
je 0x403b13
mov eax, dword [ebp - 0x58]
mov dword [esp], ebx
mov dword [esp + 4], eax
call sub.msi.dll_MsiInstallProductW
sub esp, 8
mov esi, eax
mov dword [esp], ebx
call dword [sym.imp.ucrtbase.dll_free]
mov dword [ebp - 0x4c], esi
jmp 0x402f86
mov eax, dword [ebp - 0x50]
cmp word [eax], 0
je 0x402f65
lea esi, [esi]
add eax, 2
cmp word [eax], 0
jne 0x402f50
sub eax, dword [ebp - 0x50]
cmp eax, 0x4c
je 0x403067
mov eax, dword [ebp - 0x74]
mov dword [esp + 4], eax
mov eax, dword [ebp - 0x50]
mov dword [esp], eax
call sub.msi.dll_MsiReinstallProductW
sub esp, 8
cmp eax, 2
je 0x403981
mov dword [ebp - 0x4c], eax
mov eax, dword [ebp - 0x4c]
lea esp, [ebp - 0xc]
pop ebx
pop esi
pop edi
pop ebp
ret 0x10
lea eax, [ecx + 2]
mov edx, 0x40830f
mov dword [ebp - 0x44], ecx
call fcn.00401490
mov edx, dword [ebx]
mov ecx, dword [ebp - 0x44]
test eax, eax
movzx eax, word [edx]
je 0x402deb
mov ebx, 2
jmp 0x402df0
mov eax, dword [ebx]
movzx edx, word [eax]
and edx, 0xfffffffd
cmp dx, 0x2d
jne 0x4029d8
add eax, 2
mov edx, str.package
call fcn.00401490
test eax, eax
jne 0x402dd5
mov eax, dword [ebx]
movzx edx, word [eax]
and edx, 0xfffffffd
cmp dx, 0x2d
jne 0x4029d8
add eax, 2
mov edx, 0x408319
call fcn.00401360
test eax, eax
je 0x403739
add edi, 1
cmp edi, dword [ebp - 0x3c]
jge 0x40282a
mov eax, dword [ebp - 0x38]
lea esi, [eax + esi + 4]
test byte [section..data], 8
jne 0x4036c0
mov eax, dword [esi]
mov edx, str.ACTIONADMIN
mov dword [ebp - 0x50], eax
lea eax, [ebp - 0x34]
call fcn.00401bf0
test byte [section..data], 1
jne 0x40367f
mov dword [ebp - 0x8c], 1
mov dword [ebp - 0x60], 1
mov dword [ebp - 0x54], 1
jmp 0x402a3c
lea eax, [ebp - 0x1c]
mov dword [esp + 4], eax
mov eax, dword [ebp - 0x50]
mov dword [esp], eax
call dword [sym.imp.ole32.dll_CLSIDFromString]
sub esp, 8
test eax, eax
jne 0x402f65
test byte [section..data], 1
jne 0x40334a
mov dword [ebp - 0x4c], 1
mov eax, dword [ebp - 0x4c]
lea esp, [ebp - 0xc]
pop ebx
pop esi
pop edi
pop ebp
ret 0x10
mov eax, dword [ebp - 0x64]
lea ecx, [ebp - 0x1c]
mov edx, str.DllRegisterServer
mov dword [ebp - 0x1c], 0
call fcn.00402720
call eax
test eax, eax
mov eax, dword [ebp - 0x64]
js 0x4039a7
test eax, eax
je 0x40362a
shr eax, 0x10
je 0x403968
mov esi, dword [ebp - 0x64]
mov dword [esp + 4], 0xffffffff
mov dword [esp], esi
call dword [sym.imp.kernel32.dll_IsBadStringPtrW]
mov edx, eax
sub esp, 8
mov eax, str._invalid_
test edx, edx
jne 0x403104
mov eax, esi
call fcn.004015e0
mov dword [esp + 4], eax
mov dword [esp], str.Successfully_registered_dll__s_n
call fcn.00401820
mov eax, dword [ebp - 0x1c]
test eax, eax
je 0x402f86
mov dword [esp], eax
call dword [sym.imp.kernel32.dll_FreeLibrary]
sub esp, 4
jmp 0x402f86
movzx eax, word [ebp - 0x58]
mov dword [esp], str._04x
mov dword [esp + 4], eax
call fcn.00401c90
jmp 0x402e8f
cmp dword [ebp - 0x3c], 3
je 0x4032d5
mov eax, dword [ebp - 0x28]
mov dword [ebp - 0x38], eax
jmp 0x402907
mov edx, dword [ebp - 0x5c]
test edx, edx
je 0x403951
mov ebx, 1
nop
cmp word [edx + 4], 0
lea ecx, [edx + 4]
je 0x403316
mov eax, ecx
add eax, 2
cmp word [eax], 0
jne 0x403180
sub eax, ecx
sar eax, 1
add eax, 1
mov edx, dword [edx]
add ebx, eax
test edx, edx
jne 0x403170
add ebx, ebx
mov dword [esp], ebx
call dword [sym.imp.ucrtbase.dll_malloc]
mov edi, dword [ebp - 0x5c]
mov dword [ebp - 0x3c], eax
mov dword [ebp - 0x38], eax
lea esi, [esi]
movzx ebx, word [edi + 4]
lea edx, [edi + 4]
test bx, bx
je 0x403299
mov eax, edx
lea esi, [esi]
add eax, 2
cmp word [eax], 0
jne 0x4031c8
sub eax, edx
mov ecx, eax
sar ecx, 1
mov esi, ecx
cmp eax, 2
jbe 0x403257
mov ecx, dword [ebp - 0x38]
lea esi, [esi]
sub esi, 1
add ecx, 2
add edx, 2
mov word [ecx - 2], bx
cmp esi, 1
je 0x403202
movzx ebx, word [edx]
test bx, bx
jne 0x4031e8
mov esi, dword [ebp - 0x38]
add eax, esi
xor esi, esi
mov edx, eax
mov word [ecx], si
mov ebx, dword [edi]
test ebx, ebx
je 0x40322a
mov ecx, 0x3b
lea eax, [edx + 2]
mov word [edx], cx
mov edi, dword [edi]
mov dword [ebp - 0x38], eax
test edi, edi
jne 0x4031b0
mov edx, eax
xor eax, eax
mov word [edx], ax
movzx eax, word [ebp - 0x86]
mov dword [ebp + 0x14], eax
mov eax, dword [ebp - 0x3c]
mov dword [ebp + 0x10], eax
mov eax, dword [ebp - 0x78]
mov dword [ebp + 0xc], eax
mov eax, dword [ebp - 0x50]
mov dword [ebp + 8], eax
lea esp, [ebp - 0xc]
pop ebx
pop esi
pop edi
pop ebp
jmp 0x404960
add eax, dword [ebp - 0x38]
mov edx, eax
test ecx, ecx
je 0x40320e
mov ecx, dword [ebp - 0x38]
jmp 0x403207
add edi, 1
cmp edi, dword [ebp - 0x3c]
jge 0x40282a
mov eax, dword [ebp - 0x38]
lea esi, [eax + esi + 4]
test byte [section..data], 8
jne 0x403385
mov eax, dword [esi]
mov dword [ebp - 0x54], 1
mov dword [ebp - 0x50], eax
jmp 0x402a3c
mov edx, dword [ebp - 0x38]
jmp 0x40320e
lea ecx, [ebp - 0x28]
lea edx, [ebp - 0x2c]
mov eax, edi
call fcn.004011e0
mov dword [esp], edi
call dword [sym.imp.ucrtbase.dll_free]
mov eax, dword [ebp - 0x24]
mov dword [esp], eax
call dword [sym.imp.advapi32.dll_RegCloseKey]
mov eax, dword [ebp - 0x2c]
sub esp, 4
mov dword [ebp - 0x3c], eax
cmp eax, 3
jne 0x403c83
mov eax, dword [ebp - 0x28]
mov edx, dword [eax + 4]
mov dword [ebp - 0x38], eax
movzx eax, word [edx]
and eax, 0xfffffffd
cmp ax, 0x2d
jne 0x402900
lea eax, [edx + 2]
mov edx, str.Embedding
call fcn.00401360
test eax, eax
je 0x403487
mov eax, dword [ebp - 0x38]
mov eax, dword [eax + 8]
call fcn.00401d60
mov dword [ebp - 0x4c], eax
jmp 0x402f86
mov eax, 1
jmp 0x403190
mov eax, dword [ebp - 0x58]
mov dword [ebp + 0x14], eax
mov eax, dword [ebp - 0x8c]
mov dword [ebp + 0x10], eax
mov eax, dword [ebp - 0x50]
mov dword [ebp + 0xc], eax
mov eax, dword [ebp - 0x94]
mov dword [ebp + 8], eax
lea esp, [ebp - 0xc]
pop ebx
pop esi
pop edi
pop ebp
jmp 0x404988
mov dword [esp + 0xc], str.Product_code_treatment_not_implemented_yet_n
mov dword [esp + 8], str.WinMain
mov dword [esp + 4], 0x406000
mov dword [esp], 0
call fcn.00401840
mov eax, dword [ebp - 0x68]
mov dword [ebp - 0x4c], eax
jmp 0x402f86
mov dword [ebp - 0x58], 0
jmp 0x402c87
mov ebx, dword [esi]
test ebx, ebx
je 0x403634
mov eax, ebx
shr eax, 0x10
je 0x4039fc
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 0x4033c0
mov eax, ebx
call fcn.004015e0
mov dword [esp + 0x14], eax
mov dword [esp + 0x10], edi
mov dword [esp + 0xc], str.argvW__d____s_n
mov dword [esp + 8], str.WinMain
mov dword [esp + 4], 0x406000
mov dword [esp], 3
call fcn.00401840
jmp 0x403288
mov eax, str._null_
jmp 0x402e8f
mov eax, dword [ebp - 0x64]
lea ecx, [ebp - 0x1c]
mov edx, str.DllUnregisterServer
mov dword [ebp - 0x1c], 0
call fcn.00402720
call eax
test eax, eax
mov eax, dword [ebp - 0x64]
js 0x4035d5
test eax, eax
je 0x403c26
shr eax, 0x10
je 0x403b8b
mov esi, dword [ebp - 0x64]
mov dword [esp + 4], 0xffffffff
mov dword [esp], esi
call dword [sym.imp.kernel32.dll_IsBadStringPtrW]
mov edx, eax
sub esp, 8
mov eax, str._invalid_
test edx, edx
jne 0x403459
mov eax, esi
call fcn.004015e0
mov dword [esp + 4], eax
mov dword [esp], str.Successfully_unregistered_dll__s_n
call fcn.00401820
mov eax, dword [ebp - 0x1c]
test eax, eax
je 0x40347c
mov dword [esp], eax
call dword [sym.imp.kernel32.dll_FreeLibrary]
sub esp, 4
mov eax, dword [ebp - 0x70]
mov dword [ebp - 0x4c], eax
jmp 0x402f86
mov eax, dword [ebp - 0x28]
mov dword [ebp - 0x3c], 3
mov dword [ebp - 0x38], eax
jmp 0x402907
mov eax, dword [ebp - 0x38]
mov ecx, dword [eax]
cmp word [ecx], 0
je 0x403d45
mov ebx, ecx
add ebx, 2
cmp word [ebx], 0
jne 0x4034aa
sub ebx, ecx
lea eax, [ebx + 2]
mov dword [ebp - 0x38], eax
mov eax, dword [ebp - 0x38]
mov dword [ebp - 0x44], edx
mov dword [ebp - 0x40], ecx
mov dword [esp], eax
call dword [sym.imp.ucrtbase.dll_malloc]
mov ecx, dword [ebp - 0x40]
mov edx, dword [ebp - 0x44]
test eax, eax
mov edi, eax
je 0x4028e8
mov dword [esp + 8], ebx
mov dword [esp + 4], ecx
mov dword [esp], eax
mov dword [ebp - 0x40], edx
call sub.ucrtbase.dll_memcpy
mov eax, 0x20
mov edx, dword [ebp - 0x40]
mov word [edi + ebx], ax
lea eax, [ebp - 0x20]
mov dword [esp + 0x14], eax
mov eax, dword [ebp - 0x38]
mov dword [esp + 8], 0
add eax, edi
mov dword [esp + 4], esi
mov dword [esp + 0x10], eax
lea eax, [ebp - 0x1c]
mov dword [esp + 0xc], eax
mov eax, dword [ebp - 0x3c]
mov dword [esp], edx
call eax
sub esp, 0x18
test eax, eax
je 0x4032a1
mov dword [esp], edi
call dword [sym.imp.ucrtbase.dll_free]
mov eax, dword [ebp - 0x24]
mov dword [esp], eax
call dword [sym.imp.advapi32.dll_RegCloseKey]
sub esp, 4
jmp 0x403092
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 0x403bfd
mov dword [esp + 8], 0x10000
mov dword [esp + 4], 0x4081d2
mov dword [esp], eax
call dword [sym.imp.advapi32.dll_OpenServiceW]
sub esp, 0xc
mov esi, eax
test eax, eax
je 0x403bd1
mov dword [esp], eax
call dword [sym.imp.advapi32.dll_DeleteService]
mov dword [ebp - 0x4c], 0
sub esp, 4
test eax, eax
je 0x403c3a
mov dword [esp], esi
mov esi, dword [sym.imp.advapi32.dll_CloseServiceHandle]
call esi
sub esp, 4
mov dword [esp], ebx
call esi
sub esp, 4
jmp 0x402f86
test eax, eax
je 0x403d3b
shr eax, 0x10
je 0x403c51
mov esi, dword [ebp - 0x64]
mov dword [esp + 4], 0xffffffff
mov dword [esp], esi
call dword [sym.imp.kernel32.dll_IsBadStringPtrW]
mov edx, eax
sub esp, 8
mov eax, str._invalid_
test edx, edx
jne 0x40360f
mov eax, esi
call fcn.004015e0
mov dword [esp + 4], eax
mov dword [esp], str.Failed_to_unregister_dll__s_n
call fcn.00402500
mov eax, dword [ebp - 0x7c]
mov dword [ebp - 0x70], eax
jmp 0x40347c
mov eax, str._null_
jmp 0x403104
mov eax, str._null_
jmp 0x4033c0
mov esi, dword [ebp - 0x50]
lea eax, [ebp - 0x1c]
mov dword [esp + 4], eax
mov dword [esp], esi
call dword [sym.imp.ole32.dll_CLSIDFromString]
sub esp, 8
test eax, eax
jne 0x402ee5
mov eax, dword [ebp - 0x58]
mov dword [ebp + 8], esi
mov dword [ebp + 0x10], 5
mov dword [ebp + 0x14], eax
mov dword [ebp + 0xc], 0
lea esp, [ebp - 0xc]
pop ebx
pop esi
pop edi
pop ebp
jmp 0x404990
mov dword [esp + 0xc], str.Administrative_installs_are_not_currently_supported_n
mov dword [esp + 8], str.WinMain
mov dword [esp + 4], 0x406000
mov dword [esp], 0
call fcn.00401840
mov dword [ebp - 0x60], 1
mov dword [ebp - 0x8c], 1
mov dword [ebp - 0x54], 1
jmp 0x402a3c
mov ebx, dword [esi]
test ebx, ebx
je 0x403c30
mov eax, ebx
shr eax, 0x10
je 0x403afb
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 0x4036fb
mov eax, ebx
call fcn.004015e0
mov dword [esp + 0x14], eax
mov dword [esp + 0x10], edi
mov dword [esp + 0xc], str.argvW__d____s_n
mov dword [esp + 8], str.WinMain
mov dword [esp + 4], 0x406000
mov dword [esp], 3
call fcn.00401840
jmp 0x40302b
call fcn.004025b0
mov dword [ebp - 0x4c], eax
jmp 0x402f86
mov eax, dword [ebx]
movzx edx, word [eax]
and edx, 0xfffffffd
cmp dx, 0x2d
jne 0x4029d8
add eax, 2
mov edx, 0x40836d
call fcn.00401490
test eax, eax
mov eax, dword [ebx]
je 0x403846
cmp word [eax], 0
je 0x403815
mov edx, eax
add edx, 2
cmp word [edx], 0
jne 0x40376e
sub edx, eax
mov ecx, edx
sar ecx, 1
mov dword [ebp - 0x44], ecx
cmp edx, 4
jle 0x403aea
mov dword [ebp - 0x50], edi
mov ecx, 2
mov edi, dword [ebp - 0x74]
mov dword [ebp - 0x68], esi
mov esi, ebx
mov ebx, ecx
movzx edx, word [eax + ebx*2]
lea eax, [edx - 0x41]
cmp ax, 0x35
ja case.0x4037ab.1
movzx eax, ax
jmp dword [eax*4 + 0x40864c]
mov dword [esp + 4], edx
mov dword [esp], str.Unknown_option___c__in_Repair_mode_n
call fcn.00402500
add ebx, 1
cmp ebx, dword [ebp - 0x44]
jge 0x40380c
mov eax, dword [esi]
jmp 0x40379b
or edi, 0x400
jmp 0x4037c2
or edi, 0x200
jmp 0x4037c2
or edi, 2
jmp 0x4037c2
or edi, 4
jmp 0x4037c2
or edi, 0x80
jmp 0x4037c2
or edi, 8
jmp 0x4037c2
or edi, 0x10
jmp 0x4037c2
or edi, 0x20
jmp 0x4037c2
or edi, 0x40
jmp 0x4037c2
or edi, 0x100
jmp 0x4037c2
mov dword [ebp - 0x74], edi
mov esi, dword [ebp - 0x68]
mov edi, dword [ebp - 0x50]
add edi, 1
cmp edi, dword [ebp - 0x3c]
jge 0x40282a
mov eax, dword [ebp - 0x38]
lea esi, [eax + esi + 4]
test byte [section..data], 8
jne 0x403b1f
mov eax, dword [esi]
mov dword [ebp - 0x68], 1
mov dword [ebp - 0x50], eax
jmp 0x402a3c
movzx edx, word [eax]
and edx, 0xfffffffd
cmp dx, 0x2d
jne 0x4029d8
add eax, 2
mov edx, 0x408394
call fcn.00401490
test eax, eax
je 0x403a14
mov eax, dword [ebx]
movzx edx, word [eax]
and edx, 0xfffffffd
cmp dx, 0x2d
jne 0x4038bd
add eax, 2
mov edx, 0x408394
call fcn.00401490
test eax, eax
je 0x4038bd
mov eax, dword [ebx]
add eax, 4
mov dword [ebp - 0x50], eax
mov eax, dword [ebp - 0x50]
cmp word [eax], 0
je 0x4038c4
test byte [section..data], 8
jne 0x4038ef
mov edx, str.REMOVEALL
lea eax, [ebp - 0x34]
call fcn.00401bf0
mov dword [ebp - 0x54], 1
jmp 0x402a3c
mov ecx, dword [ebp - 0x50]
test ecx, ecx
jne 0x403892
add edi, 1
cmp edi, dword [ebp - 0x3c]
jge 0x40282a
mov eax, dword [ebp - 0x38]
mov eax, dword [eax + esi + 4]
mov dword [ebp - 0x50], eax
test byte [section..data], 8
je 0x4038a4
mov edx, dword [ebp - 0x50]
mov eax, str._null_
test edx, edx
je 0x403924
mov eax, dword [ebp - 0x50]
shr eax, 0x10
je 0x403c6a
mov esi, dword [ebp - 0x50]
mov dword [esp + 4], 0xffffffff
mov dword [esp], esi
call dword [sym.imp.kernel32.dll_IsBadStringPtrW]
mov edx, eax
sub esp, 8
mov eax, str._invalid_
test edx, edx
jne 0x403924
mov eax, esi
call fcn.004015e0
mov dword [esp + 0x10], eax
mov dword [esp + 0xc], str.PackageName___s_n
mov dword [esp + 8], str.WinMain
mov dword [esp + 4], 0x406000
mov dword [esp], 3
call fcn.00401840
jmp 0x4038a4
mov dword [esp], 2
call dword [sym.imp.ucrtbase.dll_malloc]
mov dword [ebp - 0x3c], eax
mov edx, eax
jmp 0x40322a
movzx eax, word [ebp - 0x64]
mov dword [esp], str._04x
mov dword [esp + 4], eax
call fcn.00401c90
jmp 0x403104
mov eax, dword [ebp - 0x50]
call fcn.00401ad0
mov ebx, eax
test eax, eax
je 0x403b13
mov eax, dword [ebp - 0x74]
mov dword [esp], ebx
mov dword [esp + 4], eax
call sub.msi.dll_MsiReinstallProductW
jmp 0x402f27
test eax, eax
je 0x403bc7
shr eax, 0x10
je 0x403bae
mov esi, dword [ebp - 0x64]
mov dword [esp + 4], 0xffffffff
mov dword [esp], esi
call dword [sym.imp.kernel32.dll_IsBadStringPtrW]
mov edx, eax
sub esp, 8
mov eax, str._invalid_
test edx, edx
jne 0x4039e1
mov eax, esi
call fcn.004015e0
mov dword [esp + 4], eax
mov dword [esp], str.Failed_to_register_dll__s_n
call fcn.00402500
mov eax, dword [ebp - 0x70]
mov dword [ebp - 0x4c], eax
jmp 0x402f86
movzx ebx, bx
mov dword [esp], str._04x
mov dword [esp + 4], ebx
call fcn.00401c90
jmp 0x4033c0
mov eax, dword [ebx]
movzx edx, word [eax]
and edx, 0xfffffffd
cmp dx, 0x2d
jne 0x4029d8
add eax, 2
mov edx, str.uninstall
call fcn.00401360
test eax, eax
jne 0x40386b
mov eax, dword [ebx]
movzx edx, word [eax]
and edx, 0xfffffffd
cmp dx, 0x2d
jne 0x4029d8
add eax, 2
mov edx, 0x4083c8
call fcn.00401490
test eax, eax
je 0x403cff
mov edx, dword [ebx]
cmp word [edx], 0
je 0x403cd2
mov eax, edx
add eax, 2
cmp word [eax], 0
jne 0x403a70
sub eax, edx
mov ecx, eax
sar ecx, 1
mov dword [ebp - 0x44], ecx
cmp eax, 4
jle 0x403cd2
mov eax, 2
mov dword [ebp - 0x50], edi
mov edi, ebx
mov ebx, dword [ebp - 0x78]
mov dword [ebp - 0x6c], esi
mov esi, eax
jmp 0x403ac2
cmp dx, 0x4d
je 0x403cc2
cmp dx, 0x55
jne 0x403ad8
mov ebx, 1
add esi, 1
cmp esi, dword [ebp - 0x44]
jge 0x403cc9
mov edx, dword [edi]
movzx edx, word [edx + esi*2]
cmp dx, 0x6d
je 0x403cc2
jbe 0x403a9f
cmp dx, 0x75
je 0x403aaf
mov dword [esp + 4], edx
mov dword [esp], str.Unknown_option___c__in_Advertise_mode_n
call fcn.00402500
jmp 0x403ab4
mov eax, 0x2aa
cmovne eax, dword [ebp - 0x74]
mov dword [ebp - 0x74], eax
jmp 0x403815
movzx ebx, bx
mov dword [esp], str._04x
mov dword [esp + 4], ebx
call fcn.00401c90
jmp 0x4036fb
mov dword [ebp - 0x4c], 2
jmp 0x402f86
mov ebx, dword [esi]
test ebx, ebx
je 0x403cb8
mov eax, ebx
shr eax, 0x10
je 0x403ca0
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 0x403b5a
mov eax, ebx
call fcn.004015e0
mov dword [esp + 0x14], eax
mov dword [esp + 0x10], edi
mov dword [esp + 0xc], str.argvW__d____s_n
mov dword [esp + 8], str.WinMain
mov dword [esp + 4], 0x406000
mov dword [esp], 3
call fcn.00401840
jmp 0x403835
movzx eax, word [ebp - 0x64]
mov dword [esp], str._04x
mov dword [esp + 4], eax
call fcn.00401c90
jmp 0x403459
call fcn.004048c0
jmp 0x402f83
movzx eax, word [ebp - 0x64]
mov dword [esp], str._04x
mov dword [esp + 4], eax
call fcn.00401c90
jmp 0x4039e1
mov eax, str._null_
jmp 0x4039e1
mov eax, dword fs:[0x18]
cmp dword [eax + 0x34], 0x424
je 0x403c14
mov dword [esp], str.Failed_to_open_MSI_service_n
call fcn.00402500
mov eax, dword [ebp - 0x48]
mov esi, dword [sym.imp.advapi32.dll_CloseServiceHandle]
mov dword [ebp - 0x4c], eax
jmp 0x4035c8
mov dword [esp], str.Failed_to_open_service_control_manager_n
call fcn.00402500
mov eax, dword [ebp - 0x48]
mov dword [ebp - 0x4c], eax
jmp 0x402f86
mov dword [ebp - 0x4c], 0
mov esi, dword [sym.imp.advapi32.dll_CloseServiceHandle]
jmp 0x4035c8
mov eax, str._null_
jmp 0x403459
mov eax, str._null_
jmp 0x4036fb
mov dword [esp], str.Failed_to_delete_MSI_service_n
call fcn.00402500
mov eax, dword [ebp - 0x48]
mov dword [ebp - 0x4c], eax
jmp 0x4035ba
movzx eax, word [ebp - 0x64]
mov dword [esp], str._04x
mov dword [esp + 4], eax
call fcn.00401c90
jmp 0x40360f
movzx eax, word [ebp - 0x50]
mov dword [esp], str._04x
mov dword [esp + 4], eax
call fcn.00401c90
jmp 0x403924
mov eax, dword [ebp - 0x28]
cmp dword [ebp - 0x3c], 1
mov dword [ebp - 0x38], eax
jg 0x402907
jmp 0x402813
movzx ebx, bx
mov dword [esp], str._04x
mov dword [esp + 4], ebx
call fcn.00401c90
jmp 0x403b5a
mov eax, str._null_
jmp 0x403b5a
xor ebx, ebx
jmp 0x403ab4
mov edi, dword [ebp - 0x50]
mov esi, dword [ebp - 0x6c]
mov dword [ebp - 0x78], ebx
add edi, 1
cmp edi, dword [ebp - 0x3c]
jge 0x40282a
mov eax, dword [ebp - 0x38]
lea ebx, [eax + esi + 4]
test byte [section..data], 8
jne 0x403d06
mov eax, dword [ebx]
mov dword [ebp - 0x6c], 1
mov dword [ebp - 0x50], eax
jmp 0x402a3c
mov eax, dword [ebx]
jmp 0x4029d8
mov eax, dword [ebx]
call fcn.00401cf0
mov dword [esp + 0x10], edi
mov dword [esp + 0x14], eax
mov dword [esp + 0xc], str.argvW__d____s_n
mov dword [esp + 8], str.WinMain
mov dword [esp + 4], 0x406000
mov dword [esp], 3
call fcn.00401840
jmp 0x403cee
mov eax, str._null_
jmp 0x40360f
mov dword [ebp - 0x38], 2
xor ebx, ebx
jmp 0x4034bb
mov eax, dword [ebx]
mov edx, 0x4083f5
call fcn.00401360
test eax, eax
je 0x403e0b
add edi, 1
cmp edi, dword [ebp - 0x3c]
jge 0x40282a
mov eax, dword [ebp - 0x38]
lea ebx, [eax + esi + 4]
test byte [section..data], 8
jne 0x403dd3
mov eax, dword [ebx]
mov dword [ebp - 0x78], 0
mov dword [ebp - 0x6c], 1
mov dword [ebp - 0x50], eax
jmp 0x402a3c
mov eax, dword [ebx]
call fcn.00401cf0
mov dword [esp + 0x10], edi
mov dword [esp + 0x14], eax
mov dword [esp + 0xc], str.argvW__d____s_n
mov dword [esp + 8], str.WinMain
mov dword [esp + 4], 0x406000
mov dword [esp], 3
call fcn.00401840
jmp 0x402a0a
mov eax, dword [ebx]
call fcn.00401cf0
mov dword [esp + 0x10], edi
mov dword [esp + 0x14], eax
mov dword [esp + 0xc], str.argvW__d____s_n
mov dword [esp + 8], str.WinMain
mov dword [esp + 4], 0x406000
mov dword [esp], 3
call fcn.00401840
jmp 0x403d83
mov eax, dword [ebx]
mov edx, 0x4083f7
call fcn.004015c0
test eax, eax
je 0x403e7b
add edi, 1
cmp edi, dword [ebp - 0x3c]
jge 0x40282a
mov eax, dword [ebp - 0x38]
lea ebx, [eax + esi + 4]
test byte [section..data], 8
jne 0x403e46
mov edx, dword [ebx]
lea eax, [ebp - 0x30]
call fcn.00401bf0
jmp 0x402a3c
mov eax, dword [ebx]
call fcn.00401cf0
mov dword [esp + 0x10], edi
mov dword [esp + 0x14], eax
mov dword [esp + 0xc], str.argvW__d____s_n
mov dword [esp + 8], str.WinMain
mov dword [esp + 4], 0x406000
mov dword [esp], 3
call fcn.00401840
jmp 0x403e37
mov eax, dword [ebx]
mov edx, 0x4083f9
call fcn.004015c0
test eax, eax
jne 0x403ef5
mov eax, dword [ebx]
movzx edx, word [eax]
and edx, 0xfffffffd
cmp dx, 0x2d
jne 0x403f3d
add eax, 2
mov edx, 0x4083fb
call fcn.00401490
test eax, eax
je 0x403f3d
mov ecx, dword [ebx]
mov eax, ecx
jmp 0x403ebb
add eax, 2
cmp word [eax], 0
jne 0x403eb8
sub eax, ecx
mov dword [ebp - 0x44], edi
mov edx, 2
sar eax, 1
mov ebx, eax
mov eax, dword [ebp - 0x5c]
cmp edx, ebx
jge 0x40403d
movzx edi, word [ecx + edx*2]
sub edi, 0x21
cmp di, 0x56
ja case.0x403eee.1
movzx edi, di
jmp dword [edi*4 + 0x408724]
add edi, 1
cmp edi, dword [ebp - 0x3c]
jge 0x40282a
mov eax, dword [ebp - 0x38]
lea ebx, [eax + esi + 4]
test byte [section..data], 8
jne 0x4040be
mov ebx, dword [ebx]
xor eax, eax
jmp 0x403f25
imul eax, eax, 0xa
add ebx, 2
lea eax, [eax + edx - 0x30]
movzx edx, word [ebx]
lea ecx, [edx - 0x30]
cmp cx, 9
jbe 0x403f1b
mov word [ebp - 0x86], ax
jmp 0x402a3c
mov eax, dword [ebx]
mov edx, 0x408425
call fcn.004015c0
test eax, eax
je 0x403fbd
add edi, 1
cmp edi, dword [ebp - 0x3c]
jge 0x40282a
mov eax, dword [ebp - 0x38]
lea ebx, [eax + esi + 4]
test byte [section..data], 8
jne 0x403f88
mov eax, dword [ebx]
mov dword [ebp - 0x4c], 1
mov dword [ebp - 0x94], eax
jmp 0x402a3c
or eax, 4
add edx, 1
jmp 0x403ed2
mov eax, dword [ebx]
call fcn.00401cf0
mov dword [esp + 0x10], edi
mov dword [esp + 0x14], eax
mov dword [esp + 0xc], str.argvW__d____s_n
mov dword [esp + 8], str.WinMain
mov dword [esp + 4], 0x406000
mov dword [esp], 3
call fcn.00401840
jmp 0x403f69
mov eax, dword [ebx]
mov edx, str.update
call fcn.004015c0
test eax, eax
jne 0x403f4d
mov eax, dword [ebx]
movzx edx, word [eax]
and edx, 0xfffffffd
cmp dx, 0x2d
jne 0x40412e
add eax, 2
mov edx, 0x40842e
call fcn.00401490
test eax, eax
je 0x40412e
mov edx, dword [ebx]
mov eax, edx
jmp 0x403ffd
add eax, 2
cmp word [eax], 0
jne 0x403ffa
sub eax, edx
cmp eax, 4
je 0x40401f
lea eax, [edx + 4]
mov edx, 0x408430
call fcn.00401360
test eax, eax
je 0x404157
mov dword [0x40a004], 1
mov dword [ebp - 0x58], 2
jmp 0x402a3c
or ah, 0x10
jmp case.0x403eee.1
mov edi, dword [ebp - 0x44]
mov dword [ebp - 0x5c], eax
add edi, 1
cmp edi, dword [ebp - 0x3c]
jge 0x40282a
mov eax, dword [ebp - 0x38]
lea ebx, [eax + esi + 4]
test byte [section..data], 8
jne 0x4040f6
mov eax, dword [ebp - 0x84]
mov ebx, dword [ebx]
mov dword [esp + 8], eax
mov eax, dword [ebp - 0x5c]
mov dword [esp + 4], ebx
mov dword [esp], eax
call sub.msi.dll_MsiEnableLogW
sub esp, 0xc
test eax, eax
je 0x402a3c
mov eax, ebx
call fcn.00401cf0
mov esi, dword [ebp - 0x84]
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 - 0x5c]
mov dword [esp + 8], esi
call fcn.00402500
mov dword [esp], 1
call dword [sym.imp.kernel32.dll_ExitProcess]
mov eax, dword [ebx]
call fcn.00401cf0
mov dword [esp + 0x10], edi
mov dword [esp + 0x14], eax
mov dword [esp + 0xc], str.argvW__d____s_n
mov dword [esp + 8], str.WinMain
mov dword [esp + 4], 0x406000
mov dword [esp], 3
call fcn.00401840
jmp 0x403f15
mov eax, dword [ebx]
call fcn.00401cf0
mov dword [esp + 0x10], edi
mov dword [esp + 0x14], eax
mov dword [esp + 0xc], str.argvW__d____s_n
mov dword [esp + 8], str.WinMain
mov dword [esp + 4], 0x406000
mov dword [esp], 3
call fcn.00401840
jmp 0x404063
mov eax, dword [ebx]
mov edx, str.passive
call fcn.004015c0
test eax, eax
je 0x404191
mov edx, str.REBOOTPROMPT_S_
lea eax, [ebp - 0x34]
call fcn.00401bf0
mov dword [ebp - 0x58], 0x63
jmp 0x402a3c
mov eax, dword [ebx]
mov edx, str.uiet
add eax, 4
call fcn.00401360
test eax, eax
jne 0x40401f
mov eax, dword [ebx]
mov edx, 0x408437
add eax, 4
call fcn.00401360
test eax, eax
je 0x4042e6
mov dword [ebp - 0x58], 4
jmp 0x402a3c
mov eax, dword [ebx]
mov edx, 0x4084aa
call fcn.004015c0
test eax, eax
je 0x404201
add edi, 1
cmp edi, dword [ebp - 0x3c]
jge 0x40282a
mov eax, dword [ebp - 0x38]
lea ebx, [eax + esi + 4]
test byte [section..data], 8
je 0x4041f0
mov eax, dword [ebx]
call fcn.00401cf0
mov dword [esp + 0x10], edi
mov dword [esp + 0x14], eax
mov dword [esp + 0xc], str.argvW__d____s_n
mov dword [esp + 8], str.WinMain
mov dword [esp + 4], 0x406000
mov dword [esp], 3
call fcn.00401840
mov eax, dword [ebx]
mov dword [ebp - 0x70], 1
mov dword [ebp - 0x64], eax
jmp 0x402a3c
mov eax, dword [ebx]
mov edx, 0x4084ac
call fcn.004015c0
test eax, eax
je 0x404271
add edi, 1
cmp edi, dword [ebp - 0x3c]
jge 0x40282a
mov eax, dword [ebp - 0x38]
lea ebx, [eax + esi + 4]
test byte [section..data], 8
je 0x404260
mov eax, dword [ebx]
call fcn.00401cf0
mov dword [esp + 0x10], edi
mov dword [esp + 0x14], eax
mov dword [esp + 0xc], str.argvW__d____s_n
mov dword [esp + 8], str.WinMain
mov dword [esp + 4], 0x406000
mov dword [esp], 3
call fcn.00401840
mov eax, dword [ebx]
mov dword [ebp - 0x7c], 1
mov dword [ebp - 0x64], eax
jmp 0x402a3c
mov eax, dword [ebx]
mov edx, str.help
call fcn.004015c0
test eax, eax
jne 0x404352
mov eax, dword [ebx]
mov edx, 0x4084b3
call fcn.004015c0
test eax, eax
jne 0x404352
mov eax, dword [ebx]
mov edx, 0x4083f5
call fcn.004015c0
test eax, eax
je 0x404305
mov dword [ebp - 0x80], 1
test byte [section..data], 1
je 0x402a3c
mov dword [esp + 0xc], str.Unknown_parameter__m_n
mov dword [esp + 8], str.WinMain
mov dword [esp + 4], 0x406000
mov dword [esp], 0
call fcn.00401840
jmp 0x402a3c
mov eax, dword [ebx]
mov edx, 0x40836d
add eax, 4
call fcn.00401360
test eax, eax
je 0x404359
mov dword [ebp - 0x58], 0x85
jmp 0x402a3c
mov eax, dword [ebx]
mov edx, 0x4084cb
call fcn.004015c0
test eax, eax
je 0x404378
mov dword [ebp - 0x80], 1
test byte [section..data], 1
je 0x402a3c
mov dword [esp + 0xc], str.Unknown_parameter__D_n
mov dword [esp + 8], str.WinMain
mov dword [esp + 4], 0x406000
mov dword [esp], 0
call fcn.00401840
jmp 0x402a3c
xor eax, eax
call fcn.00401890
mov eax, dword [ebx]
mov edx, 0x408439
add eax, 4
call fcn.00401360
test eax, eax
je 0x404397
mov dword [ebp - 0x58], 0x82
jmp 0x402a3c
mov eax, dword [ebx]
mov edx, 0x4084e3
call fcn.004015c0
test eax, eax
je 0x4043c9
mov dword [ebp - 0x90], 1
jmp 0x402a3c
mov eax, dword [ebx]
mov edx, 0x40843c
add eax, 4
call fcn.00401490
test eax, eax
mov eax, dword [ebx]
jne 0x4043d8
add eax, 4
call fcn.00401cf0
mov dword [esp], str.Unknown_option___s__for_UI_level_n
mov dword [esp + 4], eax
call fcn.00402500
jmp 0x402a3c
mov edx, dword [ebx]
lea eax, [ebp - 0x34]
call fcn.00401bf0
jmp 0x402a3c
lea ebx, [eax + 6]
mov esi, 3
cmp word [ebx], 0
je 0x404454
mov edx, 0x40843e
mov eax, ebx
call fcn.00401490
test eax, eax
je 0x4043fc
or esi, 0x80
mov edx, 0x408440
mov eax, ebx
call fcn.00401490
test eax, eax
je 0x40440f
or esi, 0x40
mov edx, 0x408442
mov eax, ebx
call fcn.00401490
test eax, eax
je 0x40444f
test byte [section..data], 1
je 0x40444c
mov dword [esp + 0xc], 0x408444
mov dword [esp + 8], str.WinMain
mov dword [esp + 4], 0x406000
mov dword [esp], 0
call fcn.00401840
or esi, 0x20
add ebx, 2
jmp 0x4043e0
mov dword [ebp - 0x58], esi
jmp 0x402a3c
or eax, 8
jmp case.0x403eee.1
or ah, 2
jmp case.0x403eee.1
or ah, 4
jmp case.0x403eee.1
or al, 0x80
jmp case.0x403eee.1
or ah, 1
jmp case.0x403eee.1
or dword [ebp - 0x84], 1
jmp case.0x403eee.1
mov eax, 0x7fdf
jmp case.0x403eee.1
or dword [ebp - 0x84], 2
jmp case.0x403eee.1
or eax, 1
jmp case.0x403eee.1
or eax, 0x10
jmp case.0x403eee.1
or eax, 2
jmp case.0x403eee.1
or ah, 8
jmp case.0x403eee.1
jmp dword [sym.imp.msi.dll_MsiAdvertiseProductW]
jmp dword [sym.imp.msi.dll_MsiApplyPatchW]
jmp dword [sym.imp.msi.dll_MsiConfigureProductExW]