XpressDoHuffmanPass

UINT8 *__stdcall XpressDoHuffmanPass(
        _HUFFMAN_WORKSPACE *Workspace,
        UINT8 *LzInputPos,
        UINT8 *LzEnd,
        UINT8 *HuffOutputPos,
        UINT64 WriteEof){
  _HUFFMAN_WORKSPACE *v7; 
  __int64 v8; 
  UINT8 *v11; 
  __int128 v12; 
  UINT8 *v13; 
  UINT8 *v14; 
  unsigned __int64 v15; 
  unsigned __int16 v16; 
  UINT8 *v17; 
  int v18; 
  int v19; 
  int v20; 
  bool v21; 
  __int64 v22; 
  unsigned __int16 v23; 
  _HUFFMAN_WORKSPACE *v24; 
  unsigned __int64 v25; 
  __int64 v26; 
  UINT8 *v27; 
  _HUFFMAN_WORKSPACE *v28; 
  unsigned __int64 v29; 
  unsigned __int16 v30; 
  unsigned __int64 v31; 
  __int16 v32; 
  unsigned __int16 v33; 
  unsigned __int8 v34; 
  UINT8 v35; 
  unsigned __int16 v36; 
  UINT8 v37; 
  unsigned __int64 v38; 
  unsigned __int16 v39; 
  __int16 v40; 

  v7 = Workspace + 7816;
  v8 = 2i64;
  v11 = HuffOutputPos;
  do
  {
    v11 += 128;
    v12 = *(_OWORD *)v7;
    v7 += 32;
    *((_OWORD *)v11 - 8) = v12;
    *((_OWORD *)v11 - 7) = *((_OWORD *)v7 - 7);
    *((_OWORD *)v11 - 6) = *((_OWORD *)v7 - 6);
    *((_OWORD *)v11 - 5) = *((_OWORD *)v7 - 5);
    *((_OWORD *)v11 - 4) = *((_OWORD *)v7 - 4);
    *((_OWORD *)v11 - 3) = *((_OWORD *)v7 - 3);
    *((_OWORD *)v11 - 2) = *((_OWORD *)v7 - 2);
    *((_OWORD *)v11 - 1) = *((_OWORD *)v7 - 1);
    --v8;
  }
  while( v8 );
  v13 = HuffOutputPos + 256;
  v14 = HuffOutputPos + 258;
  v15 = 16i64;
  v16 = 0;
  v17 = HuffOutputPos + 260;
LABEL_4:
  v18 = *(_DWORD *)LzInputPos;
  LzInputPos += 4;
  v19 = 2 * v18 + 1;
  if( v18 >= 0 )
  {
LABEL_8:
    v22 = *LzInputPos++;
    v23 = HIWORD(Workspace[v22]);
    v24 = &Workspace[v22];
    v25 = *(unsigned __int16 *)v24;
    if( v15 < v25 )
    {
      *(_WORD *)v13 = (v16 << v15) | (v23 >> (v25 - v15));
      v13 = v14;
      v16 = *((_WORD *)v24 + 1);
      v14 = v17;
      v17 += 2;
      v15 += 16i64 - (unsigned int)v25;
    }
    else
    {
      v15 -= v25;
      v16 = v23 | (v16 << v25);
    }
    goto LABEL_7;
  }
  while( LzInputPos < LzEnd )
  {
    _mm_lfence();
    v26 = *LzInputPos;
    v27 = LzInputPos + 1;
    v28 = &Workspace[v26];
    v29 = *((unsigned __int16 *)v28 + 512);
    v30 = *((_WORD *)v28 + 513);
    if( v15 < v29 )
    {
      *(_WORD *)v13 = (v16 << v15) | (v30 >> (v29 - v15));
      v13 = v14;
      v32 = *((_WORD *)v28 + 513);
      v14 = v17;
      v17 += 2;
      v31 = 16 - v29 + v15;
    }
    else
    {
      v31 = v15 - v29;
      v32 = v30 | (v16 << v29);
    }
    if( (v26 & 0xF) == 15 )
    {
      v35 = *v27++;
      *v17++ = v35;
      if( v35 == 0xFF )
      {
        v36 = *(_WORD *)v27;
        *v17 = *(_WORD *)v27;
        v37 = v27[1];
        v27 += 2;
        v17[1] = v37;
        v17 += 2;
        if( !v36 )
        {
          *v17 = *v27;
          v17[1] = v27[1];
          v17[2] = v27[2];
          v17[3] = v27[3];
          v17 += 4;
          v27 += 4;
        }
      }
    }
    v33 = *(_WORD *)v27;
    v34 = (unsigned __int8)v26 >> 4;
    if( v31 < v34 )
    {
      *(_WORD *)v13 = (v32 << v31) | (v33 >> (v34 - v31));
      v13 = v14;
      v16 = *(_WORD *)v27;
      v14 = v17;
      v17 += 2;
      v15 = 16i64 - v34 + v31;
    }
    else
    {
      v15 = v31 - v34;
      v16 = v33 | (v32 << v34);
    }
    LzInputPos = v27 + 2;
LABEL_7:
    v20 = 2 * v19;
    v21 = v19 < 0;
    v19 *= 2;
    if( !v21 )
      goto LABEL_8;
    if( !v20 )
      goto LABEL_4;
  }
  if( (_DWORD)WriteEof )
  {
    v38 = *((unsigned __int16 *)Workspace + 512);
    v39 = *((_WORD *)Workspace + 513);
    v40 = *((_WORD *)Workspace + 512);
    if( v15 >= v38 )
    {
      LOBYTE(v15) = v15 - v40;
      v16 = v39 | (v16 << v38);
    }
    else
    {
      *(_WORD *)v13 = (v16 << v15) | (v39 >> (v38 - v15));
      v13 = v14;
      v16 = *((_WORD *)Workspace + 513);
      v14 = v17;
      v17 += 2;
      LOBYTE(v15) = 16 - v40 + v15;
    }
  }
  *(_WORD *)v13 = v16 << v15;
  *(_WORD *)v14 = 0;
  return v17;
}

Referenced by:

RtlCompressBufferXpressHuffMax
RtlCompressBufferXpressHuffStandard