PiDrvDbInit

NTSTATUS __stdcall PiDrvDbInit(UINT64 Phase){
  WCHAR v1; 
  NTSTATUS v2; 
  INT64 v4; 
  int v5; 
  wchar_t **i; 
  unsigned int v7; 
  WCHAR *v8; 
  int v9; 
  WCHAR v10; 
  NTSTATUS v12; 

  v2 = 0;
  v12 = 0;
  if( (_DWORD)Phase )
  {
    if( (_DWORD)Phase == 2 )
    {
      v2 = PiDrvDbSetupNodes(2, 0i64, v1);
      if( v2 >= 0 )
        return PiDrvDbSuspendNodes(0i64);
    }
  }
  else
  {
    qword_140C42E98 = (__int64)&PiDrvDbNodeList;
    PiDrvDbNodeList = (INT64)&PiDrvDbNodeList;
    v2 = DrvDbOpenContext();
    if( v2 >= 0 )
    {
      v5 = 0;
      for( i = &PiDrvDbNodeDescriptors; ; i += 2 )
      {
        v7 = *((_DWORD *)i + 2);
        if( (v7 & 4) == 0 || !CmIsStateSeparationEnabled() )
        {
          v2 = PiDrvDbRegisterNode(*i, v7, v4, 0i64);
          if( v2 < 0 )
            break;
        }
        if( (unsigned int)++v5 >= 2 )
        {
          if( v2 >= 0 )
          {
            v2 = PiDrvDbEnumDriverStoreNodes(
                   (unsigned __int8(__fastcall *)(_QWORD, __int64))PiDrvDbRegisterNodeCallback,
                   (__int64)&v12,
                   v4);
            if( v2 >= 0 )
            {
              v2 = v12;
              if( v12 >= 0 )
              {
                LOBYTE(v8) = 1;
                v9 = PiDrvDbSuspendNodes(v8);
                v2 = v9;
                if( v9 >= 0 )
                  return PiDrvDbSetupNodes(0, (unsigned int)v9, v10);
              }
            }
          }
          return v2;
        }
      }
    }
  }
  return v2;
}

Referenced by:

PiPnpRtlInit