Function at 0x404260
Capabilities:
Create directory
Create process on windows
Delete file
Get common file path
Get file attributes
Set file attributes

Disassembly:
mov eax, dword fs:[0]
push 0xffffffffffffffff
push 0x408dc1
push eax
mov dword fs:[0], esp
sub esp, 0x110
push ebx
push ebp
push esi
push edi
mov esi, ecx
call fcn.00401dc0
test eax, eax
je 0x40428f
call fcn.00401ed0
call fcn.00403530
mov bl, al
cmp bl, 5
jne 0x4042a0
call fcn.004035c0
push 0
push str.C:OKGFile
call dword [sym.imp.KERNEL32.dll_CreateDirectoryA]
push str.C:OKGFile
call dword [sym.imp.KERNEL32.dll_GetFileAttributesA]
mov edi, dword [sym.imp.KERNEL32.dll_SetFileAttributesA]
or al, 2
push eax
push str.C:OKGFile
call edi
lea ecx, [esp + 0x10]
call fcn.00408300
push 1
lea ecx, [esp + 0x14]
mov dword [esp + 0x12c], 0
call sub.MFC42.DLL_CString::LoadStringA
push str.C:OKGFileOKGCon.exe
push 0x9c
call fcn.004035d0
add esp, 8
test eax, eax
jne 0x40432b
mov eax, dword [esp + 0x10]
push 0x10
push eax
push 0x40e8a0
mov ecx, esi
call sub.MFC42.DLL_CWnd::MessageBoxA
lea ecx, [esp + 0x10]
mov dword [esp + 0x128], 0xffffffff
call sub.MFC42.DLL_CString::CString
xor eax, eax
jmp 0x404751
push str.C:OKGFileXSBIndex.ref
push 0xa7
call fcn.004035d0
mov ecx, dword [esi + 0x80]
mov ebp, dword [sym.imp.USER32.dll_SendMessageA]
add esp, 8
push 0
push 0xa
push 0x402
push ecx
call ebp
push str.C:OKGFileXug.dll
push 0xa0
call fcn.004035d0
push str.C:OKGFileOKSvr.exe
push 0xa3
call fcn.004035d0
mov edx, dword [esi + 0x80]
add esp, 0x10
push 0
push 0x14
push 0x402
push edx
call ebp
push str.C:OKGFile_sbghost.img
push 0x9b
call fcn.004035d0
add esp, 8
test eax, eax
jne 0x4043cc
mov eax, dword [esp + 0x10]
push 0x10
push eax
push 0x40e884
mov ecx, esi
call sub.MFC42.DLL_CWnd::MessageBoxA
lea ecx, [esp + 0x10]
mov dword [esp + 0x128], 0xffffffff
call sub.MFC42.DLL_CString::CString
xor eax, eax
jmp 0x404751
mov ecx, dword [esi + 0x80]
push 0
push 0x1e
push 0x402
push ecx
call ebp
cmp bl, 5
je 0x4043ec
cmp bl, 6
jne 0x404499
mov ecx, 0x41
xor eax, eax
lea edi, [esp + 0x1c]
lea edx, [esp + 0x1c]
push 0x104
push edx
rep stosd dword es:[edi], eax
call dword [sym.imp.KERNEL32.dll_GetSystemDirectoryA]
lea eax, [esp + 0x1c]
lea ecx, [esp + 0x18]
push eax
call sub.MFC42.DLL_CString::CString_2
push str.Drivers_sioctl.sys
lea ecx, [esp + 0x1c]
mov byte [esp + 0x12c], 1
call sub.MFC42.DLL_CString::operator
mov ecx, dword [esp + 0x18]
push ecx
push 0x9f
call fcn.004035d0
add esp, 8
test eax, eax
jne 0x404482
mov edx, dword [esp + 0x10]
push 0x10
push edx
push 0x40e86c
mov ecx, esi
call sub.MFC42.DLL_CWnd::MessageBoxA
lea ecx, [esp + 0x18]
mov byte [esp + 0x128], 0
call sub.MFC42.DLL_CString::CString
lea ecx, [esp + 0x10]
mov dword [esp + 0x128], 0xffffffff
call sub.MFC42.DLL_CString::CString
xor eax, eax
jmp 0x404751
lea ecx, [esp + 0x18]
mov byte [esp + 0x128], 0
call sub.MFC42.DLL_CString::CString
mov edi, dword [sym.imp.KERNEL32.dll_SetFileAttributesA]
cmp bl, 5
jne 0x404635
lea ecx, [esp + 0x14]
call fcn.00408300
movsx eax, byte [0x40e0a9]
push eax
lea ecx, [esp + 0x18]
push str._c:grldr
push ecx
mov byte [esp + 0x134], 2
call sub.MFC42.DLL_CString::Format
mov edx, dword [esp + 0x20]
add esp, 0xc
push 0x80
push edx
call edi
mov eax, dword [esp + 0x14]
mov ebx, dword [sym.imp.KERNEL32.dll_DeleteFileA]
push eax
call ebx
mov ecx, dword [esp + 0x14]
push ecx
push 0x98
call fcn.004035d0
add esp, 8
test eax, eax
jne 0x40453b
mov edx, dword [esp + 0x10]
push 0x10
push edx
push 0x40e858
mov ecx, esi
call sub.MFC42.DLL_CWnd::MessageBoxA
lea ecx, [esp + 0x14]
mov byte [esp + 0x128], 0
call sub.MFC42.DLL_CString::CString
lea ecx, [esp + 0x10]
mov dword [esp + 0x128], 0xffffffff
call sub.MFC42.DLL_CString::CString
xor eax, eax
jmp 0x404751
movsx eax, byte [0x40e0a9]
push eax
lea ecx, [esp + 0x18]
push str._c:grldr.mbr
push ecx
call sub.MFC42.DLL_CString::Format
mov edx, dword [esp + 0x20]
add esp, 0xc
push edx
call ebx
mov eax, dword [esp + 0x14]
push eax
push 0x9e
call fcn.004035d0
add esp, 8
test eax, eax
jne 0x404580
mov ecx, dword [esp + 0x10]
push 0x10
push ecx
push 0x40e840
jmp 0x404508
mov al, byte [0x40e0a9]
cmp al, 0x43
je 0x4045fd
movsx edx, al
push edx
lea eax, [esp + 0x18]
push str._c:OKGFile
push eax
call sub.MFC42.DLL_CString::Format
mov ecx, dword [esp + 0x20]
add esp, 0xc
push 0
push ecx
call dword [sym.imp.KERNEL32.dll_CreateDirectoryA]
movsx edx, byte [0x40e0a9]
push edx
lea eax, [esp + 0x18]
push str._c:OKGFile_sbghost.img
push eax
call sub.MFC42.DLL_CString::Format
mov ecx, dword [esp + 0x20]
push ecx
push 0x9b
call fcn.004035d0
add esp, 0x14
test eax, eax
jne 0x4045ea
mov edx, dword [esp + 0x10]
push 0x10
push edx
push 0x40e884
jmp 0x404508
push 0x80
push str.C:grldr
call edi
push str.C:grldr
call ebx
lea ecx, [esp + 0x14]
mov byte [esp + 0x128], 0
call sub.MFC42.DLL_CString::CString
or ebx, 0xffffffff
push str.C:OKGFileUninst.exe
push 0x9d
call fcn.004035d0
add esp, 8
test eax, eax
jne 0x40468c
mov ecx, dword [esp + 0x10]
push 0x10
push ecx
push 0x40e824
jmp 0x4046b3
cmp bl, 6
je 0x40460e
push 0
push str.C:grldr
call dword [sym.imp.MSVCRT.dll__access]
or ebx, 0xffffffff
add esp, 8
cmp eax, ebx
je 0x404668
push 0x80
push str.C:grldr
call edi
push str.C:grldr
call dword [sym.imp.KERNEL32.dll_DeleteFileA]
push str.C:grldr
push 0x98
call fcn.004035d0
add esp, 8
test eax, eax
jne 0x404611
mov eax, dword [esp + 0x10]
push 0x10
push eax
push 0x40e858
jmp 0x4046b3
mov edx, dword [esi + 0x80]
push 0
push 0x46
push 0x402
push edx
call ebp
call fcn.00402980
test eax, eax
jne 0x4046d1
mov eax, dword [esp + 0x10]
push 0x10
push eax
push 0x40e814
mov ecx, esi
call sub.MFC42.DLL_CWnd::MessageBoxA
lea ecx, [esp + 0x10]
mov dword [esp + 0x128], ebx
call sub.MFC42.DLL_CString::CString
xor eax, eax
jmp 0x404751
mov ecx, dword [esi + 0x80]
push 0
push 0x5a
push 0x402
push ecx
call ebp
mov eax, dword [0x40eb34]
test eax, eax
je 0x404703
call fcn.00401070
mov edx, dword [esi + 0x80]
push 0
push 0x5f
push 0x402
push edx
call ebp
call fcn.004014c0
call fcn.00401a00
push 0
push 0
push str._Service
push str.C:OKGFileOKSvr.exe
push 0
push 0
call dword [sym.imp.SHELL32.dll_ShellExecuteA]
call fcn.00403860
mov eax, dword [esi + 0x80]
push 0
push 0x64
push 0x402
push eax
call ebp
lea ecx, [esp + 0x10]
mov dword [esp + 0x128], ebx
call sub.MFC42.DLL_CString::CString
mov eax, 1
mov ecx, dword [esp + 0x120]
pop edi
pop esi
pop ebp
pop ebx
mov dword fs:[0], ecx
add esp, 0x11c
ret