PopDirectedDripsDiagBroadcastTreeEnd

VOID __stdcall PopDirectedDripsDiagBroadcastTreeEnd(INT64 a1, INT64 a2, INT64 a3, CHAR a4){
  int v4; 
  int v7; 

  if( a1 )
  {
    v4 = a2;
    v7 = a3;
    ExAcquirePushLockExclusiveEx(&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(&PopDirectedDripsDiagLock._bf_0, 0xFFFFFFFFFFFFFFFFui64) & 6) == 2 )
      ExfTryToWakePushLock(&PopDirectedDripsDiagLock);
    KeAbPostRelease(&PopDirectedDripsDiagLock);
  }
}

Referenced by:

PopDirectedDripsBuildBroadcastTreePartial