Function at 0x402868
Capabilities:
Check if file exists
Get disk information
Read file on windows
Write file on windows

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x280
mov dword [ebp - 0x18], 1
or dword [ebp - 0x14], 0xffffffff
and dword [ebp - 0x10], 0
and dword [ebp - 0xc], 0
mov dword [ebp - 4], 2
mov dword [ebp - 0x1c], 1
and dword [ebp - 8], 0
mov dword [ebp - 0x20], 0x2710
and dword [ebp - 0x234], 0
push 0x104
lea eax, [ebp - 0x230]
push eax
push 0
call dword [sym.imp.KERNEL32.dll_GetModuleFileNameA]
push 0x104
lea eax, [ebp - 0x230]
push eax
lea eax, [ebp - 0x128]
push eax
call sub.MSVCRT.dll_memcpy
add esp, 0xc
and dword [ebp - 0x125], 0
lea eax, [ebp - 0x128]
push eax
call dword [sym.imp.KERNEL32.dll_GetDriveTypeA]
cmp eax, 2
jne 0x402921
lea eax, [ebp - 0x128]
push eax
push str.explorer.exe__n__s
lea eax, [ebp - 0x278]
push eax
call dword [sym.imp.USER32.dll_wsprintfA]
add esp, 0xc
push 0
push 0
push 0
lea eax, [ebp - 0x278]
push eax
call fcn.004033ee
mov dword [ebp - 0x1c], 3
movsx eax, byte [0x413cf0]
cmp eax, 0xffffffb1
jne 0x40293e
push 0x8f
push 0x30
push 0x413cf0
call fcn.00402380
push dword [0x413ce8]
push 0
push 0
push 0
call dword [sym.imp.KERNEL32.dll_CreateEventA]
mov dword [ebp - 0x10], eax
call dword [sym.imp.KERNEL32.dll_GetLastError]
mov dword [ebp - 0x234], eax
push 0
push 0
push 3
push 0
push 0
push 0xc0000000
push 0x413cf0
call dword [sym.imp.KERNEL32.dll_CreateFileA]
mov dword [ebp - 0x14], eax
cmp dword [ebp - 0x14], 0xffffffff
jne 0x402a0b
call dword [sym.imp.KERNEL32.dll_GetLastError]
cmp eax, 0xe7
jne 0x4029c1
cmp dword [ebp - 0x20], 0
je 0x4029b3
push 0xc8
call dword [sym.imp.KERNEL32.dll_Sleep]
mov eax, dword [ebp - 0x20]
sub eax, 0xc8
mov dword [ebp - 0x20], eax
jmp 0x40295f
and dword [ebp - 0x18], 0
jmp 0x402ad8
call dword [sym.imp.KERNEL32.dll_GetTickCount]
cmp eax, 0xea60
jae 0x4029db
push 0xc8
call dword [sym.imp.KERNEL32.dll_Sleep]
jmp 0x40295f
cmp dword [ebp - 0x234], 0xb7
jne 0x402a01
push 0x4e20
push dword [ebp - 0x10]
call dword [sym.imp.KERNEL32.dll_WaitForSingleObject]
and dword [ebp - 0x234], 0
jmp 0x40295f
jmp 0x402ad8
push 0
push 0
lea eax, [ebp - 4]
push eax
push dword [ebp - 0x14]
call dword [sym.imp.KERNEL32.dll_SetNamedPipeHandleState]
push 0
lea eax, [ebp - 0xc]
push eax
push 0x10
mov eax, dword [0x415930]
add eax, 8
push eax
push dword [ebp - 0x14]
call dword [sym.imp.KERNEL32.dll_WriteFile]
push 0
lea eax, [ebp - 0xc]
push eax
push 4
lea eax, [ebp - 8]
push eax
push dword [ebp - 0x14]
call dword [sym.imp.KERNEL32.dll_ReadFile]
push dword [ebp - 0x14]
call dword [sym.imp.KERNEL32.dll_CloseHandle]
cmp dword [ebp - 8], 0
jne 0x402a62
and dword [ebp - 0x18], 0
jmp 0x402ad8
mov dword [ebp - 0x1c], 2
and dword [ebp - 0x27c], 0
jmp 0x402a7f
mov eax, dword [ebp - 0x27c]
inc eax
mov dword [ebp - 0x27c], eax
cmp dword [ebp - 0x27c], 0x64
jge 0x402ad8
push 0
push 0
push 3
push 0
push 0
push 0xc0000000
push 0x413cf0
call dword [sym.imp.KERNEL32.dll_CreateFileA]
mov dword [ebp - 0x14], eax
cmp dword [ebp - 0x14], 0xffffffff
jne 0x402aba
call dword [sym.imp.KERNEL32.dll_GetLastError]
cmp eax, 2
jne 0x402ab8
jmp 0x402ad8
jmp 0x402ace
mov eax, dword [sym.imp.KERNEL32.dll_CloseHandle]
mov dword [ebp - 0x280], eax
push dword [ebp - 0x14]
call dword [ebp - 0x280]
push 0x32
call dword [sym.imp.KERNEL32.dll_Sleep]
jmp 0x402a72
push 0
push dword [ebp - 0x1c]
lea eax, [ebp - 0x230]
push eax
call fcn.004024bf
mov eax, dword [ebp - 0x18]
leave
ret