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