Function at 0x404490
Capabilities:
Copy file
Create process on windows
Get file attributes
Manipulate boot configuration
Set file attributes
Write and execute a file
Write file on windows

Disassembly:
push 0xffffffffffffffff
push 0x40bce8
mov eax, dword fs:[0]
push eax
mov dword fs:[0], esp
sub esp, 0x10
push str.C:_boot.ini
lea ecx, [esp + 4]
call sub.MFC42.DLL_CString::CString_2
mov eax, dword [esp]
mov dword [esp + 0x18], 0
push eax
call dword [sym.imp.KERNEL32.dll_GetFileAttributesA]
mov ecx, dword [esp]
and al, 0xfe
push eax
push ecx
call dword [sym.imp.KERNEL32.dll_SetFileAttributesA]
mov edx, dword [esp]
lea ecx, [esp + 8]
push edx
call fcn.004064b0
push 0x412a84
push str.Default
lea eax, [esp + 0xc]
push str.boot_loader
push eax
lea ecx, [esp + 0x18]
mov byte [esp + 0x28], 1
call fcn.00406510
mov ecx, dword [esp + 4]
push str.C:_sbldr
push ecx
mov byte [esp + 0x20], 2
call dword [sym.imp.MSVCRT.dll__mbscmp]
add esp, 8
test eax, eax
je 0x40426d
push 0
push str.C:_boot.bak
push str.C:_boot.ini
call dword [sym.imp.KERNEL32.dll_CopyFileA]
push str.C:_sbldr
push str.Default
push str.boot_loader
lea ecx, [esp + 0x14]
call fcn.00406650
lea ecx, [esp + 4]
mov byte [esp + 0x18], 1
call sub.MFC42.DLL_CString::CString
lea ecx, [esp + 8]
mov byte [esp + 0x18], 0
call fcn.004064a0
lea ecx, [esp]
mov dword [esp + 0x18], 0xffffffff
call sub.MFC42.DLL_CString::CString
mov ecx, dword [esp + 0x10]
mov dword fs:[0], ecx
add esp, 0x1c
ret
mov eax, dword fs:[0]
push 0xffffffffffffffff
push 0x40bd10
push eax
mov dword fs:[0], esp
sub esp, 8
push esi
mov esi, dword [sym.imp.MSVCRT.dll__access]
push 0
push str.C:OKGFileBCD.Bak
call esi
add esp, 8
cmp eax, 0xffffffff
push 0
je 0x404316
push 0
push str._default_cc7f891e_b014_45a3_a394_df75d832e97b
push str.BCDEDIT.EXE
push 0x412a84
push 0
call dword [sym.imp.SHELL32.dll_ShellExecuteA]
push 0x320
call dword [sym.imp.KERNEL32.dll_Sleep]
pop esi
mov ecx, dword [esp + 8]
mov dword fs:[0], ecx
add esp, 0x14
ret
push str.C:OKGFilembr1
call esi
add esp, 8
cmp eax, 0xffffffff
jne 0x40439b
lea eax, [esp + 8]
push eax
call fcn.00402f00
add esp, 4
push str.XSBInst.exe
lea ecx, [esp + 0xc]
mov dword [esp + 0x18], 0
call fcn.0040aec0
lea ecx, [esp + 4]
call sub.MFC42.DLL_CString::CString_1
push str.__time_out0___boot_filesbldr___saveC:OKGFilembr1__hd0_
lea ecx, [esp + 8]
mov byte [esp + 0x18], 1
call fcn.0040ad5e
mov ecx, dword [esp + 4]
mov edx, dword [esp + 8]
push 0
push 0
push ecx
push edx
push 0
push 0
call dword [sym.imp.SHELL32.dll_ShellExecuteA]
lea ecx, [esp + 4]
mov byte [esp + 0x14], 0
call sub.MFC42.DLL_CString::CString
lea ecx, [esp + 8]
mov dword [esp + 0x14], 0xffffffff
call sub.MFC42.DLL_CString::CString
mov ecx, dword [esp + 0xc]
pop esi
mov dword fs:[0], ecx
add esp, 0x14
ret
mov eax, dword fs:[0]
push 0xffffffffffffffff
push 0x40bd2b
push eax
mov dword fs:[0], esp
sub esp, 0x208
lea eax, [esp + 8]
push esi
push eax
call fcn.00403430
add esp, 4
push 0
push 2
push 2
push 0
push 1
push 0xc0000000
push str.C:menu.lst
call dword [sym.imp.KERNEL32.dll_CreateFileA]
mov esi, eax
cmp esi, 0xffffffff
je 0x40446e
lea ecx, [esp + 4]
call sub.MFC42.DLL_CString::CString_1
mov ecx, dword [esp + 0x15]
lea edx, [esp + 4]
and ecx, 0xff
mov dword [esp + 0x214], 0
push ecx
push 1
push 2
push edx
call sub.MFC42.DLL_CString::Format
mov eax, dword [esp + 0x14]
add esp, 0x10
lea ecx, [esp + 8]
mov eax, dword [eax - 8]
push 0
push ecx
push eax
push 0xa
lea ecx, [esp + 0x14]
call sub.MFC42.DLL_CString::GetBuffer
push eax
push esi
call dword [sym.imp.KERNEL32.dll_WriteFile]
push esi
call dword [sym.imp.KERNEL32.dll_CloseHandle]
lea ecx, [esp + 4]
mov byte [0x412ae8], 1
mov dword [esp + 0x214], 0xffffffff
call sub.MFC42.DLL_CString::CString
mov ecx, dword [esp + 0x20c]
pop esi
mov dword fs:[0], ecx
add esp, 0x214
ret
call fcn.00404010
cmp al, 5
mov byte [0x412204], al
jne 0x4044a3
jmp 0x4042b0
cmp al, 6
jne 0x4044ac
jmp 0x4043b0
jmp 0x4041b0