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.