RtlpMuiRegInitLIPLanguage

__int64 __fastcall RtlpMuiRegInitLIPLanguage(_MUIREGISTRYINFO *RegInfo, VOID *KeyHandle, _BYTE *a3){
  unsigned __int64 v3; 
  unsigned int v7; 
  unsigned int v8; 
  __int64 v9; 
  NTSTATUS ValueKey; 
  NTSTATUS v11; 
  unsigned __int64 v12; 
  UINT64 *KeyValueLength; 
  UINT64 KeyValueType; 

  v3 = (unsigned __int64)&KeyValueType & 0xFFFFFFFFFFFFFFE0ui64;
  *(_DWORD *)(v3 + 28) = 0;
  v7 = 0;
  v8 = 0;
  *(_OWORD *)(v3 + 8) = 0i64;
  memset((VOID *)(((unsigned __int64)&KeyValueType & 0xFFFFFFFFFFFFFFE0ui64) + 32), 0i64, 0xAAu);
  LODWORD(v9) = 0;
  if( !RegInfo || !KeyHandle || !a3 || (*a3 & 4) == 0 )
    return 3221225485i64;
  RtlInitUnicodeString((PUNICODE_STRING)(v3 + 8), L"DefaultFallback");
  *(_DWORD *)v3 = 1;
  *(_DWORD *)(((unsigned __int64)&KeyValueType & 0xFFFFFFFFFFFFFFE0ui64) + 0x18) = 170;
  if( LdrpQueryValueKey(
         KeyHandle,
         (_UNICODE_STRING *)(v3 + 8),
         (UINT64 *)((unsigned __int64)&KeyValueType & 0xFFFFFFFFFFFFFFE0ui64),
         (VOID *)(v3 + 32),
         (UINT64 *)(v3 + 24)) < 0
    || *(_DWORD *)v3 != 1 )
  {
    goto LABEL_29;
  }
  RtlInitUnicodeString((PUNICODE_STRING)(v3 + 8), (PCWSTR)(v3 + 32));
  *(_DWORD *)v3 = 7;
  ValueKey = LdrpQueryValueKey(
               KeyHandle,
               (_UNICODE_STRING *)(v3 + 8),
               (UINT64 *)((unsigned __int64)&KeyValueType & 0xFFFFFFFFFFFFFFE0ui64),
               0i64,
               0i64);
  v11 = ValueKey;
  if( (!ValueKey || ValueKey == -2147483643)
    && (*(_DWORD *)v3 == 7 || *(_DWORD *)v3 == 1)
    && (int)RtlMuiRegAddLIPParent(RegInfo, (__int64)a3, 0, (const WCHAR *)(v3 + 32)) >= 0 )
  {
    v7 = 1;
    v9 = -1i64;
    do
      ++v9;
    while( *(_WORD *)(((unsigned __int64)&KeyValueType & 0xFFFFFFFFFFFFFFE0ui64) + 0x20 + 2 * v9) );
  }
  if( v11 != -2147483622 )
  {
LABEL_29:
    while( v7 < 4 )
    {
      LODWORD(KeyValueLength) = 512;
      if( ZwEnumerateValueKey(
             KeyHandle,
             v8,
             KeyValueFullInformation,
             (VOID *)(v3 + 224),
             (UINT64)KeyValueLength,
             (UINT64 *)(v3 + 28)) < 0 )
        break;
      if( *(_DWORD *)(((unsigned __int64)&KeyValueType & 0xFFFFFFFFFFFFFFE0ui64) + 0xE4) == 7
        || *(_DWORD *)(((unsigned __int64)&KeyValueType & 0xFFFFFFFFFFFFFFE0ui64) + 0xE4) == 1 )
      {
        v12 = *(unsigned int *)(((unsigned __int64)&KeyValueType & 0xFFFFFFFFFFFFFFE0ui64) + 0xF0);
        if( v12 + 24 <= 0x200 )
        {
          *(_WORD *)(((unsigned __int64)&KeyValueType & 0xFFFFFFFFFFFFFFE0ui64) + 2 * (v12 >> 1) + 0xF4) = 0;
          RtlInitUnicodeString((PUNICODE_STRING)(v3 + 8), (PCWSTR)(v3 + 244));
          if( (!(_DWORD)v9
             || RtlCompareUnicodeStrings(
                  *(WCHAR **)(((unsigned __int64)&KeyValueType & 0xFFFFFFFFFFFFFFE0ui64) + 0x10),
                  (unsigned __int64)*(unsigned __int16 *)(((unsigned __int64)&KeyValueType & 0xFFFFFFFFFFFFFFE0ui64) + 8) >> 1,
                  (WCHAR *)(v3 + 32),
                  (unsigned int)v9,
                  1u))
            && (int)RtlMuiRegAddLIPParent(
                      RegInfo,
                      (__int64)a3,
                      v7,
                      *(const WCHAR **)(((unsigned __int64)&KeyValueType & 0xFFFFFFFFFFFFFFE0ui64) + 0x10)) >= 0 )
          {
            ++v7;
          }
        }
      }
      ++v8;
    }
  }
  return 0i64;
}

Referenced by:

RtlpMuiRegAddLanguageByName