+ if (loadmodel->brush.isbsp2rmqe)
+ {
+ out->mins[0] = MSG_ReadLittleShort(sb);
+ out->mins[1] = MSG_ReadLittleShort(sb);
+ out->mins[2] = MSG_ReadLittleShort(sb);
+ out->maxs[0] = MSG_ReadLittleShort(sb);
+ out->maxs[1] = MSG_ReadLittleShort(sb);
+ out->maxs[2] = MSG_ReadLittleShort(sb);
+
+ firstmarksurface = MSG_ReadLittleLong(sb);
+ nummarksurfaces = MSG_ReadLittleLong(sb);
+ }
+ else if (loadmodel->brush.isbsp2)
+ {
+ out->mins[0] = MSG_ReadLittleFloat(sb);
+ out->mins[1] = MSG_ReadLittleFloat(sb);
+ out->mins[2] = MSG_ReadLittleFloat(sb);
+ out->maxs[0] = MSG_ReadLittleFloat(sb);
+ out->maxs[1] = MSG_ReadLittleFloat(sb);
+ out->maxs[2] = MSG_ReadLittleFloat(sb);
+
+ firstmarksurface = MSG_ReadLittleLong(sb);
+ nummarksurfaces = MSG_ReadLittleLong(sb);
+ }
+ else
+ {
+ out->mins[0] = MSG_ReadLittleShort(sb);
+ out->mins[1] = MSG_ReadLittleShort(sb);
+ out->mins[2] = MSG_ReadLittleShort(sb);
+ out->maxs[0] = MSG_ReadLittleShort(sb);
+ out->maxs[1] = MSG_ReadLittleShort(sb);
+ out->maxs[2] = MSG_ReadLittleShort(sb);
+
+ firstmarksurface = (unsigned short)MSG_ReadLittleShort(sb);
+ nummarksurfaces = (unsigned short)MSG_ReadLittleShort(sb);
+ }
+
+ if (firstmarksurface >= 0 && firstmarksurface + nummarksurfaces <= loadmodel->brush.num_leafsurfaces)
+ {
+ out->firstleafsurface = loadmodel->brush.data_leafsurfaces + firstmarksurface;
+ out->numleafsurfaces = nummarksurfaces;
+ }
+ else
+ {
+ Con_Printf("Mod_Q1BSP_LoadLeafs: invalid leafsurface range %i:%i outside range %i:%i\n", firstmarksurface, firstmarksurface+nummarksurfaces, 0, loadmodel->brush.num_leafsurfaces);
+ out->firstleafsurface = NULL;
+ out->numleafsurfaces = 0;
+ }