SmKmKeyGenKeyDelete
VOID __fastcall SmKmKeyGenKeyDelete(PVOID Lock, PPRIVILEGE_SET Privileges){
_ETHREAD *CurrentThread;
__int64 v5;
PPRIVILEGE_SET *Luid;
CurrentThread = (_ETHREAD *)KeGetCurrentThread();
--*((_WORD *)CurrentThread + 242);
ExAcquirePushLockExclusiveEx((UINT64)Lock, 0i64);
v5 = *(_QWORD *)&Privileges->PrivilegeCount;
if( *(PPRIVILEGE_SET *)(*(_QWORD *)&Privileges->PrivilegeCount + 8i64) != Privileges
|| (Luid = (PPRIVILEGE_SET *)Privileges->Privilege[0].Luid, *Luid != Privileges) )
{
__fastfail(3u);
}
*Luid = (PPRIVILEGE_SET)v5;
*(_QWORD *)(v5 + 8) = Luid;
CmSiFreeMemory(Privileges);
if( (_InterlockedExchangeAdd64((volatile signed __int64 *)Lock, 0xFFFFFFFFFFFFFFFFui64) & 6) == 2 )
ExfTryToWakePushLock((volatile INT64 *)Lock);
KeAbPostRelease(Lock);
KeLeaveCriticalRegion();
}Referenced by:
SmKmKeyGenGenerate