HalpAuditAllocateRsdtArrayTable
__int64 __fastcall HalpAuditAllocateRsdtArrayTable(int **a1){
unsigned int v1;
int v3;
VOID *PoolWithTag;
VOID *v5;
int *v6;
v1 = 0;
if( *a1 )
v3 = 2 * **a1;
else
v3 = 4;
PoolWithTag = ExAllocatePoolWithTag(PagedPool, (unsigned int)(32 * v3 + 8), 0x206C6148ui64);
v5 = PoolWithTag;
if( PoolWithTag )
{
memset((INT64)PoolWithTag, 0i64);
*(_DWORD *)v5 = v3;
v6 = *a1;
if( *a1 )
{
*((_DWORD *)v5 + 1) = v6[1];
memmove((UINT8 *)v5 + 8, (UINT8 *)v6 + 8, 32i64 * (unsigned int)v6[1]);
ExFreePoolWithTag(v6, 0);
}
else
{
*((_DWORD *)v5 + 1) = 0;
}
*a1 = (int *)v5;
}
else
{
return(unsigned int)-1073741801;
}
return v1;
}Referenced by:
HalpAuditEnumerateRsdts
HalpAuditEnumerateRsdtsInRange