PopDirectedDripsDiagBroadcastTreeEnd

VOID __fastcall PopDirectedDripsDiagBroadcastTreeEnd(INT64 a1, INT64 a2, INT64 a3, CHAR a4){
  int v4; 
  int v7; 
  if( a1 )
  {
    v4 = a2;
    v7 = a3;
    ExAcquirePushLockExclusiveEx((UINT64)&PopDirectedDripsDiagLock, 0i64);
    if( v4 < 0 || (*(_DWORD *)(a1 + 40) ^= (*(_DWORD *)(a1 + 40) ^ (16 * v7)) & 0xF0, a4) )
      *(_DWORD *)(a1 + 40) |= 0x100u;
    else
      *(_DWORD *)(a1 + 40) &= ~0x100u;
    if( (_InterlockedExchangeAdd64((volatile signed __int64 *)&PopDirectedDripsDiagLock, 0xFFFFFFFFFFFFFFFFui64) & 6) == 2 )
      ExfTryToWakePushLock((volatile INT64 *)&PopDirectedDripsDiagLock);
    KeAbPostRelease(&PopDirectedDripsDiagLock);
  }
}

Referenced by:

PopDirectedDripsBuildBroadcastTreePartial