KsepEngineInitialize

NTSTATUS __stdcall KsepEngineInitialize(_KSE_ENGINE *Engine){
  __int64 v2; 
  void *v3; 
  __int64 v4; 
  NTSTATUS result; 
  __int64 v6; 

  if( !Engine )
  {
    v6 = ((unsigned __int8)_InterlockedExchangeAdd(&KsepHistoryErrorsIndex, 1u) + 1) & 0x3F;
    KsepHistoryErrors[2 * v6 + 1] = -1073740768;
    KsepHistoryErrors[2 * v6] = 131872;
    if( (KsepDebugFlag & 4) != 0 )
      RtlAssert("Engine != NULL", "minkernel\\ntos\\kshim\\ksecore.c", 800i64, 0i64);
  }
  *((_QWORD *)Engine + 3) = Engine + 4;
  *((_QWORD *)Engine + 2) = Engine + 4;
  *((_QWORD *)Engine + 5) = Engine + 8;
  *((_QWORD *)Engine + 4) = Engine + 8;
  *((_QWORD *)Engine + 6) = 0i64;
  LODWORD(v2) = KsepCacheInitialize(Engine, (UINT64 *)KsepCacheDeviceEqual);
  *((_QWORD *)Engine + 9) = v2;
  if( !v2 )
    return -1073741801;
  LODWORD(v4) = KsepCacheInitialize(v3, (UINT64 *)KsepCacheHwIdEqual);
  *((_QWORD *)Engine + 10) = v4;
  if( !v4 )
    return -1073741801;
  *((_QWORD *)Engine + 7) = KseGetIoCallbacks;
  *((_QWORD *)Engine + 8) = KseSetCompletionHook;
  result = KsepEngineReadFlags(&::Engine);
  if( result >= 0 && (::Engine & 3) == 3 )
    return -1073741637;
  return result;
}

Referenced by:

KseInitialize