ObCreateSymbolicLink

NTSTATUS __stdcall ObCreateSymbolicLink(
        _XSTATE_CONFIGURATION *a1,
        UINT64 a2,
        EVT_WDFCX_DEVICE_PRE_SELF_MANAGED_IO_SUSPEND *a3,
        _XSTATE_CONFIGURATION *a4,
        CHAR PreviousMode){
  _XSTATE_CONFIGURATION *v5; 
  unsigned int v6; 
  _XSTATE_CONFIGURATION *v7; 
  int inserted; 
  _DWORD *v9; 
  VOID **PoolWithTag; 
  VOID *v12; 
  VOID *v13; 
  UINT64 ObjectBodySize; 
  PVOID *Handle; 
  UINT64 v16; 
  PVOID Object; 
  PVOID v18; 

  v5 = a4;
  v6 = a2;
  v7 = a1;
  v18 = 0i64;
  Object = 0i64;
  LODWORD(v16) = 0;
  LODWORD(Handle) = 0;
  LODWORD(ObjectBodySize) = 40;
  LOBYTE(a4) = PreviousMode;
  LOBYTE(a1) = PreviousMode;
  inserted = ObCreateObjectEx(
               (UINT64)a1,
               ObjectType,
               (_OBJECT_ATTRIBUTES *)a3,
               (UINT64)a4,
               v12,
               ObjectBodySize,
               (UINT64)Handle,
               v16,
               &Object,
               0i64);
  if( inserted < 0 )
  {
    v9 = Object;
  }
  else
  {
    v9 = Object;
    *(_QWORD *)Object = *(_QWORD *)&KUSER_SHARED_DATA.SystemTime.LowPart;
    v9[6] = 0;
    v9[7] = 0;
    if( (v5->EnabledFeatures & 1) != 0 )
    {
      v9[7] = 16;
      *((_QWORD *)v9 + 1) = v5->EnabledVolatileFeatures;
      *((_QWORD *)v9 + 2) = *(_QWORD *)&v5->Size;
    }
    else
    {
      *((_WORD *)v9 + 5) = WORD1(v5->EnabledVolatileFeatures);
      *((_WORD *)v9 + 4) = v5->EnabledVolatileFeatures;
      PoolWithTag = ExAllocatePoolWithTag(1ui64, WORD1(v5->EnabledVolatileFeatures), 1953331539i64);
      *((_QWORD *)v9 + 2) = PoolWithTag;
      if( !PoolWithTag )
      {
        inserted = -1073741801;
        goto LABEL_9;
      }
      memmove(PoolWithTag, *(const VOID **)&v5->Size, WORD1(v5->EnabledVolatileFeatures));
    }
    if( (unsigned __int8)RtlIsSandboxedToken(InterruptControllerInvalid) )
      v9[7] |= 2u;
    LODWORD(v13) = 0;
    inserted = ObInsertObjectEx(v9, 0i64, v6, 0i64, (UINT64)v13, 0i64, &v18);
    v9 = 0i64;
    Object = 0i64;
    if( inserted >= 0 )
    {
      v7->EnabledFeatures = (unsigned __int64)v18;
      inserted = 0;
    }
  }
LABEL_9:
  if( v9 )
    HalPutDmaAdapter((PADAPTER_OBJECT)v9);
  return inserted;
}

Referenced by:

MiCreateMemoryEvent
NtCreateSymbolicLinkObject