FsRtlLookupLastBaseMcbEntryAndIndex

VOID __stdcall FsRtlLookupLastBaseMcbEntryAndIndex(_BASE_MCB *Mcb, INT64 *LargeVbn, INT64 *LargeLbn, UINT64 *Index){
  int v4; 
  ULONG PairCount; 
  _DWORD *Mapping; 
  int v10; 
  int v11; 
  int v12; 
  v4 = 0;
  PairCount = Mcb->PairCount;
  if( PairCount )
  {
    Mapping = Mcb->Mapping;
    v10 = Mapping[2 * PairCount - 1];
    if( v10 == -1 )
    {
      v12 = -1;
    }
    else
    {
      if( PairCount == 1 )
        v11 = 0;
      else
        v11 = Mapping[2 * PairCount - 4];
      v12 = v10 - v11 + Mapping[2 * PairCount - 2] - 1;
    }
    *(_DWORD *)LargeLbn = v12;
    *(_DWORD *)LargeVbn = *((_DWORD *)Mcb->Mapping + 2 * (Mcb->PairCount - 1)) - 1;
    *(_DWORD *)Index = Mcb->PairCount - 1;
  }
  *((_DWORD *)LargeVbn + 1) = (*(_DWORD *)LargeVbn != -1) - 1;
  LOBYTE(v4) = *(_DWORD *)LargeLbn != -1;
  *((_DWORD *)LargeLbn + 1) = v4 - 1;
}

Referenced by:

FsRtlLookupLastLargeMcbEntryAndIndex