# SmbiosRpTable

## Function Table

| Address | Name | Description |
|---------|------|-------------|
|  | **ZeroMemAligned64** |  |
|  | **ModuleEntryPoint** |  |
|  | **UefiMainEntry** |  |
|  | **SmbiosType133RecordInstall** |  |
|  | **DebugPrint** |  |
|  | **GetPlatformDebugLevel** |  |
|  | **DebugAssert** |  |
|  | **ReadUnaligned64** |  |
|  | **CompareGuid** |  |
| Global | **variables** |  |
| EFI_HANDLE | **ImageHandle    = NULL;** |  |
| Zero | **8-byte aligned chunks first.** |  |
| SetMem32 | **((UINT32 *)Buffer, 0, (UINT32)(Length >> 3));** |  |
| Zero | **the remaining bytes (0-7).** |  |
| SetMem8 | **(** |  |
| Initialize | **the DXE global variables (ImageHandle, SystemTable** |  |
| UefiMainEntry | **(ImageHandle, SystemTable);** |  |
| Locate | **the SMBIOS protocol.** |  |
| Status | **= gBS->LocateProtocol (** |  |
| Install | **a Type 133 SMBIOS record with the communication buffer address.** |  |
| return | **SmbiosType133RecordInstall (SmbiosProtocol);** |  |
| Get | **the HOB list from the system configuration table.** |  |
| GetHobList | **();** |  |
| Resolve | **HII protocol GUIDs.** |  |
| Allocate | **ACPI NVS memory for BIOS utility communication buffer (16KB).** |  |
| BufferAddr | **= 0xFFFFFFFFULL;** |  |
| Allocate | **the SMBIOS record structure.** |  |
| SmbiosRecord | **= (SMBIOS_STRUCTURE *)AllocateACPINvsBuffer ();** |  |
| Zero | **the record buffer (14 bytes for type 133 header + 2 handle).** |  |
| ZeroMem14 | **((UINTN)SmbiosRecord);** |  |
| Fill | **in Type 133 SMBIOS record:** |  |
| Type | **= SMBIOS_TYPE_BIOS_UTILITY_COMMUNICATION (133)** |  |
| Handle | **= 0x0C85 (3205)** |  |
| Buffer | **= ACPI NVS physical address** |  |
| Size | **= 0x4000 (16KB)** |  |
| RecordHeader | **= (EFI_SMBIOS_TABLE_HEADER *)SmbiosRecord;** |  |
| The | **record payload contains:** |  |
| Add | **the SMBIOS record.** |  |
| Status | **= SmbiosProtocol->Add (** |  |
| Only | **attempt to locate protocol if we have a sane number of CPUs.** |  |
| return | **NULL;** |  |
| Check | **the platform debug level via CMOS index 0x4B.** |  |
| CurrentDebugLevel | **= GetPlatformDebugLevel ();** |  |
| Error | **level only: 0x80000004 (EFI_D_ERROR)** |  |
| AllowedMask | **= DEBUG_ERROR;** |  |
| Allow | **all except DEBUG_ERROR when in verbose mode.** |  |
| AllowedMask | **= DEBUG_VERBOSE;** |  |
| Read | **CMOS index 0x4B (debug level register).** |  |
| DebugRegister | **= IoRead8 (CMOS_INDEX_PORT);** |  |
| Check | **extended memory for debug settings on certain platforms.** |  |
| if | **(DebugLevel == 0) {** |  |
| Check | **for gEfiHobListGuid match.** |  |
| if | **(CompareGuid (&gEfiHobListGuid, Guid1)) {** |  |
| If | **we get here, the HOB list was not found.** |  |
| DEBUG | **((EFI_D_ERROR, "\nASSERT_EFI_ERROR (Status = %r)\n", EFI_NOT_FOUND));** |  |
| Compare | **the first 8 bytes (Data1 + Data2 + Data3).** |  |
| if | **(ReadUnaligned64 ((UINT64 *)Guid1) != ReadUnaligned64 ((UINT64 *)Guid2)) {** |  |
| Compare | **last 8 bytes (Data4).** |  |
| return | **ReadUnaligned64 ((UINT64 *)Guid1->Data4) == ReadUnaligned64 ((UINT64 *)Guid2->Data4);** |  |

---
*Generated by HR650X BIOS Decompilation Project*