ST_STORE::StDmEtaPerformIo
__int64 __fastcall ST_STORE::StDmEtaPerformIo(UINT64 StoreId, int a2, __int64 a3){
int v4;
__int64 v5;
unsigned int v6;
__int64 v7;
__int64 v8;
__int64 v10;
__int64 *v11;
__int128 v12;
v4 = a2 << *(_DWORD *)(StoreId + 812);
v12 = 0i64;
LOWORD(a3) = a3 - *(_WORD *)(StoreId + 824);
LODWORD(v12) = v4;
WORD2(v12) = a3;
v5 = (__int64)ST_STORE::StDeviceIoBuild(StoreId, (__int64)&v12, a3, 57005i64);
v6 = 0;
v7 = v5;
if( v5 )
{
*(_DWORD *)(v5 + 28) |= 0xCu;
v10 = 0i64;
v11 = &v10;
*(_QWORD *)v5 = *(_DWORD *)v5 & 7 | 8i64;
*v11 = v5 | *(_DWORD *)v11 & 7;
v11 = (__int64 *)v5;
if( (int)ST_STORE::StDeviceIoIssue(StoreId, &v10) >= 0 )
SmWaitForSyncIo(*(VOID **)(StoreId + 800));
if( (*(_DWORD *)(v7 + 28) & 1) == 0 )
{
*(_DWORD *)(v7 + 28) |= 1u;
v8 = *(_QWORD *)(v7 + 16);
if( v8 )
*(_DWORD *)(v8 + 4) = -1073741691;
else
*(_DWORD *)(v7 + 8) = -1073741691;
}
ST_STORE::StDmDeviceIoCompletion(StoreId, v7);
}
else
{
return(unsigned int)-1073741670;
}
return v6;
}
Referenced by:
No references.