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.