ExpPartitionCreatePoolInternal

NTSTATUS __stdcall ExpPartitionCreatePoolInternal(INT64 a1, INT64 a2, INT64 a3, INT64 a4, INT64 arg20){
  unsigned int v5; 
  unsigned int v6; 
  VOID **PoolWithTag; 
  int v10; 
  INT64 a6; 

  v5 = a3;
  v6 = a2;
  PoolWithTag = ExAllocatePoolWithTag(0x200ui64, 0x2E0ui64, 1817671749i64);
  if( !PoolWithTag )
    return -1073741801;
  LODWORD(a6) = arg20;
  v10 = ExpWorkQueueInitializeWithMinimumThreads(
          (_ENODE *)PoolWithTag,
          v6,
          v5,
          (_LIST_ENTRY *)a1,
          a4,
          a6,
          (_EX_WORK_QUEUE *)(*(_QWORD *)(*(_QWORD *)(a1 + 16) + 8i64 * *(unsigned __int16 *)(a4 + 146)) + 276i64));
  if( v10 >= 0 )
  {
    *(_QWORD *)(*(_QWORD *)(*(_QWORD *)(a1 + 8) + 8i64 * *(unsigned __int16 *)(a4 + 146)) + 8i64 * (int)arg20) = PoolWithTag;
    PoolWithTag = 0i64;
    v10 = 0;
  }
  if( PoolWithTag )
  {
    ExpWorkQueueDestroy(PoolWithTag);
    ExFreePoolWithTag(PoolWithTag, 0);
  }
  return v10;
}

Referenced by:

ExpPartitionCreatePool
ExpPartitionCreatePoolDelayed
ExpPartitionInitialize