Function at 0x4034ed
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 0x403527
push str.Not_enough_command_line_arguments_to_execute_a_service_command
call fcn.0040101c
push eax
call fcn.00404bd5
pop ecx
pop ecx
xor eax, eax
jmp 0x40375d
lea eax, [esp + 0x18]
mov dword [esp + 0x14], 0x41dad8
push eax
call dword [sym.imp.ole32.dll_CoCreateGuid]
test eax, eax
js 0x40354e
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.0040101c
push eax
call fcn.00404baa
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 0x40371f
mov ebp, dword [esi + 0xc]
push 0x208
push eax
mov word [esp + 0x30], ax
lea eax, [esp + 0x32]
push eax
call fcn.0040bc00
add esp, 0xc
lea ecx, [esp + 0x28]
call fcn.00403389
mov edi, eax
test edi, edi
je 0x4036ca
lea eax, [esp + 0x28]
push eax
push ebp
push str.Passed_in_path:__ls__Using_this_path_for_updating:__ls.
call fcn.0040101c
push eax
call fcn.00404baa
add esp, 0x10
lea ecx, [esp + 0x28]
call fcn.00403411
push 0
lea eax, [esp + 0x2c]
push eax
push ebp
call dword [sym.imp.KERNEL32.dll_CopyFileW]
mov edi, eax
test edi, edi
je 0x4036ca
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.0040bc00
add esp, 0xc
xor eax, eax
mov word [esp + 0x238], ax
push 0x208
push eax
lea eax, [esp + 0x242]
push eax
call fcn.0040bc00
add esp, 0xc
lea edx, [esp + 0x28]
lea ecx, [esp + 0x238]
push str.updater.ini
call fcn.004043e4
pop ecx
test eax, eax
je 0x4036b2
push str.updater.ini
mov edx, ebp
lea ecx, [esp + 0x44c]
call fcn.004043e4
pop ecx
test eax, eax
je 0x4036b2
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 0x4036b2
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.0040101c
push eax
call fcn.00404bd5
add esp, 0x14
lea ecx, [ebx - 3]
lea edx, [esi + 0xc]
call fcn.00402f00
lea ecx, [esp + 0x28]
mov edi, eax
call fcn.00403411
jmp 0x40370a
call dword [sym.imp.KERNEL32.dll_GetLastError]
push eax
push str.Could_not_copy_path_to_secure_location.____d_
call fcn.0040101c
push eax
call fcn.00404bd5
add esp, 0xc
cmp ebx, 4
jle 0x40370a
mov ecx, dword [esi + 0x10]
push 0x31
pop edx
call fcn.004046e1
test eax, eax
jne 0x40370a
push str.Could_not_write_update.status_could_not_copy_updater_error
call fcn.0040101c
push eax
call fcn.00404bd5
pop ecx
pop ecx
push dword [esi + 8]
push str.Service_command__ls_complete.
call fcn.0040101c
push eax
call fcn.00404baa
jmp 0x403732
push dword [esi + 8]
push str.Service_command_not_recognized:__ls.
call fcn.0040101c
push eax
call fcn.00404bd5
add esp, 0xc
mov eax, str.Success
test edi, edi
jne 0x403743
mov eax, str.Failure
push eax
push dword [esi + 4]
push str.service_command__ls_complete_with_result:__ls.
call fcn.0040101c
push eax
call fcn.00404baa
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.00404d91
add esp, 0x654
ret