Function at 0x42a012
Capabilities:
Create directory
Get common file path
Get program files directory

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x814
mov eax, dword [0x439164]
xor eax, ebp
mov dword [ebp - 4], eax
push ebx
push str.upgrade.exe
mov ebx, 0x443700
push ebx
call fcn.00422be8
test eax, eax
pop ecx
pop ecx
jne 0x42a048
call fcn.00429d95
xor eax, eax
jmp 0x42a2ff
call fcn.004295d7
cmp eax, 1
je 0x42a041
cmp eax, 0xffffffff
jne 0x42a05e
or eax, eax
jmp 0x42a2ff
push esi
push edi
xor esi, esi
push esi
mov edi, str.Installing_agent...
call fcn.0042740f
pop ecx
lea eax, [ebp - 0x20c]
push eax
push esi
push esi
push 0x26
push esi
call dword [sym.imp.SHELL32.dll_SHGetFolderPathA]
test eax, eax
jge 0x42a0bc
push str.install:_Couldnt_obtain_Program_Files_path
call fcn.004282c2
lea eax, [ebp - 0x20c]
mov dword [esp], 0x104
push eax
call dword [sym.imp.KERNEL32.dll_GetWindowsDirectoryA]
test eax, eax
jne 0x42a0bc
push str.install:_Couldnt_obtain_Windows_path
call fcn.004282c2
mov eax, dword [0x43cbf8]
pop ecx
mov dword [ebp - 0x20c], eax
mov eax, str._ruon.
mov edx, eax
mov cl, byte [eax]
inc eax
test cl, cl
jne 0x42a0c3
lea edi, [ebp - 0x20c]
sub eax, edx
dec edi
mov cl, byte [edi + 1]
inc edi
test cl, cl
jne 0x42a0d3
mov ecx, eax
shr ecx, 2
mov esi, edx
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
mov eax, dword [0x43e498]
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov ecx, eax
mov dl, byte [eax]
inc eax
test dl, dl
jne 0x42a0f2
lea edi, [ebp - 0x20c]
sub eax, ecx
mov esi, ecx
dec edi
mov cl, byte [edi + 1]
inc edi
test cl, cl
jne 0x42a104
mov ecx, eax
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
and ecx, 3
mov eax, 0x43cc04
rep movsb byte es:[edi], byte [esi]
mov ecx, eax
mov dl, byte [eax]
inc eax
test dl, dl
jne 0x42a121
lea edi, [ebp - 0x20c]
sub eax, ecx
mov esi, ecx
dec edi
mov cl, byte [edi + 1]
inc edi
test cl, cl
jne 0x42a133
mov ecx, eax
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
lea eax, [ebp - 0x20c]
and ecx, 3
push 0x4435e0
push eax
rep movsb byte es:[edi], byte [esi]
call fcn.00422be8
test eax, eax
pop ecx
pop ecx
push 0
jne 0x42a1d0
mov edi, str.install:_File_already_in_place__no_copy_neccessary_
call fcn.0042740f
mov eax, dword [0x43e498]
pop ecx
mov edx, eax
mov cl, byte [eax]
inc eax
test cl, cl
jne 0x42a174
lea edi, [ebp - 0x20c]
sub eax, edx
dec edi
mov cl, byte [edi + 1]
inc edi
test cl, cl
jne 0x42a184
mov ecx, eax
shr ecx, 2
mov esi, edx
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
and ecx, 3
mov eax, 0x43cc3c
rep movsb byte es:[edi], byte [esi]
mov ecx, eax
mov dl, byte [eax]
inc eax
test dl, dl
jne 0x42a1a3
lea edi, [ebp - 0x20c]
sub eax, ecx
mov esi, ecx
dec edi
mov cl, byte [edi + 1]
inc edi
test cl, cl
jne 0x42a1b5
mov ecx, eax
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
and ecx, 3
rep movsb byte es:[edi], byte [esi]
jmp 0x42a2f2
lea eax, [ebp - 0x20c]
push eax
call dword [sym.imp.KERNEL32.dll_CreateDirectoryA]
xor eax, eax
mov cl, byte [eax + 0x4435e0]
mov byte [ebp + eax - 0x414], cl
inc eax
test cl, cl
jne 0x42a1df
mov eax, ebx
mov edx, ebx
mov cl, byte [eax]
inc eax
test cl, cl
jne 0x42a1f5
lea edi, [ebp - 0x414]
sub eax, edx
dec edi
mov cl, byte [edi + 1]
inc edi
test cl, cl
jne 0x42a205
mov ecx, eax
shr ecx, 2
mov esi, edx
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
mov eax, dword [0x43e498]
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov ecx, eax
mov dl, byte [eax]
inc eax
test dl, dl
jne 0x42a224
lea edi, [ebp - 0x20c]
sub eax, ecx
mov esi, ecx
dec edi
mov cl, byte [edi + 1]
inc edi
test cl, cl
jne 0x42a236
mov ecx, eax
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
and ecx, 3
mov eax, 0x43cc44
rep movsb byte es:[edi], byte [esi]
mov ecx, eax
mov dl, byte [eax]
inc eax
test dl, dl
jne 0x42a253
lea edi, [ebp - 0x20c]
sub eax, ecx
mov esi, ecx
dec edi
mov cl, byte [edi + 1]
inc edi
test cl, cl
jne 0x42a265
mov ecx, eax
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
and ecx, 3
lea eax, [ebp - 0x414]
rep movsb byte es:[edi], byte [esi]
push eax
lea ecx, [ebp - 0x20c]
call fcn.00428cc5
test eax, eax
pop ecx
je 0x42a2ca
xor esi, esi
push esi
mov edi, str.install:_copy_file_failed
call fcn.0042740f
push esi
lea edi, [ebp - 0x414]
call fcn.0042740f
push esi
mov edi, 0x43cc68
call fcn.0042740f
push esi
lea edi, [ebp - 0x20c]
call fcn.0042740f
add esp, 0x10
or eax, 0xffffffff
jmp 0x42a2fd
lea eax, [ebp - 0x20c]
push eax
lea eax, [ebp - 0x814]
push str.install:_File_copied_to___s_
push eax
call fcn.0040f233
push 0
lea edi, [ebp - 0x814]
call fcn.0042740f
add esp, 0x10
lea ecx, [ebp - 0x20c]
call fcn.004294c0
pop edi
pop esi
mov ecx, dword [ebp - 4]
xor ecx, ebp
pop ebx
call fcn.0041070b
leave
ret