KGetUnlockSetting

NTSTATUS __stdcall KGetUnlockSetting(
        _UNICODE_STRING *keyPath,
        _UNICODE_STRING *keyValueName,
        _APPMODEL_UNLOCK_VALUE *value,
        INT64 a4,
        INT64 a5,
        INT64 a6,
        INT64 a7,
        INT64 a8){
  int v10; 
  char v11; 
  INT64 Length; 
  UINT64 Lengtha; 
  UINT64 *ResultLength; 
  UINT64 v16; 
  VOID *KeyHandle; 
  _OBJECT_ATTRIBUTES ObjectAttributes; 
  char KeyValueInformation[4]; 
  int v20; 
  unsigned int v21; 
  __int64 v22; 

  *(&ObjectAttributes.Length + 1) = 0;
  memset(&ObjectAttributes.Attributes + 1, 0, 20);
  LODWORD(v16) = 0;
  ObjectAttributes.RootDirectory = 0i64;
  ObjectAttributes.ObjectName = keyPath;
  ObjectAttributes.Length = 48;
  ObjectAttributes.Attributes = 576;
  v10 = ZwOpenKey(&KeyHandle, 0x20119ui64, &ObjectAttributes, a4, Length, (INT64)ResultLength, v16, 0i64);
  if( v10 >= 0 )
  {
    LODWORD(Lengtha) = 24;
    v10 = ZwQueryValueKey(KeyHandle, keyValueName, KeyValuePartialInformation, KeyValueInformation, Lengtha, &v16);
    if( v10 >= 0 )
    {
      v11 = 1;
      if( (unsigned int)v22 > 1 && (_DWORD)v22 != 0xFFFF )
        v11 = 0;
      if( v20 == 4 && v21 >= 4 && v11 )
        *value = v22;
      else
        *value = 0xFFFF;
    }
    ZwClose((_HANDLE)KeyHandle);
  }
  if( v10 == -1073741772 )
  {
    *value = 0xFFFF;
    return 0;
  }
  return v10;
}

Referenced by:

KIsSideloadingEnabled
KIsUnlockSettingEnabled