@@ -1310,9 +1310,9 @@ void PseudoCFunction::GetExprTextInternal(const HighLevelILInstruction& instr, H
13101310 std::optional<string> assignUpdateOperator;
13111311 std::optional<HighLevelILInstruction> assignUpdateSource;
13121312 bool assignUpdateNegate = false ;
1313- const auto isSplit = destExpr.operation == HLIL_SPLIT;
1313+ const auto destIsSplit = destExpr.operation == HLIL_SPLIT;
13141314 std::optional<bool > assignSignedHint;
1315- if (isSplit )
1315+ if (destIsSplit )
13161316 {
13171317 const auto high = destExpr.GetHighExpr <HLIL_SPLIT>();
13181318 const auto low = destExpr.GetLowExpr <HLIL_SPLIT>();
@@ -1328,6 +1328,23 @@ void PseudoCFunction::GetExprTextInternal(const HighLevelILInstruction& instr, H
13281328 tokens.NewLine ();
13291329 GetExprTextInternal (low, tokens, settings, precedence);
13301330 }
1331+ else if (srcExpr.operation == HLIL_SPLIT)
1332+ {
1333+ const auto high = srcExpr.GetHighExpr <HLIL_SPLIT>();
1334+ const auto low = srcExpr.GetLowExpr <HLIL_SPLIT>();
1335+ GetExprTextInternal (destExpr, tokens, settings, precedence);
1336+ tokens.Append (OperationToken, " = " );
1337+ tokens.AppendOpenParen ();
1338+ GetExprTextInternal (high, tokens, settings, precedence);
1339+ tokens.Append (OperationToken, " << " );
1340+ tokens.Append (IntegerToken, std::to_string (low.size * 8 ));
1341+ tokens.AppendCloseParen ();
1342+ tokens.Append (OperationToken, " | " );
1343+ GetExprTextInternal (low, tokens, settings, precedence);
1344+ tokens.AppendSemicolon ();
1345+ tokens.NewLine ();
1346+ return ;
1347+ }
13311348 else
13321349 {
13331350 // Check for assignment with an operator on the same variable as the destination
@@ -1454,7 +1471,7 @@ void PseudoCFunction::GetExprTextInternal(const HighLevelILInstruction& instr, H
14541471 appearsDead = false ;
14551472 }
14561473
1457- if (isSplit )
1474+ if (destIsSplit )
14581475 {
14591476// const auto high = destExpr.GetHighExpr<HLIL_SPLIT>();
14601477 const auto low = destExpr.GetLowExpr <HLIL_SPLIT>();
@@ -1484,7 +1501,7 @@ void PseudoCFunction::GetExprTextInternal(const HighLevelILInstruction& instr, H
14841501 GetExprTextInternal (srcExpr, tokens, settings, AssignmentOperatorPrecedence, false , assignSignedHint);
14851502 }
14861503
1487- if (isSplit )
1504+ if (destIsSplit )
14881505 tokens.AppendCloseParen ();
14891506
14901507 if (appearsDead)
0 commit comments