public void ProcStr_NestedWhile() { var r1 = m.Reg32("r1"); var r2 = m.Reg32("r2"); m.Label("head1"); m.BranchIf(m.Ge(r1, 4), "done1"); m.Label("body1"); m.Declare(r2, m.Word32(0)); m.Label("head2"); m.BranchIf(m.Ge(r2, 4), "done2"); m.Label("body2"); m.Store(m.IAdd( m.Word32(0x1232100), m.IAdd( m.IMul(r1, 4), r2)), m.Byte(0)); m.Assign(r2, m.IAdd(r2, 1)); m.Goto("head2"); m.Label("done2"); m.Assign(r1, m.IAdd(r1, 1)); m.Goto("head1"); m.Label("done1"); m.Return(); var sExp = #region Expected @" while (r1 < 0x04) { word32 r2 = 0x00; while (r2 < 0x04) { Mem0[0x01232100 + (r1 * 0x04 + r2):byte] = 0x00; r2 = r2 + 0x01; } r1 = r1 + 0x01; } return; "; #endregion RunTest(sExp, m.Procedure); }