SMKM_STORE_MGR::SmFeReadInitiate

__int64 __fastcall SMKM_STORE_MGR::SmFeReadInitiate(
        __int64 a1,
        unsigned int *a2,
        unsigned int *a3,
        _QWORD *a4,
        int *a5){
  _ETHREAD *CurrentThread; 
  unsigned int v7; 
  INT64 *v11; 
  int *v12; 
  unsigned int v13; 
  int v14; 
  unsigned int v15; 
  unsigned int v17; 
  CurrentThread = (_ETHREAD *)KeGetCurrentThread();
  v7 = *a3;
  v17 = *a3;
  --*((_WORD *)CurrentThread + 243);
  v11 = (INT64 *)(a1 + 440);
  ExAcquirePushLockSharedEx(a1 + 440, 0i64);
  v12 = a5;
  v13 = SMKM_STORE_MGR::SmFeCheckPresent(a1, a2, &v17, a5);
  if( v13 != 1024 )
  {
    v14 = *(_DWORD *)(a1 + 1840);
    if( ((v14 & 4) != 0 || !*v12) && ((v15 = v17, v17 == v7) || (v14 & 8) != 0) )
    {
      *a4 = 0i64;
      *a3 = v15;
    }
    else
    {
      v13 = 1024;
    }
  }
  if( _InterlockedCompareExchange64(v11, 0i64, 17i64) != 17 )
    ExfReleasePushLockShared(v11);
  KeAbPostRelease(v11);
  KiLeaveGuardedRegionUnsafe((__int64)KeGetCurrentThread());
  return v13;
}

Referenced by:

No references.