int read(void* to, int count) { u8 tmp[2048]; verify(count != 0); int rem = count; while (rem >= 2048) { disc->ReadSectors( (pos/2048) + offs, 1, tmp, 2048); int toread = min(2048, rem) - pos%2048; memcpy(to, &tmp[pos%2048], toread), (char*&)to += rem; pos += toread; rem -= toread; } return count; }