RtlDetermineHotPatchUndoExtent

CHAR __stdcall RtlDetermineHotPatchUndoExtent(INT64 a1, INT64 a2, UINT64 a3, INT64 *a4, UINT64 *a5){
  __int64 v5; 
  int v6; 

  if( (_DWORD)a2 )
  {
    v5 = (unsigned int)(2 * a3);
    if( *(_DWORD *)(a1 + 4 * v5) )
    {
      v6 = *(_DWORD *)(a1 + 4 * v5 + 4);
LABEL_4:
      *(_DWORD *)a4 = v6 >> 12;
      *(_DWORD *)a5 = (unsigned int)(v6 + 1) >> 12;
      return 1;
    }
  }
  else
  {
    v6 = *(_DWORD *)(a1 + 6i64 * (unsigned int)a3);
    if( v6 )
      goto LABEL_4;
  }
  return 0;
}

Referenced by:

MiLockHotPatchUndoPages
MiProcessHotPatchUndoTable