HUF_TABLELOG_MAX
ZSTD_memset(rankStats, 0, (HUF_TABLELOG_MAX + 1) * sizeof(U32));
if (huffWeight[n] > HUF_TABLELOG_MAX) return ERROR(corruption_detected);
if (tableLog > HUF_TABLELOG_MAX) return ERROR(corruption_detected);
#define HUF_READ_STATS_WORKSPACE_SIZE_U32 FSE_DECOMPRESS_WKSP_SIZE_U32(6, HUF_TABLELOG_MAX-1)
#if (HUF_TABLELOG_MAX > HUF_TABLELOG_ABSOLUTEMAX)
assert(optLog <= HUF_TABLELOG_MAX);
if (huffLog > HUF_TABLELOG_MAX) return ERROR(tableLog_tooLarge);
FSE_CTable CTable[FSE_CTABLE_SIZE_U32(MAX_FSE_TABLELOG_FOR_HUFF_HEADER, HUF_TABLELOG_MAX)];
U32 scratchBuffer[FSE_BUILD_CTABLE_WORKSPACE_SIZE_U32(HUF_TABLELOG_MAX, MAX_FSE_TABLELOG_FOR_HUFF_HEADER)];
unsigned count[HUF_TABLELOG_MAX+1];
S16 norm[HUF_TABLELOG_MAX+1];
unsigned maxSymbolValue = HUF_TABLELOG_MAX;
BYTE bitsToWeight[HUF_TABLELOG_MAX + 1]; /* precomputed conversion table */
if (tableLog > HUF_TABLELOG_MAX) return ERROR(tableLog_tooLarge);
{ U16 nbPerRank[HUF_TABLELOG_MAX+2] = {0}; /* support w=0=>n=tableLog+1 */
U16 valPerRank[HUF_TABLELOG_MAX+2] = {0};
U32 rankLast[HUF_TABLELOG_MAX+2];
while ((nBitsToDecrease<=HUF_TABLELOG_MAX) && (rankLast[nBitsToDecrease] == noSymbol))
U16 nbPerRank[HUF_TABLELOG_MAX+1] = {0};
U16 valPerRank[HUF_TABLELOG_MAX+1] = {0};
if (maxNbBits > HUF_TABLELOG_MAX) return ERROR(GENERIC); /* check fit into table */
rankValCol_t rankVal[HUF_TABLELOG_MAX];
U32 rankStats[HUF_TABLELOG_MAX + 1];
U32 rankStart0[HUF_TABLELOG_MAX + 3];
if (maxTableLog > HUF_TABLELOG_MAX) return ERROR(tableLog_tooLarge);
if (MEM_64bits() || (HUF_TABLELOG_MAX<=12)) \
if (MEM_64bits() || (HUF_TABLELOG_MAX<=12)) \