SMKM_STORE_MGR::SmCompressCtxProcessReadyQueue

__int64 __fastcall SMKM_STORE_MGR::SmCompressCtxProcessReadyQueue(__int64 a1, __int64 a2, UINT8 a3, int a4){
  __int64 v4; 
  INT64 *v6; 
  unsigned __int8 v7; 
  char v9; 
  __int64 *v10; 
  __int64 *v11; 
  __int64 result; 
  int v13; 
  unsigned __int64 v14; 
  __int64 v15; 
  unsigned __int64 *v16; 
  __int64 *v17; 
  __int64 v18; 
  _EX_RUNDOWN_REF *v19; 

  v4 = a1 + 96;
  v6 = (INT64 *)(a1 + 112);
  v7 = a3;
  if( a3 == 0xFF )
    v7 = ExAcquireSpinLockExclusive((INT64 *)(a1 + 112));
  while( 1 )
  {
    v9 = 0;
    if( !a4 && (**(_QWORD **)(v4 + 8) & 0xFFFFFFFFFFFFFFF8ui64) < 0x80 )
      v9 = 4;
    v10 = *(__int64 **)(v4 + 8);
    if( v10 == (__int64 *)v4 )
    {
      v11 = 0i64;
    }
    else
    {
      v11 = *(__int64 **)v4;
      *(_QWORD *)v4 = **(_QWORD **)v4 & 0xFFFFFFFFFFFFFFF8ui64;
      if( v11 == v10 )
      {
        *(_QWORD *)v4 = 0i64;
        *(_QWORD *)(v4 + 8) = v4;
      }
      else
      {
        *v10 = *v10 & 7 | (8 * (((unsigned __int64)*v10 >> 3) - 1));
      }
    }
    ExReleaseSpinLockExclusiveFromDpcLevel(v6);
    result = v7;
    __writecr8(v7);
    if( !v11 )
      break;
    v13 = SMKM_STORE_MGR::SmFeAddInitiate(
            a2,
            (_DWORD *)v11 + 6,
            1,
            *(_DWORD *)(v11[13] + 6016) & 0x3FF,
            (unsigned __int64)v11,
            (__int64 *)v11[4],
            v9);
    if( v13 < 0 )
    {
      if( v13 == -1073741739 )
      {
        v14 = (unsigned __int8)ExAcquireSpinLockExclusive(v6);
        v15 = (**(_QWORD **)(v4 + 8) >> 3) + 1i64;
        *v11 = *(_QWORD *)v4 | *(_DWORD *)v11 & 7;
        v16 = *(unsigned __int64 **)(v4 + 8);
        *(_QWORD *)v4 = v11;
        if( v16 == (unsigned __int64 *)v4 )
        {
          *(_QWORD *)(v4 + 8) = v11;
          v16 = (unsigned __int64 *)v11;
        }
        *v16 = *(_DWORD *)v16 & 7 | (unsigned __int64)(8 * v15);
        ExReleaseSpinLockExclusiveFromDpcLevel(v6);
        result = (unsigned int)KiIrqlFlags;
        __writecr8(v14);
        return result;
      }
      MmUnmapLockedPages(*(VOID **)(*(_QWORD *)v11[2] + 24i64), *(_MDL **)v11[2]);
      v17 = (__int64 *)v11[4];
      v18 = *v17;
      *(_DWORD *)v17 = v13;
      *(_QWORD *)(v11[4] + 8) = 0i64;
      SmIoRequestComplete((__int64)v17, v11, v18, v11[4]);
      v19 = (_EX_RUNDOWN_REF *)SmKmStoreRefFromStoreIndex(a2, *(_DWORD *)(v11[13] + 6016) & 0x3FF);
      ExReleaseRundownProtection(v19 + 1);
      ExFreePoolWithTag(v11, 0);
    }
    v7 = ExAcquireSpinLockExclusive(v6);
  }
  return result;
}

Referenced by:

No references.