INT64 __fastcall PiKsrNotifyInitialize(INT64 a1, INT64 a2, WCHAR a3){
struct _UNICODE_STRING DestinationString;
struct _OBJECT_ATTRIBUTES ObjectAttributes;
*(&ObjectAttributes.Length + 1) = 0;
*(&ObjectAttributes.Attributes + 1) = 0;
PnpKsrNotifyLock.Owner = 0i64;
PnpKsrNotifyLock.Contention = 0;
PnpKsrNotifyLock.Event.Header.SignalState = 0;
qword_140C42EB8 = (__int64)&PnpKsrNotifyList;
PnpKsrNotifyList = &PnpKsrNotifyList;
PnpKsrNotifyLock.Event.Header.WaitListHead.Blink = &PnpKsrNotifyLock.Event.Header.WaitListHead;
PnpKsrNotifyLock.Event.Header.WaitListHead.Flink = &PnpKsrNotifyLock.Event.Header.WaitListHead;
DestinationString = 0i64;
PnpKsrNotifyLock.Count = 1;
LOWORD(PnpKsrNotifyLock.Event.Header.Lock) = 1;
PnpKsrNotifyLock.Event.Header.Size = 6;
RtlInitUnicodeString(&DestinationString, L"\\Callback\\SoftRestart", a3);
ObjectAttributes.RootDirectory = 0i64;
ObjectAttributes.ObjectName = &DestinationString;
ObjectAttributes.Length = 48;
ObjectAttributes.Attributes = 80;
*(_OWORD *)&ObjectAttributes.SecurityDescriptor = 0i64;
if( ExCreateCallback(&PnpKsrCallbackObject, &ObjectAttributes, 0, 0) >= 0 )
ExRegisterCallback(PnpKsrCallbackObject, PipKsrCallback, IopRootDeviceNode);
return 0i64;
}