| 445 | |
| 446 | |
| 447 | static void CMovFlagCond(const int64_t addr, const xed_decoded_inst_t* xedd, LowLevelILFunction& il, BNLowLevelILFlagCondition flag) |
| 448 | { |
| 449 | // keep the true branch but let the false branch goto doneLabel directly |
| 450 | LowLevelILLabel trueLabel, doneLabel; |
| 451 | |
| 452 | il.AddInstruction( |
| 453 | il.If( |
| 454 | il.FlagCondition(flag), |
| 455 | trueLabel, doneLabel)); |
| 456 | |
| 457 | il.MarkLabel(trueLabel); |
| 458 | |
| 459 | il.AddInstruction( |
| 460 | WriteILOperand(il, xedd, addr, 0, 0, |
| 461 | ReadILOperand(il, xedd, addr, 1, 1))); |
| 462 | |
| 463 | il.AddInstruction(il.Goto(doneLabel)); |
| 464 | il.MarkLabel(doneLabel); |
| 465 | } |
| 466 | |
| 467 | |
| 468 | static void CMovFlagGroup(const int64_t addr, const xed_decoded_inst_t* xedd, LowLevelILFunction& il, uint32_t flag) |
no test coverage detected