RtlHpHeapManagerStart

void __fastcall RtlHpHeapManagerStart(_RTL_RUN_ONCE *a1, int a2, __int64 a3, unsigned __int64 a4, char a5){
  int v9; 
  unsigned int v10; 
  char v11; 
  __int128 Parameter; 

  a1[1].Value = a3;
  if( RtlCSparseBitmapStart((INT64)&a1[2], 2 * (a4 >> 20), a2, a2 == 1) >= 0 )
  {
    RtlpHpVaMgrCtxStart((INT64)&a1[11], a2, a3, a4 - 1);
    if( v9 >= 0 )
    {
      if( (a5 & 2) != 0 )
      {
        Parameter = 0i64;
        *(_WORD *)((char *)&Parameter + 1) = 1;
        LOBYTE(Parameter) = (2 * (a2 & 3)) | 1;
        RtlpHpMetadataHeapCreate(a1 + 1814, &Parameter, 0i64);
      }
      if( (a5 & 1) != 0 )
      {
        v10 = 0;
        v11 = 2 * (a2 & 3);
        do
        {
          Parameter = 0i64;
          *(_WORD *)((char *)&Parameter + 1) = (unsigned __int8)v10;
          LOBYTE(Parameter) = v11 | (v10 != 0);
          if( RtlpHpMetadataHeapStart(&a1[2 * v10 + 1811], &Parameter) < 0 )
            break;
          ++v10;
        }
        while( v10 < 3 );
      }
    }
  }
}

Referenced by:

ExInitializeSessionHeapManager
RtlHpKInitializeHeapManager