HalpMmAllocCtxAllocBuffer

VOID **__fastcall HalpMmAllocCtxAllocBuffer(__int64 a1, UINT64 a2){
  UINT64 v3; 
  UINT64 v4; 
  VOID **PoolWithTag; 
  VOID **v6; 
  VOID **v7; 
  __int64 v8; 
  VOID **v9; 

  v3 = a2 >> 4;
  v4 = a2 >> 7;
  PoolWithTag = ExAllocatePoolWithTag(0x200ui64, (a2 >> 7) + 48, 1651269960i64);
  v6 = PoolWithTag;
  if( !PoolWithTag )
    return 0i64;
  memset(PoolWithTag, 0i64, v4 + 48);
  *((_DWORD *)v6 + 8) = v3;
  v6[5] = (VOID *)(((unsigned __int64)v6 + 51) & 0xFFFFFFFFFFFFFFFCui64);
  v6[1] = v6;
  *v6 = v6;
  v7 = ExAllocatePoolWithTag(0x200ui64, a2, 1114399048i64);
  v6[2] = v7;
  if( v7 )
  {
    v9 = v6;
    v6 = 0i64;
  }
  else
  {
    v9 = 0i64;
  }
  if( v6 )
    HalpMmAllocCtxBufferCleanup(v8, v6);
  return v9;
}

Referenced by:

HalpMmAllocCtxAlloc