Function at 0x403317
Capabilities:
Copy file

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x660
mov eax, dword [0x41a0a0]
xor eax, ebp
mov dword [ebp - 8], eax
cmp dword [ebp + 8], 3
push ebx
push esi
push edi
mov ebx, ecx
jge 0x40334e
push str.Not_enough_command_line_arguments_to_execute_a_service_command
call fcn.0040101c
mov esi, eax
call fcn.004040f1
pop ecx
xor eax, eax
jmp 0x4035c0
lea eax, [ebp - 0x64c]
push eax
mov dword [ebp - 0x654], 0x416550
call dword [sym.imp.ole32.dll_CoCreateGuid]
test eax, eax
js 0x40337d
lea eax, [ebp - 0x654]
push eax
lea eax, [ebp - 0x64c]
push eax
call dword [sym.imp.RPCRT4.dll_UuidToStringW]
push dword [ebp - 0x654]
push dword [ebx + 8]
push str.Executing_service_command__ls__ID:__ls
call fcn.0040101c
mov esi, eax
call fcn.004040cc
add esp, 0xc
lea eax, [ebp - 0x654]
push eax
call dword [sym.imp.RPCRT4.dll_RpcStringFreeW]
and dword [ebp - 0x650], 0
push str.software_update
push dword [ebx + 8]
call dword [sym.imp.KERNEL32.dll_lstrcmpiW]
test eax, eax
jne 0x40357c
mov esi, dword [ebx + 0xc]
mov edi, 0x208
push edi
push eax
mov word [ebp - 0x21c], ax
lea eax, [ebp - 0x21a]
push eax
mov dword [ebp - 0x65c], esi
call fcn.004056c0
add esp, 0xc
lea eax, [ebp - 0x21c]
call fcn.004031b4
mov dword [ebp - 0x650], eax
test eax, eax
je 0x403445
lea eax, [ebp - 0x21c]
push eax
push esi
push str.Passed_in_path:__ls__Using_this_path_for_updating:__ls.
call fcn.0040101c
mov esi, eax
call fcn.004040cc
add esp, 0xc
lea ecx, [ebp - 0x21c]
call fcn.0040323e
push 0
lea eax, [ebp - 0x21c]
push eax
push dword [ebp - 0x65c]
call dword [sym.imp.KERNEL32.dll_CopyFileW]
mov dword [ebp - 0x650], eax
test eax, eax
jne 0x403495
call dword [sym.imp.KERNEL32.dll_GetLastError]
push eax
push str.Could_not_copy_path_to_secure_location.____d_
call fcn.0040101c
mov esi, eax
call fcn.004040f1
cmp dword [ebp + 8], 4
pop ecx
pop ecx
jle 0x403564
mov eax, ebx
mov ecx, dword [eax + 0x10]
push 0x31
call fcn.00404672
pop ecx
test eax, eax
jne 0x403564
push str.Could_not_write_update.status_could_not_copy_updater_error
call fcn.0040101c
mov esi, eax
call fcn.004040f1
pop ecx
jmp 0x403564
lea eax, [ebp - 0x21c]
mov dword [ebx + 0xc], eax
xor eax, eax
push edi
push eax
mov word [ebp - 0x42c], ax
lea eax, [ebp - 0x42a]
push eax
call fcn.004056c0
add esp, 0xc
xor eax, eax
push edi
push eax
mov word [ebp - 0x63c], ax
lea eax, [ebp - 0x63a]
push eax
call fcn.004056c0
add esp, 0xc
mov esi, str.updater.ini
lea eax, [ebp - 0x21c]
push esi
push eax
lea edi, [ebp - 0x63c]
call fcn.00404198
pop ecx
pop ecx
test eax, eax
je 0x403543
push esi
push dword [ebp - 0x65c]
lea edi, [ebp - 0x42c]
call fcn.00404198
pop ecx
pop ecx
test eax, eax
je 0x403543
push 0
lea eax, [ebp - 0x63c]
push eax
mov eax, edi
push eax
call dword [sym.imp.KERNEL32.dll_CopyFileW]
test eax, eax
jne 0x403543
call dword [sym.imp.KERNEL32.dll_GetLastError]
push eax
lea eax, [ebp - 0x63c]
push eax
mov eax, edi
push eax
push str.Could_not_copy_updater.ini_from:__ls_to__ls.____d_
call fcn.0040101c
mov esi, eax
call fcn.004040f1
add esp, 0x10
mov eax, dword [ebp + 8]
add eax, 0xfffffffd
push eax
lea ecx, [ebx + 0xc]
call fcn.00402cf2
pop ecx
lea ecx, [ebp - 0x21c]
mov dword [ebp - 0x650], eax
call fcn.0040323e
mov eax, ebx
push dword [eax + 8]
push str.Service_command__ls_complete.
call fcn.0040101c
mov esi, eax
call fcn.004040cc
jmp 0x403590
push dword [ebx + 8]
push str.Service_command_not_recognized:__ls.
call fcn.0040101c
mov esi, eax
call fcn.004040f1
cmp dword [ebp - 0x650], 0
pop ecx
pop ecx
mov eax, str.Success
jne 0x4035a5
mov eax, str.Failure
push eax
push dword [ebx + 4]
push str.service_command__ls_complete_with_result:__ls.
call fcn.0040101c
mov esi, eax
call fcn.004040cc
xor eax, eax
add esp, 0xc
inc eax
mov ecx, dword [ebp - 8]
pop edi
pop esi
xor ecx, ebp
pop ebx
call fcn.00404ed1
leave
ret