MiMapParametersInitialize

NTSTATUS __stdcall MiMapParametersInitialize(VOID *a1, INT64 a2, INT64 a3, INT64 a4, INT64 a5){
  _CONTROL_AREA *v8; 
  unsigned int v9; 
  unsigned int v10; 
  INT64 v11; 
  __int64 v12; 
  int v13; 
  int v15; 
  int v16; 
  INT64 v17; 

  v8 = MiSectionControlArea((_SECTION *)a2);
  memset(a1, 0i64, 0x80u);
  *((_QWORD *)a1 + 12) = KeGetCurrentThread()->ApcState.Process;
  *((_QWORD *)a1 + 11) = a3;
  v9 = (unsigned __int16)KeNumberNodes;
  v10 = v15 & 0x7F;
  *((_BYTE *)a1 + 104) = KeGetCurrentThread()->PreviousMode;
  *((_DWORD *)a1 + 13) = v10;
  if( v10 > v9 )
    return -1073741811;
  *((_DWORD *)a1 + 10) = v15 & 0xFFFFFF80;
  *((_DWORD *)a1 + 11) = v16;
  if( a4 )
    *((_DWORD *)a1 + 18) |= 1u;
  *((_QWORD *)a1 + 3) = a5;
  if( (v8->u.LongFlags & 0x20) == 0 && (*((_DWORD *)a1 + 18) & 1) != 0 )
    v11 = 0i64;
  else
    v11 = v17;
  LODWORD(v12) = MiGetUserReservationHighestAddress(a3, v11);
  *((_QWORD *)a1 + 1) = v12;
  *((_QWORD *)a1 + 2) = 0x10000i64;
  if( (v8->u.LongFlags & 0x420) == 0 )
  {
    if( (v13 & 0x20000000) != 0 )
    {
      *((_QWORD *)a1 + 2) = 0x200000i64;
    }
    else if( (v13 & 0x40000000) != 0 )
    {
      *((_QWORD *)a1 + 2) = 4096i64;
    }
  }
  return 0;
}

Referenced by:

MiMapViewOfSectionExCommon
MmMapSecureViewOfSection
MmMapViewOfSection
NtMapViewOfSection