Function at 0x403b75
Capabilities:
Copy file

Disassembly:
sub esp, 0x654
mov eax, dword [0x421050]
xor eax, esp
mov dword [esp + 0x64c], eax
push ebx
push ebp
push esi
mov ebx, ecx
mov esi, edx
push edi
cmp ebx, 3
jge 0x403baf
push str.Not_enough_command_line_arguments_to_execute_a_service_command
call fcn.00401000
push eax
call fcn.00404e6e
pop ecx
pop ecx
xor eax, eax
jmp 0x403de5
lea eax, [esp + 0x18]
mov dword [esp + 0x14], 0x41dda8
push eax
call dword [sym.imp.ole32.dll_CoCreateGuid]
test eax, eax
js 0x403bd6
lea eax, [esp + 0x14]
push eax
lea eax, [esp + 0x1c]
push eax
call dword [sym.imp.RPCRT4.dll_UuidToStringW]
push dword [esp + 0x14]
push dword [esi + 8]
push str.Executing_service_command__ls__ID:__ls
call fcn.00401000
push eax
call fcn.00404e43
add esp, 0x10
lea eax, [esp + 0x14]
push eax
call dword [sym.imp.RPCRT4.dll_RpcStringFreeW]
push str.software_update
push dword [esi + 8]
xor edi, edi
call dword [sym.imp.KERNEL32.dll_lstrcmpiW]
test eax, eax
jne 0x403da7
mov ebp, dword [esi + 0xc]
push 0x208
push eax
mov word [esp + 0x30], ax
lea eax, [esp + 0x32]
push eax
call fcn.0040bf90
add esp, 0xc
lea ecx, [esp + 0x28]
call fcn.00403a11
mov edi, eax
test edi, edi
je 0x403d52
lea eax, [esp + 0x28]
push eax
push ebp
push str.Passed_in_path:__ls__Using_this_path_for_updating:__ls.
call fcn.00401000
push eax
call fcn.00404e43
add esp, 0x10
lea ecx, [esp + 0x28]
call fcn.00403a99
push 0
lea eax, [esp + 0x2c]
push eax
push ebp
call dword [sym.imp.KERNEL32.dll_CopyFileW]
mov edi, eax
test edi, edi
je 0x403d52
lea eax, [esp + 0x28]
mov dword [esi + 0xc], eax
xor eax, eax
push 0x208
push eax
mov word [esp + 0x450], ax
lea eax, [esp + 0x452]
push eax
call fcn.0040bf90
add esp, 0xc
xor eax, eax
mov word [esp + 0x238], ax
push 0x208
push eax
lea eax, [esp + 0x242]
push eax
call fcn.0040bf90
add esp, 0xc
lea edx, [esp + 0x28]
lea ecx, [esp + 0x238]
push str.updater.ini
call fcn.004043b9
pop ecx
test eax, eax
je 0x403d3a
push str.updater.ini
mov edx, ebp
lea ecx, [esp + 0x44c]
call fcn.004043b9
pop ecx
test eax, eax
je 0x403d3a
push 0
lea eax, [esp + 0x23c]
push eax
lea eax, [esp + 0x450]
push eax
call dword [sym.imp.KERNEL32.dll_CopyFileW]
test eax, eax
jne 0x403d3a
call dword [sym.imp.KERNEL32.dll_GetLastError]
push eax
lea eax, [esp + 0x23c]
push eax
lea eax, [esp + 0x450]
push eax
push str.Could_not_copy_updater.ini_from:__ls_to__ls.____d_
call fcn.00401000
push eax
call fcn.00404e6e
add esp, 0x14
lea ecx, [ebx - 3]
lea edx, [esi + 0xc]
call fcn.00403584
lea ecx, [esp + 0x28]
mov edi, eax
call fcn.00403a99
jmp 0x403d92
call dword [sym.imp.KERNEL32.dll_GetLastError]
push eax
push str.Could_not_copy_path_to_secure_location.____d_
call fcn.00401000
push eax
call fcn.00404e6e
add esp, 0xc
cmp ebx, 4
jle 0x403d92
mov ecx, dword [esi + 0x10]
push 0x31
pop edx
call fcn.004049f1
test eax, eax
jne 0x403d92
push str.Could_not_write_update.status_could_not_copy_updater_error
call fcn.00401000
push eax
call fcn.00404e6e
pop ecx
pop ecx
push dword [esi + 8]
push str.Service_command__ls_complete.
call fcn.00401000
push eax
call fcn.00404e43
jmp 0x403dba
push dword [esi + 8]
push str.Service_command_not_recognized:__ls.
call fcn.00401000
push eax
call fcn.00404e6e
add esp, 0xc
mov eax, str.Success
test edi, edi
jne 0x403dcb
mov eax, str.Failure
push eax
push dword [esi + 4]
push str.service_command__ls_complete_with_result:__ls.
call fcn.00401000
push eax
call fcn.00404e43
xor eax, eax
add esp, 0x10
inc eax
mov ecx, dword [esp + 0x65c]
pop edi
pop esi
pop ebp
pop ebx
xor ecx, esp
call fcn.0040502c
add esp, 0x654
ret