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.