Function at 0x406430
Capabilities:
Accept command line arguments
Check if file exists
Create process on windows
Get common file path
Move file
Resolve function by parsing pe exports
Resume thread
Start service
Terminate process

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
mov eax, 0x450c
call fcn.0040f470
mov eax, dword [0x426168]
xor eax, esp
mov dword [esp + 0x4508], eax
push ebx
push esi
push edi
call dword [sym.imp.KERNEL32.dll_GetCommandLineW]
mov ebx, eax
call dword [0x426068]
mov eax, dword [0x428980]
mov edx, dword [eax + 0xc]
mov ecx, 0x428980
call edx
mov edi, dword [sym.imp.ole32.dll_CoInitializeEx]
push 0
add eax, 0x10
push 0
mov dword [esp + 0x18], eax
call edi
mov esi, eax
cmp esi, 0x80010106
mov dword [esp + 0x58], esi
jne 0x40649b
push 2
push 0
call edi
mov esi, eax
mov dword [esp + 0x58], eax
xor edi, edi
cmp esi, edi
jge 0x4064b8
push 0xe8
lea eax, [esp + 0x14]
push 0x4211a0
push eax
call fcn.00402a40
add esp, 0xc
push 0x208
lea ecx, [esp + 0x1206]
push edi
push ecx
mov word [esp + 0x120c], di
call fcn.0040e580
add esp, 0xc
push 0x208
lea edx, [esp + 0x1416]
push edi
push edx
mov word [esp + 0x141c], di
call fcn.0040e580
add esp, 0xc
cmp esi, edi
jl 0x4066d7
mov eax, dword [0x422834]
mov cx, word [0x422838]
lea edx, [esp + 0xfe8]
push edx
push ebx
mov byte [esp + 0x1f], 0
mov byte [esp + 0x1e], 0
mov dword [esp + 0xff0], eax
mov word [esp + 0xff4], cx
call fcn.00408fa0
mov edi, eax
add esp, 8
test edi, edi
je 0x4066bb
lea esp, [esp]
push str.accountid
push edi
call fcn.0040d665
add esp, 8
test eax, eax
jne 0x406568
push 0x422854
push edi
call fcn.0040d665
add esp, 8
test eax, eax
je 0x406657
push 0x42286c
push edi
call fcn.0040d665
push 0x422870
push edi
mov ebx, eax
call fcn.0040d665
push 0x208
mov esi, eax
lea eax, [esp + 0x1636]
push 0
push eax
mov word [esp + 0x163c], 0
call fcn.0040e580
add esp, 0x1c
test esi, esi
je 0x4065cb
cmp word [ebx + 2], 0
lea eax, [ebx + 2]
je 0x4065cb
sub esi, ebx
sub esi, 2
sar esi, 1
je 0x4065e6
push esi
push eax
push 0x105
lea ecx, [esp + 0x162c]
push ecx
jmp 0x4065de
push 0xffffffffffffffff
lea edx, [ebx + 2]
push edx
push 0x105
lea eax, [esp + 0x162c]
push eax
call fcn.0040dfc2
add esp, 0x10
sub ebx, edi
sar ebx, 1
push ebx
push 0x422874
push edi
call fcn.0040df1e
add esp, 0xc
test eax, eax
jne 0x406620
push 0xffffffffffffffff
lea ecx, [esp + 0x1624]
push ecx
lea edx, [esp + 0x1208]
push 0x105
push edx
call fcn.0040dfc2
mov byte [esp + 0x27], 1
jmp 0x406654
push ebx
push str.productid
push edi
call fcn.0040df1e
add esp, 0xc
test eax, eax
jne 0x406657
push 0xffffffffffffffff
lea eax, [esp + 0x1624]
push eax
lea ecx, [esp + 0x1418]
push 0x105
push ecx
call fcn.0040dfc2
mov byte [esp + 0x26], 1
add esp, 0x10
lea edx, [esp + 0xfe8]
push edx
push edi
call fcn.00408fa0
mov edi, eax
add esp, 8
test edi, edi
jne 0x406540
cmp byte [esp + 0x17], al
je 0x4066bb
cmp byte [esp + 0x16], al
je 0x4066bb
lea eax, [esp + 0x1200]
push eax
call fcn.0040d201
add esp, 4
test eax, eax
je 0x4066aa
lea ecx, [esp + 0x1410]
push ecx
call fcn.0040d201
add esp, 4
test eax, eax
je 0x4066aa
xor esi, esi
jmp 0x4066d7
push 0x13b
push 0x4211a0
lea edx, [esp + 0x18]
push edx
jmp 0x4066ca
push 0x141
push 0x4211a0
lea eax, [esp + 0x18]
push eax
mov esi, 0x80070057
call fcn.00402a40
add esp, 0xc
xor edi, edi
push 0x208
lea ecx, [esp + 0x1836]
push edi
push ecx
mov word [esp + 0x183c], di
call fcn.0040e580
add esp, 0xc
cmp esi, edi
jl 0x406742
call dword [sym.imp.KERNEL32.dll_GetCurrentProcessId]
push eax
push 0x4211a0
lea edx, [esp + 0x1838]
push 0x105
push edx
call fcn.0040da9b
add esp, 0x10
cmp word [esp + 0x1830], di
jne 0x406742
push 0x150
lea eax, [esp + 0x14]
push 0x4211a0
push eax
mov esi, 0x80070057
call fcn.00402a40
add esp, 0xc
cmp esi, edi
mov dword [esp + 0x54], edi
jl 0x406930
lea ecx, [esp + 0x1830]
push ecx
lea ecx, [esp + 0x24]
call fcn.00408a90
mov ebx, dword [esp + 0x20]
cmp ebx, edi
jne 0x40676c
mov ebx, 0x420b1c
push 0x421164
lea ecx, [esp + 0x40]
call fcn.00402180
cmp ebx, edi
jne 0x406782
xor eax, eax
jmp 0x406796
mov eax, ebx
lea edx, [eax + 2]
mov cx, word [eax]
add eax, 2
cmp cx, di
jne 0x406787
sub eax, edx
sar eax, 1
push eax
push ebx
lea ecx, [esp + 0x44]
call fcn.00402810
lea ecx, [esp + 0x94]
call fcn.00408980
mov eax, dword [esp + 0xac]
mov ecx, dword [esp + 0x3c]
push ecx
neg eax
push 0
sbb eax, eax
lea edx, [esp + 0xb0]
and eax, edx
push 1
push eax
call dword [sym.imp.KERNEL32.dll_CreateEventW]
mov edi, eax
test edi, edi
mov dword [esp + 0x54], edi
jne 0x406808
call dword [sym.imp.KERNEL32.dll_GetLastError]
test eax, eax
jle 0x4067ef
and eax, 0xffff
or eax, 0x80070000
push 0x169
lea edx, [esp + 0x14]
push 0x4211a0
push edx
mov esi, eax
call fcn.00402a40
add esp, 0xc
mov eax, dword [esp + 0xb4]
test eax, eax
je 0x406825
push eax
call dword [sym.imp.KERNEL32.dll_LocalFree]
mov dword [esp + 0xb4], 0
mov eax, dword [esp + 0x3c]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x406845
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov eax, dword [esp + 0x20]
test eax, eax
je 0x40685d
push eax
push 0
call dword [sym.imp.KERNEL32.dll_GetProcessHeap]
push eax
call dword [sym.imp.KERNEL32.dll_HeapFree]
test esi, esi
jl 0x406930
call fcn.00406390
test eax, eax
je 0x4068ed
push eax
push 0
push 0x100000
call dword [sym.imp.KERNEL32.dll_OpenProcess]
mov ebx, eax
test ebx, ebx
jne 0x4068af
call dword [sym.imp.KERNEL32.dll_GetLastError]
test eax, eax
jle 0x406896
and eax, 0xffff
or eax, 0x80070000
push 0x17e
lea ecx, [esp + 0x14]
push 0x4211a0
push ecx
mov esi, eax
call fcn.00402a40
add esp, 0xc
test esi, esi
jl 0x406930
push edi
call dword [sym.imp.KERNEL32.dll_SetEvent]
test eax, eax
je 0x406903
push 0x927c0
push ebx
call dword [sym.imp.KERNEL32.dll_WaitForSingleObject]
test eax, eax
je 0x406930
jle 0x4068da
and eax, 0xffff
or eax, 0x80070000
push 0x19f
mov esi, eax
push 0x4211a0
lea eax, [esp + 0x18]
push eax
jmp 0x406928
push 0x184
push 0x4211a0
lea edx, [esp + 0x18]
mov esi, 0x80070490
push edx
jmp 0x406928
call dword [sym.imp.KERNEL32.dll_GetLastError]
test eax, eax
jle 0x406917
and eax, 0xffff
or eax, 0x80070000
push 0x1a5
push 0x4211a0
lea ecx, [esp + 0x18]
mov esi, eax
push ecx
call fcn.00402a40
add esp, 0xc
xor edi, edi
push 0x208
lea edx, [esp + 0xff6]
push edi
push edx
mov word [esp + 0xffc], di
call fcn.0040e580
add esp, 0xc
cmp esi, edi
jl 0x40698f
lea eax, [esp + 0xff0]
push 0x104
push eax
call fcn.0040a070
add esp, 8
cmp word [esp + 0xff0], di
jne 0x40698f
push 0x1b5
lea ecx, [esp + 0x14]
push 0x4211a0
push ecx
mov esi, 0x8000ffff
call fcn.00402a40
add esp, 0xc
push 0x410
lea edx, [esp + 0x3ade]
push edi
push edx
mov word [esp + 0x3ae4], di
call fcn.0040e580
add esp, 0xc
cmp esi, edi
jl 0x406a69
push 0xffffffffffffffff
lea eax, [esp + 0xff4]
push eax
lea ecx, [esp + 0x3ae0]
push 0x209
push ecx
call fcn.0040dfc2
add esp, 0xc
mov ecx, esp
mov dword [esp + 0x28], esp
push str.package.dat
call fcn.00402180
push ecx
lea edx, [esp + 0x1208]
mov ecx, esp
mov dword [esp + 0x2c], esp
push edx
call fcn.00402180
lea eax, [esp + 0x28]
push eax
call fcn.00401aa0
mov ecx, dword [esp + 0x2c]
add esp, 0xc
push ecx
lea edx, [esp + 0x3adc]
push edx
call dword [sym.imp.SHLWAPI.dll_PathAppendW]
test eax, eax
jne 0x406a49
call dword [sym.imp.KERNEL32.dll_GetLastError]
cmp eax, edi
jle 0x406a30
and eax, 0xffff
or eax, 0x80070000
push 0x1d3
mov esi, eax
lea eax, [esp + 0x14]
push 0x4211a0
push eax
call fcn.00402a40
add esp, 0xc
mov eax, dword [esp + 0x20]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x406a69
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
cmp esi, edi
mov dword [esp + 0x20], edi
jl 0x406b28
push edi
lea ecx, [esp + 0xfec]
call fcn.0040b200
lea ecx, [esp + 0x3ad8]
push ecx
lea ecx, [esp + 0xfec]
call fcn.0040af10
mov esi, eax
cmp esi, edi
jge 0x406ab5
push 0x1e1
lea edx, [esp + 0x14]
push 0x4211a0
push edx
call fcn.00402a40
add esp, 0xc
jmp 0x406b1c
lea eax, [esp + 0x1c]
push eax
push str._packagename
lea ecx, [esp + 0xff0]
mov dword [esp + 0x24], edi
call fcn.0040b560
test al, al
je 0x406af7
mov eax, dword [esp + 0x1c]
cmp eax, edi
je 0x406ae9
mov eax, dword [eax]
push eax
lea ecx, [esp + 0x24]
call fcn.004086b0
jmp 0x406b13
xor eax, eax
push eax
lea ecx, [esp + 0x24]
call fcn.004086b0
jmp 0x406b13
push 0x1f3
lea ecx, [esp + 0x14]
push 0x4211a0
push ecx
mov esi, 0x80070490
call fcn.00402a40
add esp, 0xc
lea ecx, [esp + 0x1c]
call fcn.00407c70
lea ecx, [esp + 0xfe8]
call fcn.0040ac90
push 0x410
lea edx, [esp + 0x30ae]
push edi
push edx
mov word [esp + 0x30b4], di
call fcn.0040e580
add esp, 0xc
push 0x410
lea eax, [esp + 0x267e]
push edi
push eax
mov word [esp + 0x2684], di
call fcn.0040e580
add esp, 0xc
cmp esi, edi
mov byte [esp + 0x16], 0
mov dword [esp + 0x1c], edi
mov byte [esp + 0x17], 0
jl 0x406cac
push 0xffffffffffffffff
lea ecx, [esp + 0xff4]
push ecx
lea edx, [esp + 0x30b0]
push 0x209
push edx
call fcn.0040dfc2
push 0xffffffffffffffff
lea eax, [esp + 0x1004]
push eax
lea ecx, [esp + 0x2690]
push 0x209
push ecx
call fcn.0040dfc2
mov edx, dword [0x428980]
mov eax, dword [edx + 0xc]
add esp, 0x20
mov ecx, 0x428980
call eax
lea ecx, [esp + 0x1410]
add eax, 0x10
push ecx
mov dword [esp + 0x30], eax
call fcn.0040d201
add esp, 4
push eax
lea edx, [esp + 0x1204]
push edx
call fcn.0040d201
add esp, 4
push eax
lea eax, [esp + 0x34]
push str.upd__d__d_.exe
push eax
call fcn.00402a40
mov ecx, dword [esp + 0x30]
add esp, 0x10
push ecx
lea edx, [esp + 0x30ac]
push edx
call dword [sym.imp.SHLWAPI.dll_PathAppendW]
cmp eax, edi
mov ebx, dword [esp + 0x2c]
je 0x406c63
push ebx
lea eax, [esp + 0x267c]
push eax
call dword [sym.imp.SHLWAPI.dll_PathAppendW]
cmp eax, edi
je 0x406c63
lea ecx, [esp + 0x30a8]
push ecx
call dword [sym.imp.SHLWAPI.dll_PathFileExistsW]
cmp eax, edi
je 0x406c63
push 1
lea edx, [esp + 0x267c]
push edx
lea eax, [esp + 0x30b0]
push eax
call dword [sym.imp.KERNEL32.dll_MoveFileExW]
cmp eax, edi
je 0x406c63
mov byte [esp + 0x16], 1
jmp 0x406c90
call dword [sym.imp.KERNEL32.dll_GetLastError]
cmp eax, edi
jle 0x406c77
and eax, 0xffff
or eax, 0x80070000
push 0x239
lea ecx, [esp + 0x14]
push 0x4211a0
push ecx
mov esi, eax
call fcn.00402a40
add esp, 0xc
lea eax, [ebx - 0x10]
lea edx, [eax + 0xc]
or ecx, 0xffffffff
lock xadd dword [edx], ecx
dec ecx
test ecx, ecx
jg 0x406cac
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov edx, dword [0x428980]
mov eax, dword [edx + 0xc]
mov ecx, 0x428980
mov dword [esp + 0x30], edi
call eax
mov edx, dword [0x428980]
add eax, 0x10
mov dword [esp + 0x5c], eax
mov eax, dword [edx + 0xc]
mov ecx, 0x428980
call eax
push 0x618
lea ecx, [esp + 0x1a46]
add eax, 0x10
push edi
push ecx
mov dword [esp + 0x38], eax
mov word [esp + 0x1a4c], di
call fcn.0040e580
add esp, 0xc
push 0x616
lea edx, [esp + 0x2066]
push edi
push edx
mov word [esp + 0x206c], di
call fcn.0040e580
add esp, 0xc
push 0x616
lea eax, [esp + 0x34c6]
push edi
push eax
mov word [esp + 0x34cc], di
call fcn.0040e580
add esp, 0xc
cmp esi, edi
jl 0x406f1a
push 0x30d
lea ecx, [esp + 0x1a44]
push ecx
call dword [sym.imp.KERNEL32.dll_GetSystemDirectoryW]
push str.IsWow64Process
push str.kernel32
mov dword [esp + 0x20], edi
call dword [sym.imp.KERNEL32.dll_GetModuleHandleW]
push eax
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
mov esi, eax
cmp esi, edi
je 0x406d86
lea edx, [esp + 0x18]
push edx
call dword [sym.imp.KERNEL32.dll_GetCurrentProcess]
push eax
call esi
test eax, eax
je 0x406d9a
cmp dword [esp + 0x18], edi
je 0x406d9a
lea ebx, [esp + 0x1a40]
call fcn.00405e90
xor edi, edi
push ecx
mov ecx, esp
mov dword [esp + 0x28], esp
push 0x420b1c
call fcn.00402180
push ecx
lea eax, [esp + 0x1208]
mov ecx, esp
mov dword [esp + 0x2c], esp
push eax
call fcn.00402180
lea ecx, [esp + 0x30]
push ecx
call fcn.00401aa0
mov edx, dword [esp + 0x34]
mov ebx, dword [sym.imp.SHLWAPI.dll_PathAppendW]
add esp, 0xc
push edx
lea eax, [esp + 0x1a44]
push eax
call ebx
lea ecx, [esp + 0x5c]
push ecx
push ecx
lea edx, [esp + 0x1a48]
mov ecx, esp
mov dword [esp + 0x2c], esp
push edx
call fcn.00402180
lea ecx, [esp + 0x34]
lea edx, [esp + 0x38]
call fcn.004057f0
mov esi, eax
add esp, 8
cmp esi, edi
setge byte [esp + 0x17]
cmp esi, edi
jge 0x406e2e
push 0x269
lea eax, [esp + 0x14]
push 0x4211a0
push eax
call fcn.00402a40
add esp, 0xc
mov eax, dword [esp + 0x28]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x406e4e
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
cmp esi, edi
jl 0x406f1a
push 0xffffffffffffffff
lea ecx, [esp + 0x1a44]
push ecx
lea edx, [esp + 0x2068]
push 0x30c
push edx
call fcn.0040dfc2
push 0xffffffffffffffff
lea eax, [esp + 0x1a54]
push eax
lea ecx, [esp + 0x34d8]
push 0x30c
push ecx
call fcn.0040dfc2
add esp, 0x20
push str.Config.dat
lea edx, [esp + 0x2064]
push edx
call ebx
push str.SavedConfig.dat
lea eax, [esp + 0x34c4]
push eax
call ebx
lea ecx, [esp + 0x2060]
push ecx
call dword [sym.imp.SHLWAPI.dll_PathFileExistsW]
test eax, eax
jne 0x406ecd
mov esi, 0x80070490
push 0x284
jmp 0x406f08
push 1
lea eax, [esp + 0x34c4]
push eax
lea ecx, [esp + 0x2068]
push ecx
call dword [sym.imp.KERNEL32.dll_MoveFileExW]
cmp eax, edi
mov dword [esp + 0x1c], eax
jne 0x406f1a
call dword [sym.imp.KERNEL32.dll_GetLastError]
cmp eax, edi
jle 0x406f01
and eax, 0xffff
or eax, 0x80070000
mov esi, eax
push 0x293
lea edx, [esp + 0x14]
push 0x4211a0
push edx
call fcn.00402a40
add esp, 0xc
xor eax, eax
push 0x40
mov dword [esp + 0x4c], eax
mov dword [esp + 0x50], eax
mov dword [esp + 0x54], eax
lea eax, [esp + 0xc0]
push edi
push eax
mov dword [esp + 0x50], edi
call fcn.0040e580
mov ebx, dword [sym.imp.OLEAUT32.dll_SysReAllocString]
add esp, 0xc
cmp esi, edi
mov dword [esp + 0xb8], 0x44
jl 0x4071f9
lea ecx, [esp + 0x44]
push ecx
lea edx, [esp + 0xbc]
push edx
push 0
push 0
push 0x24
push 0
push 0
push 0
push 0
lea eax, [esp + 0x269c]
push eax
call dword [sym.imp.KERNEL32.dll_CreateProcessW]
test eax, eax
jne 0x406fb2
call dword [sym.imp.KERNEL32.dll_GetLastError]
test eax, eax
jle 0x406f99
and eax, 0xffff
or eax, 0x80070000
push 0x2ad
lea ecx, [esp + 0x14]
push 0x4211a0
push ecx
mov esi, eax
call fcn.00402a40
add esp, 0xc
test esi, esi
jl 0x4071f9
mov edx, dword [esp + 0x48]
push edx
call dword [sym.imp.KERNEL32.dll_ResumeThread]
cmp eax, 0xffffffff
jne 0x406ff7
call dword [sym.imp.KERNEL32.dll_GetLastError]
test eax, eax
jle 0x406fde
and eax, 0xffff
or eax, 0x80070000
push 0x2b8
mov esi, eax
lea eax, [esp + 0x14]
push 0x4211a0
push eax
call fcn.00402a40
add esp, 0xc
test esi, esi
jl 0x4071f9
mov ecx, dword [esp + 0x44]
push 0x927c0
push ecx
call dword [sym.imp.KERNEL32.dll_WaitForSingleObject]
test eax, eax
je 0x407038
jle 0x40701f
and eax, 0xffff
or eax, 0x80070000
push 0x2c4
lea edx, [esp + 0x14]
push 0x4211a0
push edx
mov esi, eax
call fcn.00402a40
add esp, 0xc
test esi, esi
jl 0x4071f9
mov ecx, dword [esp + 0x44]
lea eax, [esp + 0x18]
push eax
push ecx
mov dword [esp + 0x20], 0
call dword [sym.imp.KERNEL32.dll_GetExitCodeProcess]
test eax, eax
jne 0x407089
call dword [sym.imp.KERNEL32.dll_GetLastError]
test eax, eax
jle 0x407070
and eax, 0xffff
or eax, 0x80070000
push 0x2d2
lea edx, [esp + 0x14]
push 0x4211a0
push edx
mov esi, eax
call fcn.00402a40
add esp, 0xc
mov eax, dword [esp + 0x18]
test eax, eax
je 0x4070b6
jle 0x40709d
and eax, 0xffff
or eax, 0x80070000
push 0x2d8
mov esi, eax
lea eax, [esp + 0x14]
push 0x4211a0
push eax
call fcn.00402a40
add esp, 0xc
test esi, esi
jl 0x4071f9
push ecx
lea edx, [esp + 0x2064]
mov ecx, esp
mov dword [esp + 0x28], esp
push edx
call fcn.00402180
push ecx
lea eax, [esp + 0x34c8]
mov ecx, esp
mov dword [esp + 0x2c], esp
push eax
call fcn.00402180
call fcn.00405fd0
mov esi, eax
add esp, 8
test esi, esi
jge 0x407110
push 0x2e6
lea ecx, [esp + 0x14]
push 0x4211a0
push ecx
call fcn.00402a40
add esp, 0xc
jmp 0x4071f9
lea edx, [esp + 0x34c0]
push edx
call fcn.00408f80
add esp, 4
push 0
push 1
push 0
push 0
push 0
lea ecx, [esp + 0x78]
call fcn.0040c3c0
lea eax, [esp + 0x2060]
push eax
lea ecx, [esp + 0x68]
call fcn.0040af10
mov esi, eax
test esi, esi
jge 0x407154
push 0x2f5
jmp 0x4071d6
push 0x422928
call ebx
mov edi, eax
test edi, edi
jne 0x40716b
push 0x8007000e
call fcn.00401000
push 0x42292c
call ebx
mov esi, eax
test esi, esi
jne 0x407182
push 0x8007000e
call fcn.00401000
push edi
push esi
push str._update
lea ecx, [esp + 0x70]
call fcn.0040ba30
push esi
mov esi, dword [sym.imp.OLEAUT32.dll_SysStringLen]
mov bl, al
call esi
push edi
call esi
test bl, bl
jne 0x4071ba
push 0x303
push 0x4211a0
lea edx, [esp + 0x18]
mov esi, 0x80070490
push edx
jmp 0x4071e0
lea eax, [esp + 0x2060]
push eax
lea ecx, [esp + 0x68]
call fcn.0040acb0
mov esi, eax
test esi, esi
jge 0x4071e8
push 0x30d
push 0x4211a0
lea ecx, [esp + 0x18]
push ecx
call fcn.00402a40
add esp, 0xc
lea ecx, [esp + 0x64]
call fcn.0040c1c0
test esi, esi
jge 0x4074fa
cmp byte [esp + 0x16], 0
mov edi, dword [sym.imp.KERNEL32.dll_MoveFileW]
je 0x407218
lea edx, [esp + 0x30a8]
push edx
lea eax, [esp + 0x267c]
push eax
call edi
cmp byte [esp + 0x17], 0
je 0x40722c
mov eax, dword [esp + 0x30]
test eax, eax
je 0x40722c
call fcn.00405750
cmp dword [esp + 0x1c], 0
je 0x40728b
lea ecx, [esp + 0x2060]
push ecx
lea edx, [esp + 0x34c4]
push edx
call edi
test eax, eax
je 0x40728b
push 0
push 1
push 0
push 0
push 0
lea ecx, [esp + 0x78]
call fcn.0040c3c0
push 0
push 1
push 0
lea eax, [esp + 0x206c]
push eax
push 1
lea ecx, [esp + 0x78]
call fcn.0040c160
test al, al
je 0x407282
lea ecx, [esp + 0x64]
call fcn.0040bd60
lea ecx, [esp + 0x64]
call fcn.0040c1c0
cmp word [esp + 0x1a40], 0
je 0x4074fa
cmp word [esp + 0x1200], 0
je 0x4074fa
cmp word [esp + 0x1410], 0
je 0x4074fa
lea ecx, [esp + 0x1a40]
push ecx
lea ecx, [esp + 0x20]
call fcn.00402180
lea eax, [esp + 0x1c]
call fcn.00407900
push str.Cache_
lea ecx, [esp + 0x20]
call fcn.00402230
mov edx, str.Default
lea ecx, [esp + 0x100]
call fcn.00403470
mov ecx, dword [esp + 0x1c]
lea edx, [esp + 0x100]
call fcn.00403a10
lea edx, [esp + 0x18]
push edx
call fcn.0040a850
mov eax, dword [0x428980]
mov edx, dword [eax + 0xc]
add esp, 4
mov ecx, 0x428980
call edx
add eax, 0x10
mov dword [esp + 0x28], eax
lea eax, [esp + 0x34]
push eax
mov ecx, str.Updater.cpp
call fcn.00407870
lea ecx, [esp + 0x38]
push ecx
mov ecx, str.wWinMain
mov edi, eax
call fcn.00407870
mov edx, dword [esp + 0x10]
mov ecx, dword [edi]
push edx
mov edx, dword [eax]
push ecx
push edx
lea eax, [esp + 0x34]
push str._s_at__s__s_
push eax
call fcn.00402a40
mov eax, dword [esp + 0x4c]
add eax, 0xfffffff0
add esp, 0x14
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x407381
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov eax, dword [esp + 0x34]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x4073a1
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
push 0x616
lea ecx, [esp + 0x2a96]
push 0
push ecx
mov word [esp + 0x2a9c], 0
call fcn.0040e580
add esp, 0xc
cmp word [esp + 0xff0], 0
je 0x4073fa
push 0xffffffffffffffff
lea edx, [esp + 0xff4]
push edx
lea eax, [esp + 0x2a98]
push 0x30c
push eax
call fcn.0040dfc2
add esp, 0x10
lea ecx, [esp + 0x2a90]
push ecx
call dword [sym.imp.SHLWAPI.dll_PathStripPathW]
lea edx, [esp + 0x1410]
push edx
lea ecx, [esp + 0x28]
call fcn.004011e0
mov ebx, dword [eax]
mov eax, dword [esp + 0x18]
push eax
lea ecx, [esp + 0x64]
call fcn.004011e0
mov ecx, dword [esp + 0x18]
mov edi, dword [eax]
push ecx
lea ecx, [esp + 0x3c]
call fcn.004011e0
mov edx, dword [eax]
push ecx
lea eax, [esp + 0x2a94]
mov ecx, esp
mov dword [esp + 0xfec], esp
push eax
mov dword [esp + 0x3c], edx
call fcn.00402180
mov ecx, dword [esp + 0x38]
push ebx
push edi
push ecx
push ecx
lea edx, [esp + 0x3c]
mov ecx, esp
mov dword [esp + 0xffc], esp
push edx
call fcn.00402150
push esi
lea ecx, [esp + 0x118]
call fcn.00405a60
mov eax, dword [esp + 0x50]
mov esi, dword [sym.imp.OLEAUT32.dll_SysStringLen]
add esp, 0x18
push eax
call esi
mov ecx, dword [esp + 0x60]
push ecx
call esi
mov edx, dword [esp + 0x24]
push edx
call esi
mov eax, dword [esp + 0x28]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x4074ae
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov eax, dword [esp + 0x18]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x4074ce
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
lea ecx, [esp + 0x100]
call fcn.00403700
mov eax, dword [esp + 0x1c]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x4074fa
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
push 0
push 1
push 0
push 0
push 0
lea ecx, [esp + 0x90]
call fcn.0040c3c0
lea ecx, [esp + 0x2060]
push ecx
lea ecx, [esp + 0x80]
call fcn.0040af10
test eax, eax
jl 0x407586
mov eax, dword [esp + 0x2c]
test eax, eax
jne 0x407844
mov dword [esp + 0x18], eax
lea edx, [esp + 0x18]
push edx
lea ecx, [esp + 0x80]
call fcn.0040bbb0
mov esi, eax
mov eax, dword [esp + 0x18]
push eax
call dword [sym.imp.OLEAUT32.dll_SysStringLen]
test esi, esi
jl 0x407586
lea ecx, [esp + 0x1a40]
push ecx
lea ecx, [esp + 0x80]
call fcn.0040c530
test eax, eax
jge 0x407586
lea edx, [esp + 0x2060]
push edx
lea ecx, [esp + 0x80]
call fcn.0040acb0
push ecx
mov ecx, esp
mov dword [esp + 0xfec], esp
push str.svcboot.dll
xor esi, esi
call fcn.00402180
push ecx
lea eax, [esp + 0x1208]
mov ecx, esp
mov dword [esp + 0xff0], esp
push eax
call fcn.00402180
lea ecx, [esp + 0x48]
push ecx
call fcn.00401aa0
mov edx, dword [esp + 0x4c]
add esp, 0xc
push 0xffffffffffffffff
push edx
lea eax, [esp + 0x3ef8]
push 0x30d
push eax
call fcn.0040dfc2
lea ecx, [esp + 0x3f00]
push 0x2e
push ecx
call fcn.0040d2b9
add esp, 0x18
test eax, eax
je 0x4075f2
mov word [eax], si
push 0xf003f
push 0
push 0
call dword [sym.imp.ADVAPI32.dll_OpenSCManagerW]
mov ebx, dword [sym.imp.KERNEL32.dll_GetLastError]
mov edi, eax
test edi, edi
mov dword [esp + 0x18], edi
jne 0x407627
call ebx
test eax, eax
jle 0x407621
and eax, 0xffff
or eax, 0x80070000
mov esi, eax
test esi, esi
jl 0x407698
push 0x10
lea edx, [esp + 0x3ef4]
push edx
push edi
call dword [sym.imp.ADVAPI32.dll_OpenServiceW]
mov edi, eax
test edi, edi
jne 0x407650
call ebx
test eax, eax
jle 0x40764e
and eax, 0xffff
or eax, 0x80070000
mov esi, eax
test esi, esi
jl 0x407675
push 0
push 0
push edi
call dword [sym.imp.ADVAPI32.dll_StartServiceW]
test eax, eax
jne 0x407675
call ebx
test eax, eax
jle 0x407673
and eax, 0xffff
or eax, 0x80070000
mov esi, eax
test edi, edi
mov ebx, dword [sym.imp.ADVAPI32.dll_CloseServiceHandle]
je 0x407682
push edi
call ebx
cmp dword [esp + 0x18], 0
je 0x407690
mov eax, dword [esp + 0x18]
push eax
call ebx
test esi, esi
jge 0x407740
push 0x616
lea ecx, [esp + 0x2a96]
push 0
push ecx
mov word [esp + 0x2a9c], 0
call fcn.0040e580
add esp, 0xc
push 0xffffffffffffffff
lea edx, [esp + 0x1a44]
push edx
lea eax, [esp + 0x2a98]
push 0x30c
push eax
call fcn.0040dfc2
mov ecx, dword [esp + 0x50]
add esp, 0x10
push ecx
lea edx, [esp + 0x2a94]
push edx
call dword [sym.imp.SHLWAPI.dll_PathAppendW]
lea eax, [esp + 0x1a40]
push eax
lea ecx, [esp + 0x1c]
call fcn.00402180
lea ecx, [esp + 0x18]
push ecx
push ecx
lea edx, [esp + 0x2a98]
mov ecx, esp
mov dword [esp + 0xff0], esp
push edx
call fcn.00402180
call fcn.00401910
mov eax, dword [esp + 0x20]
add eax, 0xfffffff0
add esp, 8
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x407740
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov esi, dword [esp + 0x30]
xor edi, edi
cmp esi, edi
je 0x40774f
call fcn.00405a10
mov eax, dword [esp + 0x54]
cmp eax, edi
mov esi, dword [sym.imp.KERNEL32.dll_CloseHandle]
je 0x407760
push eax
call esi
mov eax, dword [esp + 0x48]
cmp eax, edi
je 0x407773
push eax
call esi
mov dword [esp + 0x48], edi
mov dword [esp + 0x50], edi
mov eax, dword [esp + 0x44]
cmp eax, edi
je 0x40778b
push edi
push eax
call dword [sym.imp.KERNEL32.dll_TerminateProcess]
mov dword [esp + 0x44], edi
mov dword [esp + 0x4c], edi
cmp dword [esp + 0x58], edi
jl 0x407797
call dword [sym.imp.ole32.dll_CoUninitialize]
mov eax, dword [esp + 0x40]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x4077b7
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
lea ecx, [esp + 0x7c]
call fcn.0040c1c0
mov eax, dword [esp + 0x2c]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x4077e0
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov eax, dword [esp + 0x5c]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x407800
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov ecx, dword [esp + 0x20]
push ecx
call dword [sym.imp.OLEAUT32.dll_SysStringLen]
mov eax, dword [esp + 0x10]
add eax, 0xfffffff0
lea edx, [eax + 0xc]
or ecx, 0xffffffff
lock xadd dword [edx], ecx
dec ecx
test ecx, ecx
jg 0x40782b
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov ecx, dword [esp + 0x4514]
pop edi
pop esi
pop ebx
xor ecx, esp
xor eax, eax
call fcn.0040d2aa
mov esp, ebp
pop ebp
ret 0x10
push eax
call dword [sym.imp.OLEAUT32.dll_SysReAllocString]
test eax, eax
mov dword [esp + 0x18], eax
jne 0x407538
push 0x8007000e
call fcn.00401000
int3