RegRtlOpenPredefinedKey

NTSTATUS __stdcall RegRtlOpenPredefinedKey(
        VOID *hKey,
        VOID **phkPredef,
        INT64 a3,
        INT64 a4,
        INT64 a5,
        INT64 a6,
        INT64 a7,
        INT64 a8){
  wchar_t *Buffer; 
  int v10; 
  _UNICODE_STRING UnicodeString; 

  UnicodeString = 0i64;
  if( hKey == (VOID *)2147483650i64 )
  {
    Buffer = L"\\REGISTRY\\MACHINE";
LABEL_3:
    v10 = RegRtlOpenKeyTransacted(0i64, Buffer, 0i64, 0x2000000ui64, phkPredef, 0i64);
    goto LABEL_4;
  }
  if( hKey == (VOID *)0x80000000i64 )
  {
    Buffer = L"\\REGISTRY\\MACHINE\\SOFTWARE\\CLASSES";
    goto LABEL_3;
  }
  if( hKey == (VOID *)2147483651i64 )
  {
    Buffer = L"\\REGISTRY\\USER";
    goto LABEL_3;
  }
  if( hKey == (VOID *)2147483653i64 )
  {
    Buffer = L"\\REGISTRY\\MACHINE\\SYSTEM\\CURRENTCONTROLSET\\HARDWARE PROFILES\\CURRENT";
    goto LABEL_3;
  }
  if( hKey != (VOID *)2147483649i64 )
  {
    v10 = -1073741816;
    goto LABEL_4;
  }
  v10 = RtlFormatCurrentUserKeyPath(&UnicodeString);
  if( v10 >= 0 )
  {
    Buffer = UnicodeString.Buffer;
    goto LABEL_3;
  }
LABEL_4:
  RtlFreeAnsiString(&UnicodeString);
  return v10;
}

Referenced by:

RegRtlCreateKeyTransacted
RegRtlOpenKeyTransacted
RegRtlQueryKeyPathName