DmrGetNextRemappingStructure

UINT64 __stdcall DmrGetNextRemappingStructure(UINT64 a1, INT64 a2){
  UINT64 v2; 
  UINT64 v3; 
  UINT64 v5; 
  UINT64 v6; 

  v2 = 0i64;
  v3 = a1 + *(unsigned int *)(a1 + 4);
  if( v3 <= a1 )
    return 0i64;
  if( a2 )
    v5 = a2 + *(unsigned __int16 *)(a2 + 2);
  else
    v5 = a1 + 48;
  if( v5 + 4 > v5 && v5 + 4 <= v3 )
  {
    v6 = v5 + *(unsigned __int16 *)(v5 + 2);
    if( v6 > v5 && v6 <= v3 )
      return v5;
  }
  return v2;
}

Referenced by:

DmrEnumerateRmrrDomains
DmrFindDrhdForDeviceScope
DmrValidateDeviceScope
HalpIvtProcessDmarTable
IvtCheckForReservedRegion