Function at 0x4065cb
Capabilities:
Accept command line arguments
Copy file
Create directory
Get common file path
Get program files directory
Set registry value

Disassembly:
push 0x60
mov eax, 0x463bf0
call fcn.0043e9a8
mov esi, ecx
mov dword [ebp - 0x68], esi
mov ebx, 0x4872a4
xor edi, edi
push ebx
lea ecx, [ebp - 0x10]
mov dword [ebp - 0x24], edi
call fcn.00401c03
push 0x104
lea ecx, [ebp - 0x10]
mov dword [ebp - 4], edi
call fcn.00402209
push eax
push edi
push edi
push 0x2a
push edi
call dword [sym.imp.SHFOLDER.dll_SHGetFolderPathW]
test eax, eax
jge 0x406628
push 0x104
lea ecx, [ebp - 0x10]
call fcn.00402209
push eax
push edi
push edi
push 0x26
push edi
call dword [sym.imp.SHFOLDER.dll_SHGetFolderPathW]
push 0xffffffffffffffff
lea ecx, [ebp - 0x10]
call fcn.00401bd9
lea eax, [ebp - 0x10]
push 0x46bc6a
push eax
call fcn.00405ed0
pop ecx
pop ecx
test al, al
je 0x406656
push str.Cannot_find_destination_folder_
call fcn.004085ae
pop ecx
jmp 0x406e23
lea eax, [ebp - 0x10]
push str.SymSilent
push eax
call fcn.00417145
push dword [ebp - 0x10]
push str.Creating__s
call fcn.00408586
add esp, 0x10
push edi
push dword [ebp - 0x10]
call dword [sym.imp.KERNEL32.dll_CreateDirectoryW]
push dword [ebp - 0x10]
push dword [esi + 0x28]
push str.Copying__s_to__s
call fcn.00408586
add esp, 0xc
lea eax, [ebp - 0x10]
push eax
lea ecx, [ebp - 0x18]
call fcn.004021eb
push dword [esi + 0x28]
lea eax, [ebp - 0x18]
push eax
mov byte [ebp - 4], 1
call fcn.00417145
mov eax, dword [esi + 0x24]
pop ecx
pop ecx
push edi
push dword [ebp - 0x18]
push eax
call dword [sym.imp.KERNEL32.dll_CopyFileW]
mov ecx, dword [ebp + 8]
push str.rebootcount
call fcn.0041b8b2
test al, al
je 0x4066ff
mov ecx, dword [ebp + 8]
push str.rebootcount
call fcn.0041d286
push eax
call fcn.0043ecb1
pop ecx
push edi
push eax
mov ecx, esi
call fcn.004056a5
test al, al
jne 0x4066ff
push str.Cannot_set_reboot_count_
call fcn.004085ae
pop ecx
jmp 0x406e18
push 0x46d754
call fcn.00408586
lea ecx, [ebp - 0x28]
mov dword [esp], 0x46d750
call fcn.004042e3
push 0x46d74c
lea ecx, [ebp - 0x38]
mov byte [ebp - 4], 2
call fcn.004042e3
lea ecx, [ebp - 0x18]
push ecx
push eax
lea eax, [ebp - 0x1c]
push eax
mov byte [ebp - 4], 3
call fcn.004030b0
lea ecx, [ebp - 0x28]
push ecx
push eax
lea eax, [ebp - 0x14]
push eax
mov byte [ebp - 4], 4
call fcn.004030b0
add esp, 0x18
mov ecx, dword [ebp - 0x1c]
add ecx, 0xfffffff0
call fcn.004014ff
mov ecx, dword [ebp - 0x38]
add ecx, 0xfffffff0
call fcn.004014ff
mov ecx, dword [ebp - 0x28]
add ecx, 0xfffffff0
mov byte [ebp - 4], 8
call fcn.004014ff
mov esi, 0x46d748
push esi
lea ecx, [ebp - 0x30]
call fcn.004042e3
mov edi, 0x46c790
push edi
lea ecx, [ebp - 0x2c]
mov byte [ebp - 4], 9
call fcn.004042e3
push edi
lea ecx, [ebp - 0x48]
mov byte [ebp - 4], 0xa
call fcn.004042e3
push str._nospawn
push eax
lea eax, [ebp - 0x44]
push eax
mov byte [ebp - 4], 0xb
call fcn.00403107
lea ecx, [ebp - 0x2c]
push ecx
push eax
lea eax, [ebp - 0x40]
push eax
mov byte [ebp - 4], 0xc
call fcn.004030b0
push str.install
push eax
lea eax, [ebp - 0x3c]
push eax
mov byte [ebp - 4], 0xd
call fcn.00403107
mov byte [ebp - 4], 0xe
lea ecx, [ebp - 0x30]
push ecx
push eax
lea eax, [ebp - 0x20]
push eax
call fcn.004030b0
add esp, 0x30
mov ecx, dword [ebp - 0x3c]
add ecx, 0xfffffff0
call fcn.004014ff
mov ecx, dword [ebp - 0x40]
add ecx, 0xfffffff0
call fcn.004014ff
mov ecx, dword [ebp - 0x44]
add ecx, 0xfffffff0
call fcn.004014ff
mov ecx, dword [ebp - 0x48]
add ecx, 0xfffffff0
call fcn.004014ff
mov ecx, dword [ebp - 0x2c]
add ecx, 0xfffffff0
call fcn.004014ff
mov ecx, dword [ebp - 0x30]
add ecx, 0xfffffff0
mov byte [ebp - 4], 0x15
call fcn.004014ff
lea ecx, [ebp - 0x20]
call fcn.0040297a
push ebx
lea ecx, [ebp - 0x1c]
call fcn.00401c03
lea eax, [ebp - 0x34]
push eax
mov byte [ebp - 4], 0x16
call dword [sym.imp.KERNEL32.dll_GetCommandLineW]
push eax
call dword [sym.imp.SHELL32.dll_CommandLineToArgvW]
xor edi, edi
inc edi
cmp dword [ebp - 0x34], edi
mov dword [ebp - 0x2c], eax
mov dword [ebp - 0x28], edi
jle 0x406a57
push esi
lea ecx, [ebp - 0x30]
call fcn.004042e3
mov eax, dword [ebp - 0x2c]
mov ecx, dword [ebp - 0x28]
lea edi, [eax + ecx*4]
push dword [edi]
lea ecx, [ebp - 0x44]
mov byte [ebp - 4], 0x17
call fcn.004042a2
lea ecx, [ebp - 0x30]
push ecx
mov ecx, eax
mov byte [ebp - 4], 0x18
call fcn.0040297a
push eax
lea eax, [ebp - 0x48]
push eax
call fcn.004030b0
mov eax, dword [eax]
add esp, 0xc
push 0
push eax
lea ecx, [ebp - 0x20]
call fcn.004020e2
mov ecx, dword [ebp - 0x48]
cmp eax, 0xffffffff
sete bl
add ecx, 0xfffffff0
call fcn.004014ff
mov ecx, dword [ebp - 0x44]
add ecx, 0xfffffff0
call fcn.004014ff
mov ecx, dword [ebp - 0x30]
add ecx, 0xfffffff0
mov byte [ebp - 4], 0x16
call fcn.004014ff
test bl, bl
je 0x406928
push esi
lea ecx, [ebp - 0x3c]
call fcn.004042e3
push eax
push dword [edi]
lea eax, [ebp - 0x40]
push eax
mov byte [ebp - 4], 0x19
call fcn.0040316b
add esp, 0xc
push eax
lea ecx, [ebp - 0x14]
mov byte [ebp - 4], 0x1a
call fcn.004038af
mov ecx, dword [ebp - 0x40]
add ecx, 0xfffffff0
call fcn.004014ff
mov ecx, dword [ebp - 0x3c]
add ecx, 0xfffffff0
mov byte [ebp - 4], 0x16
call fcn.004014ff
push 0x46d744
lea ecx, [ebp - 0x50]
call fcn.004042e3
push str.rebootcount
push eax
lea eax, [ebp - 0x4c]
push eax
mov byte [ebp - 4], 0x1b
call fcn.00403107
add esp, 0xc
mov ebx, eax
push dword [edi]
lea ecx, [ebp - 0x38]
mov byte [ebp - 4], 0x1c
call fcn.004042a2
push dword [ebx]
mov ecx, eax
mov byte [ebp - 4], 0x1d
call fcn.00401808
mov ecx, dword [ebp - 0x38]
mov ebx, eax
neg ebx
sbb bl, bl
add ecx, 0xfffffff0
inc bl
call fcn.004014ff
mov ecx, dword [ebp - 0x4c]
add ecx, 0xfffffff0
call fcn.004014ff
mov ecx, dword [ebp - 0x50]
add ecx, 0xfffffff0
mov byte [ebp - 4], 0x16
call fcn.004014ff
test bl, bl
je 0x406a40
push esi
lea ecx, [ebp - 0x64]
call fcn.004042e3
mov ebx, eax
push esi
lea ecx, [ebp - 0x60]
mov byte [ebp - 4], 0x1e
call fcn.004042e3
push dword [edi]
mov byte [ebp - 4], 0x1f
push eax
lea eax, [ebp - 0x5c]
push eax
call fcn.00403107
push ebx
push eax
lea eax, [ebp - 0x58]
push eax
mov byte [ebp - 4], 0x20
call fcn.004030b0
add esp, 0x18
mov edi, eax
mov ecx, dword [ebp + 8]
push str.rebootcount
mov byte [ebp - 4], 0x21
call fcn.0041d286
push eax
lea eax, [ebp - 0x54]
push edi
push eax
call fcn.00403107
add esp, 0xc
push eax
lea ecx, [ebp - 0x1c]
mov byte [ebp - 4], 0x22
call fcn.00402be3
mov ecx, dword [ebp - 0x54]
add ecx, 0xfffffff0
call fcn.004014ff
mov ecx, dword [ebp - 0x58]
add ecx, 0xfffffff0
call fcn.004014ff
mov ecx, dword [ebp - 0x5c]
add ecx, 0xfffffff0
call fcn.004014ff
mov ecx, dword [ebp - 0x60]
add ecx, 0xfffffff0
call fcn.004014ff
mov ecx, dword [ebp - 0x64]
add ecx, 0xfffffff0
mov byte [ebp - 4], 0x16
call fcn.004014ff
inc dword [ebp - 0x28]
mov eax, dword [ebp - 0x28]
cmp eax, dword [ebp - 0x34]
jl 0x40686d
xor edi, edi
inc edi
mov ebx, 0x4872a4
push 0x46bf48
push dword [ebp - 0x1c]
lea ecx, [ebp - 0x14]
call fcn.00402782
mov ecx, dword [ebp - 0x68]
cmp byte [ecx + 8], 0
je 0x406b5a
and dword [ebp + 8], 0
lea eax, [ebp + 8]
push eax
call fcn.00405aa2
push dword [ebp + 8]
push str.Current_OEMRebootCount_is__d.
call fcn.00408586
cmp dword [ebp + 8], 0
pop ecx
pop ecx
jbe 0x406aeb
push dword [ebp + 8]
mov esi, str._lastcnt
push esi
push str.Setting___s__d_for_the_check_upon_the_next_reboot.
call fcn.00408586
add esp, 0xc
push ebx
lea ecx, [ebp - 0x30]
call fcn.00401c03
push dword [ebp + 8]
lea eax, [ebp - 0x30]
push esi
push 0x46d68c
push eax
mov byte [ebp - 4], 0x23
call fcn.00402ebb
mov esi, dword [ebp - 0x30]
add esp, 0x10
push dword [esi - 0xc]
lea ecx, [ebp - 0x14]
push esi
call fcn.00402cea
add esi, 0xfffffff0
mov ecx, esi
mov byte [ebp - 4], 0x16
call fcn.004014ff
and dword [ebp - 0x28], 0
lea eax, [ebp - 0x28]
push eax
call fcn.004059e7
push dword [ebp - 0x28]
push str.Current_ProtectionCount_is__d.
call fcn.00408586
add esp, 0xc
cmp dword [ebp - 0x28], 0
jbe 0x406b5a
mov esi, str._nocntwait
push esi
push str.Setting___s_
call fcn.00408586
pop ecx
pop ecx
push ebx
lea ecx, [ebp - 0x30]
call fcn.00401c03
push esi
lea eax, [ebp - 0x30]
push str.__s
push eax
mov byte [ebp - 4], 0x24
call fcn.00402ebb
mov esi, dword [ebp - 0x30]
add esp, 0xc
push dword [esi - 0xc]
lea ecx, [ebp - 0x14]
push esi
call fcn.00402cea
lea ecx, [esi - 0x10]
mov byte [ebp - 4], 0x16
call fcn.004014ff
push dword [ebp - 0x2c]
call dword [sym.imp.KERNEL32.dll_LocalFree]
push 0x20
lea ecx, [ebp - 0x14]
call fcn.004029a2
push dword [ebp - 0x14]
push str.New_command_line_is__s
call fcn.00408586
pop ecx
pop ecx
mov esi, str.SymSilent
push esi
lea ecx, [ebp + 8]
call fcn.004042a2
lea eax, [ebp - 0x14]
push eax
lea eax, [ebp + 8]
push eax
mov byte [ebp - 4], 0x25
call fcn.00409581
pop ecx
mov bl, al
pop ecx
mov ecx, dword [ebp + 8]
neg bl
sbb bl, bl
add ecx, 0xfffffff0
inc bl
mov byte [ebp - 4], 0x16
call fcn.004014ff
test bl, bl
je 0x406bc8
push str.Cannot_create_RunOnce_item_
call fcn.004085ae
pop ecx
jmp 0x406df7
push str.Adding_Uninstall_key_...
call fcn.00408586
and dword [ebp - 0x6c], 0
and dword [ebp - 0x68], 0
pop ecx
mov ebx, 0x2001f
push ebx
push str.SOFTWAREMicrosoftWindowsCurrentVersionUninstall
push reloc.OLEAUT32.dll_SysReAllocString
lea ecx, [ebp - 0x6c]
mov byte [ebp - 4], 0x26
call fcn.004013c6
test eax, eax
jne 0x406de4
push eax
push eax
push ebx
push eax
push eax
push esi
push dword [ebp - 0x6c]
lea ecx, [ebp - 0x6c]
call fcn.0040136c
test eax, eax
jne 0x406ddd
push edi
push dword [ebp - 0x18]
lea ecx, [ebp - 0x6c]
push str.DisplayIcon
call fcn.004014c8
test eax, eax
jne 0x406d32
push edi
push esi
push str.DisplayName
lea ecx, [ebp - 0x6c]
call fcn.004014c8
test eax, eax
jne 0x406d32
push edi
push dword [ebp - 0x10]
lea ecx, [ebp - 0x6c]
push str.InstallLocation
call fcn.004014c8
test eax, eax
jne 0x406d32
push edi
push str.Symantec_Corporation
push str.Publisher
lea ecx, [ebp - 0x6c]
call fcn.004014c8
test eax, eax
jne 0x406d32
push str.__uninstall
lea ecx, [ebp - 0x30]
call fcn.004042e3
lea eax, [ebp - 0x18]
push eax
lea eax, [ebp - 0x5c]
push 0x22
push eax
mov byte [ebp - 4], 0x27
mov dword [ebp - 0x24], edi
call fcn.0040322b
push 3
pop ebx
push 0x22
push eax
lea eax, [ebp - 0x60]
push eax
mov dword [ebp - 4], 0x28
mov dword [ebp - 0x24], ebx
call fcn.004031cf
lea ecx, [ebp - 0x30]
push ecx
push eax
lea eax, [ebp - 0x64]
push eax
mov dword [ebp - 4], 0x29
mov dword [ebp - 0x24], 7
call fcn.004030b0
mov eax, dword [eax]
add esp, 0x24
push edi
push eax
push str.UninstallString
lea ecx, [ebp - 0x6c]
mov dword [ebp - 0x24], 0xf
call fcn.004014c8
test eax, eax
jne 0x406d32
push 4
pop esi
push esi
lea eax, [ebp + 8]
push eax
push esi
push 0
push str.VersionMajor
push dword [ebp - 0x6c]
mov dword [ebp + 8], ebx
mov ebx, dword [sym.imp.ADVAPI32.dll_RegSetValueExW]
call ebx
test eax, eax
jne 0x406d32
push esi
lea eax, [ebp + 8]
push eax
push esi
push 0
push str.VersionMinor
push dword [ebp - 0x6c]
mov dword [ebp + 8], edi
call ebx
mov byte [ebp + 0xb], 0
test eax, eax
je 0x406d36
mov byte [ebp + 0xb], 1
mov ebx, dword [ebp - 0x24]
test bl, 8
je 0x406d4c
mov ecx, dword [ebp - 0x64]
add ecx, 0xfffffff0
and ebx, 0xfffffff7
call fcn.004014ff
test bl, 4
je 0x406d5f
mov ecx, dword [ebp - 0x60]
add ecx, 0xfffffff0
and ebx, 0xfffffffb
call fcn.004014ff
test bl, 2
je 0x406d72
mov ecx, dword [ebp - 0x5c]
add ecx, 0xfffffff0
and ebx, 0xfffffffd
call fcn.004014ff
test bl, 1
je 0x406d82
mov ecx, dword [ebp - 0x30]
add ecx, 0xfffffff0
call fcn.004014ff
cmp byte [ebp + 0xb], 0
je 0x406d8f
push str.Failed_to_write_values_in_UninstallSymSilent_
jmp 0x406de9
push str.Installation_succeeded_
call fcn.00408586
pop ecx
lea ecx, [ebp - 0x6c]
call fcn.00401351
mov ecx, dword [ebp - 0x1c]
add ecx, 0xfffffff0
call fcn.004014ff
mov ecx, dword [ebp - 0x20]
add ecx, 0xfffffff0
call fcn.004014ff
mov ecx, dword [ebp - 0x14]
add ecx, 0xfffffff0
call fcn.004014ff
mov ecx, dword [ebp - 0x18]
add ecx, 0xfffffff0
call fcn.004014ff
mov ecx, dword [ebp - 0x10]
add ecx, 0xfffffff0
call fcn.004014ff
mov al, 1
jmp 0x406e30
push str.Failed_to_create_key_SymSilent_in_Uninstall_
jmp 0x406de9
push str.Failed_to_open_Uninstall_key_
call fcn.004085ae
pop ecx
lea ecx, [ebp - 0x6c]
call fcn.00401351
mov ecx, dword [ebp - 0x1c]
add ecx, 0xfffffff0
call fcn.004014ff
mov ecx, dword [ebp - 0x20]
add ecx, 0xfffffff0
call fcn.004014ff
mov ecx, dword [ebp - 0x14]
add ecx, 0xfffffff0
call fcn.004014ff
mov ecx, dword [ebp - 0x18]
add ecx, 0xfffffff0
call fcn.004014ff
mov ecx, dword [ebp - 0x10]
add ecx, 0xfffffff0
call fcn.004014ff
xor al, al
call fcn.0043ea80
ret 4