PopSanityCheckHiberFile

NTSTATUS __stdcall PopSanityCheckHiberFile(
        VOID *FileHandle,
        _FILE_OBJECT *FileObject,
        _LARGE_INTEGER *FileSize,
        _LARGE_INTEGER **Mcb,
        UINT64 *McbSize){
  int Status; 
  LONGLONG v9; 
  __int64 v10; 
  _LARGE_INTEGER v11; 
  _LARGE_INTEGER *v13; 
  _IO_STATUS_BLOCK v14; 

  v13 = 0i64;
  v14 = 0i64;
  Status = ZwFsControlFile((_HANDLE)FileHandle, 0, 0i64, 0i64, &v14, 0x9003Bu, FileSize, 8u, &v13, 8u);
  if( Status == 259 )
  {
    KeWaitForSingleObject((UINT64)&FileObject->gap80[24], 0, 0, 0, 0i64);
    Status = v14.Status;
  }
  if( Status >= 0 )
  {
    v9 = 0i64;
    LODWORD(v10) = 0;
    if( v13->QuadPart )
    {
      v11 = *v13;
      do
      {
        v9 += v11.QuadPart;
        if( v13[(unsigned int)(v10 + 1)].anonymous_0.HighPart < 0 )
          return -1073741823;
        v10 = (unsigned int)(v10 + 2);
        v11 = v13[v10];
      }
      while( v11.QuadPart );
    }
    if( v9 < FileSize->QuadPart )
      return -1073741823;
    *Mcb = v13;
    *(_DWORD *)McbSize = 8 * v10 + 16;
  }
  return Status;
}

Referenced by:

PopResizeHiberFile