SMKM_STORE_MGR::SmIoCtxPrepareToQueue

__int64 __fastcall SMKM_STORE_MGR::SmIoCtxPrepareToQueue(
        VOID *Context,
        __int64 a2,
        __int64 a3,
        unsigned __int64 a4,
        __int64 a5){
  int v5; 
  __int128 *v6; 
  VOID *v7; 
  _MDL *v8; 
  unsigned __int64 v9; 
  __int128 v12; 
  unsigned int v13; 
  int v15; 
  int v16; 
  _DWORD *v17; 
  UINT64 DontFail; 
  __int128 v19; 

  v5 = *(_DWORD *)a4;
  v6 = &v19;
  v7 = 0i64;
  *((_QWORD *)&v19 + 1) = &v19;
  *(_QWORD *)&v19 = 0i64;
  v8 = 0i64;
  v9 = a4;
  if( (v5 & 7) == 2 )
  {
    v15 = *(_DWORD *)(a2 + 1840);
    v8 = *(_MDL **)(a4 + 16);
    if( (v15 & 2) != 0 )
    {
      v16 = 0;
      if( (v15 & 1) != 0 && v8->ByteCount <= 0x1000 )
        v16 = 1;
      LODWORD(DontFail) = v16;
      v7 = SmFpAllocate((_SM_FORWARD_PROGRESS_CTX *)(a2 + 1536), SmFpResourceMapping, Context, v8, DontFail);
      if( !v7 )
      {
        v13 = -1073741670;
        goto LABEL_18;
      }
      v6 = (__int128 *)*((_QWORD *)&v19 + 1);
    }
  }
  *(_QWORD *)v9 = *(_DWORD *)v9 & 7 | ((*(_QWORD *)v6 & 0xFFFFFFFFFFFFFFF8ui64) + 8);
  *(_QWORD *)v6 = v9 | *(_DWORD *)v6 & 7;
  *((_QWORD *)&v19 + 1) = v9;
  if( (__int128 *)v9 != &v19 )
  {
    v12 = v19;
    *(_QWORD *)&v19 = 0i64;
    v9 = (unsigned __int64)&v19;
    *((_QWORD *)&v19 + 1) = &v19;
    *(_OWORD *)a5 = v12;
  }
  if( v7 )
    *(_QWORD *)(a5 + 16) = v8;
  *(_QWORD *)(a5 + 24) = Context;
  v13 = 0;
  while( (__int128 *)v9 != &v19 )
  {
    v17 = (_DWORD *)v19;
    *(_QWORD *)&v19 = *(_QWORD *)v19 & 0xFFFFFFFFFFFFFFF8ui64;
    if( v17 == (_DWORD *)v9 )
    {
      *(_QWORD *)&v19 = 0i64;
      *((_QWORD *)&v19 + 1) = &v19;
    }
    else
    {
      *(_QWORD *)v9 = *(_QWORD *)v9 & 7i64 | (8i64 * (*(_QWORD *)v9 >> 3) - 8);
    }
    SMKM_STORE_MGR::SmWorkItemFreeResource(a2, v17, Context);
LABEL_18:
    v9 = *((_QWORD *)&v19 + 1);
  }
  return v13;
}

Referenced by:

No references.