def cairoize_bytes(bs: bytes, shifted=False) -> tuple[list[int], int]:
    """Represent bytes as an array of 128-bit big-endian integers and
    return a number of unused bytes in the last array cell.

    'shifted' indicates if 'bs' should be shifted 12-bytes to the
    right, so as to be suitable as Warp calldata.

    """
    if shifted:
        bs = b"\x00" * 12 + bs
    unused_bytes = -len(bs) % 16
    bs = bs.ljust(len(bs) + unused_bytes, b"\x00")
    arr = [int.from_bytes(bs[i : i + 16], "big") for i in range(0, len(bs), 16)]
    return (arr, unused_bytes)