ExInitializePagedHeaps

NTSTATUS __stdcall ExInitializePagedHeaps(){
  unsigned int v0; 
  __int64 v1; 
  NTSTATUS result; 
  _RTL_RUN_ONCE v3; 
  _RTL_RUN_ONCE v4; 
  __int64 Value; 
  __int128 v6; 
  __int64 v7; 
  __int128 v8; 
  _RTL_RUN_ONCE v9; 

  v9.Value = 0i64;
  v0 = 0;
  if( dword_140C57DD0 )
  {
    while( 1 )
    {
      v8 = 0i64;
      BYTE2(v8) = v0;
      LOBYTE(v8) = 2;
      v1 = 1048i64 * v0;
      result = ExCreateHeap((__int64)&v8, 0i64, &v9);
      if( result < 0 )
        break;
      v3.Ptr = v9.Ptr;
      ExPoolState[v1 + 1826] = v9;
      RtlpDynamicLookasideInitialize((char *)&ExPoolState[v1 + 1832]);
      *(_QWORD *)(v3.Value + 40) = &ExPoolState[v1 + 1832];
      v8 = 0i64;
      BYTE2(v8) = v0;
      LOBYTE(v8) = 10;
      result = ExCreateHeap((__int64)&v8, 0i64, &v9);
      if( result < 0 )
        break;
      v4.Ptr = v9.Ptr;
      ++v0;
      ExPoolState[v1 + 1827] = v9;
      *(_DWORD *)(v4.Value + 816) |= 2u;
      *(_BYTE *)(v4.Value + 269) |= 8u;
      *(_BYTE *)(v4.Value + 461) |= 8u;
      if( v0 >= dword_140C57DD0 )
        goto LABEL_5;
    }
  }
  else
  {
LABEL_5:
    v8 = 0i64;
    LOBYTE(v8) = 2;
    result = ExCreateHeap((__int64)&v8, 0i64, &v9);
    if( result >= 0 )
    {
      Value = v9.Value;
      v8 = 0i64;
      LOBYTE(v8) = 10;
      v6 = v8;
      *(_DWORD *)(v9.Value + 816) |= 2u;
      *(_BYTE *)(Value + 269) |= 8u;
      *(_BYTE *)(Value + 461) |= 8u;
      qword_140CDAE10 = Value;
      v8 = v6;
      result = ExCreateHeap((__int64)&v8, 0i64, &v9);
      if( result >= 0 )
      {
        v7 = v9.Value;
        *(_DWORD *)(v9.Value + 816) |= 2u;
        *(_BYTE *)(v7 + 269) |= 8u;
        *(_BYTE *)(v7 + 461) |= 8u;
        qword_140CDAE18 = v7;
        return 0;
      }
    }
  }
  return result;
}

Referenced by:

MiInitSystem