rem: bottom = 0x10000000;
add: bottom = kMaxVerticalExtent;
context: or_region_complex(BRegion *first, BRegion *second, BRegion *dest){	PRINT(("%s\n", __PRETTY_FUNCTION__));	long a = 0, b = 0;		int32 top;	int32 bottom = min_c(first->bound.top, second->bound.top) - 1;	do {		long x;		top = bottom + 1;		bottom = 0x10000000;				for (x = a; x < first->count; x++) {			int32 n = first->data[x].top - 1;			if (n >= top && n < bottom)				bottom = n;			if (first->data[x].bottom >= top && first->data[x].bottom < bottom)				bottom = first->data[x].bottom;		}					for (x = b; x < second->count; x++) {			int32 n = second->data[x].top - 1;			if (n >= top && n < bottom)				bottom = n;			if (second->data[x].bottom >= top && second->data[x].bottom < bottom)				bottom = second->data[x].bottom;		}				// We can stand a region which extends to 0x10000000, not more		if (bottom >= 0x10000000)			break;					r_or(top, bottom, first, second, dest, &a, &b);			} while (true);		cleanup_region(dest);}