MiInitializeRelocations

UINT64 __stdcall MiInitializeRelocations(UINT64 *Pool, INT64 *a2){
  __int64 v2; 
  __int64 v3; 
  __int64 *v4; 
  unsigned __int64 v5; 
  int v6; 
  __int64 v7; 
  unsigned __int64 v8; 
  unsigned __int64 *v9; 
  UINT64 result; 
  LODWORD(v2) = MiAllocatePool((struct _SLIST_ENTRY *)0x100);
  if( v2 )
  {
    qword_140C4C890 = 0x7FFFFi64;
    qword_140C4C898 = v2;
    qword_140C4C8A0 = ExGenRandom(1i64) & 0x7FFFE;
    LODWORD(v3) = MiAllocatePool((struct _SLIST_ENTRY *)0x100);
    if( v3 )
    {
      qword_140C4C928 = v3;
      qword_140C4C920 = 10240i64;
      qword_140C4C930 = (unsigned int)ExGenRandom(1i64) % 0x2800ui64;
      v4 = qword_140C4C8D8;
      v5 = (unsigned __int64)(unsigned __int8)ExGenRandom(1i64) << 16;
      v6 = 0;
      qword_140C4C8A8 = v5 + 2013265920;
      qword_140C4C8B0 = v5 + 2013265920;
      qword_140C4C8B8 = v5 + 3758096384u;
      qword_140C4C8C0 = v5 + 3758096384u;
      while( 1 )
      {
        LODWORD(v7) = MiAllocatePool((struct _SLIST_ENTRY *)0x100);
        if( !v7 )
          break;
        *(v4 - 2) = 10240i64;
        *(v4 - 1) = v7;
        ++v6;
        v8 = (unsigned __int64)(unsigned __int8)ExGenRandom(1i64) << 16;
        *v4 = v8 + 2013265920;
        v4[1] = v8 + 2013265920;
        v4[2] = v8 + 3758096384u;
        v4[3] = v8 + 3758096384u;
        v4 += 8;
        if( v6 )
        {
          qword_140C4C908 = (unsigned __int8)ExGenRandom(1i64);
          LODWORD(v9) = MiAllocatePool((struct _SLIST_ENTRY *)0x100);
          if( !v9 )
            return 0i64;
          Destination.Buffer = v9;
          result = 1i64;
          Destination.SizeOfBitMap = 10240i64;
          return result;
        }
      }
    }
  }
  return 0i64;
}

Referenced by:

MiInitSystem