PnpCtxCreateNode

__int64 __fastcall PnpCtxCreateNode(
        int *a1,
        const WCHAR *a2,
        int a3,
        __int64 a4,
        __int64 a5,
        PVOID P,
        __int64 a7,
        HANDLE SourceHandle,
        _QWORD *a9){
  _QWORD *v9; 
  PVOID v10; 
  VOID *PoolWithTag; 
  VOID *v15; 
  __int64 v16; 
  __int64 v17; 
  __int64 v18; 
  int v19; 
  unsigned int v20; 
  int v21; 
  int v23; 
  v9 = a9;
  v10 = 0i64;
  P = 0i64;
  *a9 = 0i64;
  PoolWithTag = ExAllocatePoolWithTag(PagedPool, 0x98ui64, 0x52504E50ui64);
  v15 = PoolWithTag;
  if( !PoolWithTag )
    return(unsigned int)-1073741801;
  memset((INT64)PoolWithTag, 0i64);
  if( RtlCreateUnicodeString((UNICODE_STRING *)v15 + 2, (PWCHAR)a2) )
  {
    v18 = a7;
    *((_DWORD *)v15 + 12) = a3;
    v19 = SysCtxOpenMachine(v16, a5, v17, v18, SourceHandle, *a1, (__int64)&P);
    v10 = P;
    v20 = v19;
    if( v19 >= 0 )
    {
      if( *(_DWORD *)P < 0xA000000u )
      {
        v20 = -1073741637;
      }
      else
      {
        *((_QWORD *)v15 + 8) = 0i64;
        *((_QWORD *)v15 + 9) = 0i64;
        *((_QWORD *)v15 + 10) = 0i64;
        *((_QWORD *)v15 + 11) = 0i64;
        *((_QWORD *)v15 + 12) = 0i64;
        *((_QWORD *)v15 + 13) = 0i64;
        *((_QWORD *)v15 + 14) = 0i64;
        *((_QWORD *)v15 + 16) = 0i64;
        *((_QWORD *)v15 + 17) = 0i64;
        *((_QWORD *)v15 + 18) = 0i64;
        v21 = a3 - 1;
        if( v21 )
        {
          v23 = v21 - 1;
          if( v23 )
          {
            if( v23 != 1 )
            {
              v20 = -1073741811;
              goto LABEL_7;
            }
            *((_QWORD *)v15 + 8) = -1i64;
            *((_QWORD *)v15 + 12) = -1i64;
            *((_QWORD *)v15 + 13) = -1i64;
            *((_QWORD *)v15 + 14) = -1i64;
            *((_QWORD *)v15 + 16) = -1i64;
            *((_QWORD *)v15 + 17) = -1i64;
            *((_QWORD *)v15 + 18) = -1i64;
          }
        }
        *((_QWORD *)v15 + 7) = v10;
        v10 = 0i64;
        *v9 = v15;
        v15 = 0i64;
      }
    }
  }
  else
  {
    v20 = -1073741801;
  }
LABEL_7:
  if( v15 )
    ExFreePoolWithTag(v15, 0);
  if( v10 )
    SysCtxCloseMachine(v10);
  return v20;
}

Referenced by:

PnpCtxOpenMachine
PnpCtxRegisterMachineNode