XmShrOp

_WORD *__fastcall XmShrOp(_DWORD *a1){
  int v1; 
  unsigned int v3; 
  int v4; 
  unsigned int v5; 
  unsigned int v6; 
  unsigned int v7; 
  int v8; 

  v1 = a1[30];
  v3 = a1[26];
  v4 = a1[27];
  if( v4 )
  {
    v5 = v3 >> v4;
    v6 = v3 >> (v4 - 1);
    if( v1 == 3 )
    {
      v7 = v3 >> 31;
    }
    else if( v1 == 1 )
    {
      v7 = v3 >> 15;
    }
    else
    {
      v7 = v3 >> 7;
    }
    v8 = (16 * (v7 & 1)) | (v5 >> (8 * v1 + 7)) & 1;
    v3 = v5;
    a1[4] = v6 & 1 | a1[4] & 0xFFFFF73A | (v5 == 0 ? 0x40 : 0) | (4
                                                                * ((32 * v8) | (((*((_BYTE *)XmBitCount + (v5 & 0xF))
                                                                                + *((_BYTE *)XmBitCount
                                                                                  + ((unsigned __int8)v5 >> 4))) & 1) == 0)));
  }
  return XmStoreResult((INT64)a1, v3);
}

Referenced by:

No references.