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.