KeSignalCallDpcSynchronize

NTSTATUS __fastcall KeSignalCallDpcSynchronize(INT64 a1){
  signed __int32 v2; 
  unsigned int v3; 
  NTSTATUS v4; 
  UINT64 SpinCount; 

  v2 = _InterlockedDecrement((volatile signed __int32 *)a1);
  v3 = ~v2 & 0x80000000;
  if( (v2 & 0x7FFFFFFF) != 0 )
  {
    v4 = 0;
    LODWORD(SpinCount) = 0;
    while( (*(_DWORD *)a1 & 0x80000000) != v3 )
      KeYieldProcessorEx(&SpinCount);
  }
  else
  {
    v4 = 1;
    *(_DWORD *)a1 = v3 | *(_DWORD *)(a1 + 4);
  }
  return v4;
}

Referenced by:

KiInitializeDynamicProcessorDpc
MiApplyImageHotPatchDpc