Function at 0x404ad0
Capabilities:
Check if file exists
Check os version
Copy file
Create process on windows
Delete file
Get file attributes
Manipulate boot configuration
Set file attributes

Disassembly:
mov eax, dword fs:[0]
push 0xffffffffffffffff
push 0x405c16
push eax
mov dword fs:[0], esp
sub esp, 0xa0
push esi
xor esi, esi
call dword [sym.imp.KERNEL32.dll_GetVersion]
cmp eax, 0x80000000
jae 0x404d7c
lea eax, [esp + 0x10]
mov dword [esp + 0x10], 0x94
push eax
call dword [sym.imp.KERNEL32.dll_GetVersionExA]
cmp dword [esp + 0x14], 6
jne 0x404b1e
mov esi, 1
push ebp
push edi
lea ecx, [esp + 0xc]
call sub.MFC42.DLL_CString::CString_1
movsx ecx, byte [0x4080b8]
push ecx
lea edx, [esp + 0x10]
push str._c:Ghost
push edx
mov dword [esp + 0xc0], 0
call sub.MFC42.DLL_CString::Format
mov edi, dword [sym.imp.KERNEL32.dll_GetFileAttributesA]
mov ebp, dword [sym.imp.KERNEL32.dll_SetFileAttributesA]
add esp, 0xc
test esi, esi
je 0x404c48
lea ecx, [esp + 0x14]
call sub.MFC42.DLL_CString::CString_1
push 0
push str.C:OKGFileBCDBack
mov byte [esp + 0xbc], 1
call dword [sym.imp.MSVCRT.dll__access]
add esp, 8
cmp eax, 0xffffffff
je 0x404b98
push str._import_C:OKGFileBCDBack
lea ecx, [esp + 0x18]
call fcn.00405402
jmp 0x404baf
mov eax, dword [esp + 0xc]
lea ecx, [esp + 0x14]
push eax
push str._import__sBCDBack
push ecx
call sub.MFC42.DLL_CString::Format
add esp, 0xc
mov edx, dword [esp + 0x14]
mov esi, dword [sym.imp.SHELL32.dll_ShellExecuteA]
push 0
push 0
push edx
push str.BCDEDIT.EXE
push 0x408680
push 0
call esi
push 0x320
call dword [sym.imp.KERNEL32.dll_Sleep]
push 0
push 0
push str._delete_cc7f891e_b014_45a3_a394_df75d832e97b
push str.BCDEDIT.EXE
push 0x408680
push 0
call esi
lea eax, [esp + 0xc]
push str.BCDBack
lea ecx, [esp + 0x14]
push eax
push ecx
call sub.MFC42.DLL_operator
mov eax, dword [eax]
mov esi, dword [sym.imp.KERNEL32.dll_DeleteFileA]
push eax
call esi
lea ecx, [esp + 0x10]
call sub.MFC42.DLL_CString::CString
push str.C:grldr.mbr
call esi
push str.D:grldr.mbr
call esi
push str.E:grldr.mbr
call esi
push str.C:menu.lst
call esi
lea ecx, [esp + 0x14]
mov byte [esp + 0xb4], 0
call sub.MFC42.DLL_CString::CString
jmp 0x404d48
lea edx, [esp + 0xc]
push str._boot.ini
lea eax, [esp + 0x14]
push edx
push eax
call sub.MFC42.DLL_operator
mov eax, dword [eax]
push eax
call edi
lea ecx, [esp + 0x10]
mov esi, eax
call sub.MFC42.DLL_CString::CString
lea ecx, [esp + 0xc]
push str._boot.ini
lea edx, [esp + 0x14]
push ecx
push edx
and esi, 0xfffffffe
call sub.MFC42.DLL_operator
mov eax, dword [eax]
push esi
push eax
call ebp
lea ecx, [esp + 0x10]
call sub.MFC42.DLL_CString::CString
push str.C:_boot.ini
call edi
and esi, 0xfffffffe
push esi
push str.C:_boot.ini
call ebp
push 0
push str.C:OKGFile_boot.ini
call dword [sym.imp.MSVCRT.dll__access]
add esp, 8
cmp eax, 0xffffffff
je 0x404ccd
push 0
push str.C:_boot.ini
push str.C:OKGFile_boot.ini
call dword [sym.imp.KERNEL32.dll_CopyFileA]
jmp 0x404cfa
lea eax, [esp + 0xc]
push str._boot.ini
lea ecx, [esp + 0x14]
push eax
push ecx
call sub.MFC42.DLL_operator
mov eax, dword [eax]
push 0
push str.C:_boot.ini
push eax
call dword [sym.imp.KERNEL32.dll_CopyFileA]
lea ecx, [esp + 0x10]
call sub.MFC42.DLL_CString::CString
lea edx, [esp + 0xc]
push str._boot.ini
lea eax, [esp + 0x14]
push edx
push eax
call sub.MFC42.DLL_operator
mov eax, dword [eax]
mov esi, dword [sym.imp.KERNEL32.dll_DeleteFileA]
push eax
call esi
lea ecx, [esp + 0x10]
call sub.MFC42.DLL_CString::CString
push str.C:_sbldr
call esi
push str.C:OKGFile_boot.ini
lea ecx, [esp + 0x10]
call fcn.00405402
mov ecx, dword [esp + 0xc]
push ecx
call edi
mov edx, dword [esp + 0xc]
and al, 0xfe
push eax
push edx
call ebp
push str.C:OKGFile.
call fcn.00404da0
mov eax, dword [esp + 0x10]
add esp, 4
push eax
call edi
mov ecx, dword [esp + 0xc]
and al, 0xfd
push eax
push ecx
call ebp
lea ecx, [esp + 0xc]
mov dword [esp + 0xb4], 0xffffffff
call sub.MFC42.DLL_CString::CString
pop edi
pop ebp
mov ecx, dword [esp + 0xa4]
pop esi
mov dword fs:[0], ecx
add esp, 0xac
ret