ST_STORE::StDmSinglePageRetrieveSync

__int64 __fastcall ST_STORE::StDmSinglePageRetrieveSync(
        UINT64 StoreId,
        _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; 
  __int64 v15[2]; 

  v13 = a3;
  v12 = 0i64;
  HIDWORD(v14) = 0;
  *(_OWORD *)v15 = 0i64;
  v5 = a4 & 2;
  if( (a4 & 2) != 0 )
    v14 = a2;
  else
    LODWORD(v14) = *a2;
  result = ST_STORE::StDmpSinglePageRetrieve(StoreId, StoreId + 912, (__int64)&v12, a4, (__int64)v15);
  if( (int)result >= 1 )
  {
    v8 = (__int64)ST_STORE::StDeviceIoBuild(StoreId, (__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(StoreId, &v10) >= 0 )
        SmWaitForSyncIo(*(VOID **)(StoreId + 800));
      result = ST_STORE::StDmDeviceIoCompletion(StoreId, v9);
      if( (int)result >= 0 )
        return 0i64;
    }
    else
    {
      return 3221225626i64;
    }
  }
  return result;
}

Referenced by:

No references.