ST_STORE::StDmSinglePageRetrieveSync

__int64 __fastcall ST_STORE::StDmSinglePageRetrieveSync(__int64 a1, _DWORD *a2, __int64 a3, unsigned int a4){
  unsigned int v5; 
  __int64 result; 
  __int64 v7; 
  __int64 v8; 
  __int64 v9; 
  __int64 v10; 
  __int64 *v11; 
  __int64 v12; 
  __int64 v13; 
  _DWORD *v14; 
  __int128 v15; 
  v13 = a3;
  v12 = 0i64;
  HIDWORD(v14) = 0;
  v15 = 0i64;
  v5 = a4 & 2;
  if( (a4 & 2) != 0 )
    v14 = a2;
  else
    LODWORD(v14) = *a2;
  result = ST_STORE::StDmpSinglePageRetrieve(a1, a1 + 912, (__int64)&v12, a4, (ULONG_PTR)&v15);
  if( (int)result >= 1 )
  {
    v8 = (__int64)ST_STORE::StDeviceIoBuild(a1, (__int64)&v15, v7, v13);
    v9 = v8;
    if( v8 )
    {
      *(_DWORD *)(v8 + 28) = *(_DWORD *)(v8 + 28) & 0xFFFFFFEF | (v5 != 0 ? 0x10 : 0) | 0xC;
      v11 = &v10;
      v10 = 0i64;
      *(_QWORD *)v8 = *(_DWORD *)v8 & 7 | 8i64;
      *v11 = v8 | *(_DWORD *)v11 & 7;
      v11 = (__int64 *)v8;
      if( (int)ST_STORE::StDeviceIoIssue(a1, &v10) >= 0 )
        SmWaitForSyncIo(*(PVOID *)(a1 + 800));
      result = ST_STORE::StDmDeviceIoCompletion(a1, v9);
      if( (int)result >= 0 )
        return 0i64;
    }
    else
    {
      return 3221225626i64;
    }
  }
  return result;
}

Referenced by:

No references.