ExAllocatePool2

VOID *__fastcall ExAllocatePool2(INT64 a1, UINT64 a2, UINT64 a3){
  unsigned int v3; 
  NTSTATUS v5; 
  UINT64 v7; 
  INT64 v8; 
  POOL_TYPE PoolType[6]; 
  BYTE v10; 
  BYTE v11; 
  PoolType[0] = NonPagedPool;
  v3 = a3;
  v11 = 0;
  v10 = 0;
  if( (_DWORD)a3 )
  {
    v5 = ExpPoolFlagsToPoolType(a1, 0i64, (INT64 *)PoolType, &v11, &v10);
    if( v5 >= 0 )
    {
      if( v11 )
        return ExAllocatePoolWithQuotaTag(PoolType[0], a2, v3);
      LODWORD(v8) = v10 != 0;
      v7 = *(unsigned __int16 *)(*((_QWORD *)KeGetCurrentPrcb() + 24) + 146i64);
      LODWORD(v7) = v7 | 0x80000000;
      return ExpAllocatePoolWithTagFromNode((unsigned int)PoolType[0], a2, v3, v7, v8);
    }
  }
  else
  {
    v5 = -1073741811;
  }
  if( (a1 & 0x20) != 0 )
    RtlRaiseStatus(v5);
  return 0i64;
}

Referenced by:

EtwTimLogControlProtectionUserModeReturnMismatch
EtwTimLogRedirectionTrustPolicy
EtwTimLogUserCetSetContextIpValidationFailure
KiLogUserCetSetContextIpValidationFailure
NtSetInformationProcess
PipIommuRetrieveSecondaryDeviceId
RtlAddDynamicEHContinuationTarget
RtlAddDynamicEnforcedAddressRange
SepAddTokenOriginClaim
SepVariableInitialization
VerifierExAllocatePool2
VslConnectSwInterrupt
sub_1405B03A8