void foo(void) { while (nextSegmentIndex >= 0) { Segment seg = map.segments[nextSegmentIndex--]; volatile if (seg.count) { currentTable = seg.table; for (int j = currentTable.length - 1; j >= 0; --j) { if ((nextEntry = currentTable[j]) !is null) { nextTableIndex = j - 1; return; } } } } if (e) volatile { oldValue = e.value; e.value = newValue; } return oldValue; }