mostly like memcpy with optional bound checking but capable of handling overlapping cases thus using reverse copy instead.