Function at 0x478ce0
Capabilities:
Check if file exists
Check os version
Copy file
Create directory
Create process on windows
Delete directory
Delete file
Delete registry value
Enumerate gui resources
Get common file path
Get file attributes
Get installed programs
Get program files directory
Persist via appinit_dlls registry key
Persist via run registry key
Query or enumerate registry value
Set file attributes
Set registry value
Terminate process
Write and execute a file
Write file on windows

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x4a4d10
mov eax, dword fs:[0]
push eax
sub esp, 0x2a4
mov eax, dword [0x4c9144]
xor eax, ebp
mov dword [ebp - 0x14], eax
push ebx
push esi
push edi
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov dword [ebp - 0x10], esp
xor ebx, ebx
mov dword [ebp - 4], ebx
mov edx, dword [0x4d2d94]
mov esi, ecx
mov ecx, dword [edx - 0xc]
mov dword [ebp - 0x174], esi
cmp ecx, ebx
je 0x4794fc
lea eax, [ecx - 1]
cmp eax, ebx
jl 0x47a099
cmp eax, ecx
jg 0x47a099
movzx eax, word [edx + eax*2]
cmp eax, 0x5c
jne 0x478d59
dec ecx
push 0x4d2d94
lea eax, [ebx + 1]
call fcn.00418b70
call fcn.0047d3d0
mov byte [ebp - 0x181], al
test al, al
jne 0x478d6e
mov dword [0x4ca384], ebx
mov edi, dword [sym.imp.USER32.dll_IsWindow]
mov byte [ebp - 0x1d1], 0x62
cmp esi, ebx
je 0x478db3
mov eax, dword [esi + 0x3c8]
mov eax, dword [eax + 4]
push eax
call edi
test eax, eax
je 0x478db3
mov ecx, dword [esi + 0x3c8]
push ebx
push 0x4cdca4
push 0x4cdc28
push ebx
push ecx
call fcn.0049cb22
add esp, 0x14
push 5
mov ecx, eax
call fcn.00484410
push 0
push 0x47bfa0
call dword [sym.imp.USER32.dll_EnumWindows]
mov ebx, dword [sym.imp.USER32.dll_RegisterWindowMessageW]
push str.ShutDownMessengerPlusLive
call ebx
test eax, eax
je 0x478def
lea edx, [ebp - 0x264]
push edx
push 0x1388
push 0
push 0
push 1
push eax
push 0xffff
call dword [sym.imp.USER32.dll_SendMessageTimeoutW]
test esi, esi
je 0x478e29
mov eax, dword [esi + 0x3c8]
mov eax, dword [eax + 4]
push eax
call edi
test eax, eax
je 0x478e29
mov ecx, dword [esi + 0x3c8]
push 0
push 0x4cdca4
push 0x4cdc28
push 0
push ecx
call fcn.0049cb22
add esp, 0x14
push 0xa
mov ecx, eax
call fcn.00484410
push str.TryMsnMsgrShutdown
call ebx
test eax, eax
je 0x478e40
push eax
push 0x47c080
call dword [sym.imp.USER32.dll_EnumWindows]
test esi, esi
je 0x478e7a
mov eax, dword [esi + 0x3c8]
mov edx, dword [eax + 4]
push edx
call edi
test eax, eax
je 0x478e7a
mov eax, dword [esi + 0x3c8]
push 0
push 0x4cdca4
push 0x4cdc28
push 0
push eax
call fcn.0049cb22
add esp, 0x14
push 0x14
mov ecx, eax
call fcn.00484410
push 0xfa0
call dword [sym.imp.KERNEL32.dll_Sleep]
test esi, esi
je 0x478ebf
mov eax, dword [esi + 0x3c8]
mov ecx, dword [eax + 4]
push ecx
call edi
test eax, eax
je 0x478ebf
mov edx, dword [esi + 0x3c8]
push 0
push 0x4cdca4
push 0x4cdc28
push 0
push edx
call fcn.0049cb22
add esp, 0x14
push 0x19
mov ecx, eax
call fcn.00484410
lea eax, [ebp - 0x1b0]
push eax
call fcn.0047d190
add esp, 4
mov byte [ebp - 4], 1
mov eax, dword [ebp - 0x1b0]
mov esi, dword [eax]
mov ebx, dword [sym.imp.KERNEL32.dll_TerminateProcess]
mov dword [ebp - 0x144], eax
xor edi, edi
cmp esi, dword [ebp - 0x144]
je 0x478f1f
mov ecx, dword [esi + 8]
push ecx
push edi
push 1
call dword [sym.imp.KERNEL32.dll_OpenProcess]
mov edi, eax
test edi, edi
je 0x478f1b
push 0
push edi
call ebx
push 0x1388
push edi
call dword [sym.imp.KERNEL32.dll_WaitForSingleObject]
push edi
call dword [sym.imp.KERNEL32.dll_CloseHandle]
mov esi, dword [esi]
jmp 0x478ee6
xor esi, esi
mov dword [ebp - 0x1c8], esi
mov dword [ebp - 0x1c4], edi
mov dword [ebp - 0x1c0], edi
lea edx, [ebp - 0x144]
push edx
push 0x20006
push edi
push str.SOFTWAREMicrosoftWindowsCurrentVersionRunOnce
push reloc.OLEAUT32.dll_SysReAllocString
mov dword [ebp - 0x144], edi
call dword [sym.imp.ADVAPI32.dll_RegOpenKeyExW]
cmp eax, edi
jne 0x478f8f
mov esi, dword [ebp - 0x144]
push str.MessengerPlusLiveUninstall
push esi
mov dword [ebp - 0x1c8], esi
call dword [sym.imp.ADVAPI32.dll_RegDeleteValueW]
cmp esi, edi
je 0x478f83
push esi
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
mov dword [ebp - 0x1c8], edi
mov esi, dword [ebp - 0x1c8]
mov dword [ebp - 0x1c4], edi
mov dword [ebp - 0x194], edi
mov dword [ebp - 0x190], edi
mov dword [ebp - 0x18c], edi
lea eax, [ebp - 0x1d8]
push eax
lea ecx, [ebp - 0x144]
push ecx
push edi
push 0x2001f
push edi
push edi
push edi
push str.SOFTWAREPatchouMessenger_Plus__Live
mov byte [ebp - 4], 3
push reloc.OLEAUT32.dll_SysReAllocString
mov dword [ebp - 0x144], edi
call dword [sym.imp.ADVAPI32.dll_RegCreateKeyExW]
cmp eax, edi
jne 0x4790e9
mov edx, dword [0x4d2d94]
mov ebx, dword [ebp - 0x144]
push edx
mov dword [ebp - 0x194], ebx
mov dword [ebp - 0x190], edi
call dword [sym.imp.KERNEL32.dll_GetFileAttributesW]
cmp eax, 0xffffffff
je 0x47933b
test al, 0x10
je 0x47933b
push ecx
mov dword [ebp - 0x1d8], esp
push esp
mov ecx, 0x4ab684
call fcn.0041be20
mov byte [ebp - 4], 4
mov eax, dword [0x4d2d94]
push ecx
add eax, 0xfffffff0
mov dword [ebp - 0x150], esp
mov esi, esp
call fcn.004175b0
add eax, 0x10
mov dword [esi], eax
push ecx
mov byte [ebp - 4], 5
mov dword [ebp - 0x144], esp
push esp
mov ecx, 0x4ab684
call fcn.0041be20
lea eax, [ebp - 0x140]
push eax
mov byte [ebp - 4], 3
call fcn.00418320
mov ecx, dword [ebp - 0x140]
add esp, 0x10
push edi
push 0x4000080
push 2
push edi
push edi
push 0x40000000
push ecx
call dword [sym.imp.KERNEL32.dll_CreateFileW]
cmp eax, 0xffffffff
jne 0x47913f
call fcn.00418010
cmp eax, edi
jge 0x47914a
mov eax, dword [ebp - 0x140]
add eax, 0xfffffff0
lea edx, [eax + 0xc]
or ecx, 0xffffffff
lock xadd dword [edx], ecx
dec ecx
test ecx, ecx
jg 0x4790b8
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
cmp ebx, edi
je 0x4790c3
push ebx
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
mov eax, dword [ebp - 0x1c8]
cmp eax, edi
je 0x4790d4
push eax
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
lea esi, [ebp - 0x1b0]
call fcn.00473c00
mov eax, 0xb
jmp 0x47bf7c
mov edi, 0xb
test esi, esi
je 0x4790f9
push esi
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
mov ecx, dword [ebp - 0x1b0]
mov eax, dword [ecx]
mov dword [ecx], ecx
mov ecx, dword [ebp - 0x1b0]
mov dword [ecx + 4], ecx
mov dword [ebp - 0x1ac], 0
mov ecx, dword [ebp - 0x1b0]
cmp eax, ecx
je 0x47912f
mov esi, dword [eax]
push eax
call fcn.00487ef3
add esp, 4
mov eax, esi
jmp 0x479116
push ecx
call fcn.00487ef3
add esp, 4
mov eax, edi
jmp 0x47bf7c
cmp eax, edi
je 0x47914a
push eax
call dword [sym.imp.KERNEL32.dll_CloseHandle]
mov eax, dword [ebp - 0x140]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x47916c
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
lea edx, [ebp - 0x15c]
push edx
call fcn.0041b8b0
mov byte [ebp - 4], 6
mov eax, dword [0x4d2dac]
push eax
push str._sMsimg32.dll
lea edi, [ebp - 0x15c]
call fcn.00417250
mov ecx, dword [ebp - 0x15c]
mov esi, dword [sym.imp.KERNEL32.dll_GetFileAttributesW]
add esp, 8
push ecx
call esi
cmp eax, 0xffffffff
je 0x4793e3
mov edx, dword [ebp - 0x15c]
push 0x80
push edx
call dword [sym.imp.KERNEL32.dll_SetFileAttributesW]
mov eax, dword [ebp - 0x15c]
mov edi, dword [sym.imp.KERNEL32.dll_DeleteFileW]
push eax
call edi
mov ecx, dword [ebp - 0x15c]
push ecx
call esi
cmp eax, 0xffffffff
je 0x4793e3
mov ecx, dword [ebp - 0x15c]
call fcn.0047c450
test al, al
jne 0x4793e3
cmp dword [ebp - 0x174], 0
je 0x4793ad
lea esi, [ebp - 0x140]
call fcn.0041b420
mov esi, eax
push str.LoaderLocked
push str.Setup
lea edx, [ebp - 0x144]
mov byte [ebp - 4], 7
mov ebx, dword [0x4d2918]
push edx
call fcn.0041b1b0
mov ecx, dword [esi]
mov esi, dword [ebp - 0x174]
cmp byte [esi + 0x128], 0
mov edx, dword [eax]
mov eax, 0x35
je 0x47924a
mov eax, 0x100035
push eax
mov eax, dword [esi + 4]
push ecx
push edx
push eax
call dword [sym.imp.USER32.dll_MessageBoxW]
cmp eax, 4
mov eax, dword [ebp - 0x144]
sete bl
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x47927f
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov byte [ebp - 4], 6
mov eax, dword [ebp - 0x140]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x4792a5
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
test bl, bl
je 0x4792c8
mov ecx, dword [ebp - 0x15c]
push ecx
call edi
mov edx, dword [ebp - 0x15c]
push edx
call dword [sym.imp.KERNEL32.dll_GetFileAttributesW]
cmp eax, 0xffffffff
jne 0x479200
mov eax, dword [ebp - 0x15c]
push eax
call dword [sym.imp.KERNEL32.dll_GetFileAttributesW]
cmp eax, 0xffffffff
je 0x4793e9
mov byte [ebp - 4], 3
mov eax, dword [ebp - 0x15c]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x479304
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov eax, dword [ebp - 0x194]
test eax, eax
je 0x479315
push eax
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
mov eax, dword [ebp - 0x1c8]
test eax, eax
je 0x479326
push eax
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
lea esi, [ebp - 0x1b0]
call fcn.00473c00
mov eax, 0xd
jmp 0x47bf7c
mov ecx, dword [0x4d2d94]
push edi
push ecx
push edi
call dword [sym.imp.SHELL32.dll_SHCreateDirectoryExW]
test eax, eax
je 0x47916c
mov edi, 0xb
test ebx, ebx
je 0x479362
push ebx
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
test esi, esi
je 0x47936d
push esi
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
mov ecx, dword [ebp - 0x1b0]
mov eax, dword [ecx]
mov dword [ecx], ecx
mov ecx, dword [ebp - 0x1b0]
mov dword [ecx + 4], ecx
mov dword [ebp - 0x1ac], 0
lea ebx, [ebx]
mov ecx, dword [ebp - 0x1b0]
cmp eax, ecx
je 0x47912f
mov esi, dword [eax]
push eax
call fcn.00487ef3
add esp, 4
mov eax, esi
jmp 0x479390
lea eax, [ebp - 0x15c]
call fcn.0041b950
lea esi, [ebp - 0x194]
call fcn.0041d1b0
lea esi, [ebp - 0x1c8]
call fcn.0041d1b0
lea esi, [ebp - 0x1b0]
call fcn.00473c00
mov eax, 0xd
jmp 0x47bf7c
mov esi, dword [ebp - 0x174]
lea ecx, [ebp - 0x168]
push ecx
mov ecx, 0x4afd30
call fcn.0041be20
lea edx, [ebp - 0x170]
mov bl, 8
push edx
mov ecx, str.MsgPlusLive1.dll
mov byte [ebp - 4], bl
call fcn.0041be20
mov byte [ebp - 4], 9
mov eax, dword [ebp - 0x168]
push eax
push 0
call fcn.0047c150
mov ecx, dword [ebp - 0x170]
add esp, 8
push ecx
push 0
test al, al
jne 0x479519
call fcn.0047c150
add esp, 8
test al, al
jne 0x479506
mov edx, dword [ebp - 0x168]
push edx
push esi
call fcn.0047c150
add esp, 8
test al, al
jne 0x479521
mov byte [ebp - 4], bl
mov eax, dword [ebp - 0x170]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x479483
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov byte [ebp - 4], 6
mov eax, dword [ebp - 0x168]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x4794a9
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov byte [ebp - 4], 3
mov eax, dword [ebp - 0x15c]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x4794cf
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov eax, dword [ebp - 0x194]
test eax, eax
je 0x4794e0
push eax
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
mov eax, dword [ebp - 0x1c8]
test eax, eax
je 0x4794f1
push eax
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
lea esi, [ebp - 0x1b0]
call fcn.00473c00
mov eax, 0xc
jmp 0x47bf7c
lea eax, [ebp - 0x170]
lea edi, [ebp - 0x168]
call fcn.00417620
jmp 0x479521
call fcn.0047c150
add esp, 8
test esi, esi
je 0x47955f
mov eax, dword [esi + 0x3c8]
mov edx, dword [eax + 4]
push edx
call dword [sym.imp.USER32.dll_IsWindow]
test eax, eax
je 0x47955f
mov eax, dword [esi + 0x3c8]
push 0
push 0x4cdca4
push 0x4cdc28
push 0
push eax
call fcn.0049cb22
add esp, 0x14
push 0x1e
mov ecx, eax
call fcn.00484410
push str.Detoured.dll
push 0
call fcn.0047c150
add esp, 8
push 0x4afd90
push 0
call fcn.0047c150
add esp, 8
push 0x4afdac
push 0
call fcn.0047c150
add esp, 8
push 0x4afdc4
push 0
call fcn.0047c150
add esp, 8
push 0x4afde0
push 0
call fcn.0047c150
add esp, 8
push str.MsgPlusLoader.dll
push 0
call fcn.0047c150
add esp, 8
push str.MPLScripting.chm
push 0
call fcn.0047c150
add esp, 8
push str.ScriptsMPLScripting.chm
push 0
call fcn.0047c150
add esp, 8
push str.SkinsMPLSkinning.chm
push 0
call fcn.0047c150
add esp, 8
push 0x4afea8
push esi
call fcn.0047c150
add esp, 8
test al, al
jne 0x4796a4
mov byte [ebp - 4], bl
mov eax, dword [ebp - 0x170]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x479621
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov byte [ebp - 4], 6
mov eax, dword [ebp - 0x168]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x479647
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov byte [ebp - 4], 3
mov eax, dword [ebp - 0x15c]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x47966d
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov eax, dword [ebp - 0x194]
test eax, eax
je 0x47967e
push eax
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
mov eax, dword [ebp - 0x1c8]
test eax, eax
je 0x47968f
push eax
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
lea esi, [ebp - 0x1b0]
call fcn.00473c00
mov eax, 0xc
jmp 0x47bf7c
push 0x4afec0
push esi
call fcn.0047c150
add esp, 8
test al, al
jne 0x479762
mov byte [ebp - 4], bl
mov eax, dword [ebp - 0x170]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x4796df
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov byte [ebp - 4], 6
mov eax, dword [ebp - 0x168]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x479705
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov byte [ebp - 4], 3
mov eax, dword [ebp - 0x15c]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x47972b
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov eax, dword [ebp - 0x194]
test eax, eax
je 0x47973c
push eax
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
mov eax, dword [ebp - 0x1c8]
test eax, eax
je 0x47974d
push eax
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
lea esi, [ebp - 0x1b0]
call fcn.00473c00
mov eax, 0xc
jmp 0x47bf7c
push 0x4afef0
push esi
call fcn.0047c150
add esp, 8
test al, al
jne 0x479820
mov byte [ebp - 4], bl
mov eax, dword [ebp - 0x170]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x47979d
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov byte [ebp - 4], 6
mov eax, dword [ebp - 0x168]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x4797c3
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov byte [ebp - 4], 3
mov eax, dword [ebp - 0x15c]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x4797e9
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov eax, dword [ebp - 0x194]
test eax, eax
je 0x4797fa
push eax
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
mov eax, dword [ebp - 0x1c8]
test eax, eax
je 0x47980b
push eax
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
lea esi, [ebp - 0x1b0]
call fcn.00473c00
mov eax, 0xc
jmp 0x47bf7c
push 0x4aff0c
push esi
call fcn.0047c150
add esp, 8
test al, al
je 0x4798bc
lea ecx, [ebp - 0x17c]
push ecx
mov ecx, 0x4aff2c
call fcn.0041be20
lea edx, [ebp - 0x180]
push edx
mov ecx, str.MsgPlusLiveRes1.dll
mov byte [ebp - 4], 0xa
call fcn.0041be20
mov byte [ebp - 4], 0xb
mov eax, dword [ebp - 0x17c]
push eax
push 0
call fcn.0047c150
add esp, 8
test al, al
jne 0x47991b
mov ecx, dword [ebp - 0x180]
push ecx
push 0
call fcn.0047c150
add esp, 8
test al, al
jne 0x479908
mov edx, dword [ebp - 0x17c]
push edx
push esi
call fcn.0047c150
add esp, 8
test al, al
jne 0x47992c
lea eax, [ebp - 0x180]
call fcn.0041b950
lea eax, [ebp - 0x17c]
call fcn.0041b950
lea eax, [ebp - 0x170]
call fcn.0041b950
lea eax, [ebp - 0x168]
call fcn.0041b950
lea eax, [ebp - 0x15c]
call fcn.0041b950
lea esi, [ebp - 0x194]
call fcn.0041d1b0
lea esi, [ebp - 0x1c8]
call fcn.0041d1b0
lea esi, [ebp - 0x1b0]
call fcn.00473c00
mov eax, 0xc
jmp 0x47bf7c
lea eax, [ebp - 0x180]
lea edi, [ebp - 0x17c]
call fcn.00417620
jmp 0x47992c
mov eax, dword [ebp - 0x180]
push eax
push 0
call fcn.0047c150
add esp, 8
test esi, esi
je 0x479937
push 0x23
call fcn.00485f80
mov byte [ebp - 0x144], 0
mov ecx, dword [ebp - 0x144]
push ecx
push 0
lea ecx, [ebp - 0x1cc]
mov byte [ebp - 0x149], 0
mov dword [ebp - 0x1d0], 0
call fcn.0041c410
lea edx, [ebp - 0x1d0]
push edx
mov byte [ebp - 4], 0xc
mov eax, dword [0x4d2910]
push str.Files
lea ebx, [ebp - 0x144]
mov edx, str.File_MsgPlusBin
mov dword [ebp - 0x144], 0
call fcn.0041dae0
xor ebx, ebx
cmp al, bl
je 0x479b0b
mov esi, dword [ebp - 0x144]
cmp esi, ebx
jbe 0x479b0b
lea eax, [ebp - 0x140]
push eax
call fcn.0041b8b0
mov byte [ebp - 4], 0xd
mov ecx, dword [0x4d2da8]
push ecx
push str._sMsgPlusBinaries.dat
lea edi, [ebp - 0x140]
call fcn.00417250
mov edx, dword [ebp - 0x1d0]
mov edi, dword [ebp - 0x140]
add esp, 8
push esi
push edx
call fcn.004179d0
add esp, 8
test al, al
je 0x479a16
mov eax, dword [0x4d2da8]
mov ecx, dword [ebp - 0x140]
push ebx
push eax
push ecx
xor edx, edx
mov ecx, 0x4ab8dc
call fcn.0041c550
add esp, 0xc
cmp al, bl
je 0x479a16
mov byte [ebp - 0x149], 1
xor eax, eax
lea edi, [ebp - 0x1d0]
call fcn.0041c3b0
lea eax, [ebp - 0x140]
mov byte [ebp - 4], 0xc
call fcn.0041b950
cmp byte [ebp - 0x149], bl
je 0x479b0b
mov eax, dword [0x4d2910]
mov edx, edi
push edx
mov dword [ebp - 0x144], ebx
mov byte [ebp - 0x149], bl
push str.Files
lea ebx, [ebp - 0x144]
mov edx, str.File_MsgPlusExtra
call fcn.0041dae0
test al, al
je 0x479b0b
mov esi, dword [ebp - 0x144]
test esi, esi
je 0x479b0b
lea eax, [ebp - 0x140]
push eax
call fcn.0041b8b0
mov byte [ebp - 4], 0xe
mov ecx, dword [0x4d2da8]
push ecx
push str._sMsgPlusExtra.dat
lea edi, [ebp - 0x140]
call fcn.00417250
mov edx, dword [ebp - 0x1d0]
mov edi, dword [ebp - 0x140]
add esp, 8
push esi
push edx
call fcn.004179d0
add esp, 8
test al, al
je 0x479ae5
mov eax, dword [0x4d2da8]
mov ecx, dword [ebp - 0x140]
push 0
push eax
push ecx
xor edx, edx
mov ecx, 0x4ab8dc
call fcn.0041c550
add esp, 0xc
mov bl, 1
test al, al
jne 0x479aeb
mov bl, byte [ebp - 0x149]
xor eax, eax
lea edi, [ebp - 0x1d0]
call fcn.0041c3b0
lea eax, [ebp - 0x140]
mov byte [ebp - 4], 0xc
call fcn.0041b950
test bl, bl
jne 0x479b7c
lea eax, [ebp - 0x1d0]
mov byte [ebp - 4], 0xb
call fcn.00440440
lea eax, [ebp - 0x180]
call fcn.0041b950
lea eax, [ebp - 0x17c]
call fcn.0041b950
lea eax, [ebp - 0x170]
call fcn.0041b950
lea eax, [ebp - 0x168]
call fcn.0041b950
lea eax, [ebp - 0x15c]
call fcn.0041b950
lea esi, [ebp - 0x194]
call fcn.0041d1b0
lea esi, [ebp - 0x1c8]
call fcn.0041d1b0
lea esi, [ebp - 0x1b0]
call fcn.00473c00
mov eax, 0xe
jmp 0x47bf7c
mov esi, dword [ebp - 0x174]
test esi, esi
je 0x479b8d
push 0x28
call fcn.00485f80
lea edx, [ebp - 0x19c]
push edx
call fcn.0041b8b0
lea eax, [ebp - 0x1a4]
push eax
mov byte [ebp - 4], 0xf
call fcn.0041b8b0
mov bl, 0x10
mov byte [ebp - 4], bl
mov ecx, dword [0x4d2da8]
push ecx
push str._smsimg32.dll
lea edi, [ebp - 0x19c]
call fcn.00417250
mov edx, dword [0x4d2dac]
add esp, 8
push edx
push str._smsimg32.dll
lea edi, [ebp - 0x1a4]
call fcn.00417250
mov eax, dword [ebp - 0x1a4]
mov ecx, dword [ebp - 0x19c]
mov esi, dword [sym.imp.KERNEL32.dll_CopyFileW]
add esp, 8
push 0
push eax
push ecx
call esi
cmp byte [0x4d2899], 0
jne 0x479d71
lea edx, [ebp - 0x13c]
push edx
call fcn.0041b8b0
mov byte [ebp - 4], 0x11
mov edx, dword [ebp - 0x13c]
mov eax, dword [edx - 8]
mov ecx, 1
sub ecx, dword [edx - 4]
sub eax, 0x400
or eax, ecx
jge 0x479c47
mov eax, 0x400
lea ecx, [ebp - 0x13c]
call fcn.00417470
mov edx, dword [ebp - 0x13c]
push edx
push 0
push 0
push 0x26
push 0
call dword [sym.imp.SHELL32.dll_SHGetFolderPathW]
mov eax, dword [ebp - 0x13c]
mov ecx, dword [eax - 8]
push ecx
push eax
call fcn.00489835
add esp, 8
test eax, eax
js 0x47a099
mov ecx, dword [ebp - 0x13c]
cmp eax, dword [ecx - 8]
jg 0x47a099
mov dword [ecx - 0xc], eax
mov edx, dword [ebp - 0x13c]
xor ecx, ecx
mov word [edx + eax*2], cx
mov edx, dword [ebp - 0x13c]
mov eax, dword [edx - 0xc]
test eax, eax
je 0x479cca
lea ecx, [eax - 1]
test ecx, ecx
js 0x47a099
cmp ecx, eax
jg 0x47a099
cmp word [edx + ecx*2], 0x5c
jne 0x479cca
lea ecx, [eax - 1]
lea eax, [ebp - 0x13c]
push eax
mov eax, 1
call fcn.00418b70
mov edx, str.Windows_LiveMessenger
lea eax, [ebp - 0x13c]
call fcn.00418b00
mov ecx, dword [ebp - 0x13c]
push 0
push ecx
push 0
call dword [sym.imp.SHELL32.dll_SHCreateDirectoryExW]
lea edx, [ebp - 0x160]
push edx
call fcn.0041b8b0
lea eax, [ebp - 0x140]
push eax
mov byte [ebp - 4], 0x12
call fcn.0041b8b0
mov byte [ebp - 4], 0x13
mov ecx, dword [0x4d2da8]
push ecx
push str._smsimg32.dll
lea edi, [ebp - 0x160]
call fcn.00417250
mov edx, dword [ebp - 0x13c]
add esp, 8
push edx
push str._smsimg32.dll
lea edi, [ebp - 0x140]
call fcn.00417250
mov eax, dword [ebp - 0x140]
mov ecx, dword [ebp - 0x160]
add esp, 8
push 0
push eax
push ecx
call esi
mov eax, edi
call fcn.0041b950
lea eax, [ebp - 0x160]
call fcn.0041b950
lea eax, [ebp - 0x13c]
mov byte [ebp - 4], bl
call fcn.0041b950
xor ecx, ecx
mov ebx, str.Detoured.dll
call fcn.0047c680
xor ecx, ecx
mov ebx, 0x4afd90
call fcn.0047c680
xor ecx, ecx
mov ebx, 0x4afdac
call fcn.0047c680
xor ecx, ecx
mov ebx, 0x4afea8
call fcn.0047c680
xor ecx, ecx
mov ebx, 0x4afec0
call fcn.0047c680
xor ecx, ecx
mov ebx, 0x4afdc4
call fcn.0047c680
xor ecx, ecx
mov ebx, 0x4afde0
call fcn.0047c680
mov ecx, str.MsgPlusLoader.dll
mov ebx, str.msimg32.dll
call fcn.0047c680
xor ecx, ecx
mov ebx, 0x4afef0
call fcn.0047c680
test al, al
je 0x47beed
xor ecx, ecx
mov ebx, 0x4aff0c
call fcn.0047c680
test al, al
je 0x47beed
mov ecx, dword [ebp - 0x168]
mov ebx, 0x4afd30
call fcn.0047c680
test al, al
je 0x47beed
mov ecx, dword [ebp - 0x17c]
mov ebx, 0x4aff2c
call fcn.0047c680
xor ebx, ebx
test al, al
je 0x47beed
mov esi, dword [ebp - 0x174]
cmp esi, ebx
je 0x479e3f
push 0x32
call fcn.00485f80
lea edx, [ebp - 0x188]
push edx
call fcn.0041b8b0
mov byte [ebp - 4], 0x14
mov eax, dword [0x4d2d94]
push eax
push str._sLanguages
lea edi, [ebp - 0x188]
call fcn.00417250
mov ecx, dword [ebp - 0x188]
add esp, 8
push ebx
push ecx
call dword [sym.imp.KERNEL32.dll_CreateDirectoryW]
mov eax, dword [0x4d2d9c]
mov esi, dword [eax]
mov dword [ebp - 0x160], esi
mov dword [ebp - 0x144], eax
lea esp, [esp]
cmp esi, dword [ebp - 0x144]
je 0x47a0e9
lea edx, [ebp - 0x154]
push edx
call fcn.0041b8b0
lea eax, [ebp - 0x13c]
push eax
mov byte [ebp - 4], 0x15
call fcn.0041b8b0
mov byte [ebp - 4], 0x16
mov ecx, dword [esi + 0xc]
mov edx, dword [0x4d2da8]
push ecx
push edx
push 0x4ab8d0
lea edi, [ebp - 0x154]
call fcn.00417250
mov eax, dword [esi + 0xc]
mov ecx, dword [ebp - 0x188]
add esp, 0xc
push eax
push ecx
push 0x4ab8d0
lea edi, [ebp - 0x13c]
call fcn.00417250
mov edx, dword [ebp - 0x13c]
add esp, 0xc
push edx
call dword [sym.imp.KERNEL32.dll_GetFileAttributesW]
cmp eax, 0xffffffff
je 0x479f30
mov eax, dword [ebp - 0x13c]
push 0x80
push eax
call dword [sym.imp.KERNEL32.dll_SetFileAttributesW]
mov ecx, dword [ebp - 0x13c]
push ecx
call dword [sym.imp.KERNEL32.dll_DeleteFileW]
lea esp, [esp]
mov edx, dword [ebp - 0x13c]
mov eax, dword [ebp - 0x154]
push ebx
push edx
push eax
call dword [sym.imp.KERNEL32.dll_CopyFileW]
test eax, eax
jne 0x47a0b9
cmp dword [ebp - 0x174], ebx
je 0x479ff1
lea ecx, [ebp - 0x140]
push ecx
call fcn.0041b8b0
push str.FileLocked
push str.Setup
lea edx, [ebp - 0x148]
mov byte [ebp - 4], 0x17
mov ebx, dword [0x4d2918]
push edx
call fcn.0041b1b0
mov byte [ebp - 4], 0x18
mov ecx, dword [esi + 0xc]
mov eax, dword [eax]
push ecx
push eax
lea ecx, [ebp - 0x140]
call fcn.0041b9f0
add esp, 8
lea eax, [ebp - 0x148]
mov byte [ebp - 4], 0x17
call fcn.0041b950
lea esi, [ebp - 0x150]
call fcn.0041b420
mov eax, dword [eax]
mov edx, dword [ebp - 0x140]
push eax
mov eax, dword [ebp - 0x174]
mov ecx, 0x35
call fcn.00473520
cmp eax, 2
mov eax, esi
sete bl
call fcn.0041b950
lea eax, [ebp - 0x140]
test bl, bl
je 0x47a0a3
call fcn.0041b950
lea eax, [ebp - 0x13c]
call fcn.0041b950
lea eax, [ebp - 0x154]
call fcn.0041b950
lea eax, [ebp - 0x188]
call fcn.0041b950
lea eax, [ebp - 0x1a4]
call fcn.0041b950
lea eax, [ebp - 0x19c]
call fcn.0041b950
lea eax, [ebp - 0x1d0]
mov byte [ebp - 4], 0xb
call fcn.00440440
lea eax, [ebp - 0x180]
call fcn.0041b950
lea eax, [ebp - 0x17c]
call fcn.0041b950
lea eax, [ebp - 0x170]
call fcn.0041b950
lea eax, [ebp - 0x168]
call fcn.0041b950
lea eax, [ebp - 0x15c]
call fcn.0041b950
lea esi, [ebp - 0x194]
call fcn.0041d1b0
lea esi, [ebp - 0x1c8]
call fcn.0041d1b0
lea esi, [ebp - 0x1b0]
call fcn.00473c00
mov eax, 0x10
jmp 0x47bf7c
push 0x80070057
call fcn.00417580
mov byte [ebp - 4], 0x16
call fcn.0041b950
mov esi, dword [ebp - 0x160]
xor ebx, ebx
jmp 0x479f30
lea eax, [ebp - 0x13c]
call fcn.0041b950
lea eax, [ebp - 0x154]
mov byte [ebp - 4], 0x14
call fcn.0041b950
lea eax, [ebp - 0x160]
call fcn.00475240
mov esi, dword [ebp - 0x160]
jmp 0x479e90
lea eax, [ebp - 0x1bc]
push eax
call fcn.0041b8b0
mov byte [ebp - 4], 0x19
mov ecx, dword [0x4d2d94]
push ecx
push str._sInterface
lea edi, [ebp - 0x1bc]
call fcn.00417250
mov edx, dword [ebp - 0x1bc]
mov esi, dword [sym.imp.KERNEL32.dll_CreateDirectoryW]
add esp, 8
push ebx
push edx
call esi
lea eax, [ebp - 0x198]
push eax
call fcn.0041b8b0
mov byte [ebp - 4], 0x1a
mov ecx, dword [0x4d2d94]
push ecx
push str._sScripts
lea edi, [ebp - 0x198]
call fcn.00417250
mov edx, dword [ebp - 0x198]
add esp, 8
push ebx
push edx
call esi
lea eax, [ebp - 0x1a0]
push eax
call fcn.0041b8b0
mov byte [ebp - 4], 0x1b
mov ecx, dword [0x4d2d94]
push ecx
push str._sSkins
lea edi, [ebp - 0x1a0]
call fcn.00417250
mov edx, dword [ebp - 0x1a0]
add esp, 8
push ebx
push edx
call esi
mov edx, dword [ebp - 0x198]
lea eax, [ebp - 0x208]
push eax
push ebx
lea ecx, [ebp - 0x1e0]
push ecx
push ebx
push ebx
push 4
push 1
push edx
mov dword [ebp - 0x208], ebx
mov dword [ebp - 0x1e0], ebx
call dword [sym.imp.ADVAPI32.dll_GetNamedSecurityInfoW]
test eax, eax
jne 0x47a35a
push 0x44
mov dword [ebp - 0x150], 0x44
call fcn.00487e0b
add esp, 4
lea ecx, [ebp - 0x150]
push ecx
push eax
push ebx
push 0x1b
mov dword [ebp - 0x154], eax
call dword [sym.imp.ADVAPI32.dll_CreateWellKnownSid]
test eax, eax
je 0x47a33e
mov edx, dword [ebp - 0x154]
xor eax, eax
mov dword [ebp - 0x200], eax
mov dword [ebp - 0x1fc], eax
mov dword [ebp - 0x1f8], eax
mov dword [ebp - 0x1f4], eax
mov dword [ebp - 0x1f0], eax
mov dword [ebp - 0x1ec], eax
mov dword [ebp - 0x1e8], eax
mov dword [ebp - 0x1e4], eax
push edx
lea eax, [ebp - 0x1f4]
push eax
xor edi, edi
mov dword [ebp - 0x200], 0x10000000
mov dword [ebp - 0x1fc], 2
mov dword [ebp - 0x1f8], 3
call dword [sym.imp.ADVAPI32.dll_BuildTrusteeWithSidW]
mov eax, dword [ebp - 0x1e0]
lea ecx, [ebp - 0x140]
push ecx
lea edx, [ebp - 0x144]
push edx
push eax
mov bl, 1
mov dword [ebp - 0x144], edi
mov dword [ebp - 0x140], edi
call dword [sym.imp.ADVAPI32.dll_GetExplicitEntriesFromAclW]
test eax, eax
jne 0x47a2ed
mov ecx, dword [ebp - 0x140]
lea ecx, [ecx]
cmp edi, dword [ebp - 0x144]
jae 0x47a2e0
mov esi, edi
shl esi, 5
lea ecx, [esi + ecx + 0xc]
lea eax, [ebp - 0x1f4]
call fcn.00418a60
mov ecx, dword [ebp - 0x140]
test al, al
je 0x47a2d1
mov eax, dword [esi + ecx + 4]
cmp eax, 2
je 0x47a2c4
cmp eax, 1
jne 0x47a2d4
mov edx, dword [esi + ecx]
cmp edx, dword [ebp - 0x200]
jne 0x47a2d4
xor bl, bl
inc edi
jmp 0x47a290
cmp eax, 3
je 0x47a2de
cmp eax, 4
jne 0x47a2d1
mov bl, 1
push ecx
call dword [sym.imp.KERNEL32.dll_LocalFree]
test bl, bl
je 0x47a33c
xor edi, edi
mov ecx, dword [ebp - 0x1e0]
lea eax, [ebp - 0x160]
push eax
push ecx
lea edx, [ebp - 0x200]
push edx
push 1
mov dword [ebp - 0x160], edi
call dword [sym.imp.ADVAPI32.dll_SetEntriesInAclW]
test eax, eax
jne 0x47a33c
mov eax, dword [ebp - 0x160]
mov ecx, dword [ebp - 0x198]
push edi
push eax
push edi
push edi
push 4
push 1
push ecx
call dword [sym.imp.ADVAPI32.dll_SetNamedSecurityInfoW]
mov edx, dword [ebp - 0x160]
push edx
call dword [sym.imp.KERNEL32.dll_LocalFree]
xor ebx, ebx
mov eax, dword [ebp - 0x208]
push eax
call dword [sym.imp.KERNEL32.dll_LocalFree]
mov ecx, dword [ebp - 0x154]
push ecx
call fcn.00488a62
add esp, 4
mov ecx, dword [ebp - 0x1a0]
lea edx, [ebp - 0x208]
push edx
push ebx
lea eax, [ebp - 0x1e0]
push eax
push ebx
push ebx
push 4
push 1
push ecx
call dword [sym.imp.ADVAPI32.dll_GetNamedSecurityInfoW]
test eax, eax
jne 0x47a51a
push 0x44
mov dword [ebp - 0x150], 0x44
call fcn.00487e0b
add esp, 4
lea edx, [ebp - 0x150]
push edx
push eax
push ebx
push 0x1b
mov dword [ebp - 0x154], eax
call dword [sym.imp.ADVAPI32.dll_CreateWellKnownSid]
test eax, eax
je 0x47a4fc
xor eax, eax
mov dword [ebp - 0x200], eax
mov dword [ebp - 0x1fc], eax
mov dword [ebp - 0x1f8], eax
mov dword [ebp - 0x1f4], eax
mov dword [ebp - 0x1f0], eax
mov dword [ebp - 0x1ec], eax
mov dword [ebp - 0x1e8], eax
mov dword [ebp - 0x1e4], eax
mov eax, dword [ebp - 0x154]
push eax
lea ecx, [ebp - 0x1f4]
push ecx
xor edi, edi
mov dword [ebp - 0x200], 0x10000000
mov dword [ebp - 0x1fc], 2
mov dword [ebp - 0x1f8], 3
call dword [sym.imp.ADVAPI32.dll_BuildTrusteeWithSidW]
mov ecx, dword [ebp - 0x1e0]
lea edx, [ebp - 0x140]
push edx
lea eax, [ebp - 0x144]
push eax
push ecx
mov bl, 1
mov dword [ebp - 0x144], edi
mov dword [ebp - 0x140], edi
call dword [sym.imp.ADVAPI32.dll_GetExplicitEntriesFromAclW]
test eax, eax
jne 0x47a4ad
mov ecx, dword [ebp - 0x140]
cmp edi, dword [ebp - 0x144]
jae 0x47a4a0
mov esi, edi
shl esi, 5
lea ecx, [esi + ecx + 0xc]
lea eax, [ebp - 0x1f4]
call fcn.00418a60
mov ecx, dword [ebp - 0x140]
test al, al
je 0x47a491
mov eax, dword [esi + ecx + 4]
cmp eax, 2
je 0x47a484
cmp eax, 1
jne 0x47a494
mov edx, dword [esi + ecx]
cmp edx, dword [ebp - 0x200]
jne 0x47a494
xor bl, bl
inc edi
jmp 0x47a450
cmp eax, 3
je 0x47a49e
cmp eax, 4
jne 0x47a491
mov bl, 1
push ecx
call dword [sym.imp.KERNEL32.dll_LocalFree]
test bl, bl
je 0x47a4fc
xor edi, edi
mov ecx, dword [ebp - 0x1e0]
lea eax, [ebp - 0x160]
push eax
push ecx
lea edx, [ebp - 0x200]
push edx
push 1
mov dword [ebp - 0x160], edi
call dword [sym.imp.ADVAPI32.dll_SetEntriesInAclW]
test eax, eax
jne 0x47a4fc
mov eax, dword [ebp - 0x160]
mov ecx, dword [ebp - 0x1a0]
push edi
push eax
push edi
push edi
push 4
push 1
push ecx
call dword [sym.imp.ADVAPI32.dll_SetNamedSecurityInfoW]
mov edx, dword [ebp - 0x160]
push edx
call dword [sym.imp.KERNEL32.dll_LocalFree]
mov eax, dword [ebp - 0x208]
push eax
call dword [sym.imp.KERNEL32.dll_LocalFree]
mov ecx, dword [ebp - 0x154]
push ecx
call fcn.00488a62
add esp, 4
xor ebx, ebx
push 0x114
lea edx, [ebp - 0x138]
push ebx
push edx
call fcn.0048bb40
add esp, 0xc
lea eax, [ebp - 0x138]
push eax
mov dword [ebp - 0x138], 0x114
call dword [sym.imp.KERNEL32.dll_GetVersionExW]
cmp dword [ebp - 0x128], 2
jne 0x47a60c
cmp dword [ebp - 0x134], 6
jb 0x47a60c
lea ecx, [ebp - 0x140]
push ecx
call fcn.0041b8b0
mov byte [ebp - 4], 0x1c
mov edx, dword [0x4d2dac]
push edx
push str._smsnmsgr.exe
lea edi, [ebp - 0x140]
call fcn.00417250
add esp, 8
lea eax, [ebp - 0x20]
push eax
mov edx, 0x2001f
mov eax, str.SOFTWAREMicrosoftWindows_NTCurrentVersionAppCompatFlagsLayers
mov ecx, reloc.OLEAUT32.dll_SysReAllocString
mov dword [ebp - 0x20], ebx
mov dword [ebp - 0x1c], ebx
mov dword [ebp - 0x18], ebx
call fcn.004191e0
test eax, eax
jne 0x47a5c8
mov ecx, dword [ebp - 0x140]
mov edx, dword [ebp - 0x20]
push ecx
push edx
call dword [sym.imp.ADVAPI32.dll_RegDeleteValueW]
lea esi, [ebp - 0x20]
call fcn.004191b0
lea eax, [ebp - 0x20]
push eax
mov edx, 0x2001f
mov eax, str.SOFTWAREMicrosoftWindows_NTCurrentVersionAppCompatFlagsLayers
mov ecx, SysReAllocString
call fcn.004191e0
test eax, eax
jne 0x47a5f5
mov ecx, dword [ebp - 0x140]
mov edx, dword [ebp - 0x20]
push ecx
push edx
call dword [sym.imp.ADVAPI32.dll_RegDeleteValueW]
lea esi, [ebp - 0x20]
call fcn.0041d1b0
lea eax, [ebp - 0x140]
mov byte [ebp - 4], 0x1b
call fcn.0041b950
cmp dword [ebp - 0x174], ebx
je 0x47a621
mov esi, dword [ebp - 0x174]
push 0x3c
call fcn.00485f80
cmp byte [0x4d291d], 0
mov dword [ebp - 0x1b4], 0xffffffff
mov byte [ebp - 0x149], 0
jne 0x47a77d
lea eax, [ebp - 0x20]
push eax
mov edx, 0x2001f
mov eax, str.SOFTWAREMicrosoftWindowsCurrentVersionUninstallMsgPlus__Plugin
mov ecx, reloc.OLEAUT32.dll_SysReAllocString
mov dword [ebp - 0x20], ebx
mov dword [ebp - 0x1c], ebx
mov dword [ebp - 0x18], ebx
call fcn.004191e0
test eax, eax
jne 0x47a6a2
push str.SponsorInstalled
lea ecx, [ebp - 0x20]
push ecx
lea ecx, [ebp - 0x144]
mov dword [ebp - 0x144], ebx
call fcn.004785e0
mov esi, 1
cmp dword [ebp - 0x144], esi
jne 0x47a6a7
mov eax, dword [ebp - 0x20]
push 4
lea edx, [ebp - 0x150]
push edx
push 4
push ebx
push str.SponsorInstalled
push eax
jmp 0x47a6fa
mov esi, 1
lea ecx, [ebp - 0x20]
push ecx
mov edx, 0x2001f
mov eax, str.SOFTWAREMicrosoftWindowsCurrentVersionUninstallMessengerPlus3
mov ecx, reloc.OLEAUT32.dll_SysReAllocString
call fcn.004191e0
test eax, eax
jne 0x47a70d
push str.SponsorInstalled
lea edx, [ebp - 0x20]
push edx
lea ecx, [ebp - 0x144]
mov dword [ebp - 0x144], ebx
call fcn.004785e0
cmp dword [ebp - 0x144], esi
jne 0x47a70d
mov ecx, dword [ebp - 0x20]
push 4
lea eax, [ebp - 0x150]
push eax
push 4
push ebx
push str.SponsorInstalled
push ecx
mov byte [ebp - 0x149], 1
mov dword [ebp - 0x150], ebx
call dword [sym.imp.ADVAPI32.dll_RegSetValueExW]
lea edx, [ebp - 0x20]
push edx
mov edx, 0x2001f
mov eax, str.SOFTWAREMicrosoftWindowsCurrentVersionUninstallMessenger_Plus__Live
mov ecx, reloc.OLEAUT32.dll_SysReAllocString
call fcn.004191e0
test eax, eax
jne 0x47a775
push str.SponsorInstalled
lea eax, [ebp - 0x20]
push eax
lea ecx, [ebp - 0x144]
mov dword [ebp - 0x144], ebx
call fcn.004785e0
cmp dword [ebp - 0x144], esi
jne 0x47a76d
push str.InstallId
lea ecx, [ebp - 0x20]
push ecx
lea ecx, [ebp - 0x1b4]
call fcn.004785e0
test eax, eax
je 0x47a76d
mov dword [ebp - 0x1b4], 0x13
lea esi, [ebp - 0x20]
call fcn.004191b0
lea esi, [ebp - 0x20]
call fcn.0041d1b0
cmp byte [0x4d2899], 0
je 0x47a97b
push str.UsesLiveDir
lea edx, [ebp - 0x194]
push edx
lea ecx, [ebp - 0x144]
mov dword [ebp - 0x144], ebx
call fcn.004785e0
cmp dword [ebp - 0x144], ebx
jne 0x47a97b
lea eax, [ebp - 0x13c]
push eax
call fcn.0041b8b0
mov byte [ebp - 4], 0x1d
mov edx, dword [ebp - 0x13c]
mov eax, dword [edx - 8]
mov ecx, 1
sub ecx, dword [edx - 4]
sub eax, 0x400
or eax, ecx
jge 0x47a7f3
mov eax, 0x400
lea ecx, [ebp - 0x13c]
call fcn.00417470
mov edx, dword [ebp - 0x13c]
push edx
push ebx
push ebx
push 0x26
push ebx
call dword [sym.imp.SHELL32.dll_SHGetFolderPathW]
mov eax, dword [ebp - 0x13c]
mov ecx, dword [eax - 8]
push ecx
push eax
call fcn.00489835
add esp, 8
cmp eax, ebx
jl 0x47a099
mov ecx, dword [ebp - 0x13c]
cmp eax, dword [ecx - 8]
jg 0x47a099
mov dword [ecx - 0xc], eax
mov edx, dword [ebp - 0x13c]
xor ecx, ecx
mov word [edx + eax*2], cx
mov edx, dword [ebp - 0x13c]
mov eax, dword [edx - 0xc]
cmp eax, ebx
je 0x47a873
lea ecx, [eax - 1]
cmp ecx, ebx
jl 0x47a099
cmp ecx, eax
jg 0x47a099
cmp word [edx + ecx*2], 0x5c
jne 0x47a873
lea ecx, [eax - 1]
lea eax, [ebp - 0x13c]
push eax
mov eax, 1
call fcn.00418b70
mov edx, str.MSN_Messenger
lea eax, [ebp - 0x13c]
call fcn.00418b00
mov ecx, dword [ebp - 0x13c]
mov esi, dword [sym.imp.KERNEL32.dll_GetFileAttributesW]
push ecx
call esi
test al, 0x10
je 0x47a970
lea edx, [ebp - 0x148]
push edx
call fcn.0041b8b0
mov byte [ebp - 4], 0x1e
mov eax, dword [ebp - 0x13c]
push eax
push str._smsimg32.dll
lea edi, [ebp - 0x148]
call fcn.00417250
mov ecx, dword [ebp - 0x148]
add esp, 8
push ecx
call esi
cmp eax, 0xffffffff
je 0x47a965
mov edx, dword [ebp - 0x13c]
push edx
push str._smsnmsgr.exe
call fcn.00417250
mov eax, dword [ebp - 0x148]
add esp, 8
push eax
call esi
cmp eax, 0xffffffff
jne 0x47a965
mov ecx, dword [ebp - 0x13c]
push ecx
push str._smsncore.dll
call fcn.00417250
mov edx, dword [ebp - 0x148]
add esp, 8
push edx
call esi
cmp eax, 0xffffffff
jne 0x47a965
lea eax, [ebp - 0x140]
push eax
call fcn.0041b8b0
mov byte [ebp - 4], 0x1f
mov ecx, dword [ebp - 0x13c]
push ecx
push str._smsimg32.dll
lea edi, [ebp - 0x140]
call fcn.00417250
mov edx, dword [ebp - 0x140]
add esp, 8
push edx
call dword [sym.imp.KERNEL32.dll_DeleteFileW]
mov eax, dword [ebp - 0x13c]
push eax
call dword [sym.imp.KERNEL32.dll_RemoveDirectoryW]
mov eax, edi
call fcn.0041b950
lea eax, [ebp - 0x148]
call fcn.0041b950
lea eax, [ebp - 0x13c]
call fcn.0041b950
mov edi, dword [ebp - 0x194]
xor ecx, ecx
cmp byte [0x4d2899], cl
push 4
lea edx, [ebp - 0x150]
push edx
push 4
setne cl
push ebx
push str.UsesLiveDir
push edi
mov dword [ebp - 0x150], ecx
call dword [sym.imp.ADVAPI32.dll_RegSetValueExW]
mov esi, dword [0x4d2d94]
push str.AppDir
lea eax, [ebp - 0x194]
push eax
call fcn.00478680
test eax, eax
js 0x47b4e2
mov esi, dword [ebp - 0x188]
push str.LangDir
lea ecx, [ebp - 0x194]
push ecx
call fcn.00478680
test eax, eax
js 0x47b4e2
mov esi, dword [ebp - 0x1bc]
push str.InterfacesDir
lea edx, [ebp - 0x194]
push edx
call fcn.00478680
test eax, eax
jne 0x47aa6b
mov esi, dword [ebp - 0x198]
push str.ScriptsDir
lea eax, [ebp - 0x194]
push eax
call fcn.00478680
test eax, eax
js 0x47aa6b
mov esi, dword [ebp - 0x17c]
push str.ResourcesDll
lea ecx, [ebp - 0x194]
push ecx
call fcn.00478680
test eax, eax
js 0x47aa6b
mov esi, dword [ebp - 0x1a0]
push str.SkinsDir
lea edx, [ebp - 0x194]
push edx
call fcn.00478680
test eax, eax
js 0x47aa6b
mov esi, dword [ebp - 0x168]
push str.WorkerDll
lea eax, [ebp - 0x194]
push eax
call fcn.00478680
lea ecx, [ebp - 0x230]
push ecx
lea edx, [ebp - 0x220]
push edx
lea eax, [ebp - 0x150]
push eax
push ebx
push str.FirstInstallTime
mov esi, 8
push edi
mov dword [ebp - 0x220], ebx
mov dword [ebp - 0x21c], ebx
mov dword [ebp - 0x230], esi
call dword [sym.imp.ADVAPI32.dll_RegQueryValueExW]
cmp eax, ebx
jne 0x47aab1
cmp dword [ebp - 0x150], 3
je 0x47aae3
push ebx
call fcn.0048afde
add esp, 4
push esi
lea ecx, [ebp - 0x220]
push ecx
push 3
push ebx
push str.FirstInstallTime
push edi
mov dword [ebp - 0x220], eax
mov dword [ebp - 0x21c], edx
mov dword [ebp - 0x230], esi
call dword [sym.imp.ADVAPI32.dll_RegSetValueExW]
push 4
lea edx, [ebp - 0x150]
push edx
push 4
push ebx
push str.SoftwareBuild
push edi
mov dword [ebp - 0x150], 0x111e
call dword [sym.imp.ADVAPI32.dll_RegSetValueExW]
mov esi, dword [0x4d2db0]
push str.DefaultLangFile
lea eax, [ebp - 0x194]
push eax
call fcn.00478680
push edi
call dword [sym.imp.ADVAPI32.dll_RegFlushKey]
mov dword [ebp - 0x22c], ebx
mov dword [ebp - 0x228], ebx
mov dword [ebp - 0x224], ebx
cmp byte [ebp - 0x181], 0
mov byte [ebp - 4], 0x20
je 0x47ab73
lea ecx, [ebp - 0x22c]
push ecx
mov eax, str.SOFTWAREPatchouMessenger_Plus__Live
mov ecx, SysReAllocString
call fcn.0047d750
test eax, eax
jne 0x47ab73
mov esi, dword [0x4d2db0]
push str.LanguageFile
lea edx, [ebp - 0x22c]
push edx
call fcn.00478680
mov esi, dword [ebp - 0x174]
cmp esi, ebx
je 0x47ab84
push 0x41
call fcn.00485f80
cmp byte [0x4d291d], 0
mov eax, dword [0x4ca384]
mov byte [ebp - 0x175], 0
je 0x47ae5b
cmp eax, 1
jl 0x47ae5b
mov ecx, eax
shr ecx, 1
and cl, 1
mov byte [ebp - 0x150], 0
mov edx, dword [ebp - 0x150]
push edx
mov byte [ebp - 0x155], cl
and al, 1
push ebx
lea ecx, [ebp - 0x1d8]
mov byte [ebp - 0x169], al
mov dword [ebp - 0x1dc], ebx
call fcn.0041c410
lea eax, [ebp - 0x1dc]
push eax
mov byte [ebp - 4], 0x21
mov eax, dword [0x4d2910]
push str.Files
lea ebx, [ebp - 0x144]
mov edx, str.File_PlusNetwork
mov dword [ebp - 0x144], 0
call fcn.0041dae0
test al, al
je 0x47ae47
mov esi, dword [ebp - 0x144]
test esi, esi
je 0x47ae47
lea ecx, [ebp - 0x140]
push ecx
call fcn.0041b8b0
mov byte [ebp - 4], 0x22
mov edx, dword [0x4d2da8]
push edx
push str._sAskFiles.dat
lea edi, [ebp - 0x140]
call fcn.00417250
mov eax, dword [ebp - 0x1dc]
mov edi, dword [ebp - 0x140]
add esp, 8
push esi
push eax
call fcn.004179d0
add esp, 8
test al, al
je 0x47ae3c
mov ecx, dword [0x4d2da8]
mov edx, dword [ebp - 0x140]
push 0
push ecx
push edx
xor edx, edx
mov ecx, 0x4ab8dc
call fcn.0041c550
add esp, 0xc
test al, al
je 0x47ae3c
lea eax, [ebp - 0x154]
push eax
call fcn.0041b8b0
mov byte [ebp - 4], 0x23
mov ecx, dword [0x4d2da8]
push ecx
push str._sAskSearchAsst.ini
lea edi, [ebp - 0x154]
call fcn.00417250
add esp, 8
cmp byte [ebp - 0x169], 0
mov eax, 0x4abc20
jne 0x47accc
mov eax, 0x4abc10
mov edx, dword [ebp - 0x154]
mov esi, dword [sym.imp.KERNEL32.dll_WritePrivateProfileStringW]
push edx
push eax
push str.SetHomePage
push str.General
call esi
cmp byte [ebp - 0x155], 0
mov eax, 0x4abc20
jne 0x47acf9
mov eax, 0x4abc10
mov ecx, dword [ebp - 0x154]
push ecx
push eax
push str.SetSearch
push str.General
call esi
mov edx, dword [ebp - 0x154]
push edx
push 0
push 0
push 0
call esi
mov esi, dword [ebp - 0x174]
test esi, esi
je 0x47ad2d
push 0x4b
call fcn.00485f80
lea eax, [ebp - 0x148]
push eax
call fcn.0041b8b0
mov byte [ebp - 4], 0x24
mov ecx, dword [0x4d2da8]
push ecx
push str.__sAskSearchAsst.exe___S
lea edi, [ebp - 0x148]
call fcn.00417250
add esp, 8
push 0x44
lea edx, [ebp - 0x2b0]
push 0
push edx
call fcn.0048bb40
xor eax, eax
add esp, 0xc
mov esi, edi
mov dword [ebp - 0x1f0], eax
mov dword [ebp - 0x1ec], eax
mov dword [ebp - 0x1e8], eax
mov dword [ebp - 0x1e4], eax
mov dword [ebp - 0x2b0], 0x44
call fcn.00418d40
lea ecx, [ebp - 0x1f0]
push ecx
lea edx, [ebp - 0x2b0]
push edx
push 0
push 0
push 0
push 0
push 0
push 0
push eax
push 0
call dword [sym.imp.KERNEL32.dll_CreateProcessW]
test eax, eax
je 0x47aded
mov eax, dword [ebp - 0x1f0]
push 0x1388
push eax
mov byte [ebp - 0x175], 1
call dword [sym.imp.KERNEL32.dll_WaitForSingleObject]
mov ecx, dword [ebp - 0x1ec]
mov esi, dword [sym.imp.KERNEL32.dll_CloseHandle]
push ecx
call esi
mov edx, dword [ebp - 0x1f0]
push edx
call esi
mov eax, dword [ebp - 0x148]
mov ecx, dword [eax - 8]
push ecx
push eax
call fcn.00489835
add esp, 8
test eax, eax
js 0x47a099
mov ecx, dword [ebp - 0x148]
cmp eax, dword [ecx - 8]
jg 0x47a099
mov dword [ecx - 0xc], eax
mov edx, dword [ebp - 0x148]
xor ecx, ecx
mov word [edx + eax*2], cx
lea eax, [ebp - 0x148]
call fcn.0041b950
lea eax, [ebp - 0x154]
call fcn.0041b950
lea eax, [ebp - 0x140]
call fcn.0041b950
lea eax, [ebp - 0x1dc]
mov byte [ebp - 4], 0x20
call fcn.00440440
mov eax, dword [0x4ca384]
cmp byte [0x4d291d], 0
mov byte [ebp - 0x169], 0
mov byte [ebp - 0x155], 0
jne 0x47b494
cmp dword [ebp - 0x1b4], 0xffffffff
jne 0x47ae96
mov eax, 0x13
xor edi, edi
call fcn.004182e0
mov dword [ebp - 0x1b4], eax
mov eax, dword [0x4ca384]
cmp eax, 1
je 0x47aea8
cmp byte [ebp - 0x149], 0
je 0x47b494
lea eax, [ebp - 0x154]
push eax
call fcn.0041b8b0
mov eax, 1
xor edi, edi
mov byte [ebp - 4], 0x25
call fcn.004182e0
mov esi, dword [0x4d2da8]
test eax, eax
mov eax, 0xffff
jne 0x47aee1
call fcn.004182e0
push eax
push esi
push str._sSpInstall__04X.exe
jmp 0x47aeed
call fcn.004182e0
push eax
push esi
push str._s_04X_SpInstall.exe
lea edi, [ebp - 0x154]
call fcn.00417250
add esp, 0xc
mov byte [ebp - 0x150], 0
mov ecx, dword [ebp - 0x150]
push ecx
push 0
lea ecx, [ebp - 0x1d8]
mov byte [ebp - 0x1b5], 0
mov dword [ebp - 0x1dc], 0
call fcn.0041c410
lea edx, [ebp - 0x1dc]
push edx
mov byte [ebp - 4], 0x26
mov eax, dword [0x4d2910]
push str.Files
lea ebx, [ebp - 0x148]
mov edx, str.File_SpoPackage
mov dword [ebp - 0x148], 0
call fcn.0041dae0
test al, al
je 0x47b021
mov esi, dword [ebp - 0x148]
test esi, esi
je 0x47b021
lea eax, [ebp - 0x148]
push eax
call fcn.0041b8b0
mov byte [ebp - 4], 0x27
mov ecx, dword [0x4d2da8]
push ecx
push str._sSpData.dat
lea edi, [ebp - 0x148]
call fcn.00417250
mov edx, dword [ebp - 0x148]
add esp, 8
push edx
call dword [sym.imp.KERNEL32.dll_DeleteFileW]
mov eax, dword [ebp - 0x1dc]
mov edi, dword [ebp - 0x148]
push esi
push eax
call fcn.004179d0
add esp, 8
test al, al
je 0x47b004
mov edx, dword [0x4d2da8]
lea ecx, [ebp - 0x20]
push ecx
mov al, 0x70
mov byte [ebp - 0x1e], al
mov eax, dword [ebp - 0x148]
push edx
mov edx, dword [ebp - 0x154]
push eax
mov ecx, str.SpInstall.exe
mov word [ebp - 0x20], 0x7073
mov dword [ebp - 0x1d], 0x616b6361
mov word [ebp - 0x19], 0x6567
mov byte [ebp - 0x17], 0
call fcn.0041c550
add esp, 0xc
mov bl, 1
test al, al
jne 0x47b00a
mov bl, byte [ebp - 0x1b5]
lea eax, [ebp - 0x148]
mov byte [ebp - 4], 0x26
call fcn.0041b950
test bl, bl
jne 0x47b0f9
lea eax, [ebp - 0x1dc]
mov byte [ebp - 4], 0x25
call fcn.00440440
lea eax, [ebp - 0x154]
call fcn.0041b950
lea esi, [ebp - 0x22c]
call fcn.0041d1b0
lea eax, [ebp - 0x1a0]
call fcn.0041b950
lea eax, [ebp - 0x198]
call fcn.0041b950
lea eax, [ebp - 0x1bc]
call fcn.0041b950
lea eax, [ebp - 0x188]
call fcn.0041b950
lea eax, [ebp - 0x1a4]
call fcn.0041b950
lea eax, [ebp - 0x19c]
call fcn.0041b950
lea eax, [ebp - 0x1d0]
mov byte [ebp - 4], 0xb
call fcn.00440440
lea eax, [ebp - 0x180]
call fcn.0041b950
lea eax, [ebp - 0x17c]
call fcn.0041b950
lea eax, [ebp - 0x170]
call fcn.0041b950
lea eax, [ebp - 0x168]
call fcn.0041b950
lea eax, [ebp - 0x15c]
call fcn.0041b950
lea esi, [ebp - 0x194]
call fcn.0041d1b0
lea esi, [ebp - 0x1c8]
call fcn.0041d1b0
lea esi, [ebp - 0x1b0]
call fcn.00473c00
mov eax, 0x11
jmp 0x47bf7c
mov esi, dword [ebp - 0x174]
test esi, esi
je 0x47b10a
push 0x4b
call fcn.00485f80
lea ecx, [ebp - 0x13c]
push ecx
call fcn.0041b8b0
lea edx, [ebp - 0x140]
push edx
mov byte [ebp - 4], 0x28
call fcn.0041b8b0
mov byte [ebp - 4], 0x29
mov edx, dword [ebp - 0x13c]
mov eax, dword [edx - 8]
mov ecx, 1
sub ecx, dword [edx - 4]
sub eax, 0x400
or eax, ecx
jge 0x47b15a
mov eax, 0x400
lea ecx, [ebp - 0x13c]
call fcn.00417470
mov edx, dword [ebp - 0x13c]
push edx
push 0
push 0
push 0x26
push 0
call dword [sym.imp.SHELL32.dll_SHGetFolderPathW]
mov eax, dword [ebp - 0x13c]
mov ecx, dword [eax - 8]
push ecx
push eax
call fcn.00489835
add esp, 8
test eax, eax
js 0x47a099
mov ecx, dword [ebp - 0x13c]
cmp eax, dword [ecx - 8]
jg 0x47a099
mov dword [ecx - 0xc], eax
mov edx, dword [ebp - 0x13c]
xor ecx, ecx
mov word [edx + eax*2], cx
mov edx, dword [ebp - 0x13c]
mov eax, dword [edx - 0xc]
test eax, eax
je 0x47b1d9
lea ecx, [eax - 1]
test ecx, ecx
js 0x47a099
cmp ecx, eax
jg 0x47a099
cmp word [edx + ecx*2], 0x5c
je 0x47b1d9
mov edx, 0x4ab668
lea eax, [ebp - 0x13c]
call fcn.00418b00
lea eax, [ebp - 0x13c]
lea edi, [ebp - 0x140]
call fcn.00417620
mov edx, str.Adverts
mov eax, edi
call fcn.00418b00
lea eax, [ebp - 0x144]
push eax
mov ecx, str.Circle_Developement
call fcn.0041be20
mov byte [ebp - 4], 0x2a
mov ecx, dword [ebp - 0x1b4]
cmp ecx, 0x13
je 0x47b243
cmp ecx, 6
jne 0x47b222
mov ecx, 5
jmp 0x47b22c
test ecx, ecx
je 0x47b22b
cmp ecx, 7
jne 0x47b232
inc ecx
mov dword [ebp - 0x1b4], ecx
lea edx, [ebp - 0x144]
push edx
mov eax, 1
call fcn.00418b70
mov eax, dword [ebp - 0x144]
mov ecx, dword [eax - 0xc]
push ecx
push eax
lea ebx, [ebp - 0x13c]
call fcn.00418f40
mov eax, dword [ebp - 0x13c]
push 0
push eax
call dword [sym.imp.KERNEL32.dll_CreateDirectoryW]
lea ecx, [ebp - 0x160]
push ecx
call fcn.0041b8b0
mov bl, 0x2b
mov byte [ebp - 4], bl
mov edx, dword [ebp - 0x13c]
push edx
push str._sUninstall.exe
lea edi, [ebp - 0x160]
call fcn.00417250
mov eax, dword [ebp - 0x160]
mov ecx, dword [ebp - 0x154]
add esp, 8
push 0
push eax
push ecx
call dword [sym.imp.KERNEL32.dll_CopyFileW]
test eax, eax
je 0x47b311
lea edx, [ebp - 0x148]
push edx
call fcn.0041b8b0
mov byte [ebp - 4], 0x2c
mov eax, dword [ebp - 0x140]
push eax
push str._suninst.exe
lea edi, [ebp - 0x148]
call fcn.00417250
mov ecx, dword [ebp - 0x148]
add esp, 8
push ecx
call dword [sym.imp.KERNEL32.dll_GetFileAttributesW]
cmp eax, 0xffffffff
je 0x47b303
mov edx, dword [ebp - 0x148]
push edx
call dword [sym.imp.KERNEL32.dll_DeleteFileW]
mov eax, dword [ebp - 0x140]
push eax
call dword [sym.imp.KERNEL32.dll_RemoveDirectoryW]
lea eax, [ebp - 0x148]
mov byte [ebp - 4], bl
call fcn.0041b950
mov ecx, dword [ebp - 0x160]
push ecx
call dword [sym.imp.KERNEL32.dll_GetFileAttributesW]
mov ebx, 1
cmp eax, 0xffffffff
je 0x47b32e
mov byte [ebp - 0x169], bl
cmp dword [0x4ca384], ebx
jne 0x47b44a
call fcn.0047d5b0
test al, al
jne 0x47b44a
lea edx, [ebp - 0x148]
push edx
call fcn.0041b8b0
mov byte [ebp - 4], 0x2d
mov eax, dword [ebp - 0x160]
push eax
push str.__s__923ccb1f
lea edi, [ebp - 0x148]
call fcn.00417250
add esp, 8
push 0x44
lea ecx, [ebp - 0x2b0]
push 0
push ecx
call fcn.0048bb40
xor eax, eax
add esp, 0xc
mov esi, edi
mov dword [ebp - 0x1f0], eax
mov dword [ebp - 0x1ec], eax
mov dword [ebp - 0x1e8], eax
mov dword [ebp - 0x1e4], eax
mov dword [ebp - 0x2b0], 0x44
call fcn.00418d40
lea edx, [ebp - 0x1f0]
push edx
lea ecx, [ebp - 0x2b0]
push ecx
push 0
push 0
push 0
push 0
push 0
push 0
push eax
push 0
call dword [sym.imp.KERNEL32.dll_CreateProcessW]
test eax, eax
je 0x47b406
mov edx, dword [ebp - 0x1f0]
push 0x1388
push edx
mov byte [ebp - 0x155], bl
call dword [sym.imp.KERNEL32.dll_WaitForSingleObject]
mov eax, dword [ebp - 0x1ec]
mov esi, dword [sym.imp.KERNEL32.dll_CloseHandle]
push eax
call esi
mov ecx, dword [ebp - 0x1f0]
push ecx
call esi
mov eax, dword [ebp - 0x148]
mov ecx, dword [eax - 8]
push ecx
push eax
call fcn.00489835
add esp, 8
test eax, eax
js 0x47a099
mov ecx, dword [ebp - 0x148]
cmp eax, dword [ecx - 8]
jg 0x47a099
mov dword [ecx - 0xc], eax
mov ecx, dword [ebp - 0x148]
xor edx, edx
mov word [ecx + eax*2], dx
lea eax, [ebp - 0x148]
call fcn.0041b950
lea eax, [ebp - 0x160]
call fcn.0041b950
lea eax, [ebp - 0x144]
call fcn.0041b950
lea eax, [ebp - 0x140]
call fcn.0041b950
lea eax, [ebp - 0x13c]
call fcn.0041b950
lea eax, [ebp - 0x1dc]
mov byte [ebp - 4], 0x25
call fcn.00440440
lea eax, [ebp - 0x154]
mov byte [ebp - 4], 0x20
call fcn.0041b950
mov esi, dword [ebp - 0x174]
xor edi, edi
cmp esi, edi
je 0x47b4a7
push 0x55
call fcn.00485f80
mov dword [ebp - 0x20], edi
mov dword [ebp - 0x1c], edi
mov dword [ebp - 0x18], edi
lea edx, [ebp - 0x20]
push edx
mov eax, str.SOFTWAREMicrosoftWindowsCurrentVersionUninstallMessenger_Plus__Live
mov ecx, reloc.OLEAUT32.dll_SysReAllocString
mov byte [ebp - 4], 0x2e
call fcn.0047d750
test eax, eax
je 0x47b595
lea esi, [ebp - 0x20]
call fcn.0041d1b0
lea esi, [ebp - 0x22c]
call fcn.0041d1b0
lea eax, [ebp - 0x1a0]
call fcn.0041b950
lea eax, [ebp - 0x198]
call fcn.0041b950
lea eax, [ebp - 0x1bc]
call fcn.0041b950
lea eax, [ebp - 0x188]
call fcn.0041b950
lea eax, [ebp - 0x1a4]
call fcn.0041b950
lea eax, [ebp - 0x19c]
call fcn.0041b950
lea eax, [ebp - 0x1d0]
mov byte [ebp - 4], 0xb
call fcn.00440440
lea eax, [ebp - 0x180]
call fcn.0041b950
lea eax, [ebp - 0x17c]
call fcn.0041b950
lea eax, [ebp - 0x170]
call fcn.0041b950
lea eax, [ebp - 0x168]
call fcn.0041b950
lea eax, [ebp - 0x15c]
call fcn.0041b950
lea esi, [ebp - 0x194]
call fcn.0041d1b0
lea esi, [ebp - 0x1c8]
call fcn.0041d1b0
lea esi, [ebp - 0x1b0]
call fcn.00473c00
mov eax, 0xb
jmp 0x47bf7c
lea eax, [ebp - 0x204]
push eax
call fcn.0041b8b0
mov byte [ebp - 4], 0x2f
mov ecx, dword [0x4d2d94]
push ecx
push str.__sUninstall.exe_
lea edi, [ebp - 0x204]
call fcn.00417250
mov esi, dword [ebp - 0x204]
add esp, 8
push str.UninstallString
lea edx, [ebp - 0x20]
push edx
call fcn.00478680
mov esi, dword [ebp - 0x204]
push str.DisplayIcon
lea eax, [ebp - 0x20]
push eax
call fcn.00478680
mov esi, dword [0x4d2d94]
push str.InstallLocation
lea ecx, [ebp - 0x20]
push ecx
call fcn.00478680
push str.Publisher
lea edx, [ebp - 0x20]
push edx
mov esi, 0x4b0790
call fcn.00478680
push str.URLInfoAbout
lea eax, [ebp - 0x20]
push eax
mov esi, str.http:__www.msgpluslive.net
call fcn.00478680
mov eax, dword [0x4d2dc4]
add eax, 0xfffffff0
call fcn.004175b0
lea esi, [eax + 0x10]
mov dword [ebp - 0x1d8], esi
push str.DisplayVersion
lea ecx, [ebp - 0x20]
mov bl, 0x30
push ecx
mov byte [ebp - 4], bl
call fcn.00478680
push str.SponsorInstalled
lea edx, [ebp - 0x20]
push edx
lea ecx, [ebp - 0x234]
mov dword [ebp - 0x234], 0
call fcn.004785e0
cmp byte [0x4d291d], 0
jne 0x47b773
cmp dword [ebp - 0x234], 0
jne 0x47b6b3
cmp byte [ebp - 0x155], 0
jne 0x47b6b3
cmp byte [ebp - 0x149], 0
jne 0x47b6b3
lea esi, [ebp - 0x150]
call fcn.0041b420
mov esi, dword [eax]
push str.DisplayName
lea eax, [ebp - 0x20]
push eax
call fcn.00478680
lea eax, [ebp - 0x150]
jmp 0x47b708
lea ecx, [ebp - 0x144]
push ecx
call fcn.0041b8b0
lea esi, [ebp - 0x150]
mov byte [ebp - 4], 0x31
call fcn.0041b420
mov byte [ebp - 4], 0x32
mov eax, dword [eax]
push eax
push str._s__Sponsor__CiD_
lea edi, [ebp - 0x144]
call fcn.00417250
add esp, 8
mov eax, esi
call fcn.0041b950
mov esi, dword [ebp - 0x144]
push str.DisplayName
lea edx, [ebp - 0x20]
push edx
call fcn.00478680
mov byte [ebp - 4], bl
mov eax, edi
call fcn.0041b950
mov eax, dword [ebp - 0x1b4]
mov edi, dword [ebp - 0x20]
mov esi, dword [sym.imp.ADVAPI32.dll_RegSetValueExW]
push 4
lea ecx, [ebp - 0x150]
push ecx
push 4
push 0
push str.InstallId
push edi
mov dword [ebp - 0x150], eax
call esi
cmp byte [ebp - 0x155], 0
jne 0x47b749
cmp byte [ebp - 0x149], 0
je 0x47b768
push 4
lea edx, [ebp - 0x150]
push edx
push 4
push 0
push str.SponsorInstalled
push edi
mov dword [ebp - 0x150], 1
call esi
cmp byte [0x4d291d], 0
je 0x47b7c8
jmp 0x47b776
mov edi, dword [ebp - 0x20]
cmp byte [ebp - 0x175], 0
je 0x47b7a2
push 4
lea eax, [ebp - 0x150]
push eax
push 4
push 0
push str.PlusNetworkInstalled
push edi
mov dword [ebp - 0x150], 1
call dword [sym.imp.ADVAPI32.dll_RegSetValueExW]
lea esi, [ebp - 0x150]
call fcn.0041b420
mov esi, dword [eax]
push str.DisplayName
lea ecx, [ebp - 0x20]
push ecx
call fcn.00478680
lea eax, [ebp - 0x150]
call fcn.0041b950
push edi
call dword [sym.imp.ADVAPI32.dll_RegFlushKey]
xor ebx, ebx
mov dword [ebp - 0x1ec], ebx
mov dword [ebp - 0x1e8], ebx
mov dword [ebp - 0x1e4], ebx
lea edx, [ebp - 0x1ec]
push edx
mov edx, 0x2001f
mov eax, str.SOFTWAREMicrosoftWindowsCurrentVersionRun
mov ecx, reloc.OLEAUT32.dll_SysReAllocString
call fcn.004191e0
test eax, eax
jne 0x47b81e
mov esi, dword [ebp - 0x1ec]
mov edi, dword [sym.imp.ADVAPI32.dll_RegDeleteValueW]
push str.MessengerPlus2
push esi
call edi
push str.MessengerPlus3
push esi
call edi
mov dword [ebp - 0x240], ebx
mov dword [ebp - 0x23c], ebx
mov dword [ebp - 0x238], ebx
lea eax, [ebp - 0x240]
push eax
mov edx, 0x2001f
mov eax, str.SOFTWAREPatchouMsgPlus2
mov ecx, reloc.OLEAUT32.dll_SysReAllocString
mov byte [ebp - 4], 0x34
call fcn.004191e0
test eax, eax
jne 0x47b9c9
mov dword [ebp - 0x214], ebx
mov dword [ebp - 0x210], ebx
mov dword [ebp - 0x20c], ebx
lea ecx, [ebp - 0x214]
push ecx
mov edx, 0x2001f
mov eax, str.SOFTWAREMicrosoftWindows_NTCurrentVersionWindows
mov ecx, reloc.OLEAUT32.dll_SysReAllocString
mov byte [ebp - 4], 0x35
call fcn.004191e0
test eax, eax
jne 0x47b9af
lea edx, [ebp - 0x148]
push edx
call fcn.0041b8b0
lea eax, [ebp - 0x214]
push eax
lea ebx, [ebp - 0x148]
mov eax, str.AppInit_DLLs
mov byte [ebp - 4], 0x36
call fcn.0041d070
mov edi, ebx
call fcn.0047d600
mov ecx, dword [ebp - 0x148]
push str.msgplusloader.dll
push ecx
call fcn.00489e59
mov ebx, eax
add esp, 8
test ebx, ebx
je 0x47b997
mov edx, dword [ebp - 0x148]
mov eax, dword [edx - 0xc]
xor ecx, ecx
inc eax
mov edx, 2
mul edx
seto cl
neg ecx
or ecx, eax
push ecx
call fcn.00487e0b
mov esi, eax
xor eax, eax
mov word [esi], ax
mov edx, dword [ebp - 0x148]
mov edi, ebx
sub edi, edx
add esp, 4
sar edi, 1
je 0x47b940
mov eax, dword [edx - 0xc]
push edi
push edx
inc eax
push eax
push esi
call fcn.0048b02f
movzx eax, word [esi + edi*2 - 2]
add esp, 0x10
cmp eax, 0x20
je 0x47b933
cmp eax, 0x2c
jne 0x47b934
dec edi
xor ecx, ecx
mov word [esi + edi*2], cx
mov edx, dword [ebp - 0x148]
lea edi, [ebx + 0x22]
mov eax, edi
lea ebx, [eax + 2]
jmp 0x47b950
mov cx, word [eax]
add eax, 2
test cx, cx
jne 0x47b950
sub eax, ebx
sar eax, 1
je 0x47b970
mov edx, dword [edx - 0xc]
push edi
inc edx
push edx
push esi
call fcn.0048b0fc
add esp, 0xc
push str.AppInit_DLLs
lea edx, [ebp - 0x214]
push edx
call fcn.00478680
push esi
call fcn.00488a62
mov eax, dword [ebp - 0x214]
add esp, 4
push eax
call dword [sym.imp.ADVAPI32.dll_RegFlushKey]
lea esi, [ebp - 0x214]
call fcn.004191b0
lea eax, [ebp - 0x148]
call fcn.0041b950
xor ebx, ebx
lea esi, [ebp - 0x240]
call fcn.004191b0
lea esi, [ebp - 0x214]
mov byte [ebp - 4], 0x34
call fcn.0041d1b0
xor ecx, ecx
cmp byte [0x4d289b], cl
setne cl
inc ecx
cmp dword [0x4ca384], 1
mov dword [ebp - 0x164], ecx
jl 0x47ba2a
cmp byte [0x4d291d], 0
jne 0x47ba0d
or dword [ebp - 0x164], 4
cmp byte [ebp - 0x169], 0
je 0x47ba04
or dword [ebp - 0x164], 0x40
cmp byte [ebp - 0x155], 0
jmp 0x47ba1e
or dword [ebp - 0x164], 0x100
cmp byte [ebp - 0x175], 0
je 0x47ba2a
or dword [ebp - 0x164], 0x80
cmp byte [0x4d291c], 0
je 0x47ba3a
or dword [ebp - 0x164], 8
cmp byte [0x4d289a], 0
je 0x47ba4a
or dword [ebp - 0x164], 0x10
mov al, byte [ebp - 0x181]
test al, al
jne 0x47ba5b
or dword [ebp - 0x164], 0x20
cmp byte [0x4d291d], 0
mov dl, byte [ebp - 0x1d1]
mov byte [ebp - 0x162], dl
je 0x47ba7a
or dword [ebp - 0x164], 0x200
mov esi, dword [ebp - 0x22c]
mov byte [ebp - 0x161], 0
cmp esi, ebx
je 0x47babf
test al, al
je 0x47babf
mov eax, dword [ebp - 0x164]
push 4
lea ecx, [ebp - 0x150]
push ecx
push 4
push ebx
push str.SetupCompleted
push esi
mov dword [ebp - 0x150], eax
call dword [sym.imp.ADVAPI32.dll_RegSetValueExW]
push esi
call dword [sym.imp.ADVAPI32.dll_RegFlushKey]
jmp 0x47bdda
lea edx, [ebp - 0x148]
push edx
call fcn.0041b8b0
lea eax, [ebp - 0x160]
push eax
push ebx
push ebx
push 0x23
push ebx
mov byte [ebp - 4], 0x37
call dword [sym.imp.SHELL32.dll_SHGetFolderLocation]
test eax, eax
jne 0x47bbff
lea ecx, [ebp - 0x13c]
push ecx
call fcn.0041b8b0
mov byte [ebp - 4], 0x38
mov edx, dword [ebp - 0x13c]
mov eax, dword [edx - 8]
mov ecx, 1
sub ecx, dword [edx - 4]
sub eax, 0x400
or eax, ecx
jge 0x47bb29
mov eax, 0x400
lea ecx, [ebp - 0x13c]
call fcn.00417470
mov edx, dword [ebp - 0x13c]
push edx
mov edx, dword [ebp - 0x160]
push edx
call dword [sym.imp.SHELL32.dll_SHGetPathFromIDListW]
mov eax, dword [ebp - 0x13c]
mov ecx, dword [eax - 8]
push ecx
push eax
call fcn.00489835
add esp, 8
cmp eax, ebx
jl 0x47a099
mov ecx, dword [ebp - 0x13c]
cmp eax, dword [ecx - 8]
jg 0x47a099
mov dword [ecx - 0xc], eax
mov edx, dword [ebp - 0x13c]
xor ecx, ecx
mov word [edx + eax*2], cx
mov edx, dword [ebp - 0x13c]
mov eax, dword [edx - 0xc]
cmp eax, ebx
je 0x47bbab
lea ecx, [eax - 1]
cmp ecx, ebx
jl 0x47a099
cmp ecx, eax
jg 0x47a099
cmp word [edx + ecx*2], 0x5c
jne 0x47bbab
lea ecx, [eax - 1]
lea eax, [ebp - 0x13c]
push eax
mov eax, 1
call fcn.00418b70
lea eax, [ebp - 0x13c]
lea edi, [ebp - 0x148]
call fcn.00417620
lea ecx, [ebp - 0x144]
push ecx
call dword [sym.imp.SHELL32.dll_SHGetMalloc]
mov eax, dword [ebp - 0x144]
cmp eax, ebx
je 0x47bbf0
mov ecx, dword [ebp - 0x160]
mov edx, dword [eax]
mov edx, dword [edx + 0x14]
push ecx
push eax
call edx
mov eax, dword [ebp - 0x144]
mov ecx, dword [eax]
mov edx, dword [ecx + 8]
push eax
call edx
lea eax, [ebp - 0x13c]
mov byte [ebp - 4], 0x37
call fcn.0041b950
mov eax, dword [ebp - 0x148]
cmp dword [eax - 0xc], ebx
je 0x47bdcb
mov edx, 0x4b0a3c
lea eax, [ebp - 0x148]
call fcn.00418b00
mov ecx, dword [ebp - 0x148]
push ebx
push ecx
call dword [sym.imp.KERNEL32.dll_CreateDirectoryW]
mov ecx, dword [ebp - 0x148]
lea edx, [ebp - 0x13c]
push edx
push ebx
lea eax, [ebp - 0x154]
push eax
push ebx
push ebx
push 4
push 1
push ecx
mov dword [ebp - 0x13c], ebx
mov dword [ebp - 0x154], ebx
call dword [sym.imp.ADVAPI32.dll_GetNamedSecurityInfoW]
test eax, eax
jne 0x47bd54
push 0x44
mov dword [ebp - 0x150], 0x44
call fcn.00487e0b
add esp, 4
lea edx, [ebp - 0x150]
push edx
mov esi, eax
push esi
push ebx
push 0x1b
call dword [sym.imp.ADVAPI32.dll_CreateWellKnownSid]
test eax, eax
je 0x47bd3e
xor eax, eax
mov dword [ebp - 0x260], eax
mov dword [ebp - 0x25c], eax
mov dword [ebp - 0x258], eax
mov dword [ebp - 0x254], eax
mov dword [ebp - 0x250], eax
mov dword [ebp - 0x24c], eax
mov dword [ebp - 0x248], eax
mov dword [ebp - 0x244], eax
push esi
lea eax, [ebp - 0x254]
push eax
mov dword [ebp - 0x260], 0x10000000
mov dword [ebp - 0x25c], 2
mov dword [ebp - 0x258], 3
call dword [sym.imp.ADVAPI32.dll_BuildTrusteeWithSidW]
mov edx, dword [ebp - 0x154]
lea ecx, [ebp - 0x144]
push ecx
push edx
lea eax, [ebp - 0x260]
push eax
push 1
mov dword [ebp - 0x144], ebx
call dword [sym.imp.ADVAPI32.dll_SetEntriesInAclW]
test eax, eax
jne 0x47bd3e
mov ecx, dword [ebp - 0x144]
mov edx, dword [ebp - 0x148]
push ebx
push ecx
push ebx
push ebx
push 4
push 1
push edx
call dword [sym.imp.ADVAPI32.dll_SetNamedSecurityInfoW]
mov eax, dword [ebp - 0x144]
push eax
call dword [sym.imp.KERNEL32.dll_LocalFree]
mov ecx, dword [ebp - 0x13c]
push ecx
call dword [sym.imp.KERNEL32.dll_LocalFree]
push esi
call fcn.00488a62
add esp, 4
lea edx, [ebp - 0x140]
push edx
call fcn.0041b8b0
mov byte [ebp - 4], 0x39
mov eax, dword [ebp - 0x148]
push eax
push str._sSetupInfo.dat
lea edi, [ebp - 0x140]
call fcn.00417250
mov ecx, dword [ebp - 0x140]
add esp, 8
push ebx
push 0x80
push 2
push ebx
push ebx
push 0x40000000
push ecx
call dword [sym.imp.KERNEL32.dll_CreateFileW]
mov esi, eax
cmp esi, 0xffffffff
je 0x47bdc0
push ebx
lea edx, [ebp - 0x150]
push edx
push 4
lea eax, [ebp - 0x164]
push eax
push esi
call dword [sym.imp.KERNEL32.dll_WriteFile]
push esi
call dword [sym.imp.KERNEL32.dll_CloseHandle]
lea eax, [ebp - 0x140]
call fcn.0041b950
lea eax, [ebp - 0x148]
mov byte [ebp - 4], 0x34
call fcn.0041b950
call fcn.0047c7d0
mov esi, dword [ebp - 0x174]
cmp esi, ebx
je 0x47bdfb
push 0x64
call fcn.00485f80
push 0x320
call dword [sym.imp.KERNEL32.dll_Sleep]
lea esi, [ebp - 0x240]
call fcn.0041d1b0
lea esi, [ebp - 0x1ec]
call fcn.0041d1b0
lea eax, [ebp - 0x1d8]
call fcn.0041b950
lea eax, [ebp - 0x204]
call fcn.0041b950
lea esi, [ebp - 0x20]
call fcn.0041d1b0
lea esi, [ebp - 0x22c]
call fcn.0041d1b0
lea eax, [ebp - 0x1a0]
call fcn.0041b950
lea eax, [ebp - 0x198]
call fcn.0041b950
lea eax, [ebp - 0x1bc]
call fcn.0041b950
lea eax, [ebp - 0x188]
call fcn.0041b950
lea eax, [ebp - 0x1a4]
call fcn.0041b950
lea eax, [ebp - 0x19c]
call fcn.0041b950
lea eax, [ebp - 0x1d0]
mov byte [ebp - 4], 0xb
call fcn.00440440
lea eax, [ebp - 0x180]
call fcn.0041b950
lea eax, [ebp - 0x17c]
call fcn.0041b950
lea eax, [ebp - 0x170]
call fcn.0041b950
lea eax, [ebp - 0x168]
call fcn.0041b950
lea eax, [ebp - 0x15c]
call fcn.0041b950
lea esi, [ebp - 0x194]
call fcn.0041d1b0
lea esi, [ebp - 0x1c8]
call fcn.0041d1b0
lea esi, [ebp - 0x1b0]
call fcn.00473c00
mov eax, 1
jmp 0x47bf7c
lea eax, [ebp - 0x1a4]
call fcn.0041b950
lea eax, [ebp - 0x19c]
call fcn.0041b950
lea eax, [ebp - 0x1d0]
mov byte [ebp - 4], 0xb
call fcn.00440440
lea eax, [ebp - 0x180]
call fcn.0041b950
lea eax, [ebp - 0x17c]
call fcn.0041b950
lea eax, [ebp - 0x170]
call fcn.0041b950
lea eax, [ebp - 0x168]
call fcn.0041b950
lea eax, [ebp - 0x15c]
call fcn.0041b950
lea esi, [ebp - 0x194]
call fcn.0041d1b0
lea esi, [ebp - 0x1c8]
call fcn.0041d1b0
lea esi, [ebp - 0x1b0]
call fcn.00473c00
mov eax, 0xf
jmp 0x47bf7c
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 0x14]
xor ecx, ebp
call fcn.00487efe
mov esp, ebp
pop ebp
ret