static ossl_inline size_t constant_time_is_zero_s(size_t a)
{
    return constant_time_msb_s(~a & (a - 1));
}
['static ossl_inline void constant_time_lookup(void *out,\n                                             const void *table,\n                                             size_t rowsize,\n                                             size_t numrows,\n                                             size_t idx)\n{\n    size_t i, j;\n    const unsigned char *tablec = (const unsigned char *)table;\n    unsigned char *outc = (unsigned char *)out;\n    unsigned char mask;\n    memset(out, 0, rowsize);\n    for (i = 0; i < numrows; i++, idx--) {\n        mask = (unsigned char)constant_time_is_zero_s(idx);\n        for (j = 0; j < rowsize; j++)\n            *(outc + j) |= constant_time_select_8(mask, *(tablec++), 0);\n    }\n}', 'static ossl_inline size_t constant_time_is_zero_s(size_t a)\n{\n    return constant_time_msb_s(~a & (a - 1));\n}']