HalpDpOfflineProcessorForReplace
NTSTATUS __stdcall HalpDpOfflineProcessorForReplace(INT64 a1){
INT64 v1;
INT64 v2;
__int16 v3;
int v5;
unsigned __int8 CurrentIrql;
_BYTE *v7;
INT64 v8;
NTSTATUS result;
__int16 v10;
UINT64 v11;
v3 = v10;
_disable();
v5 = v3 & 0x200;
CurrentIrql = KeGetCurrentIrql();
LODWORD(v1) = KeGetPcr()->Prcb.Number;
v11 = __rdtsc();
KeSaveStateForHibernate((INT64)Memory + 1472 * (unsigned int)v1, (unsigned __int64)HIDWORD(v11) << 32, v1, v2);
if( *(_DWORD *)(a1 + 56) < *(_DWORD *)a1 )
{
KeSweepLocalCaches(v8, v7);
HalpInterruptOfflineProcessor((INT32 *)(a1 + 56));
}
HalpDpPostReplaceInitialization((INT64 *)a1, &v11);
result = CurrentIrql;
__writecr8(CurrentIrql);
if( v5 )
_enable();
return result;
}Referenced by:
HalpDpReplaceTarget