bigquery udf to calculate MOD over a 128-bit integer stored as bytes:
-- requires udf_decode_int64(raw)
CREATE TEMP FUNCTION udf_mod_int128(dividend BYTES, divisor INT64) AS (
IF(
-- check divisor to ensure it cannot result in overflow
SAFE.DIV(0x7FFFFFFFFFFFFFFF, MOD(0x100000000, divisor))
< COALESCE(SAFE.ABS(divisor) - 1, ABS(divisor+1)),
ERROR("error: divisor could result in overflow"),
0