RtlReleasePrivilege

VOID __stdcall RtlReleasePrivilege(PVOID StatePointer){
  int v2; 
  void *v3; 
  char *v4; 
  v2 = *((_DWORD *)StatePointer + 8);
  if( (v2 & 3) != 1 )
  {
    ZwAdjustPrivilegesToken(*(VOID **)StatePointer, 0, *((_TOKEN_PRIVILEGES **)StatePointer + 2), 0i64, 0i64, 0i64);
    v2 = *((_DWORD *)StatePointer + 8);
  }
  if( (v2 & 1) != 0 )
  {
    ZwSetInformationThread((PVOID)0xFFFFFFFFFFFFFFFEi64, ThreadImpersonationToken, (char *)StatePointer + 8, 8ui64);
    v3 = (void *)*((_QWORD *)StatePointer + 1);
    if( v3 )
      ZwClose(v3);
  }
  v4 = (char *)*((_QWORD *)StatePointer + 2);
  if( v4 != (char *)StatePointer + 36 )
    ExFreePoolWithTag(v4, 0);
  ZwClose(*(HANDLE *)StatePointer);
  ExFreePoolWithTag(StatePointer, 0);
}

Referenced by:

PspAllocateProcess