HalpDpOfflineProcessorForReplace

INT64 __fastcall HalpDpOfflineProcessorForReplace(INT64 a1){
  __int16 v1; 
  int v3; 
  unsigned __int8 CurrentIrql; 
  unsigned int v5; 
  _BYTE *v6; 
  INT64 v7; 
  INT64 result; 
  __int16 v9; 
  UINT64 v10; 
  v1 = v9;
  _disable();
  v3 = v1 & 0x200;
  CurrentIrql = KeGetCurrentIrql();
  v5 = *((_DWORD *)KeGetPcr() + 105);
  v10 = __rdtsc();
  KeSaveStateForHibernate((_KPROCESSOR_STATE *)(HalpHiberProcState + 1472i64 * v5));
  if( *(_DWORD *)(a1 + 56) < *(_DWORD *)a1 )
  {
    KeSweepLocalCaches(v7, v6);
    HalpInterruptOfflineProcessor((volatile INT32 *)(a1 + 56));
  }
  HalpDpPostReplaceInitialization((INT64 *)a1, &v10);
  result = CurrentIrql;
  __writecr8(CurrentIrql);
  if( v3 )
    _enable();
  return result;
}

Referenced by:

HalpDpReplaceTarget