+ if (*ProfileOffset < (Offset + sizeof (MEMORY_PROFILE_DESCRIPTOR))) {\r
+ if (RemainingSize >= sizeof (MEMORY_PROFILE_DESCRIPTOR)) {\r
+ MemoryProfileDescriptor = ProfileBuffer;\r
+ MemoryProfileDescriptor->Header.Signature = MEMORY_PROFILE_DESCRIPTOR_SIGNATURE;\r
+ MemoryProfileDescriptor->Header.Length = sizeof (MEMORY_PROFILE_DESCRIPTOR);\r
+ MemoryProfileDescriptor->Header.Revision = MEMORY_PROFILE_DESCRIPTOR_REVISION;\r
+ MemoryProfileDescriptor->Address = (PHYSICAL_ADDRESS) (UINTN) Pool;\r
+ MemoryProfileDescriptor->Size = Pool->Header.Size;\r
+\r
+ RemainingSize -= sizeof (MEMORY_PROFILE_DESCRIPTOR);\r
+ ProfileBuffer = (UINT8 *) ProfileBuffer + sizeof (MEMORY_PROFILE_DESCRIPTOR);\r
+ } else {\r
+ goto Done;\r
+ }\r
+ }\r
+ Offset += sizeof (MEMORY_PROFILE_DESCRIPTOR);\r
+ }\r
+ }\r
+ }\r
+\r
+ if (*ProfileOffset < (Offset + sizeof (MEMORY_PROFILE_MEMORY_RANGE))) {\r
+ if (RemainingSize >= sizeof (MEMORY_PROFILE_MEMORY_RANGE)) {\r
+ MemoryRange = ProfileBuffer;\r
+ MemoryRange->Header.Signature = MEMORY_PROFILE_MEMORY_RANGE_SIGNATURE;\r
+ MemoryRange->Header.Length = sizeof (MEMORY_PROFILE_MEMORY_RANGE);\r
+ MemoryRange->Header.Revision = MEMORY_PROFILE_MEMORY_RANGE_REVISION;\r
+ MemoryRange->MemoryRangeCount = (UINT32) mFullSmramRangeCount;\r
+\r
+ RemainingSize -= sizeof (MEMORY_PROFILE_MEMORY_RANGE);\r
+ ProfileBuffer = (UINT8 *) ProfileBuffer + sizeof (MEMORY_PROFILE_MEMORY_RANGE);\r
+ } else {\r
+ goto Done;\r
+ }\r
+ }\r
+ Offset += sizeof (MEMORY_PROFILE_MEMORY_RANGE);\r
+ for (Index = 0; Index < mFullSmramRangeCount; Index++) {\r
+ if (*ProfileOffset < (Offset + sizeof (MEMORY_PROFILE_DESCRIPTOR))) {\r
+ if (RemainingSize >= sizeof (MEMORY_PROFILE_DESCRIPTOR)) {\r
+ MemoryProfileDescriptor = ProfileBuffer;\r