PopGetIoLocation
_LARGE_INTEGER __stdcall PopGetIoLocation(POP_MCB_CONTEXT *McbContext, UINT64 FileOffset, UINT64 *MaxTransferLength){
UINT64 v3;
_QWORD *v5;
__int64 v6;
__int64 v7;
UINT64 v8;
_QWORD *v10;
UINT64 v11;
UINT64 v12;
v3 = *((_QWORD *)McbContext + 2);
v5 = (_QWORD *)*((_QWORD *)McbContext + 1);
if( FileOffset < v3 || (v6 = *v5, FileOffset >= *v5 + v3) )
{
v10 = (_QWORD *)*((_QWORD *)McbContext + 1);
v5 = v10;
v11 = *((_QWORD *)McbContext + 2);
if( FileOffset < v3 )
{
v5 = *(_QWORD **)McbContext;
v11 = 0i64;
*((_QWORD *)McbContext + 1) = *(_QWORD *)McbContext;
v3 = 0i64;
*((_QWORD *)McbContext + 2) = 0i64;
v10 = v5;
}
v6 = *v5;
v12 = v3;
v3 = v11;
if( FileOffset >= *v5 + v11 )
{
v6 = *v10;
v3 = v12;
do
{
v3 += v6;
v5 = v10 + 2;
*((_QWORD *)McbContext + 2) = v3;
v10 = v5;
*((_QWORD *)McbContext + 1) = v5;
v6 = *v5;
}
while( FileOffset >= *v5 + v3 );
}
}
v7 = v5[1];
v8 = FileOffset - v3;
*MaxTransferLength = v6 - v8;
return(_LARGE_INTEGER)(v8 + v7);
}Referenced by:
PopHiberReadChecksums
PopRequestRead
PopRequestWrite
PopWriteHiberPages