RtlpRemovePendingDeleteLanguages

NTSTATUS __stdcall RtlpRemovePendingDeleteLanguages(_MUIREGISTRYINFO *RegInfo, INT16 InstallLangIndex){
  __int16 *v2; 
  UINT64 v5; 
  unsigned int v7; 
  NTSTATUS v8; 
  UINT8 v9; 
  unsigned __int64 v10; 
  __int64 v11; 
  UINT64 v12; 
  INT64 Length; 
  UINT64 Lengtha; 
  UINT64 *ResultLength; 
  INT64 v16; 
  INT64 v17; 
  INT16 ResultIndexRtrn[2]; 

  v2 = (__int16 *)((unsigned __int64)ResultIndexRtrn & 0xFFFFFFFFFFFFFFE0ui64);
  *((_QWORD *)v2 + 1) = 0i64;
  *((_DWORD *)v2 + 1) = 0;
  *v2 = -1;
  *((_OWORD *)v2 + 1) = 0i64;
  if( !RegInfo )
    return -1073741811;
  RtlInitUnicodeString(
    (PUNICODE_STRING)v2 + 1,
    L"\\Registry\\Machine\\System\\CurrentControlSet\\Control\\MUI\\UILanguages\\PendingDelete");
  if( LdrpOpenKey((_UNICODE_STRING *)v2 + 1, 0i64, v5, (VOID **)v2 + 1, Length, (INT64)ResultLength, v16, v17) >= 0 )
  {
    v7 = 0;
    do
    {
      LODWORD(Lengtha) = 512;
      v8 = ZwEnumerateKey(
             *(VOID **)(((unsigned __int64)ResultIndexRtrn & 0xFFFFFFFFFFFFFFE0ui64) + 8),
             v7,
             KeyBasicInformation,
             v2 + 16,
             Lengtha,
             (UINT64 *)(v2 + 2));
      if( v8 >= 0 )
      {
        v10 = *(unsigned int *)(((unsigned __int64)ResultIndexRtrn & 0xFFFFFFFFFFFFFFE0ui64) + 0x2C);
        if( v10 + 24 < 0x1FE )
        {
          *(_WORD *)(((unsigned __int64)ResultIndexRtrn & 0xFFFFFFFFFFFFFFE0ui64) + 2 * (v10 >> 1) + 0x30) = 0;
          if( RtlpMuiRegGetInstalledLanguageIndexByName(
                 RegInfo,
                 (const WCHAR *)v2 + 24,
                 v9,
                 (INT16 *)((unsigned __int64)ResultIndexRtrn & 0xFFFFFFFFFFFFFFE0ui64)) >= 0 )
          {
            v11 = *v2;
            if( (_WORD)v11 != 0xFFFF && (_WORD)v11 != InstallLangIndex )
            {
              *(_WORD *)(28 * v11 + *(_QWORD *)(*((_QWORD *)RegInfo + 3) + 16i64)) &= ~0x20u;
              *(_WORD *)(28i64 * *v2 + *(_QWORD *)(*((_QWORD *)RegInfo + 3) + 16i64)) |= 0x8000u;
            }
          }
        }
      }
      ++v7;
    }
    while( v8 != -2147483622 );
    v12 = *(_QWORD *)(((unsigned __int64)ResultIndexRtrn & 0xFFFFFFFFFFFFFFE0ui64) + 8);
    if( v12 )
      NtClose(v12);
  }
  return 0;
}

Referenced by:

RtlpMuiRegValidateInstalled