public static void HUF_fillDTableX4Level2()

in csharp/src/HufDecompress.cs [695:741]


		public static void HUF_fillDTableX4Level2(HUF_DEltX4* DTable, U32 sizeLog, U32 consumed,
									U32* rankValOrigin, int minWeight,
									sortedSymbol_t* sortedSymbols, U32 sortedListSize,
								   U32 nbBitsBaseline, U16 baseSeq)
		{
			HUF_DEltX4 DElt;
			U32* rankVal = stackalloc U32[(int)HUF_TABLELOG_MAX + 1];
			/* get pre-calculated rankVal */
			memcpy(rankVal, rankValOrigin, sizeof(U32) * (HUF_TABLELOG_MAX + 1));

			/* fill skipped values */
			if (minWeight > 1)
			{
				U32 i, skipSize = rankVal[minWeight];
				DElt.sequence = baseSeq; // MEM_writeLE16(&(DElt.sequence), baseSeq);
				DElt.nbBits = (BYTE)(consumed);
				DElt.length = 1;
				for (i = 0; i < skipSize; i++)
					DTable[i] = DElt;
			}

			/* fill DTable */
			{
				U32 s;
				for (s = 0; s < sortedListSize; s++)
				{
					/* note : sortedSymbols already skipped */
					U32 symbol = sortedSymbols[s].symbol;
					U32 weight = sortedSymbols[s].weight;
					U32 nbBits = nbBitsBaseline - weight;
					U32 length = (U32)1 << (int)(sizeLog - nbBits);
					U32 start = rankVal[weight];
					U32 i = start;
					U32 end = start + length;

					DElt.sequence = (U16)(baseSeq + (symbol << 8)); // MEM_writeLE16(&(DElt.sequence), (U16)(baseSeq + (symbol << 8)));
					DElt.nbBits = (BYTE)(nbBits + consumed);
					DElt.length = 2;
					do
					{
						DTable[i++] = DElt;
					} while (i < end); /* since length >= 1 */

					rankVal[weight] += length;
				}
			}
		}