Function at 0x402510
Capabilities:
Check if file exists
Check os version
Copy file
Set file attributes
Set registry value

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x7a8
mov eax, dword [0x43d180]
xor eax, ebp
mov dword [ebp - 4], eax
push ebx
push esi
push edi
xor eax, eax
push 0x206
push eax
mov word [ebp - 0x484], ax
lea eax, [ebp - 0x482]
push eax
call fcn.00417930
xor eax, eax
push 0x206
push eax
mov word [ebp - 0x27c], ax
lea eax, [ebp - 0x27a]
push eax
call fcn.00417930
mov edi, dword [sym.imp.KERNEL32.dll_GetLastError]
add esp, 0x18
mov ebx, dword [sym.imp.KERNEL32.dll_SetFileAttributesW]
mov esi, 0x43e468
push esi
push 0x441198
push str._s_s
lea eax, [ebp - 0x484]
push 0x104
push eax
call fcn.00401280
push esi
push 0x4415a8
push str._s_s
lea eax, [ebp - 0x27c]
push 0x104
push eax
call fcn.00401280
lea eax, [ebp - 0x484]
push 0
push eax
call fcn.004169b3
add esp, 0x30
cmp eax, 0xffffffff
je 0x402635
call edi
cmp eax, 2
je 0x402635
push 0x80
lea eax, [ebp - 0x27c]
push eax
call ebx
push 0
lea eax, [ebp - 0x27c]
push eax
lea eax, [ebp - 0x484]
push eax
call dword [sym.imp.KERNEL32.dll_CopyFileW]
test eax, eax
je 0x4028f3
lea eax, [ebp - 0x27c]
push eax
lea eax, [ebp - 0x484]
push eax
push str.Sucessfully_copied__s_to__s
call fcn.00401350
add esp, 0xc
lea eax, [ebp - 0x27c]
push 0x80
push eax
call ebx
lea eax, [ebp - 0x27c]
push eax
lea eax, [ebp - 0x484]
push eax
call fcn.00401ee0
test eax, eax
je 0x4028dd
push 0
call dword [sym.imp.KERNEL32.dll_SetLastError]
add esi, 0x64
cmp esi, 0x43e97c
jl 0x402570
push 0x114
lea eax, [ebp - 0x7a0]
push 0
push eax
call fcn.00417930
add esp, 0xc
mov dword [ebp - 0x7a0], 0x114
lea eax, [ebp - 0x7a0]
push eax
call dword [sym.imp.KERNEL32.dll_GetVersionExW]
cmp dword [ebp - 0x79c], 5
jbe 0x4028ca
movdqu xmm0, xmmword [str.GIDLogonCP64]
movzx eax, word [0x4364bc]
lea ecx, [ebp - 0x68c]
mov word [ebp - 8], ax
movzx eax, word [0x4364e0]
movdqu xmmword [ebp - 0x20], xmm0
mov word [ebp - 0x54], ax
movq xmm0, qword [0x4364b4]
mov eax, dword [0x4364f4]
movq qword [ebp - 0x10], xmm0
movdqu xmm0, xmmword [0x4364c0]
mov dword [ebp - 0x40], eax
movzx eax, word [0x436510]
movdqu xmmword [ebp - 0x74], xmm0
mov dword [ebp - 0x7a4], 0
movdqu xmm0, xmmword [0x4364d0]
mov word [ebp - 0x24], ax
mov dword [ebp - 0x7a8], 3
movdqu xmmword [ebp - 0x64], xmm0
movdqu xmm0, xmmword [str.Apartment]
movdqu xmmword [ebp - 0x50], xmm0
movdqu xmm0, xmmword [str.LicMgrEP.exe]
movdqu xmmword [ebp - 0x3c], xmm0
movq xmm0, qword [0x436508]
movq qword [ebp - 0x2c], xmm0
call fcn.00401360
push 0
lea eax, [ebp - 0x7a4]
push eax
push 0
push 0xf013f
push 0
push 0
push 0
push str.SOFTWAREMicrosoftWindowsCurrentVersionAuthenticationCredential_Providers32D9BAC2_F66B_4454_8164_04D6D0C4363C
push reloc.OLEAUT32.dll_SysReAllocString
call dword [sym.imp.ADVAPI32.dll_RegCreateKeyExW]
test eax, eax
jne 0x402911
mov esi, dword [sym.imp.ADVAPI32.dll_RegSetValueExW]
lea eax, [ebp - 0x20]
push 0x1a
push eax
push 1
push 0
push 0
push dword [ebp - 0x7a4]
call esi
push dword [ebp - 0x7a4]
mov ebx, dword [sym.imp.ADVAPI32.dll_RegCloseKey]
call ebx
push 0
lea eax, [ebp - 0x7a4]
push eax
push 0
push 0xf013f
push 0
push 0
push 0
push str.CLSID32D9BAC2_F66B_4454_8164_04D6D0C4363C
push SysReAllocString
call dword [sym.imp.ADVAPI32.dll_RegCreateKeyExW]
test eax, eax
jne 0x402911
push 0x1a
lea eax, [ebp - 0x20]
push eax
push 1
push 0
push 0
push dword [ebp - 0x7a4]
call esi
push dword [ebp - 0x7a4]
call ebx
push 0
lea eax, [ebp - 0x7a4]
push eax
push 0
push 0xf013f
push 0
push 0
push 0
push str.CLSID32D9BAC2_F66B_4454_8164_04D6D0C4363CInprocServer32
push SysReAllocString
call dword [sym.imp.ADVAPI32.dll_RegCreateKeyExW]
test eax, eax
jne 0x402911
push 0x22
lea eax, [ebp - 0x74]
push eax
push 1
push 0
push 0
push dword [ebp - 0x7a4]
call esi
push 0x14
lea eax, [ebp - 0x50]
push eax
push 1
push 0
push str.ThreadingModel
push dword [ebp - 0x7a4]
call esi
push dword [ebp - 0x7a4]
call ebx
push 0
lea eax, [ebp - 0x7a4]
push eax
push 0
push 0xf013f
push 0
push 0
push 0
push str.SOFTWAREMicrosoftInternet_ExplorerLow_RightsElevationPolicyF47A7273_2494_4fb6_BF9D_E1971FE089D2
push reloc.OLEAUT32.dll_SysReAllocString
call dword [sym.imp.ADVAPI32.dll_RegCreateKeyExW]
test eax, eax
jne 0x402911
mov ecx, 0x104
lea eax, [ebp - 0x68c]
cmp word [eax], 0
je 0x402924
add eax, 2
dec ecx
jne 0x402863
xor edi, edi
push 0x1a
lea eax, [ebp - 0x3c]
push eax
push 1
push 0
push str.AppName
push dword [ebp - 0x7a4]
call esi
push 4
lea eax, [ebp - 0x7a8]
push eax
push 4
push 0
push str.Policy
push dword [ebp - 0x7a4]
call esi
lea eax, [edi + edi]
push eax
lea eax, [ebp - 0x68c]
push eax
push 1
push 0
push str.AppPath
push dword [ebp - 0x7a4]
call esi
push dword [ebp - 0x7a4]
call ebx
pop edi
pop esi
xor eax, eax
pop ebx
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.00416230
mov esp, ebp
pop ebp
ret
pop edi
pop esi
mov eax, 0x64d
pop ebx
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.00416230
mov esp, ebp
pop ebp
ret
call edi
push eax
lea eax, [ebp - 0x27c]
push eax
lea eax, [ebp - 0x484]
push eax
push str.FAILED_to_copy__s_to__s_ERROR:_d
call fcn.00401350
add esp, 0x10
call edi
mov ecx, dword [ebp - 4]
pop edi
pop esi
xor ecx, ebp
pop ebx
call fcn.00416230
mov esp, ebp
pop ebp
ret
test ecx, ecx
je 0x402873
mov edi, 0x104
sub edi, ecx
jmp 0x402875