diff --git a/src/base/SMPFunction.cpp b/src/base/SMPFunction.cpp
index 0dcb1bb4d9ebb5d3333beeb2041099d7f49add34..e7b0506a9bf1a6b0f4810039dffbefd53ca29afa 100644
--- a/src/base/SMPFunction.cpp
+++ b/src/base/SMPFunction.cpp
@@ -3649,6 +3649,9 @@ void SMPFunction::BuildStackAccessTables(void) {
 
 					bool ESPRelative = (!(UsedFramePointer || CurrInst->HasFPNormalizedToSP()));
 					if (SignedOffset < 0) { // offset has zero-based index into negative offset vectors
+						if (IndexedAccess && ((offset + DataSize - 1) >= this->NegativeOffsetStackFrameMap.size())) {
+							continue; // Indexed expressions can be within frame even when offset is outside frame
+						}
 						assert((offset + DataSize - 1) < this->NegativeOffsetStackFrameMap.size());
 						for (int j = 0; j < (int) DataSize; ++j) {
 							this->NegativeOffsetStackFrameMap[offset + j].Read = true;