| 378 | |
| 379 | |
| 380 | static void DirFlagIf(LowLevelILFunction& il, |
| 381 | std::function<void()> addPreTestIl, |
| 382 | std::function<void()> addDirFlagSetIl, |
| 383 | std::function<void()> addDirFlagClearIl) |
| 384 | { |
| 385 | LowLevelILLabel dirFlagSet, dirFlagClear, dirFlagDone; |
| 386 | |
| 387 | addPreTestIl(); |
| 388 | |
| 389 | il.AddInstruction(il.If(il.Flag(IL_FLAG_D), dirFlagSet, dirFlagClear)); |
| 390 | il.MarkLabel(dirFlagSet); |
| 391 | |
| 392 | addDirFlagSetIl(); |
| 393 | |
| 394 | il.AddInstruction(il.Goto(dirFlagDone)); |
| 395 | il.MarkLabel(dirFlagClear); |
| 396 | |
| 397 | addDirFlagClearIl(); |
| 398 | |
| 399 | il.AddInstruction(il.Goto(dirFlagDone)); |
| 400 | il.MarkLabel(dirFlagDone); |
| 401 | } |
| 402 | |
| 403 | |
| 404 | static void Repeat( |
no test coverage detected