XmShlOp

_WORD *__fastcall XmShlOp(_DWORD *a1){
  int v1; 
  unsigned int v3; 
  int v4; 
  char v5; 
  unsigned int v6; 
  int v7; 
  unsigned int v8; 
  unsigned int v9; 
  char v10; 
  unsigned int v11; 
  v1 = a1[30];
  v3 = a1[26];
  v4 = a1[27];
  v5 = 8 * v1 + 7;
  if( v4 )
  {
    v6 = v3 ^ (v3 >> 1);
    v7 = v3 << v4;
    if( v1 == 3 )
    {
      v9 = v6 >> 30;
      LOBYTE(v11) = v3 >> (32 - v4);
      v3 <<= v4;
    }
    else
    {
      v8 = v3;
      if( v1 == 1 )
      {
        v9 = v6 >> 14;
        v10 = 16;
        v3 = (unsigned __int16)v7;
      }
      else
      {
        v9 = v6 >> 6;
        v10 = 8;
        v3 = (unsigned __int8)v7;
      }
      v11 = v8 >> (v10 - v4);
    }
    a1[4] = v11 & 1 | a1[4] & 0xFFFFF73A | (v3 == 0 ? 0x40 : 0) | (4
                                                                 * ((32 * ((16 * (v9 & 1)) | (v3 >> v5) & 1)) | (((*((_BYTE *)XmBitCount + (v3 & 0xF)) + *((_BYTE *)XmBitCount + ((unsigned __int8)v3 >> 4))) & 1) == 0)));
  }
  return XmStoreResult((INT64)a1, v3);
}

Referenced by:

No references.