ST_STORE::StStagingRegionIssueIo
__int64 __fastcall ST_STORE::StStagingRegionIssueIo(__int64 a1, unsigned int *a2){
__int64 v2;
UINT64 v5;
__int64 v6;
unsigned int v7;
int v8;
int v9;
int v10;
__int64 v11;
v2 = *(_QWORD *)(a1 + 1032);
v5 = *((_QWORD *)a2 + 2);
v6 = *a2;
v7 = *a2 << *(_DWORD *)(a1 + 812);
v8 = *(_DWORD *)(v5 + 28);
*(_DWORD *)(v5 + 24) = v7;
*(_DWORD *)(v5 + 28) ^= (*(_DWORD *)(a1 + 832) ^ v8) & 2;
*(_WORD *)(v2 + 2 * v6) |= 0x8000u;
*(_DWORD *)(v5 + 28) ^= (*(_DWORD *)(v5 + 28) ^ (*(_DWORD *)(a1 + 832) >> 2)) & 4;
StEtaIoStart(*(LARGE_INTEGER **)(a1 + 1000), *(unsigned int *)(a1 + 784), 1i64, v5 + 8);
v9 = SmIssueIo(*(_QWORD *)(a1 + 800), v6, 0, *(_DWORD *)(a1 + 784), *((VOID **)a2 + 1), v5);
v10 = *(_DWORD *)(v5 + 28);
if( v9 >= 0 )
{
if( (v10 & 4) != 0 )
{
SmWaitForSyncIo(*(PVOID *)(a1 + 800));
return(unsigned int)ST_STORE::StDmDeviceIoCompletion(a1, v5);
}
}
else
{
*(_DWORD *)(v5 + 28) = v10 | 1;
v11 = *(_QWORD *)(v5 + 16);
if( v11 )
*(_DWORD *)(v11 + 4) = v9;
else
*(_DWORD *)(v5 + 8) = v9;
ST_STORE::StDmDeviceIoCompletion(a1, v5);
}
return(unsigned int)v9;
}
Referenced by:
No references.