BiAcquirePrivilege

NTSTATUS __fastcall BiAcquirePrivilege(unsigned int a1, __int64 a2){
  char v4; 
  NTSTATUS result; 
  int v6; 
  UINT8 WasEnabled; 
  __int64 ThreadInformation; 
  WasEnabled = 0;
  if( (*((_DWORD *)KeGetCurrentThread() + 324) & 8) != 0 )
  {
    v4 = 1;
  }
  else
  {
    v4 = 0;
    result = RtlImpersonateSelfEx(SecurityImpersonation, 0i64, 0i64);
    if( result < 0 )
      return result;
  }
  v6 = BiAdjustPrivilege(a1, 1u, &WasEnabled);
  if( v6 < 0 )
  {
    if( !v4 )
    {
      ThreadInformation = 0i64;
      ZwSetInformationThread((PVOID)0xFFFFFFFFFFFFFFFEi64, ThreadImpersonationToken, &ThreadInformation, 8ui64);
    }
  }
  else
  {
    *(_BYTE *)(a2 + 4) = WasEnabled;
    *(_BYTE *)(a2 + 5) = v4;
    *(_DWORD *)a2 = a1;
  }
  return v6;
}

Referenced by:

BiAddBootEntry
BiDeleteBootEntry
BiDeleteEfiVariable
BiEnumerateBootEntries
BiLoadHive
BiModifyBootEntry
BiQueryBootEntryOrder
BiQueryBootOptions
BiSetBootEntryOrder
BiSetBootOptions
BiTranslateFilePath
BiUnloadHiveByName
SiGetEspFromFirmware