RtlpHpVaMgrCtxStart

INT64 __fastcall RtlpHpVaMgrCtxStart(INT64 a1, INT64 a2, INT64 a3, UINT64 a4){
  int v5; 
  unsigned int v7; 
  UINT64 v8; 
  INT64 result; 
  unsigned int v10; 
  int v11; 
  UINT64 v12; 
  INT64 v13; 
  __int128 v14; 
  ULONGLONG pullResult; 
  pullResult = 0i64;
  v5 = a2;
  _BitScanForward(&v7, 0x20u);
  *(_DWORD *)(a1 + 24) = v7;
  v8 = (a4 >> 20) + 1;
  if( (a4 & 0xFFFFF) == 0 )
    v8 = a4 >> 20;
  LODWORD(result) = RtlULongLongMult(v8, 8ui64, &pullResult);
  if( (int)result >= 0 )
  {
    LODWORD(result) = RtlULongLongMult(pullResult, v10, &pullResult);
    if( (int)result >= 0 )
    {
      result = RtlCSparseBitmapStart(a1 + 32, pullResult, v5, 1i64);
      if( (int)result >= 0 )
        result = 0i64;
      if( (int)result >= 0 )
      {
        LODWORD(v13) = -1;
        *(_DWORD *)a1 = v5;
        v11 = 0;
        *(_QWORD *)(a1 + 8) = a3;
        v14 = 0i64;
        while( 1 )
        {
          HIDWORD(v13) = v11;
          v12 = 0x200000i64;
          if( v11 != 2 && v11 == 3 )
            v12 = 0x40000000i64;
          result = RtlpHpVaMgrCtxAllocatorReference(a1, (INT64)&v13, v12);
          if( (int)result < 0 )
            break;
          if( ++v11 >= 4 )
            return 0i64;
        }
      }
    }
  }
  return result;
}

Referenced by:

RtlHpHeapManagerStart