PopGetIoLocation

__int64 __fastcall PopGetIoLocation(__int64 a1, unsigned __int64 a2, _QWORD *a3){
  unsigned __int64 v3; 
  _QWORD *v5; 
  __int64 v6; 
  __int64 v7; 
  unsigned __int64 v8; 
  _QWORD *v10; 
  unsigned __int64 v11; 
  unsigned __int64 v12; 
  v3 = *(_QWORD *)(a1 + 16);
  v5 = *(_QWORD **)(a1 + 8);
  if( a2 < v3 || (v6 = *v5, a2 >= *v5 + v3) )
  {
    v10 = *(_QWORD **)(a1 + 8);
    v5 = v10;
    v11 = *(_QWORD *)(a1 + 16);
    if( a2 < v3 )
    {
      v5 = *(_QWORD **)a1;
      v11 = 0i64;
      *(_QWORD *)(a1 + 8) = *(_QWORD *)a1;
      v3 = 0i64;
      *(_QWORD *)(a1 + 16) = 0i64;
      v10 = v5;
    }
    v6 = *v5;
    v12 = v3;
    v3 = v11;
    if( a2 >= *v5 + v11 )
    {
      v6 = *v10;
      v3 = v12;
      do
      {
        v3 += v6;
        v5 = v10 + 2;
        *(_QWORD *)(a1 + 16) = v3;
        v10 = v5;
        *(_QWORD *)(a1 + 8) = v5;
        v6 = *v5;
      }
      while( a2 >= *v5 + v3 );
    }
  }
  v7 = v5[1];
  v8 = a2 - v3;
  *a3 = v6 - v8;
  return v8 + v7;
}

Referenced by:

PopHiberReadChecksums
PopRequestRead
PopRequestWrite
PopWriteHiberPages