IopRegistryInitializeCallbacks

NTSTATUS __stdcall IopRegistryInitializeCallbacks(){
  unsigned int v0; 
  wchar_t **v1; 
  wchar_t *v2; 
  wchar_t *v3; 
  _UNICODE_STRING DestinationString; 
  UINT8 FoundFullPath; 

  v0 = 0;
  DestinationString = 0i64;
  v1 = &IopRegistryRegisteredCallbacks;
  FoundFullPath = 0;
  if( off_140C030B0 )
  {
    v2 = 0i64;
    do
    {
      v3 = v1[6];
      if( v3 )
        LODWORD(v3) = ((__int64(__fastcall *)(wchar_t **))v3)(v1);
      if( (int)v3 < 0 )
      {
        *((_DWORD *)v1 + 2) = 0;
      }
      else
      {
        RtlInitUnicodeString(&DestinationString, *v1);
        v1[8] = 0i64;
        v1[10] = (wchar_t *)IopRegistryCallback;
        v1[11] = v2;
        if( IopRegistryOpenDeepestPath(&DestinationString, (VOID **)v1 + 4, &FoundFullPath) >= 0 )
        {
          ZwNotifyChangeKey(
            (_HANDLE)v1[4],
            0,
            (PIO_APC_ROUTINE)(v1 + 8),
            (PVOID)1,
            (PIO_STATUS_BLOCK)v1 + 6,
            *((_DWORD *)v1 + 2),
            1u,
            0i64,
            0,
            1u);
          if( FoundFullPath )
            *((_DWORD *)v1 + 10) |= 1u;
        }
      }
      v2 = (wchar_t *)++v0;
      v1 = &(&IopRegistryRegisteredCallbacks)[14 * v0];
    }
    while( v1[2] );
  }
  return 0;
}

Referenced by:

IoInitSystem