RtlResetRtlTranslations

VOID __stdcall RtlResetRtlTranslations(_NLSTABLEINFO *TableInfo){
  USHORT CodePage; 
  USHORT DBCSCodePage; 
  INT64 *v3; 
  __int64 v4; 
  INT64 *v5; 
  USHORT v6; 
  PVOID WideCharTable; 
  bool v8; 
  PUSHORT DBCSOffsets; 
  __int64 v10; 
  __int128 v11; 
  PUSHORT v12; 
  __int128 v13; 
  if( ExplicitScope.CodePage == 0xFDE9 || (CodePage = InitTableInfo.CodePage, InitTableInfo.CodePage == 0xFDE9) )
  {
    v8 = 0;
    NlsAnsiCodePage = -535;
    LOBYTE(NlsMbCodePageTag) = 0;
    WideCharTable = 0i64;
    NlsMbAnsiCodePageTables = 0i64;
    NlsAnsiToUnicodeData = 0i64;
    NlsUnicodeToAnsiData = 0i64;
    NlsUnicodeToMbAnsiData = 0i64;
    NlsMbOemCodePageTables = 0i64;
    NlsOemToUnicodeData = 0i64;
    NlsOemCodePage = -535;
    NlsActiveCodePageIsUTF8 = 1;
    NlsOemCodePageIsUTF8 = 1;
  }
  else
  {
    DBCSCodePage = ExplicitScope.DBCSCodePage;
    v3 = &NlsLeadByteInfoTable;
    v4 = 4i64;
    NlsAnsiCodePage = ExplicitScope.CodePage;
    if( ExplicitScope.DBCSCodePage )
    {
      DBCSOffsets = ExplicitScope.DBCSOffsets;
      v10 = 4i64;
      do
      {
        *(_OWORD *)v3 = *(_OWORD *)DBCSOffsets;
        *((_OWORD *)v3 + 1) = *((_OWORD *)DBCSOffsets + 1);
        *((_OWORD *)v3 + 2) = *((_OWORD *)DBCSOffsets + 2);
        *((_OWORD *)v3 + 3) = *((_OWORD *)DBCSOffsets + 3);
        *((_OWORD *)v3 + 4) = *((_OWORD *)DBCSOffsets + 4);
        *((_OWORD *)v3 + 5) = *((_OWORD *)DBCSOffsets + 5);
        *((_OWORD *)v3 + 6) = *((_OWORD *)DBCSOffsets + 6);
        v3 += 16;
        v11 = *((_OWORD *)DBCSOffsets + 7);
        DBCSOffsets += 64;
        *((_OWORD *)v3 - 1) = v11;
        --v10;
      }
      while( v10 );
    }
    else
    {
      memset((INT64)&NlsLeadByteInfoTable, 0i64);
    }
    v5 = &NlsOemLeadByteInfoTable;
    NlsMbAnsiCodePageTables = (__int64)ExplicitScope.DBCSOffsets;
    NlsOemCodePage = CodePage;
    LOBYTE(NlsMbCodePageTag) = DBCSCodePage != 0;
    v6 = InitTableInfo.DBCSCodePage;
    NlsAnsiToUnicodeData = (INT64)ExplicitScope.MultiByteTable;
    NlsUnicodeToAnsiData = (INT64)ExplicitScope.WideCharTable;
    NlsUnicodeToMbAnsiData = (__int64)ExplicitScope.WideCharTable;
    NlsActiveCodePageIsUTF8 = 0;
    if( InitTableInfo.DBCSCodePage )
    {
      v12 = InitTableInfo.DBCSOffsets;
      do
      {
        *(_OWORD *)v5 = *(_OWORD *)v12;
        *((_OWORD *)v5 + 1) = *((_OWORD *)v12 + 1);
        *((_OWORD *)v5 + 2) = *((_OWORD *)v12 + 2);
        *((_OWORD *)v5 + 3) = *((_OWORD *)v12 + 3);
        *((_OWORD *)v5 + 4) = *((_OWORD *)v12 + 4);
        *((_OWORD *)v5 + 5) = *((_OWORD *)v12 + 5);
        *((_OWORD *)v5 + 6) = *((_OWORD *)v12 + 6);
        v5 += 16;
        v13 = *((_OWORD *)v12 + 7);
        v12 += 64;
        *((_OWORD *)v5 - 1) = v13;
        --v4;
      }
      while( v4 );
    }
    else
    {
      memset((INT64)&NlsOemLeadByteInfoTable, 0i64);
    }
    NlsMbOemCodePageTables = (__int64)InitTableInfo.DBCSOffsets;
    NlsOemToUnicodeData = (INT64)InitTableInfo.MultiByteTable;
    WideCharTable = InitTableInfo.WideCharTable;
    NlsOemCodePageIsUTF8 = 0;
    v8 = v6 != 0;
  }
  NlsUnicodeToOemData = (INT64)WideCharTable;
  NlsUnicodeToMbOemData = (__int64)WideCharTable;
  OemDefaultChar = InitTableInfo.DefaultChar;
  OemTransUniDefaultChar = InitTableInfo.TransDefaultChar;
  Nls844UnicodeUpcaseTable = xmmword_140D57930;
  LOBYTE(NlsMbOemCodePageTag) = v8;
  Nls844UnicodeLowercaseTable = *((_QWORD *)&xmmword_140D57930 + 1);
}

Referenced by:

InitBootProcessor
Phase1InitializationDiscard