CmpCreatePredefined

VOID __stdcall CmpCreatePredefined(PVOID Root, WCHAR *KeyName, PVOID PredefinedHandle){
  WCHAR v6; 
  HANDLE Handle; 
  struct _UNICODE_STRING DestinationString; 
  int v9[2]; 
  PVOID v10; 
  struct _UNICODE_STRING *p_DestinationString; 
  int v12; 
  int v13; 
  __int128 v14; 
  PVOID Object; 
  struct _OBJECT_HANDLE_INFORMATION v16; 
  int v17; 
  PVOID v18; 
  int v19; 
  _QWORD v20[9]; 
  INT64 result[11]; 
  v9[1] = 0;
  v13 = 0;
  Handle = 0i64;
  DestinationString = 0i64;
  memset((INT64)&v16, 0i64);
  v19 = -1;
  v20[1] = v20;
  v20[0] = v20;
  memset((INT64)result, 0i64);
  v17 = 16777217;
  v16.HandleAttributes = 33;
  v18 = PredefinedHandle;
  RtlInitUnicodeString(&DestinationString, KeyName, v6);
  p_DestinationString = &DestinationString;
  v9[0] = 48;
  v10 = Root;
  v12 = 576;
  v14 = 0i64;
  if( ObOpenObjectByName((__int64)v9, (__int64)CmKeyObjectType, 0, 0i64, 0x20019u, (__int64)&v16, &Handle) >= 0 )
  {
    ObReferenceObjectByHandle(Handle, 0, (POBJECT_TYPE)CmKeyObjectType, 0, &Object, 0i64);
    ZwClose(Handle);
  }
  CmpCleanupParseContext((__int64)&v16, 0);
}

Referenced by:

CmpCreatePerfKeys