def sub_bytes(state):
    """
    Transformation in the Cipher that processes the State using a non­linear
    byte substitution table (S-box) that operates on each of the State bytes
    independently.
    """
    state = state.reshape(4, 32)
    return fcat(
        subword(state[0]),
        subword(state[1]),
        subword(state[2]),
        subword(state[3]),
    )