ExpOptimizePushLockList

VOID __stdcall ExpOptimizePushLockList(_EX_PUSH_LOCK *PushLock, _EX_PUSH_LOCK TopValue){
  __int64 bf_0; 
  _QWORD *v4; 
  _QWORD *v5; 
  __int64 v6; 
  __int64 v7; 

  bf_0 = TopValue._bf_0;
  if( (TopValue._bf_0 & 1) != 0 )
  {
    while( 1 )
    {
      v4 = (_QWORD *)(bf_0 & 0xFFFFFFFFFFFFFFF0ui64);
      if( !*(_QWORD *)((bf_0 & 0xFFFFFFFFFFFFFFF0ui64) + 0x20) )
      {
        do
        {
          v5 = v4;
          v4 = (_QWORD *)v4[3];
          v4[5] = v5;
          v6 = v4[4];
        }
        while( !v6 );
        if( v4 != (_QWORD *)(bf_0 & 0xFFFFFFFFFFFFFFF0ui64) )
          *(_QWORD *)((bf_0 & 0xFFFFFFFFFFFFFFF0ui64) + 0x20) = v6;
      }
      v7 = bf_0;
      bf_0 = _InterlockedCompareExchange64(&PushLock->_bf_0, bf_0 - 4, bf_0);
      if( v7 == bf_0 )
        break;
      if( (bf_0 & 1) == 0 )
        goto LABEL_8;
    }
  }
  else
  {
LABEL_8:
    ExpWakePushLock(PushLock, (_EX_PUSH_LOCK)bf_0);
  }
}

Referenced by:

ExfAcquirePushLockExclusiveEx
ExfAcquirePushLockSharedEx