PfSnAppLaunchScenarioControl

NTSTATUS __stdcall PfSnAppLaunchScenarioControl(PFSN_APPLAUNCH_SCENARIO_CONTROL *Control, INT8 PreviousMode){
  int v2; 
  bool v3; 
  int v4; 
  _EPROCESS *v5; 
  UINT64 Tag; 
  PVOID Object; 
  _KAPC_STATE ApcState; 

  Object = 0i64;
  v2 = 0;
  v3 = *Control == 1;
  memset(&ApcState, 0, sizeof(ApcState));
  if( !v3 )
    return -1073741735;
  if( !Control[1] )
    return -1073741811;
  LODWORD(Tag) = 1935107664;
  v4 = ObReferenceObjectByHandleWithTag(
         *((VOID **)Control + 1),
         8ui64,
         (_OBJECT_TYPE *)PsProcessType,
         PreviousMode,
         Tag,
         &Object,
         0i64);
  if( v4 < 0 )
  {
    v5 = (_EPROCESS *)Object;
  }
  else
  {
    v5 = (_EPROCESS *)Object;
    if( KeGetCurrentThread()->ApcState.Process != Object )
    {
      v2 = 1;
      KeStackAttachProcess((PRKPROCESS)Object, &ApcState);
    }
    PfSnBeginAppLaunch(v5, 0i64, 9ui64);
    v4 = 0;
    if( v2 )
      KeUnstackDetachProcess(&ApcState);
  }
  if( v5 )
    ObfDereferenceObjectWithTag(v5, 0x73576650ui64);
  return v4;
}

Referenced by:

PfSnSetPrefetcherInformation