| 429 | |
| 430 | |
| 431 | void PseudoRustFunction::AppendTwoOperandFunctionWithCarry(const string& function, |
| 432 | const HighLevelILInstruction& instr, HighLevelILTokenEmitter& tokens, DisassemblySettings* settings) |
| 433 | { |
| 434 | const auto leftExpr = instr.GetLeftExpr(); |
| 435 | const auto rightExpr = instr.GetRightExpr(); |
| 436 | const auto carryExpr = instr.GetCarryExpr(); |
| 437 | |
| 438 | tokens.Append(OperationToken, function); |
| 439 | AppendSingleSizeToken(instr.size, OperationToken, tokens); |
| 440 | tokens.AppendOpenParen(); |
| 441 | |
| 442 | if (leftExpr.operation == HLIL_SPLIT) |
| 443 | { |
| 444 | const auto low = leftExpr.GetLowExpr(); |
| 445 | const auto high = leftExpr.GetHighExpr(); |
| 446 | |
| 447 | tokens.Append(OperationToken, "COMBINE"); |
| 448 | tokens.AppendOpenParen(); |
| 449 | GetExprText(high, tokens, settings); |
| 450 | tokens.Append(TextToken, ", "); |
| 451 | GetExprText(low, tokens, settings); |
| 452 | tokens.AppendCloseParen(); |
| 453 | } |
| 454 | |
| 455 | GetExprText(leftExpr, tokens, settings); |
| 456 | tokens.Append(TextToken, ", "); |
| 457 | GetExprText(rightExpr, tokens, settings); |
| 458 | tokens.Append(TextToken, ", "); |
| 459 | GetExprText(carryExpr, tokens, settings); |
| 460 | |
| 461 | tokens.AppendCloseParen(); |
| 462 | } |
| 463 | |
| 464 | |
| 465 | Ref<Type> PseudoRustFunction::GetFieldType(const HighLevelILInstruction& var, bool deref) |
nothing calls this directly
no test coverage detected